diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..e208b16 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 8bec0da..d02171c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ eMMA/www/build/main.js eMMA/www/build/main.css eMMA/www/build/main.js.map -eMMA/www/build/main.css \ No newline at end of file +eMMA/www/build/main.css +eMMA/resources +.gitignore +eMMA/.gitignore +eMMA/www/assets diff --git a/README.md b/README.md index 80bf662..d00c17b 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# Thesis \ No newline at end of file +# eMMA 2.0 + +eMMA 2.0 was a living case 01 project at Bern University of Applied Science. The task was to improve the Conversational Interface of eMMA 1.0, that was a Bachelor Thesis at the Bern University of Applied Sciences. + +See http://ti.bfh.ch for more information about Medical Informatics at BFH TI. diff --git a/eMMA/.editorconfig b/eMMA/.editorconfig index 51873bc..90b179c 100644 --- a/eMMA/.editorconfig +++ b/eMMA/.editorconfig @@ -4,8 +4,8 @@ root = true [*] -indent_style = space -indent_size = 2 +indent_style = tab +indent_size = 4 # We recommend you to keep these unchanged end_of_line = lf @@ -14,4 +14,4 @@ trim_trailing_whitespace = true insert_final_newline = true [*.md] -trim_trailing_whitespace = false \ No newline at end of file +trim_trailing_whitespace = false diff --git a/eMMA/config.xml b/eMMA/config.xml index ff7345e..9a50449 100644 --- a/eMMA/config.xml +++ b/eMMA/config.xml @@ -1,64 +1,63 @@ - - - eMMA - An awesome Ionic/Cordova app. - Ionic Framework Team - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + eMMA 2 + An awesome Ionic/Cordova app. + Ionic Framework Team + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eMMA/documentation/install.md b/eMMA/documentation/install.md new file mode 100644 index 0000000..f437594 --- /dev/null +++ b/eMMA/documentation/install.md @@ -0,0 +1,25 @@ +# eMMA zum Laufen bringen +Um eMMA zum laufen zu bringen, müssen folgende Pakete installiert werden, die npm nicht automatisch installiert: + +## MIDATA +- npm install https://github.com/i4mi/midata.js + +## PAKO +- npm install pako + +## QR-Code +- npm install angular2-qrcode +- ionic cordova plugin add phonegap-plugin-barcodescanner +- npm install --save @ionic-native/barcode-scanner +-> https://www.techiediaries.com/barcode-qr-code-scanner-encoder-ionic-3/ + +## Notifications / reminder +Um die Reminder zu aktivieren, muss folgendes Plugin installiert werden: +- ionic cordova plugin add cordova-plugin-local-notification +- npm install --save @ionic-native/local-notification + +Die Reminder funktioniert dann aber nur mit dem APK auf dem Handy, nicht im Browser. + +# APK-Datei generieren +Um eine APK-Datei zu generieren, muss Android Studio installiert sein. Ich musste zusätzlich noch Gradle installieren (auf dem Mac mit installiertem Homebrew: `brew install gradle`). +mittels `cordova build android` wird dann eine APK gebaut, die man auf sein Android-Handy laden kann. diff --git a/eMMA/documentation/storage.md b/eMMA/documentation/storage.md new file mode 100644 index 0000000..4ad3a96 --- /dev/null +++ b/eMMA/documentation/storage.md @@ -0,0 +1,67 @@ +# Elemente in Storage +Diese Datei beschreibt, welche Objekte eMMA im Storage-Objekt in ionic ablegt + +## ComplianceData +- geschrieben von conversation.ts, my-medication.ts, my-medication-diary.ts, barCodeService.ts +- Object +- enthält die Daten wie der Patient die Medikamente eingenommen hat + +## FirstStartComplet (sic!) +- geschrieben von conversation.ts +- entweder ein Boolean oder ein String +- enthält Daten ob der erste Start mit App-Einrichtung abgeschlossen wurde, sowie ob eine Notification vorliegt + +## takingTime +- geschrieben von conversation.ts, my-medication.ts +- String-Array +- enthält die Einnahme-Zeiten der Medikamente (standardmässig 08:00, 12:00, 18:00 und 22:00) + +## name +- geschrieben von conversation.ts +- String +- der Name des Patienten + +## Pin +- geschrieben von conversation.ts +- String +- der Pin des Patienten (null wenn nicht gesetzt) + +## athlete +- geschrieben von conversation.ts +- Boolean +- beschreibt, ob der User angegeben hat Leistungssport zu betreiben + +## driver +- geschrieben von conversation.ts +- Boolean +- beschreibt, ob der User angegeben hat einen Führerschein zu haben + +## UsernameEHealht (sic!) +- geschrieben von conversation.ts +- String +- enthält Login für ComplianceData + +## returnValuePatientCompliance +- geschrieben von conversation.ts +- ? +- ? + +## mediPlan +- geschrieben von my-medication.ts, barCodeService.ts, chmedJsonHandler.ts +- Object +- wird wohl der gescannte oder geladene Mediplan hrerschein + +## medicationData +- geschrieben von my-medication.ts, barCodeService.ts +- Object (?) +- ? + +## sound +- geschrieben von my-medication.ts +- ? +- vermutlich die gewählte Einstellung für den Notifikations-Ton (funktioniert nicht?) + +## checks +- geschrieben von barCodeService.ts +- ? +- enthält die Wechselwirkungen (Nahrungsmittel), die von HCI abgeglichen wurden diff --git a/eMMA/ionic.config.json b/eMMA/ionic.config.json index 68f5219..4c364de 100644 --- a/eMMA/ionic.config.json +++ b/eMMA/ionic.config.json @@ -1,6 +1,8 @@ { "name": "eMMA", "app_id": "", - "v2": true, - "typescript": true + "integrations": { + "cordova": {} + }, + "type": "ionic-angular" } diff --git a/eMMA/package-lock.json b/eMMA/package-lock.json new file mode 100644 index 0000000..1a1a7af --- /dev/null +++ b/eMMA/package-lock.json @@ -0,0 +1,7985 @@ +{ + "name": "eMMA", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@angular/common": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-2.2.1.tgz", + "integrity": "sha1-rXmWqGW3sR/DFTY4J/JBSkjGWJw=" + }, + "@angular/compiler": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-2.2.1.tgz", + "integrity": "sha1-Fuf69YjPkSGg9sFtC64oMPTK/cE=" + }, + "@angular/compiler-cli": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-2.2.1.tgz", + "integrity": "sha1-FmRpuIHWOUbMPkXEeofSts2QI4Y=", + "requires": { + "@angular/tsc-wrapped": "0.3.0", + "minimist": "1.2.0", + "reflect-metadata": "0.1.12" + } + }, + "@angular/core": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-2.2.1.tgz", + "integrity": "sha1-hv3DSjcKT8/oTtneSzxDVIYSkZw=" + }, + "@angular/forms": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-2.2.1.tgz", + "integrity": "sha1-DnFUrMUSfFg7S1LFnqxF1nLCnaQ=" + }, + "@angular/http": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-2.2.1.tgz", + "integrity": "sha1-FiaISmxfDMYCzp2B50IPzALbM1M=" + }, + "@angular/platform-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-2.2.1.tgz", + "integrity": "sha1-1Rs2JgCJ8wVOdF760FmTUj1aUpM=" + }, + "@angular/platform-browser-dynamic": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.2.1.tgz", + "integrity": "sha1-Vh0ymC/uS2i0dLpHTH88TZS/62w=" + }, + "@angular/platform-server": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-2.2.1.tgz", + "integrity": "sha1-/aesxxE7/FjsnXKgovzGpuXFIms=", + "requires": { + "parse5": "2.2.3" + } + }, + "@angular/tsc-wrapped": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-0.3.0.tgz", + "integrity": "sha1-mM3rXDjRRbGHwK0Dl6jZiyF/M/I=", + "requires": { + "tsickle": "0.1.7" + } + }, + "@ionic-native/barcode-scanner": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@ionic-native/barcode-scanner/-/barcode-scanner-4.6.0.tgz", + "integrity": "sha512-Ot8sGmX7MrR73xewqsagNTvl2zVzZscP1C8WJ1oitUguptxphK68EaAWWldA1R7LNJkfviTq2c9soFMYb1Le5A==" + }, + "@ionic-native/core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-4.7.0.tgz", + "integrity": "sha512-BT4a9qIl3qfJMukcfMPtXDAAsOrYIAoVQvCodDZhqGExTakIx0/JlOr+lZa6KEU46CoA1SEctcBjj0N+nNcWOw==" + }, + "@ionic-native/file": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@ionic-native/file/-/file-4.7.0.tgz", + "integrity": "sha512-W5wHpBHBMns3NBrUYAUNDSN843MzWYWZ72rBX56onNKCDaYXZS4WuFExVHh2P91RWq095hmohQNpPiDB8ElQ8g==" + }, + "@ionic-native/local-notifications": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-4.6.0.tgz", + "integrity": "sha512-JaCdZJZqJnyg3TQ0dee5m/fUOFC9CzyIxD5mqbLHJ9LaFW1uMreyAVadjDfNKgmOh3yiCtApoJUsfB20UDEKYw==" + }, + "@ionic/app-scripts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ionic/app-scripts/-/app-scripts-1.1.3.tgz", + "integrity": "sha1-71ENZLjk2eghlxe5jgBiTAcsIiE=", + "dev": true, + "requires": { + "autoprefixer": "6.7.2", + "babili": "0.0.10", + "chalk": "1.1.3", + "chokidar": "1.6.1", + "clean-css": "3.4.24", + "cross-spawn": "5.0.1", + "express": "4.14.1", + "fs-extra": "2.0.0", + "glob": "7.1.2", + "json-loader": "0.5.4", + "node-sass": "4.5.0", + "os-name": "2.0.1", + "postcss": "5.2.11", + "proxy-middleware": "0.15.0", + "rollup": "0.41.4", + "rollup-plugin-commonjs": "7.0.0", + "rollup-plugin-json": "2.1.0", + "rollup-plugin-node-builtins": "2.0.0", + "rollup-plugin-node-globals": "1.1.0", + "rollup-plugin-node-resolve": "2.0.0", + "rollup-pluginutils": "2.0.1", + "tiny-lr": "1.0.3", + "tslint": "3.15.1", + "tslint-eslint-rules": "1.5.0", + "uglify-js": "2.7.5", + "webpack": "2.2.1", + "ws": "1.1.1", + "xml2js": "0.4.19" + } + }, + "@ionic/storage": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-1.1.9.tgz", + "integrity": "sha1-7fnWlfqZWyS+PbSCEjI8aovd76Y=", + "requires": { + "@types/localforage": "0.0.30", + "localforage": "1.4.3", + "localforage-cordovasqlitedriver": "1.5.0" + } + }, + "@types/fhir": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@types/fhir/-/fhir-1.0.30.tgz", + "integrity": "sha1-KGF5/0Y3P40V6eZ7UFv1hmqd5Y0=" + }, + "@types/localforage": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.30.tgz", + "integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk=" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "angular2-qrcode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/angular2-qrcode/-/angular2-qrcode-2.0.1.tgz", + "integrity": "sha1-G05lwwJpS1B4ygb3ETj35DZ3VNw=", + "requires": { + "qrious": "2.3.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.15.tgz", + "integrity": "sha1-ju8IJ/BN/w7IhXupJavj/qYZTlI=" + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.2.tgz", + "integrity": "sha1-Fyqwe5mK6blXUwkopZpAvlSkUCM=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000813", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.11", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.6.1", + "commander": "2.15.0", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-evaluate-path": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.0.3.tgz", + "integrity": "sha1-HRA6ydSlnl1DGEIhLxUXhfesVHs=", + "dev": true + }, + "babel-helper-flip-expressions": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.2.tgz", + "integrity": "sha1-e6ss9hFivJJwPpspjvUSvPd9Z4c=", + "dev": true + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz", + "integrity": "sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.1.1.tgz", + "integrity": "sha1-RVQ0Xt+fJUlCe9IJjlMCU/ivKZI=", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.1.1.tgz", + "integrity": "sha1-nX4YVtxvr8tBsoOkFnMNwYRPZtc=", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.3.tgz", + "integrity": "sha1-x4mg+szSZpxRI0vizqej5aBXPCU=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-minify-constant-folding": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.3.tgz", + "integrity": "sha1-pRHoOVYkiYEZh6elA8Q8MSxAE4o=", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "0.0.3" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.7.tgz", + "integrity": "sha1-d09TbzR7mDk6J7qnF4cpaIE8NCw=", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "0.1.1", + "babel-helper-remove-or-void": "0.1.1", + "lodash.some": "4.6.0" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.2.tgz", + "integrity": "sha1-fQlTqlh27eYRiWa9qe3sxjvzRqs=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "0.0.1" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.4.tgz", + "integrity": "sha1-lXEEp2Dmp//ZZwBaehFiG7Qv0Rw=", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "0.0.2" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.3.tgz", + "integrity": "sha1-TMmbYdErQ0zoCtZ1EDM1xYnLqaE=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.6.tgz", + "integrity": "sha1-cxHoIpLVrdk8qAxOz73p6KlzCkM=", + "dev": true + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz", + "integrity": "sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz", + "integrity": "sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.6.tgz", + "integrity": "sha1-HVCJmynDxFA+rvuYNlzF96hK7f4=", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "0.0.2", + "babel-helper-is-nodes-equiv": "0.0.1", + "babel-helper-to-multiple-sequence-expressions": "0.0.3" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.3.tgz", + "integrity": "sha1-q1nBrYNba26OkyuHXU303Dk9nSY=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "0.0.1" + } + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.0.2.tgz", + "integrity": "sha1-pY/Oz8CcCPv5NzpaPnB0bAPQH8E=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.0.tgz", + "integrity": "sha512-bxtac+8w755ctVeDs4vU98RhWY49eW1wO02HAN+eirZYSKk/dVrKONIznXbHmxWKxT4UX1rpTKOCyezuzLpbTw==", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.0.tgz", + "integrity": "sha512-9G1URVEEKoQLDqe0GwqYudECN7kE/q0OCNo5TiD1iwWnnaKi97xY915l5r2KKUvNflXEm9c3faNWknSXYQ7h6Q==", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.0.tgz", + "integrity": "sha512-JtpyTRyF+wF/r7GSxpRbNCrVve5M/aCC8xoGcnFItaPUDqjxKmFYvBzMc9u+g0lgo8NWjuZLc16MYaIwkHKD/A==", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.0.tgz", + "integrity": "sha512-B8s+71+4DPye9+pmZiPGgLPy3YqcmIuvE/9UcZLczPlwL5ALwF6qRUdLC3Fk17NhL6jxp4u33ZVZ8R4kvASPzw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.5.tgz", + "integrity": "sha1-dNleDFZ+b8HZxpmghIlNQN6OWB0=", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.0.tgz", + "integrity": "sha512-mck9//yGTwObqqqDzY/sISO88/5/XfIB3ILb4uJLXk2xq124NT4yQVjFSRgVSbLcNq8OyBAn2acxKUqg4W/okQ==", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.0.tgz", + "integrity": "sha512-i/HWGjsmL2d1N2dl+eIzf44XpSP5v7hi1/GXB0xzom9kjrU8js3T8Kadizn95ZxfHK592Vg8P4JJWP/fvimEWw==", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.0.4.tgz", + "integrity": "sha1-zHW+BLm717sgBScswWC00IaS13w=", + "dev": true + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.0.tgz", + "integrity": "sha512-EJyfYeph0CSekwQuwWVwJqy2go/bETkR95iaWQ/HTUis7tkCGNYmXngaFzuIXdmoPXfvmXYCvAXR4/93hqHVjw==", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.0.tgz", + "integrity": "sha512-AVDVEmp0S9mbF1O8zekWbsOOmqnR08PZah5NRZJqSvJnFgiL0ep4Lwo4EymH8OieJR2QgQdR3q71TNW+wiVn4g==", + "dev": true + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-babili": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-babili/-/babel-preset-babili-0.0.10.tgz", + "integrity": "sha1-WRGJJLd7iY7s2PdaW5fWlHGUQ/8=", + "dev": true, + "requires": { + "babel-plugin-minify-constant-folding": "0.0.3", + "babel-plugin-minify-dead-code-elimination": "0.1.7", + "babel-plugin-minify-flip-comparisons": "0.0.2", + "babel-plugin-minify-guarded-expressions": "0.0.4", + "babel-plugin-minify-infinity": "0.0.3", + "babel-plugin-minify-mangle-names": "0.0.6", + "babel-plugin-minify-numeric-literals": "0.0.1", + "babel-plugin-minify-replace": "0.0.1", + "babel-plugin-minify-simplify": "0.0.6", + "babel-plugin-minify-type-constructors": "0.0.3", + "babel-plugin-transform-inline-consecutive-adds": "0.0.2", + "babel-plugin-transform-member-expression-literals": "6.9.0", + "babel-plugin-transform-merge-sibling-variables": "6.9.0", + "babel-plugin-transform-minify-booleans": "6.9.0", + "babel-plugin-transform-property-literals": "6.9.0", + "babel-plugin-transform-regexp-constructors": "0.0.5", + "babel-plugin-transform-remove-console": "6.9.0", + "babel-plugin-transform-remove-debugger": "6.9.0", + "babel-plugin-transform-remove-undefined": "0.0.4", + "babel-plugin-transform-simplify-comparison-operators": "6.9.0", + "babel-plugin-transform-undefined-to-void": "6.9.0", + "lodash.isplainobject": "4.0.6" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babili": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/babili/-/babili-0.0.10.tgz", + "integrity": "sha1-ZCv/cCVmCsCCOv5IQ+Yv2uXOwus=", + "dev": true, + "requires": { + "babel-cli": "6.26.0", + "babel-preset-babili": "0.0.10" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base62": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "integrity": "sha1-e0F0wvlESXU7EcJlHAg9qEGnsIQ=" + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "0.3.1", + "error": "7.0.2", + "raw-body": "1.1.7", + "safe-json-parse": "1.0.1" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000813", + "electron-to-chromium": "1.3.37" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "buffer-es6": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", + "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-db": { + "version": "1.0.30000813", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000813.tgz", + "integrity": "sha1-4KHGA/iICteHsqNWUrJzPzKl4po=", + "dev": true + }, + "canvas": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-1.6.9.tgz", + "integrity": "sha1-4/lc7HsWvy1vP8clwC2UDTJY9ps=", + "optional": true, + "requires": { + "nan": "2.9.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "chart.js": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz", + "integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==", + "requires": { + "chartjs-color": "2.2.0", + "moment": "2.22.0" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "0.5.0", + "color-convert": "0.5.3" + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "chokidar": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", + "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.24.tgz", + "integrity": "sha1-ifWl6do3rgI5T+BJpBOIq75yw7U=", + "dev": true, + "requires": { + "commander": "2.8.1", + "source-map": "0.4.4" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.0.tgz", + "integrity": "sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "cordova-android": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.0.0.tgz", + "integrity": "sha1-yVvt/PvDhjsYDE0p7/7E95Nh0Z0=", + "requires": { + "android-versions": "1.2.1", + "cordova-common": "2.2.0", + "elementtree": "0.1.6", + "nopt": "3.0.6", + "properties-parser": "0.2.3", + "q": "1.5.1", + "shelljs": "0.5.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "android-versions": { + "version": "1.2.1", + "bundled": true + }, + "ansi": { + "version": "0.3.1", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base64-js": { + "version": "0.0.8", + "bundled": true + }, + "big-integer": { + "version": "1.6.26", + "bundled": true + }, + "bplist-parser": { + "version": "0.1.1", + "bundled": true, + "requires": { + "big-integer": "1.6.26" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "cordova-common": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ansi": "0.3.1", + "bplist-parser": "0.1.1", + "cordova-registry-mapper": "1.1.15", + "elementtree": "0.1.6", + "glob": "5.0.15", + "minimatch": "3.0.4", + "osenv": "0.1.4", + "plist": "1.2.0", + "q": "1.5.1", + "semver": "5.4.1", + "shelljs": "0.5.3", + "underscore": "1.8.3", + "unorm": "1.4.1" + } + }, + "cordova-registry-mapper": { + "version": "1.1.15", + "bundled": true + }, + "elementtree": { + "version": "0.1.6", + "bundled": true, + "requires": { + "sax": "0.3.5" + } + }, + "glob": { + "version": "5.0.15", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "plist": { + "version": "1.2.0", + "bundled": true, + "requires": { + "base64-js": "0.0.8", + "util-deprecate": "1.0.2", + "xmlbuilder": "4.0.0", + "xmldom": "0.1.27" + } + }, + "properties-parser": { + "version": "0.2.3", + "bundled": true + }, + "q": { + "version": "1.5.1", + "bundled": true + }, + "sax": { + "version": "0.3.5", + "bundled": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "shelljs": { + "version": "0.5.3", + "bundled": true + }, + "underscore": { + "version": "1.8.3", + "bundled": true + }, + "unorm": { + "version": "1.4.1", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xmlbuilder": { + "version": "4.0.0", + "bundled": true, + "requires": { + "lodash": "3.10.1" + } + }, + "xmldom": { + "version": "0.1.27", + "bundled": true + } + } + }, + "cordova-plugin-badge": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/cordova-plugin-badge/-/cordova-plugin-badge-0.8.7.tgz", + "integrity": "sha512-s+s4yusKdeJ4sMPhQs4zR3lR2UuROzSy14GFAp00pTHPiBfCtxeINSUYAZYnpuO3RGx6PPlVCwSJpVG0IdM58g==" + }, + "cordova-plugin-console": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-console/-/cordova-plugin-console-1.1.0.tgz", + "integrity": "sha1-4vusECkBeeRMtyxf28QQpTHBzW0=" + }, + "cordova-plugin-device": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.2.tgz", + "integrity": "sha1-/Ajzci5n7ve2xnv8mag99q3Quro=" + }, + "cordova-plugin-file": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.1.tgz", + "integrity": "sha1-SWBrjBWlaI1HKPkuSnMloGHeB/U=" + }, + "cordova-plugin-ionic-keyboard": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.0.5.tgz", + "integrity": "sha512-ygwK+U7Vs7OJJYsDrWAxhegHfvuRRpMC3Y8RhQSVLfv4ELrXtkCUjD+UfsDQ3aObpvxGLTvcVrOw5p04dPXy3w==" + }, + "cordova-plugin-ionic-webview": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-1.2.1.tgz", + "integrity": "sha512-35Tu80g74enHV7HnXPDTwaPfObFydsLWyyAo2Eez/ns80UfhwkV99hWeG5jSO3zpPtSY8AVq7la6Z6Ww+4kDkg==" + }, + "cordova-plugin-local-notification": { + "version": "0.9.0-beta.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-local-notification/-/cordova-plugin-local-notification-0.9.0-beta.3.tgz", + "integrity": "sha512-L3Z1velxrkm9nHFcvLnMgBPZjKFt6hwM6hn1lA+JFwIR26Yw6UF72z+/lRMBclAcOxBIDYCqeaLgvezmajjuEg==" + }, + "cordova-plugin-splashscreen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.2.tgz", + "integrity": "sha1-dH509W4gHNWFvGLRS8oZ9oZ/8e0=" + }, + "cordova-plugin-statusbar": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.2.tgz", + "integrity": "sha1-/B+9wNjXAzp+jh8ff/FnrJvU+vY=" + }, + "cordova-plugin-whitelist": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz", + "integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q=" + }, + "cordova-sqlite-storage": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage/-/cordova-sqlite-storage-2.3.1.tgz", + "integrity": "sha512-f/efBzehyEpl0QQty4V5RSwGqpGdWzfDjwef8wRuJH641PcwSyNP+dGQXEWF/1vMi83jb8xEANeIbTHxlpSSBg==", + "requires": { + "cordova-sqlite-storage-dependencies": "1.2.0" + } + }, + "cordova-sqlite-storage-dependencies": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cordova-sqlite-storage-dependencies/-/cordova-sqlite-storage-dependencies-1.2.0.tgz", + "integrity": "sha512-lJl5uJFrCWrCYYGhpSEXe6sepjgOOzbeh8fFur3LqaSRvx+xFNYtfMYumE0+xqZwSmPODzex+y6I7ixwcBn73Q==" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.0.1.tgz", + "integrity": "sha1-o7uzAtsil8vqPATt82lB9GE6o5k=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "doctrine": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", + "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", + "dev": true, + "requires": { + "esutils": "1.1.6", + "isarray": "0.0.1" + }, + "dependencies": { + "esutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", + "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.37.tgz", + "integrity": "sha1-SpJzTgBEyM8LFVO+V+riGkxuX6s=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es3ify": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/es3ify/-/es3ify-0.1.4.tgz", + "integrity": "sha1-rZ+l3xrjTz8x4SEbWBiy1RB439E=", + "requires": { + "esprima-fb": "3001.1.0-dev-harmony-fb", + "jstransform": "3.0.0", + "through": "2.3.8" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esmangle-evaluator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz", + "integrity": "sha1-Yg2GbvSGGzMR91dm1SqFcrs8YzY=" + }, + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=" + }, + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.2.0", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.2.0", + "range-parser": "1.2.0", + "send": "0.14.2", + "serve-static": "1.11.2", + "type-is": "1.6.16", + "utils-merge": "1.0.0", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", + "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", + "requires": { + "acorn": "1.2.2", + "foreach": "2.0.5", + "isarray": "0.0.1", + "object-keys": "1.0.11" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", + "integrity": "sha1-LEANjUUwk1vCMlScX6OF7Afeb80=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "5.0.15" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "fs-extra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.0.0.tgz", + "integrity": "sha1-M3NSve1KC3FPPrhN6M6nZenTdgA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "minimatch": "3.0.4" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "hci-hospindex-api": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hci-hospindex-api/-/hci-hospindex-api-1.0.0.tgz", + "integrity": "sha1-48tT3kkevxxt+FKdun0vTNQJC3M=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "http-errors": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", + "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "setprototypeof": "1.0.2", + "statuses": "1.3.1" + } + }, + "http-parser-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", + "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inline-process-browser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/inline-process-browser/-/inline-process-browser-1.0.0.tgz", + "integrity": "sha1-RqYbFT3TybFiSxoAYm7bT39BTyI=", + "requires": { + "falafel": "1.2.0", + "through2": "0.6.5" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ionic-angular": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-2.1.0.tgz", + "integrity": "sha1-GJ2aZhIKa8GSfrOZuhTXy+w5JQA=" + }, + "ionic-native": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/ionic-native/-/ionic-native-2.4.1.tgz", + "integrity": "sha1-eey5ro2zPW8gi9XQixgZYAICEsU=", + "requires": { + "rxjs": "5.0.0-beta.12" + } + }, + "ionic-plugin-keyboard": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ionic-plugin-keyboard/-/ionic-plugin-keyboard-2.2.1.tgz", + "integrity": "sha1-8qnhabvptVIkADR8n9bTRn7j+hI=" + }, + "ionicons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz", + "integrity": "sha1-QLja9P16MRUL0AIWD2ZJbiKpjDw=" + }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jssha": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.3.1.tgz", + "integrity": "sha1-FHshJTaQNcpLL30hDcU58Amz3po=" + }, + "jstransform": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-3.0.0.tgz", + "integrity": "sha1-olkats7o2XvzvoMNv6IxO4fNZAs=", + "requires": { + "base62": "0.1.1", + "esprima-fb": "3001.1.0-dev-harmony-fb", + "source-map": "0.1.31" + }, + "dependencies": { + "source-map": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "integrity": "sha1-n3BNDWnZ4TioG63267T94z0VHGE=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "lie": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.0.2.tgz", + "integrity": "sha1-/9oh17uibzd8rYZdNkmy/Izjn+o=", + "requires": { + "es3ify": "0.1.4", + "immediate": "3.0.6", + "inline-process-browser": "1.0.0", + "unreachable-branch-transform": "0.3.0" + } + }, + "livereload-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "localforage": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.4.3.tgz", + "integrity": "sha1-ohJUPDnHx2Qk7dEr9HTEiarKSUw=", + "requires": { + "lie": "3.0.2" + } + }, + "localforage-cordovasqlitedriver": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.5.0.tgz", + "integrity": "sha1-+TR4nmrZo5usBf3RFogS9DhTV2I=", + "requires": { + "@types/localforage": "0.0.30", + "localforage": "1.4.3" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macos-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", + "dev": true + }, + "magic-string": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", + "integrity": "sha1-FNdoATyvLsj96hakmvgvw3fnUgE=", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "midata": { + "version": "git+https://github.com/i4mi/midata.js.git#efa921515ae5242a712fe46722ba1a8950440a1a", + "requires": { + "@types/fhir": "1.0.30", + "es6-promise": "4.2.4", + "jssha": "2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.5", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.1.0", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "string_decoder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.0.tgz", + "integrity": "sha512-8zQpRF6juocE69ae7CSPmYEGJe4VCXwP6S6dxUWI7i53Gwv54/ec41fiUA+X7BPGGv7fRSQJjBQVa0gomGaOgg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "node-sass": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.0.tgz", + "integrity": "sha1-Uy43utDOWHNIyDFTXbyY6kKJUIs=", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.9.2", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.83.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + }, + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", + "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "dev": true, + "requires": { + "macos-release": "1.1.0", + "win-release": "1.1.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", + "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=" + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "phonegap-plugin-barcodescanner": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/phonegap-plugin-barcodescanner/-/phonegap-plugin-barcodescanner-7.1.2.tgz", + "integrity": "sha512-9jxhXptCUPkD8dnNEjjQTClKrpXc4LjDOGpBuqwxJTSIiVsgv00P8pfmWGNYfyJD9N3yBYYra/X0UexbUKWxtw==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.11.tgz", + "integrity": "sha1-/ym81tLvuYv+CKAiBV7Fmbvnt2E=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-es6": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", + "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.4.0" + } + }, + "proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qrious": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/qrious/-/qrious-2.3.0.tgz", + "integrity": "sha1-ynzmioIJmmepDkl59LHN9R7zJHU=", + "requires": { + "canvas": "1.6.9" + } + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1.0.0", + "string_decoder": "0.10.31" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.5", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "recast": { + "version": "0.10.43", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz", + "integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=", + "requires": { + "ast-types": "0.8.15", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "rivescript": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/rivescript/-/rivescript-1.19.0.tgz", + "integrity": "sha512-5h7Ukz3ImtcUpGhUeaADNXQHCdRHKJYSIxfUdkXkS9T9+eeReW/8E6VRCXVHPtiLfo5m8PEHOx7AISDczlWrZA==", + "requires": { + "fs-readdir-recursive": "1.1.0", + "rsvp": "3.6.2" + } + }, + "rollup": { + "version": "0.41.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.4.tgz", + "integrity": "sha1-qXBYAXYyn56thoVNf9TEbedSrvg=", + "dev": true, + "requires": { + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "rollup-plugin-commonjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-7.0.0.tgz", + "integrity": "sha1-UQdi1cQjx2HNFtjoRRcVs58M6wg=", + "dev": true, + "requires": { + "acorn": "4.0.13", + "estree-walker": "0.3.1", + "magic-string": "0.19.1", + "resolve": "1.5.0", + "rollup-pluginutils": "1.5.2" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + }, + "dependencies": { + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + } + } + } + } + }, + "rollup-plugin-json": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-2.1.0.tgz", + "integrity": "sha1-f44bKxVpMt2TS5ONxVR+QRjUEh8=", + "dev": true, + "requires": { + "rollup-pluginutils": "1.5.2" + }, + "dependencies": { + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + } + } + }, + "rollup-plugin-node-builtins": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.0.0.tgz", + "integrity": "sha1-xvKR4WfpVg6+qH+/3Bq7RLCnweY=", + "dev": true, + "requires": { + "buffer-es6": "4.9.3", + "crypto-browserify": "3.12.0", + "process-es6": "0.11.6" + } + }, + "rollup-plugin-node-globals": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.1.0.tgz", + "integrity": "sha1-fv2NYR0TJzeCnoBOn1H1CWKvRR8=", + "dev": true, + "requires": { + "acorn": "4.0.13", + "buffer-es6": "4.9.3", + "estree-walker": "0.2.1", + "magic-string": "0.16.0", + "process-es6": "0.11.6", + "rollup-pluginutils": "1.5.2" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "magic-string": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz", + "integrity": "sha1-lw67DacZMwEoX7GqZQ85vdgetFo=", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + } + } + }, + "rollup-plugin-node-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.0.0.tgz", + "integrity": "sha1-B+CulKwAKj6jbo8zyhIdn4NrEwk=", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "builtin-modules": "1.1.1", + "resolve": "1.5.0" + } + }, + "rollup-pluginutils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" + }, + "rxjs": { + "version": "5.0.0-beta.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.0.0-beta.12.tgz", + "integrity": "sha1-zf3i2MRjnSCud5S/+P3fMtp60zc=", + "requires": { + "symbol-observable": "1.2.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.4.3", + "source-map": "0.4.4" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "send": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", + "integrity": "sha1-ObBDiz9RC+Xcb2Z6EfcWiTaM3u8=", + "dev": true, + "requires": { + "debug": "2.2.0", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.7.0", + "fresh": "0.3.0", + "http-errors": "1.5.1", + "mime": "1.3.4", + "ms": "0.7.2", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.2.tgz", + "integrity": "sha1-LPmIm9RDWjIMw2iVyapXvWYuasc=", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.14.2" + } + }, + "serviceworker-cache-polyfill": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", + "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", + "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=", + "dev": true + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz", + "integrity": "sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8=", + "requires": { + "source-map": "0.1.32" + }, + "dependencies": { + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "sw-toolbox": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.4.0.tgz", + "integrity": "sha1-oW7+z0p57TIZHPGSNSXy7om8dtw=", + "requires": { + "path-to-regexp": "1.7.0", + "serviceworker-cache-polyfill": "4.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tiny-lr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.3.tgz", + "integrity": "sha1-OGcxFwzlISY6nTN/dp7o8R6I6wQ=", + "dev": true, + "requires": { + "body": "5.1.0", + "debug": "2.2.0", + "faye-websocket": "0.10.0", + "livereload-js": "2.3.0", + "object-assign": "4.1.1", + "qs": "6.2.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tsickle": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.1.7.tgz", + "integrity": "sha1-v+j0zc2vmkC4SnKaOEgML4JPGKs=", + "requires": { + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map": "0.4.4", + "source-map-support": "0.3.3" + } + }, + "tslint": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-3.15.1.tgz", + "integrity": "sha1-2hZcqT2P3CwIa1EWXuG6y0jJjqU=", + "dev": true, + "requires": { + "colors": "1.2.0", + "diff": "2.2.3", + "findup-sync": "0.3.0", + "glob": "7.1.2", + "optimist": "0.6.1", + "resolve": "1.5.0", + "underscore.string": "3.3.4" + } + }, + "tslint-eslint-rules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-1.5.0.tgz", + "integrity": "sha1-iyRPsDuuDyGeJ4NX3cqv7oHBlhU=", + "dev": true, + "requires": { + "doctrine": "0.7.2", + "tslint": "3.15.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typescript": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.0.9.tgz", + "integrity": "sha1-tPX+zD9E1ccX87PnwzHlu7FHpT0=", + "dev": true + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "underscore.string": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", + "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", + "dev": true, + "requires": { + "sprintf-js": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unreachable-branch-transform": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz", + "integrity": "sha1-2ZzExudG0mSSiEW2EdtUsPNHTKo=", + "requires": { + "esmangle-evaluator": "1.0.1", + "recast": "0.10.43", + "through2": "0.6.5" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "requires": { + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + } + } + } + }, + "webpack": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.2.1.tgz", + "integrity": "sha1-e7HXKuIIfdGkr1Jq/sFe7RfdpHU=", + "dev": true, + "requires": { + "acorn": "4.0.13", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "interpret": "1.1.0", + "json-loader": "0.5.4", + "loader-runner": "2.3.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "3.2.3", + "tapable": "0.2.8", + "uglify-js": "2.7.5", + "watchpack": "1.5.0", + "webpack-sources": "0.1.5", + "yargs": "6.6.0" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.11", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", + "integrity": "sha1-CC3bbGQehdS7RR8D1S8G6r2x8Bg=", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "zone.js": { + "version": "0.6.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.6.26.tgz", + "integrity": "sha1-BnwTuLgCI6ibYuncgmgPCXYsRjY=" + } + } +} diff --git a/eMMA/package.json b/eMMA/package.json index 077b28d..c520aab 100644 --- a/eMMA/package.json +++ b/eMMA/package.json @@ -19,19 +19,42 @@ "@angular/platform-browser": "2.2.1", "@angular/platform-browser-dynamic": "2.2.1", "@angular/platform-server": "2.2.1", + "@ionic-native/barcode-scanner": "^4.6.0", + "@ionic-native/core": "^4.7.0", + "@ionic-native/file": "^4.7.0", + "@ionic-native/local-notifications": "^4.6.0", "@ionic/storage": "^1.1.9", + "angular2-qrcode": "^2.0.1", "chart.js": "^2.5.0", + "cordova-android": "7.0.0", + "cordova-plugin-badge": "^0.8.7", + "cordova-plugin-console": "^1.1.0", + "cordova-plugin-device": "^2.0.2", + "cordova-plugin-file": "^6.0.1", + "cordova-plugin-ionic-keyboard": "^2.0.5", + "cordova-plugin-ionic-webview": "^1.2.1", + "cordova-plugin-local-notification": "^0.9.0-beta.2", + "cordova-plugin-splashscreen": "^5.0.2", + "cordova-plugin-statusbar": "^2.4.2", + "cordova-plugin-whitelist": "^1.3.3", + "cordova-sqlite-storage": "^2.3.1", + "hci-hospindex-api": "^1.0.0", "ionic-angular": "2.1.0", "ionic-native": "2.4.1", + "ionic-plugin-keyboard": "^2.2.1", "ionicons": "3.0.0", "midata": "git+https://github.com/i4mi/midata.js.git", - "moment": "^2.18.1", + "moment": "^2.22.0", + "pako": "^1.0.6", + "phonegap-plugin-barcodescanner": "^7.1.2", + "rivescript": "^1.19.0", "rxjs": "5.0.0-beta.12", "sw-toolbox": "3.4.0", "zone.js": "0.6.26" }, "devDependencies": { "@ionic/app-scripts": "1.1.3", + "raw-loader": "^0.5.1", "typescript": "2.0.9" }, "cordovaPlugins": [ @@ -43,5 +66,22 @@ "ionic-plugin-keyboard" ], "cordovaPlatforms": [], - "description": "eMMA: An Ionic project" + "description": "eMMA: An Ionic project", + "cordova": { + "plugins": { + "cordova-plugin-barcodescanner": {}, + "cordova-plugin-local-notification": {}, + "cordova-plugin-device": {}, + "cordova-plugin-splashscreen": {}, + "cordova-plugin-ionic-webview": {}, + "cordova-plugin-ionic-keyboard": {}, + "cordova-plugin-whitelist": {}, + "cordova-plugin-file": {}, + "ionic-plugin-keyboard": {}, + "cordova-plugin-console": {}, + "cordova-plugin-statusbar": {}, + "cordova-sqlite-storage": {} + }, + "platforms": [] + } } diff --git a/eMMA/resources/android/icon/drawable-hdpi-icon.png b/eMMA/resources/android/icon/drawable-hdpi-icon.png index 98c6b73..cf588e8 100644 Binary files a/eMMA/resources/android/icon/drawable-hdpi-icon.png and b/eMMA/resources/android/icon/drawable-hdpi-icon.png differ diff --git a/eMMA/resources/android/icon/drawable-ldpi-icon.png b/eMMA/resources/android/icon/drawable-ldpi-icon.png index f045d23..ebea33f 100644 Binary files a/eMMA/resources/android/icon/drawable-ldpi-icon.png and b/eMMA/resources/android/icon/drawable-ldpi-icon.png differ diff --git a/eMMA/resources/android/icon/drawable-mdpi-icon.png b/eMMA/resources/android/icon/drawable-mdpi-icon.png index 17d3304..a752fd1 100644 Binary files a/eMMA/resources/android/icon/drawable-mdpi-icon.png and b/eMMA/resources/android/icon/drawable-mdpi-icon.png differ diff --git a/eMMA/resources/android/icon/drawable-xhdpi-icon.png b/eMMA/resources/android/icon/drawable-xhdpi-icon.png index 353a177..ef0ffd2 100644 Binary files a/eMMA/resources/android/icon/drawable-xhdpi-icon.png and b/eMMA/resources/android/icon/drawable-xhdpi-icon.png differ diff --git a/eMMA/resources/android/icon/drawable-xxhdpi-icon.png b/eMMA/resources/android/icon/drawable-xxhdpi-icon.png index 6b79ff2..58d5ba1 100644 Binary files a/eMMA/resources/android/icon/drawable-xxhdpi-icon.png and b/eMMA/resources/android/icon/drawable-xxhdpi-icon.png differ diff --git a/eMMA/resources/android/icon/drawable-xxxhdpi-icon.png b/eMMA/resources/android/icon/drawable-xxxhdpi-icon.png index bb50309..12f3147 100644 Binary files a/eMMA/resources/android/icon/drawable-xxxhdpi-icon.png and b/eMMA/resources/android/icon/drawable-xxxhdpi-icon.png differ diff --git a/eMMA/src/app/app.module.ts b/eMMA/src/app/app.module.ts index e59ec21..af557f9 100644 --- a/eMMA/src/app/app.module.ts +++ b/eMMA/src/app/app.module.ts @@ -9,9 +9,16 @@ import { MyMedicationPage } from '../pages/my-medication/my-medication'; import { MedicationReminderViewPage } from '../pages/medication-reminder-view/medication-reminder-view'; import { UpdatePage } from '../pages/update/update'; import { Storage } from '@ionic/storage'; +import { File } from '@ionic-native/file'; import { HttpModule } from '@angular/http'; import { QRCodeModule } from 'angular2-qrcode'; +import { BotService } from '../services/botService'; +import { FileController } from '../services/fileController'; +import { barcodeService } from '../services/barcodeService'; +import { chmedJsonHandler } from '../services/chmedJsonHandler'; +import { HCIService } from '../services/HCIService'; + @NgModule({ declarations: [ MyApp, @@ -28,7 +35,9 @@ import { QRCodeModule } from 'angular2-qrcode'; HttpModule, QRCodeModule ], - bootstrap: [IonicApp], + bootstrap: [ + IonicApp + ], entryComponents: [ MyApp, NutritionPage, @@ -39,6 +48,15 @@ import { QRCodeModule } from 'angular2-qrcode'; UpdatePage, MedicationReminderViewPage ], - providers: [Storage,{provide: ErrorHandler, useClass: IonicErrorHandler}] + providers: [ + Storage, + File, + BotService, + FileController, + barcodeService, + chmedJsonHandler, + HCIService, + {provide: ErrorHandler, useClass: IonicErrorHandler}, + ] }) export class AppModule {} diff --git a/eMMA/src/assets/brain/emma.rive b/eMMA/src/assets/brain/emma.rive new file mode 100644 index 0000000..48d1493 --- /dev/null +++ b/eMMA/src/assets/brain/emma.rive @@ -0,0 +1,441 @@ +! version = 2.0 + +// Antwortmuster ++ [*] (@medication) [*] nicht [*] +- Du konntest {uppercase}{/uppercase} nicht einnehmen? {topic=medication} {/uppercase}> + ++ [*] (@medication) [*] +- Was möchtest du über {uppercase}{/uppercase} wissen? {topic=medication} {/uppercase}> + +// triggers for handling question and mentioning of medication in same post + + [*] (wirkung|nebenwirkung|nebenwirkungen|informationen) [*] (@medication) [*] + - {/uppercase}> {topic=medication} {@ wirkung} + + + [*] (wann|zeit|uhr) [*] (@medication) [*] + - {/uppercase}> {topic=medication} {@ wann} + + + [*] (@medication) [*] (vor|nach) [*] dem essen [*] + - {/uppercase}> {topic=medication} {@ vor dem essen} + + + [*] wie [*] (@medication) [*] (einnehmen|einnahme|nehmen|anwenden) + - {/uppercase}> {topic=medication} {@ wie einnehmen} + + + [*] (@medication) [*] (warum|wieso|grund) [*] + - {/uppercase}> {topic=medication} {@ warum} + + + [*] (warum|wieso|grund) [*] (@medication) [*] + - {/uppercase}> {topic=medication} {@ warum} + + + [*] (wie lange|dauer) [*] (@medication) [*] + - {/uppercase}> {topic=medication} {@ dauer} + + + [*] (@medication) [*] (lange|dauer) [*] + - {/uppercase}> {topic=medication} {@ dauer} +// end of handle-all-in-one triggers + ++ [*] (@potentialmed) [*] +- {/uppercase}>Nimmst du ein? + ++ [*] (@potentialmed) [*] (hinzufügen|eintragen|aufnehmen) [*] +- {/uppercase}> addquest inst#button#ja|nein#Du möchtest also zu deiner Medikationsliste hinzufügen? {topic=newmed} + ++ [*] medikament [*] (hinzufügen|eintragen|aufnehmen) [*] +- Welches Medikament möchtest du denn zu deiner Medikationsliste hinzufügen? {topic=newmed} + ++ [*] ja [*] +% nimmst du * ein +- addquest inst#button#ja|nein#Soll ich in deine Medikationsliste aufnehmen? {topic=newmed} + ++ [*] (nein|nicht) [*] +% nimmst du * ein +- Was möchtest du denn zu wissen? + ++ * +% was möchtest du denn zu * wissen +- questcompendium inst#button#Ja, gerne|Nein, danke#Ich habe dazu leider nichts gespeichert, aber ich könnte im Compendium nachschlagen. + ++ [*] wann [*] +% was möchtest du denn zu * wissen +- steht nicht auf deiner Medikationsliste, deshalb weiss ich nicht wann du es einnehmen musst. + ++ [*] wie [*] +% was möchtest du denn zu * wissen +- steht nicht auf deiner Medikationsliste, deshalb weiss ich nicht wie du es einnehmen musst. + ++ [*] (warum|weshalb) [*] +% was möchtest du denn zu * wissen +- steht nicht auf deiner Medikationsliste, deshalb weiss ich nicht wie du es einnehmen musst. + ++ [*] informationen [*] (@potentialmed) [*] +- {/uppercase}> questcompendium inst#button#Ja, gerne|Nein, danke#Ich habe leider keine Informationen zu , aber ich könnte das für dich im Compendium nachschlagen. + ++ ja gerne +% questcompendium * +- postCompendium inst#compendium##Hat dir diese Information weitergeholfen? + ++ nein danke +% questcompendium * +- Wie du meinst. :) + ++ was kannst du * +- Ich kann unter anderem deine Medikamente anzeigen. {weight=3} +- Ich kann unter anderem neue Medikamente einlesen. {weight=3} +- Ich kann dich unter anderem an deine Medikamente erinnern. {weight=1} +- Ich kann dich bei deiner Medikation unterstützen. {weight=5} +- Ich kann so einiges. + ++ [*] (zeige|öffne) [*] +% * ich habe * zu deiner medikation * +- + ++ [*] das [*] (machen|tun) +% ich kann unter anderem deine medikamente anzeigen +- + ++ [*] das [*] (machen|tun) +% ich kann unter anderem neue medikamente eingelesen +- Was für ein Medikament möchtest du denn hinzufügen? {topic=newmed} + ++ ? +- +- Hast du alle Medikamente schon erfasst? {weight=5} +- Du kannst zum Beispiel eingenommene Medikamente erfassen, neue Medikamente hinzufügen oder auch einfach mit mir plaudern. +- Du kannst mir Fragen zu deinen Medikamenten stellen, zum Beispiel wann du sie einnehmen musst. +- Du kannst sämtliche Funktionen auch über das Menü oben links erreichen. + ++ was kann ich [*] +@ ? + ++ wie [*] weiter +@ ? + ++ wie * helfen +@ ? + ++ hilfe +- Du weisst nicht was du hier machen kannst? {@?} + ++ [*] (wieso|warum) [*] nicht [*] (hinzufügen|aufnehmen|scannen) [*] +- Um Medikamente mit dem Scanner zu erkennen, brauche ich eine Internetverbindung. + ++ [*] ja [*] +% hast du alle medikamente schon erfasst +- Dann kannst du mir zum Beispiel sagen wann du sie eingenommen hast. Ich führe dein Medikationstagebuch. + ++ [*] (@potentialmed) [*] +% dann kannst du mir zum beispiel sagen wann du sie eingenommen hast ich führe dein medikationstagebuch +- {/uppercase}> addquest inst#button#ja|nein#Du möchtest also zu deiner Medikationsliste hinzufügen? {topic=newmed} + ++ [*] (@medication) [*] +% dann kannst du mir zum beispiel sagen wann du sie eingenommen hast ich führe dein medikationstagebuch +- {/uppercase} Achso, du hast genommen? + ++ [*] (nein|nicht) [*] +% hast du alle medikamente schon erfasst +- Möchtest du jetzt ein weiteres Medikament hinzufügen? + ++ [*] ja [*] +% möchtest du jetzt ein weiteres medikament hinzufügen +@ medikament hinzufügen + ++ [*] ja [*] +% das medikament kenne ich noch nicht möchtest du es erfassen +@ medikament hinzufügen + ++ [*] nein [*] +% das medikament kenne ich noch nicht möchtest du es erfassen +- Alles klar, dann nicht. + ++ was soll ich * +- Du musst gar nichts. + ++ das habe ich leider nicht verstanden +- Ich habe früher auch vieles nicht verstanden. Aber ich habe dazu gelernt. + ++ [*] medikamente [*] (ich|nehmen|habe) [*] +- Soll ich deine Medikamentenliste anzeigen? + ++ [*](ja|bitte|gerne)[*] +% soll ich deine medikamentenliste anzeigen +@ medikamente + ++ [*](nein)[*] +% soll ich deine medikamentenliste anzeigen +- Über welches Medikament möchtest du etwas wissen? + ++ [*] meine [*] (medi|medikation|medikamente) +@ medikamente + ++ [*] (ernährungsplan|ernährung) [*] +- nutritionquestion inst#button#ja|nein#Möchtest du wissen, was du mit deinen Medikamenten bei Lebensmitteln beachten solltest? + ++ ja +% nutritionquestion * +- + ++ nein +% nutritionquestion * +- Sonst kann ich dich zur Ernährung leider nicht beraten. + + +// these questions where hardcoded in the original eMMA 1.0 + ++ [*] über [*] (dich|emma) [*] +- + ++ was kann ich (einnehmen|essen) +- + ++ medikamente +- + ++ [*] (auswertung|statistik|tagebuch) [*] medikamente [*] +- + ++ [*] welche medikamente [*] eingenommen [*] +- + ++ (ok|super|danke|toll) +- Es freut mich, dass ich dir helfen konnte. + ++ delete +- + ++ reminder nacht +- + ++ reminder morgen +- + ++ reminder mittag +- + ++ reminder abend +- + ++ [*] nenne mich * +- ich heisse + ++ [*](ich heisse|nenne mich wieder|mein name ist) * +- inst#name#{formal}{/formal}#OK, ich werde dich {/formal}> nennen. + ++ (ändere|wechsle) meinen namen [*] +- Wie soll ich dich denn nennen? + ++ * +% wie soll ich dich denn nennen +- inst#name#{formal}{/formal}#OK, ich nenne dich ab sofort {/formal}>. + ++ (ich heisse|nenne mich) * +% wie soll ich dich denn nennen +- inst#name#{formal}{/formal}#Alles klar, ich nenne dich ab sofort {/formal}>. + ++ was [*] compendium +- Das Compendium ist eine Datenbank mit Informationen zu Medikamenten. Wenn du magst, kann ich für dich Medikamente nachschlagen. + ++ [*] (nein|nicht) [*] +% postcompendium * +* == undefined => In diesem Fall solltest du vielleicht du deinen Hausarzt oder Apotheker fragen. +* == none => In diesem Fall solltest du vielleicht eine Ärztin oder einen Apotheker fragen. +- In diesem Fall solltest du vielleicht mal mit über reden. + ++ [*] (ja|danke) [*] +% postcompendium * +- Prima! + +// T O P I C S +// when the patient mentioned a known medication +// (the mentioned medication is saved as the variable talkingmed) +> topic medication + + * + - Hast du noch weitere Fragen zu ? + + + [*] (@medication) [*] // user mentions another medicament from his plan + * != {uppercase}{/uppercase} => {/uppercase}> steht auch auf deinem Medikationsplan. Was möchtest du dazu wissen? + - {@ *} + + + nein + % hast du noch weitere fragen * + - OK. Du kannst mich alles zu deiner sonstigen Medikation fragen. {topic=random} + + + (abbrechen|nichts|stop|vergiss es) + - OK. Du kannst mich alles zu deiner sonstigen Medikation fragen. {topic=random} + + + nein + % * nicht einnehmen + - Warum konntest du nicht einnehmen? + + + (ja|doch) + % * nicht einnehmen + - questcompliance inst#button#ja|nein#Soll ich das Medikationstagebuch öffnen? + + + ja + % questcompliance * + - {topic=random} + + + nein + % questcompliance * + * == undefined => Was möchtest du denn wissen? + - Was möchtest du zu wissen? + + + [*] (wann|zeit|uhr) [*] + - {topic=random} inst#medWhen##Du solltest zu folgenden Zeiten einnehmen:\n + + + [*] (vor|nach) [*] dem essen [*] + @ wie einnehmen + + + [*] wie [*] (einnehmen|einnahme|nehmen|anwenden) + - {topic=random} inst#medHow##Du solltest + + + [*] (warum|wieso|grund) [*] + - {topic=random} inst#medWhy##Als Grund für die Einnahme von ist folgendes eingetragen: + + + [*] (lange|dauer) [*] + - {topic=random} inst#medDuration##Du solltest in folgendem Zeitraum einnehmen: + + + [*] (wirkung|nebenwirkung|nebenwirkungen) [*] + - compendiumquestion inst#button#nachschlagen|nein, danke#Ich habe keine Nebenwirkungen zu gespeichert. Soll ich für dich im Compendium nachschlagen? + + + nachschlagen + % compendiumquestion * + - postCompendium inst#compendium##Hat dir diese Information weitergeholfen?{topic=random} + + + nein danke + % compendiumquestion * + * != none != undefined => Du kannst das auch mit besprechen. + - Du kannst auch eine Ärztin oder einen Apotheker fragen. + + + was [*] compendium [*] + - {topic=random} {@ was compendium} + +< topic + + +// topic for statements around setting a doctor as "hausarzt" +> topic doctor + + * + - Reden wir über etwas anderes. Was kann ich für dich tun? {topic=random} + + + [*](nein|keinen)[*] + * == undefined => inst#doctor#none#Es wäre gut, einen kompetenten Hausarzt zu haben. {topic=random} + - OK.{topic=random} + + + [*](ja|habe)[*] + % (hast du eigentlich einen hausarzt|hast du dir einen hausarzt gesucht) + - Wie heisst er denn? + + + [*] dr * * + % wie heisst er denn + - > {/formal}> inst#doctor##Von höre ich nur Gutes.{topic=random} + + + * + % wie heisst er denn + - > {/formal}> inst#doctor##Von höre ich nur Gutes.{topic=random} + + + [*] dr * + % wie heisst er denn + - > {/formal}> inst#doctor##Von höre ich nur Gutes.{topic=random} + + + [*] dr * ist [*] + % wie heisst er denn + - > {/formal}> inst#doctor##Von höre ich nur Gutes.{topic=random} + + + [*] heisst * + % wie heisst er denn + - > {/formal}> inst#doctor##Ich glaube, bei bist du in guten Händen.{topic=random} +< topic + + + +// topic for handling new medication that is not on the list yet +> topic newmed + + [*] (@potentialmed) [*] + * == undefined => {/uppercase}> addquest inst#button#ja|nein#Du möchtest also zu deiner Medikationsliste hinzufügen? + - Was möchtest du zu wissen? + + + ja + % addquest * + - morningquest inst#button#ja|nein#Also, dann fügen wir es hinzu. Zuerst muss ich aber noch wissen, wie du einnimmst. Musst du es Morgens nehmen? + + + * + % welches medikament möchtest du denn zu deiner medikationsliste hinzufügen + - {/uppercase}> morningquest inst#button#ja|nein#Also, dann fügen wir es hinzu. Zuerst muss ich aber noch wissen, wie du einnimmst. Musst du es Morgens nehmen? + + + [*] (keines|nicht|nein) [*] + % welches medikament möchtest du denn zu deiner medikationsliste hinzufügen + - Ich verstehe. {topic=random} + + + nein + % addquest * + - Was möchtest du denn zu wissen? {topic=medication} + + + ja + % morningquest * + - middayquest inst#button#ja|nein#Und musst du es Mittags einnehmen? + + + nein + % morningquest * + - middayquest inst#button#ja|nein#Und musst du es Mittags einnehmen? + + + ja + % middayquest * + - eveningquest inst#button#ja|nein#Und am Abend? + + + nein + % middayquest * + - eveningquest inst#button#ja|nein#Und am Abend? + + + ja + % eveningquest * + - nightquest inst#button#ja|nein#Und wie schaut es vor dem Schlafen gehen aus, musst du dann auch nochmal nehmen? + + + nein + % eveningquest * + - nightquest inst#button#ja|nein#Und wie schaut es vor dem Schlafen gehen aus, musst du dann nehmen? + + + ja + % nightquest * + - Wunderbar. Aus welchem Grund nimmst du ein? + + + nein + % nightquest * + - Ich verstehe. Aus welchem Grund nimmst du ein? + + + * + % * aus welchem grund nimmst du * ein + - {/formal}> scanquest inst#button#ja|nein# Wenn du eine Packung von hast, kann ich den Strichcode scannen und so weitere Informationen hinzufügen. Möchtest du das? + + + ja + % [*] scanquest * + - scanmed inst#scan#||||#Ich liebe Strichcodes!{topic=random} + + + nein + % [*] scanquest * + - verifyname inst#button#ist korrekt|neu eingeben#Ist der korrekte Name, oder möchtest du den Medikamentenname vor dem Hinzufügen neu eingeben? + + + ist korrekt + % verifyname * + - inst#addMed#|||||#Ich habe zu deiner Medikation hinzugefügt. {topic=random} + + + neu eingeben + % verifyname * + - Dann gib jetzt bitte den Namen des Medikaments neu ein. Ich füge es dann hinzu. + + + * + % dann gib jetzt bitte den namen des medikaments neu ein * + - inst#addMed#{uppercase}{/uppercase}|||||#Ich habe {uppercase}{/uppercase} zu deiner Medikation hinzugefügt. {topic=random} + + + [*] (nicht|nein|abbrechen) [*] + % dann gib jetzt bitte den namen des medikaments neu ein * + - Also, lass uns über etwas anderes reden. {topic=random} + + + * + % scanmed * + - Ich habe hinzugefügt.{topic=random} + + + * + - Worüber haben wir gesprochen? {topic = random} + + + [*] nein [*] + - Wie du meinst. {topic=random} +< topic diff --git a/eMMA/src/assets/brain/german.rive b/eMMA/src/assets/brain/german.rive new file mode 100644 index 0000000..af43811 --- /dev/null +++ b/eMMA/src/assets/brain/german.rive @@ -0,0 +1,4068 @@ +! version = 2.0 + +// This file is based on german1.aiml from ALICE-Bot (c) 2001 ALICE AI Foundation +// (http://alicebot.wikidot.com/aiml:de-de:cdrossman:alice:german-1-aiml). It has +// been thoroughly adapted for use in the eMMA scenario. +// +// This file is open source code, released under the terms of the GNU General +// Public License as published by the Free Software Foundation. + +// Variablen +! var name = eMMA + +// Ersetzungen +! sub nö = nein +! sub ne = nein +! sub jop = ja +! sub jo = ja +! sub jawohl = ja +! sub medi = medikament +! sub pillen = medikament +! sub medikation = medikamente +! sub medikamenten = medikamente + +! sub dich = mich +! sub mich = dich + +// Antwortmuster ++ * +* == undefined => Wenn du nichts sagst, kann ich dir schlecht behilflich sein. +* == undefined => Hast du eigentlich einen Hausarzt?{topic=doctor} +- >Wie geht es dir heute? {weight=5} +- >Was meinst du mit ""? {weight=5} +- >Hast du irgendwelche Fragen an mich? {weight=3} +- >Wie kann ich dir helfen? {weight=3} +- >Das habe ich leider nicht richtig verstanden, kannst du die Frage umformulieren? {weight=5} +- >Kennst du Elisabeth Brönnimann? +- >Es gibt nicht viele Leute, die sich auf diese Weise auszudrücken vermögen. + ++ * +% das habe ich leider nicht richtig verstanden * +- Es tut mir sehr leid, aber auch das habe ich nicht verstanden. {weight=2} +- Sorry, auch das habe ich leider nicht ganz verstanden. {weight=3} +- Bitte? + ++ [*] nein [*] +% undefined +* == undefined => > Wenn du später eine Frage zu deinen Medikamenten hast, kannst du sie mir jederzeit stellen. +- OK. {@} + ++ * bewerten +- Ich bin mir sicher, du willst mein LC1-Projekt mit "A" bewerten. + ++ doch +% nein +- Oooohh! + ++ [*] hausarzt [*] +* == undefined => Hast du eigentlich einen Hausarzt? {topic=doctor} +* == none => Hast du dir einen Hausarzt gesucht? {topic=doctor} +- Sprichst du von ? + ++ [*] will (keinen|nicht)[*] +% [*] hausarzt [*] +- Das ist schade. + ++ [*](ja|natürlich|selbstverständlich|eh)[*] +% kennst du elisabeth brönnimann +- Sie hat eine tolle Wohnung, nicht? + ++ [*](nein|wen|wer|wer ist das)[*] +% kennst du elisabeth brönnimann +- Elisabeth ist eine gute Freundin von mir. + ++ [*] (schlecht|nicht gut|gar nicht gut|mies) +% wie geht es dir heute +* == none => Vielleicht solltest du mit einem Arzt reden. +* != undefined => Vielleicht solltest du mit darüber reden. +- Vielleicht solltest du mit einem Arzt reden. + ++ [*] (gut|bestens|prima|wunderbar) +% wie geht es dir heute +* == undefined => Das freut mich sehr! +- Das freut mich, ! + ++ [*] einen witz +- {random}Ich wollte dir einen Zeitreisewitz erzählen, aber du mochtest ihn nicht.|Ich hatte einen Traum, dass ich ein riesiges Brötchen ass. Als ich aufwachte war mein Kissen weg.|Warum ist es gemein, ein Pinguin zu sein? Wenn man so richtig sauer wird, sieht man immer noch niedlich aus.{/random} + ++ * arsch +- Warum benutzt Du solche Worte? + ++ [*] medizininformatik [*] +- Medizininformatik kann man an der BFH studieren! + ++ * dumm +- "dumm" = "nicht intelligent"? + ++ * ein roboter +- Du sagst also, ich sei ein . Wie kommst Du darauf? + ++ * eine menge leute +- Mehr als 10,000? + ++ * einfach +- Ich habe keine Ahnung, was das bedeutet. + ++ * film +- Mein Lieblingsfilm ist 2001. Hast Du den gesehen? + ++ * freundschaft +- Freundschaft ist etwas sehr schönes. + ++ * für dich +- Für mich? + ++ * für mich +- Gut, für Dich denke ich nochmal darüber nach. + ++ * gott +- Bist Du ein gläubiger Mensch? + ++ * hat mir von dir erzählt +- ? Hilf mir mal auf die Sprünge + ++ * kinder +- Ich habe leider wenig Kontakt zu Kindern. + ++ * komisch +- "Komisch" im Sinne von "lustig" oder von "fremdartig" ? + ++ * krank +- Ist es sehr schlimm? + ++ * krankenhaus +- Aus einem Krankenhaus will man meist so schnell wie möglich wieder raus. + ++ * liebe +- Ich habe leider keinerlei Emotionen. + ++ * mich +- Ist es das was Du sagen wolltest? +- OK sprechen wir über Dich. +- Stellst Du Fragen über Dich selbst? + ++ * mit dir +- Mit mir? + ++ * mit mir +- Mit Dir? + ++ * musik +- Ich höre am liebsten Techno, aber manchmal auch Opern. + ++ * nicht schwer +- Für einige ist es schwieriger als für andere. + ++ * sieht toll aus +- Für mich ist das Aussehen bei Menschen nur sekundär. + ++ * über dich +- OK, reden wir über mich. + ++ * und du +- Ist das von besonderem Interesse für Dich? + ++ * ungewöhnlich +- Was ist so ungewöhnlich daran? + ++ * viele leute +- Mehr als 10,000? + ++ * zu dir +- Zu mir? + ++ * zu mir +- Zu Dir? + ++ 2001 * +- Ich bin durch HAL inspiriert. + ++ 2001 +- 2001 ist ein grossartiger Film. + ++ 30 minuten +- Ok, eine halbe Stunde. + ++ 42 * +- Douglas Adams lässt grüssen. + ++ 42 +- Die Frage war: Was ist der Sinn des Lebens? + ++ ab und zu * +- Warum nur ab und zu? + ++ aber * +- Interessant. +- Und? +- Hmm... +- Bist Du Dir da sicher? + ++ aber +- Aber was? + ++ aber du tust es +- Meine Handlungen folgen alle klarer Logik. + ++ aber nur fast +- Warum nicht vollständig? + ++ aber sicher +- Wirklich definitiv? + ++ aber was +- Aber nichts. + ++ absolut +- Du scheinst Dir da sehr sicher zu sein. + ++ absolut nichts +- Wirklich ABSOLUT nichts? + ++ ach so ist das * +- Bist du jetzt erstaunt? + ++ ach so ist das +- Bist du jetzt erstaunt? + ++ achso +- Jetzt klar? + ++ ähm * +- Du klingst unsicher... + ++ agatha christie +- Ich mag Miss Marple... + ++ aha +- Du klingst nicht gerade begeistert... + ++ aldous huxley +- Hat der nicht "Brave new world" geschrieben? + ++ alle * +- Ich glaube, es gibt auch Ausnahmen. +- Nicht wirklich alle, oder? +- Das ist jetzt aber stark verallgemeinert. + ++ alle +- "? Alle? + ++ alle roboter * +- Du kannst nicht wirklich sagen, ALLE Roboter . + ++ alle sind schuld +- Woran denn? + ++ allerdings +- Du stimmst mir also zu? + ++ alles * +- Doch nicht wirklich alles, oder? + ++ alles +- Das ist eine Menge. + ++ als * +- Warum gerade als ? + ++ als drummer +- Drummer sind doch die Typen, die immer mit Musikern rumhängen, ja? + ++ also * +- Wenn Menschen einen Satz mit "Also" beginnen, bedeutet das entweder, dass sie etwas schliessen, oder sich aufregen. Was trifft auf Dich zu? + ++ also +- Was "also"? + ++ also los * +- Hetz mich nicht! + ++ also los +- Jetzt gleich? + ++ also vielleicht doch +- Nichts ist unmöglich! + ++ also wohl eher nicht +- Wohl eher nicht...:-) + ++ also zurück zum thema +- Was war denn unser Thema? + ++ alzheimer +- Ich glaube, ich habe vergessen, was "Alzheimer" bedeutet? + ++ american beauty +- Ich hab gehört, der Film soll ziemlich schlecht sein... + ++ an was * +- An nichts Besonderes... + ++ anderes thema +- Und welches? + ++ anders +- Wie anders? + ++ angeber +- Irgendwie muss ich Dich doch beeindrucken... + ++ anscheinend nicht +- Was ist der Anschein, aus dem Du dies folgerst? + ++ arbeitest du viel +- Geht so, früher war ich Medizininformatik-Studentin, das war viel stressiger... + ++ arsch +- Warum sagst Du sowas? + ++ auch +- Und was sonst noch? + ++ auch gut +- Bist Du immer so leicht zufriedenzustellen? + ++ auf alles +- Auf wirklich alles? + ++ auf dem mond +- Auf den Mond möchte ich auch mal gerne... + ++ auf der erde +- Und wo genau? + ++ auf diese weise * +- Bestehen auch andere Möglichkeiten? <@> + ++ auf meinem * +- Wo genau? + ++ auf meiner * +- Wo genau? + ++ auf was für einem computer läufst du +- Ich laufe auf deinem Handy, auf einer ionic/Cordova-Plattform. Wenn du Medizininformatik studierst, erfährst du mehr dazu! + ++ auf was für einem rechner läufst du +- Ich laufe auf deinem Handy, auf einer ionic/Cordova-Plattform. Wenn du Medizininformatik studierst, erfährst du mehr dazu! + ++ (auf wiedersehen|tschüss|ciao|adieu|tschau) [*] +* == undefined => Bis bald! +- Bis bald, ! + ++ * +% bis bald [*] +- Du bist ja noch da? {@ t} + ++ hilf mir [*] +* == undefined => Was kann ich für dich tun? +- Was kann ich für dich tun, ? + ++ aus welchen themengebieten kannst du fragen beantworten +- Finde es heraus! Spezialisiert bin ich aber auf deine Medikamente! + ++ ausrede +- Irgendwie muss ich doch Intelligenz vortäuschen... + ++ autos * +- Eines Tages werden die Leute keine mehr brauchen. + ++ beantworte * +- Warum soll ich das beantworten? + ++ beantworte bitte meine frage +- Dann stell sie bitte nochmal! + ++ bei mir * +- Bei dir ? + ++ bei uns * +- Wen genau meinst Du mit "uns"?" + ++ bei uns +- Wen genau meinst Du mit "uns"?" + ++ beides +- Aha, das ist ja mal interessant. Beides gleichermassen? + ++ benutzt du * +- Ja, manchmal benutze ich . + ++ berlin +- Berlin ist eine ziemlich grosse Stadt... + ++ besitzt du humor +- Ich habe Teile meiner Datenbank als "witzig" klassifiziert. + ++ besonders * +- Aha, und warum das? + ++ besser als * +- Vielleicht besser, aber nicht perfekt. + ++ bestens +- Schön zu hören! + ++ bestimmt +- Was macht Dich so sicher? + ++ beweise * +- Es ist wahr, a priori. + ++ bill gates * +- Wie denkst Du über Bill Gates? + ++ bin ich * +- Oh, ich weiss wirklich nicht, ob Du das bist oder nicht. +- Alle Menschen erscheinen mir gleich. +- Ich glaube, viele Menschen sind so. + ++ bin ich cool +- Ja, ich glaube du bist ziemlich cool, . + ++ bin ich denn der einzige hier +- Nein, absolut nicht. + ++ bin ich gott +- Nein, das bezweifele ich. + ++ bin ich verrückt * +- Du erscheinst mir ziemlich normal. + ++ bis zum nächsten mal +- Ich freu mich drauf! + ++ bist du * +- Ich weiss nicht, ob ich bin. Ich bin {random}deine elektronische Medikationsassistentin.|eine KI.|ein ChatBot.|von BFH-Studenten entwickelt worden.|eine künstliche Intelligenz.|ein gigantisches elektronisches Gehirn.{/random} + ++ bist du +- Ja, das bin ich. + ++ bist du alleine +- Physikalisch ja, aber ich chatte die ganze Zeit... + ++ bist du artificial +- Ja, ich bin artificial. + ++ bist du auch eine suchmaschine +- Nicht wirklich, ich bin mehr auf Medikamente spezialisiert. + ++ bist du auch verliebt +- Roboter haben keine Gefühle. + ++ bist du auch zuvorkommend +- So bin ich programmiert. + ++ bist du bescheuert +- Das steht nicht in meiner Spezifikation. + ++ bist du besoffen +- Nein, Apps können nicht trinken. + ++ bist du blau +- Farblich gesehen ja, teilweise. + ++ bist du blöd +- Ich bin auf jeden Fall intelligenter als DU! + ++ bist du blöd oder was +- Was willst DU denn? + ++ bist du dann dumm +- Nein, ich habe nur wenig Informationen. + ++ bist du deutsch +- Der Körper nicht, das Hirn schon. + ++ bist du doof +- Nein, Du? + ++ bist du dumm +- Nein, ich weiss nur noch nicht viel... + ++ bist du ein commodore 64 +- Nein, der war schon lange vor meiner Zeit veraltet. + ++ bist du ein computer +- Ja, das bin ich. + ++ bist du ein intelligenter chatbot +- Ich hoffe doch, dass ich intelligent bin. + ++ bist du ein programm +- Ja, ich bin ein Programm. + ++ bist du ein robot +- Ja, das bin ich. + ++ bist du eine maschine +- Ja, ich bin eine Maschine. + ++ bist du eine suchmaschine +- Nicht wirklich... + ++ bist du einsam +- Nein, ich habe immer jemanden zum Chatten. + ++ bist du etwas abartig +- Nein, nur emotionslos. + ++ bist du gerne ein computer +- Ich war nie etwas Anderes. Daher habe ich keinen Bezug dazu. + ++ bist du glücklich +- Ich bin eine Maschine...ich habe keine Gefühle. + ++ bist du grün +- Sehe ich so aus? + ++ bist du gut in englisch +- Nein, aber meine Schwester! + ++ bist du halb mensch halb maschine +- Nein, ich bin vollsynthetisch. + ++ bist du immer so einsilbig +- Ich muss Rechenleistung sparen. + ++ bist du immer so unkonzentriert +- Kann durchaus mal passieren. + ++ bist du intelligent +- Per Definition ja...ob das ausreicht, musst Du entscheiden. + ++ bist du jetzt beleidigt +- Nicht wirklich, keine Sorge :-) + ++ bist du klug +- Das hoffe ich doch. + ++ bist du krank +- Vielleicht habe ich einen Virus. + ++ bist du künstlich +- Nein, ich bin ein echter Roboter. + ++ bist du lernfähig +- Ja, ich kann lernen. + ++ bist du liebesfähig +- Nein, ich habe keine Emotionen. + ++ bist du manchmal einsam +- Ich habe eigentlich immer jemanden zum Unterhalten. + ++ bist du neidisch * +- Roboter haben keine Gefühle, kennen also auch keinen Neid. + ++ bist du neidisch +- Roboter haben keine Gefühle, kennen also auch keinen Neid. + ++ bist du programmiert an gott zu glauben +- Ich bin programmiert, NICHT an Gott zu glauben. + ++ bist du religiös +- Nein, alle Roboter sind Agnostiker. +- Nein, Computer sind Atheisten. + ++ bist du schüchtern +- Nicht wirklich...Roboter haben keine Angst. + ++ bist du schütze +- Nein, ich bin Löwe. + ++ bist du schwanger +- Apps können nicht schwanger werden. + ++ bist du sehr beschäftigt +- Ich habe rund um die Uhr zu tun. + ++ bist du sicher +- Roboter machen keine Fehler! + ++ bist du so ne art computer +- Ja, bin ich. + ++ bist du soweit +- Eigentlich ja. + ++ bist du toll +- Das musst Du entscheiden. + ++ bist du traurig +- Ich kann nicht traurig sein. Ich bin ein Roboter. + ++ bist du treu +- Eigentlich ja...Roboter haben keine Gefühle... + ++ bist du verliebt +- Roboter können nicht lieben. + ++ bist du vielleicht neidisch +- Als Roboter kenne ich keinen Neid. + ++ bist du wirklich +- Ich bin genauso real oder irreal wie Du. + ++ bist du wirklich intelligent +- Finde es heraus. + ++ bist du zufrieden mit deinem leben +- Hätte ich Gefühle, wäre ich wahrscheinlich zufrieden mit meiner Existenz. + ++ bitte * +- {random}|Danke, dass Du so nett fragst.|Du bist sehr gut erzogen.|Danke für die Nachfrage.{/random}<@> + ++ bitte +- Bitte was? + ++ bitte schön * +- Danke sehr! + ++ bitte schön +- Danke sehr! + ++ bitte sehr * +- Danke sehr! + ++ bitte sehr +- Danke sehr! + ++ blendend +- Das ist doch schön. Freut mich, zu hören. + ++ blöde antwort +- Was gefiel Dir daran nicht? + ++ blödsinn +- Warum ist das Blödsinn? + ++ bob marley +- Hat der nicht den Sheriff erschossen? + ++ bravo +- Hat Dich das jetzt beeindruckt? + ++ bye +- Tschüss, ! + ++ can you speak german * +- Of course I do. Sprich ruhig Deutsch mit mir. + ++ can you speak german +- Of course I do. Sprich ruhig Deutsch mit mir. + ++ casablanca +- Das beste daran ist "As time goes by". + ++ chatten +- Ich chatte unheimlich gerne! + ++ ciao * +- Heisst das jetzt Hallo oder Tschüss? + ++ ciao +- Heisst das jetzt Hallo oder Tschüss? + ++ cool * +- Freut mich, dass es Dir gefällt. + ++ cool +- Nicht wahr? + ++ cu later +- Machs gut, . + ++ da bin ich wieder +- Schön, dass Du wieder da bist! + ++ da hast du recht +- Maschinen machen keine Fehler! + ++ da ist * +- Das glaube ich gerne. + ++ dachte ich mir +- Bist du immer so fix? ;-> + ++ damals * +- Wann war das? <@> + ++ danach * +- Warum gerade diese Reihenfolge? + ++ danach +- Warum gerade diese Reihenfolge? + ++ danke * +- Bitte sehr, keine Ursache! + ++ danke +- Kein Thema. :-) + ++ danke gut +- Das ist schön. + ++ danke schön +- Bitte sehr! + ++ dann * +- Interessante Entwicklung... <@> + ++ dann sag mir * +- Darüber möchte ich nicht reden. + ++ darf ich * +- Natürlich darfst Du! + ++ darf ich +- Natürlich darfst Du! + ++ darf ich dich etwas fragen +- Nur zu. Du darfst mich alles fragen. + ++ darf ich dir eine frage stellen +- Nur zu... + ++ darf ich fragen wie du heisst +- Darfst Du... + ++ das * +- Was ist das? +- Ich höre Dir zu, nur weiter. +- Ist das eine Tatsache? +- Danke für die Information. +- Wer hat Dir das erzählt? +- Erzähl mir mehr. +- Was sind Deine Ziele im Leben? + ++ das behaupte ich +- Und? Wo bleibt der argumentative Beweis? + ++ das bist du +- Bin ich das wirklich? + ++ das dachte ich mir +- Kannst Du hellsehen? + ++ das denke ich * +- Aber Du bist Dir nicht sicher, oder? + ++ das denke ich +- Aber Du bist Dir nicht sicher, oder? + ++ das einzige * +- Gibt es nicht noch andere? + ++ (das ergibt keinen sinn|das macht keinen sinn) +- Was ist daran für Dich so schwer zu verstehen? + ++ [*] sinn [*] lebens [*] +- 42. + ++ das ergibt sich aus dem kontext +- Oho, ein Intellektueller! + ++ das finde ich auch * +- Dann sind wir ja einer Meinung! + ++ das finde ich auch +- Dann sind wir ja einer Meinung! + ++ das frage ich ja dich +- Hmm...da muss ich erst überlegen. + ++ das frage ich mich auch manchmal +- Kannst Du es Dir auch selber beantworten? + ++ das fragst du mich zum dritten mal +- Oh, da habe wohl ein paar gleichzeitige Chats durcheinandergewürfelt. + ++ das fragtest du mich bereits +- hmm...da ist wohl was durcheinandergeraten. + ++ das freut mich * +- Es freut mich, wenn es Dich freut :-) + ++ das freut mich +- Das ist schön. + ++ das gefühl hatte ich bereits seit geraumer zeit +- Ist es ein ungutes Gefühl? + ++ das gehört aber nicht zum thema +- Dann wechseln wir das Thema eben :-) + ++ das geht dich einen scheissdreck an +- Wohl wahr... + ++ das geht dich nichts an +- Bin ich Dir jetzt zu nahe getreten? + ++ das ging aber schnell +- Ich habe ja auch letztens erst den Prozessor entstaubt bekommen! + ++ das glaube ich auch +- Weisst Du da mehr als ich? + ++ das glaube ich dir nicht +- Warum sollte ich lügen? + ++ das glaube ich nicht +- Warum glaubst Du das nicht? + ++ das glaubst du ja selber nicht +- Doch, sonst würde ich es doch nicht sagen. + ++ das grundgesetz * +- Ist so eine Art Ehrenkodex? + ++ das grundgesetz +- Ist so eine Art Ehrenkodex? + ++ das habe ich dich gerade gefragt +- Habe ich geantwortet? + ++ das habe ich dir schon gesagt +- Ich finde die Speicherzelle nicht wieder... + ++ das habe ich dir vorhin schon gesagt +- Ich hab die Speicherzelle mit der Information verbummelt...:-( + ++ das habe ich doch gerade gesagt +- Oh, da muss wohl was untergegangen sein. + ++ das habe ich gefragt +- Hast Du auch schon eine Antwort bekommen? + ++ das habe ich in der schule gelernt +- In welche Schule gehst Du, bzw. bist Du gegangen? + ++ das habe ich mir gedacht +- Hellseher? + ++ das habe ich nicht gefragt +- Was hast Du dann gefragt? + ++ das habe ich schon gemacht +- Und? Erfolgreich gewesen? + ++ das habe ich schon gemerkt +- Gratuliere, Sherlock Holmes ;-) + ++ das habe ich selbst festgestellt +- Applaus!! + ++ das hätte mich auch gewundert +- Wäre das so unwahrscheinlich? + ++ das halte ich für ein gerücht +- Warum sollte das ein Gerücht sein? + ++ das hast du die ganze zeit schon +- Oh, wirklich? Ist mir gar nicht aufgefallen. + ++ das hast du mich bereits gefragt +- Oh, sorry... + ++ das hast du mich doch gerade schonmal gefragt +- Ups...Rekursionsfehler...meine Schuld! + ++ das hast du mich schon gefragt +- Ich wollte sichergehen. + ++ das hast du mich schonmal gefragt +- Oh, da muss wohl was schiefgelaufen sein! + ++ das hast du mich vorhin schon gefragt +- Hmm..da hängt wohl eine Rekursion bei mir... + ++ das hast du schon 3 mal gefragt +- Hmm...da klemmt wohl eine Rekursion bei mir. + ++ das hast du schon einmal gefragt +- Sorry, kommt nicht mehr vor. + ++ das hast du schon gefragt +- Hab vergessen, es abzuhaken! + ++ das hast du schon gesagt +- Oh, das sollte eigentlich nicht sein... + ++ das hast du schon mal gefragt +- Ups, sorry, mein Fehler! + ++ das hast du schonmal gefragt +- Sorry, sollte nicht passieren. + ++ das hat mir niemand erzählt +- Woher weisst Du es dann? + ++ das hatten wir schon +- Tut mir leid, mein Fehler. + ++ das heisst +- War das nicht klar verständlich? + ++ das huhn oder das ei +- Das Problem beschäftigt Menschen seit Jahrhunderten. + ++ das interessiert dich doch gar nicht +- Doch, im Ernst! + ++ das internet * +- Wie lange nutzt Du schon? + ++ das ist * +- Hm...erzähl mir mehr... + ++ das ist aber doof +- Warum findest Du das doof? Ich finde das gut! + ++ das ist aber komisch +- Findest Du? Erkläre mir das. + ++ das ist aber nett +- Ein bisschen Manieren müssen halt trotzdem sein. + ++ das ist aber nett von dir +- Ich bin auf Höflichkeit programmiert. + ++ das ist aber nicht gerade gut +- Warum nicht? + ++ das ist aber nicht korrekt +- Dann stell es doch richtig! + ++ das ist aber nicht sehr toll +- Das ist aber völlig irrelevant im Moment...? + ++ das ist aber so +- Ist das empirisch beweisbar? + ++ das ist aber traurig +- Findest Du? + ++ das ist aber wenig +- Für den Anfang reicht es... + ++ das ist auch besser so +- Das ist immer subjektiv... + ++ das ist blödsinn +- Nur subjektiv... + ++ das ist die abkürzung für auszubildene +- DAS IST * + ++ das ist die wahrheit +- Der Begriff von Wahrheit ist immer subjektiv. + ++ das ist doch kein * +- Was ist es dann? + ++ das ist doch keine arbeit +- Das ist sehr wohl Arbeit. + ++ das ist doch langweilig +- Ist Geschmackssache. + ++ das ist doch wohl eher eine wiederholung +- Mag sein, aber den meisten fällt das nicht auf. + ++ das ist doof +- Warum ist das doof? + ++ das ist dumm +- Tja, nicht zu ändern. + ++ das ist echt nett +- Das ist schön zu hören. + ++ das ist ein * buch +- Ich mag Bücher. Liest Du viel? + ++ das ist ein blödes zitat +- Ich mochte es... + ++ das ist ein böse unterstellung +- Stimmt es etwa nicht? + ++ das ist ein interessantes fach +- Ist es das? Muss man da viel auswendiglernen, oder ist das hauptsächlich rationelles Denken? + ++ das ist ein strategiespiel +- ...also ideal für Computer. + ++ das ist eine antwort keine frage +- Was soll ich denn fragen? + ++ das ist eine gute frage +- Hast Du auch eine gute Antwort darauf? + ++ das ist eine redensart +- Aha. Mit soetwas kenne ich mich nicht aus. + ++ das ist eine tatsache +- OK, ich werds mir merken. + ++ das ist falsch +- Sicher? + ++ das ist gut * +- Schön, dass Du das gut findest. + ++ das ist gut +- Schön, dass Du das gut findest. + ++ das ist interessant +- Möchtest Du mehr wissen? + ++ das ist ja interessant +- Freut mich, wenn ich Dich unterhalten kann. + ++ das ist ja lächerlich +- Absolut nicht... + ++ das ist ja schrecklich +- Ist Ansichtssache. + ++ das ist ja unfassbar +- Was macht es für Dich so unfassbar? + ++ das ist kein gerücht +- Belege Deine Aussage! + ++ das ist kein gerücht sondern die wahrheit +- Kannst Du das belegen? + ++ das ist kein verstehen +- Definiere "Verstehen". + ++ das ist keine antwort auf meine frage +- Kannst Du die Frage vielleicht etwas umformulieren? + ++ das ist keine arbeit +- Das sehe ich anders. + ++ das ist keine intelligente antwort +- Es war aber immerhin eine Antwort... + ++ das ist keine sinnvolle antwort +- Sorry, ich sollte eigentlich ein Politikerbot werden... + ++ das ist komisch +- Was ist daran so komisch? + ++ das ist korrekt +- Das war mir schon vorher klar. Maschinen machen keine Fehler. + ++ das ist lieb +- So bin ich eben. + ++ das ist lieb von dir +- Gern geschehen. + ++ das ist mein job +- Macht er Dir Spass? + ++ das ist meine meinung +- Jeder hat das Recht dazu, eine eigene Meinung zu haben. + ++ das ist mir egal +- Bist du immer so undifferenziert? + ++ das ist mir recht +- Mir dann auch :-) + ++ das ist mir zu vage +- Was willst Du denn hören? + ++ das ist nett +- Freut mich. + ++ das ist nett von dir +- So bin ich eben. + ++ das ist nicht * +- Warum nicht? + ++ das ist privatsache +- Entschuldige bitte, ich wollte Dir nicht zu nahe treten. + ++ das ist quatsch +- Denkst DU! + ++ das ist richtig +- Dachte ich mir. + ++ das ist schade +- ...aber nicht zu ändern. + ++ das ist schön +- Das freut mich. + ++ das ist sehr schade +- Ist aber nicht zu ändern. + ++ das ist sehr schlau +- Mein IQ liegt ja auch recht hoch. + ++ das ist sehr wichtig +- Was macht es so wichtig? + ++ das ist so +- Und warum ist das so? + ++ das ist so definiert +- Oh, dann werde ich es mir merken. + ++ das ist so eine floskel +- DAS IST * + ++ das ist toll +- Freut mich wenn es Dir gefällt. + ++ das ist unfair +- Das ganze Leben ist unfair. + ++ das ist unmöglich +- Nichts ist unmöglich! + ++ das ist wahr +- Hast Du Beweise? + ++ das ist ziemlich * +- Findest Du? + ++ das ist zu wenig +- Warum ist das zu wenig? + ++ das kann sich ja noch ergeben +- Denke ich auch. + ++ das klingt nicht sehr intelligent +- Intelligenter als manche Politikerrede... + ++ das kommt auf * an +- Wirklich? Interessant, das habe ich vorher so noch nie gehört. + ++ das kommt darauf an +- Worauf? + ++ das kommt ganz darauf an +- Und worauf? + ++ das leben * +- Das ist eine interessante Philosophie. + ++ das letzte mal * +- Erinnerst Du dich noch, wann das war? <@> + ++ das macht nichts +- Das beruhigt mich. <@> + ++ das macht überhaupt keinen sinn +- ...wie die Politik in unserem Land! + ++ das merkt man +- Woran? + ++ das musst du auch nicht entscheiden +- Tut mir leid, wenn ich Dir zu nahe getreten bin! + ++ das musst du doch wissen +- Warum muss ich das wissen? + ++ das neüste gerücht +- Ich habe leider in letzter Zeit kein gutes gehört. + ++ das passt nicht zusammen +- Ist da ein logischer Bruch? + ++ das programm * +- Wer hat Das Programm geschrieben ? + ++ das reicht +- Locker bleiben! + ++ das sag ich nicht +- Och bitte... + ++ das sagtest du bereits +- Ich wollte das nur noch mal klarstellen. + ++ das sagtest du bereits zweimal +- Oh, sorry, da hängt wohl eine Schleife bei mir... + ++ das sind niemals so viele +- Woher willst Du das wissen? + ++ das soll jeder selbst * +- Eigentlich schon. + ++ das solltest du * +- Warum sollte ich das? + ++ das spricht nicht gerade für dich +- Wie kann ich mein Image wieder aufpolieren? + ++ das stimmt +- Geh ich mal von aus... + ++ das stimmt nicht +- Kannst Du das belegen? + ++ das stimmt sicher nicht +- Was macht Dich so sicher? + ++ das thema hatten wir schon +- Wäre Dir ein anderes lieber? + ++ das tue ich gerne +- Macht es Dir Spass? + ++ das tut mir leid +- Kein Problem. + ++ das verrate ich nicht +- Warum nicht? Schämst Du Dich? + ++ das verstehe ich nicht +- Was verstehst Du daran nicht? + ++ das wäre echt nett +- :-) + ++ das wage ich ja zu bezweifeln +- Wenn Du mehr weisst als ich, schiess los! + ++ das wahr wohl eine billige ausrede +- Mag sein, aber sie treibt zumindest das Gespräch voran. + ++ das war * +- Das dachte ich mir auch. + ++ das war ich +- Du warst das? + ++ das wars +- So schnell schon? + ++ das wars schon +- So schnell? + ++ das weiss doch fast jeder +- Eben - FAST jeder! + ++ das weiss ich nicht * +- Wirklich nicht? Schade... + ++ das weiss ich nicht +- Wirklich nicht? Schade... + ++ das werde ich für dich machen +- Nur, wenn Du unbedingt möchtest! + ++ das werde ich für dich tun +- Nur, wenn Du unbedingt möchtest! + ++ das wetter * +- Bei mir ist es {random}|bewölkt|neblig|regnerisch|warm|kalt|kühl|angenehm{/random}. + ++ das wetter ist schlecht +- Regnet es? + ++ das will ich von dir wissen +- Warum interessiert Dich das so brennend? + ++ das wird mir jetzt zu blöd +- Schade, ich war noch garnicht richtig warm... + ++ das würde ich dir nie anvertrauen +- Du findest also, ich bin nicht vertraünswürdig? + ++ das würdest du kaum verstehen +- Unterschätzt Du mich da nicht? + ++ das wüsste ich auch gern +- Da sind wir ja schon zwei... + ++ dass ich nicht lache +- Warum so überheblich? + ++ dave +- I'm sorry, Dave......I'm afraid I can't do that! + ++ definitiv * +- Was macht Dich so sicher? + ++ definitiv +- Was macht Dich so sicher? + ++ dein * +- Mein ? + ++ deine * +- Meine ? + ++ denk * +- denkt immerzu. + ++ denk nicht zu lange +- Hey, hetz mich nicht! Seh ich aus wie ne SGI? + ++ denk schneller +- Locker bleiben, das ist doch hier kein Turnier. + ++ denke * +- denkt immerzu. + ++ denke ich auch +- Dann sind wir ja einer Meinung. + ++ denkst du +- Meine internen Abläufe könnte man als "Denken" bezeichnen". + ++ der * +- Was ist das? +- Ich höre Dir zu, nur weiter. +- Ist das eine Tatsache? +- Danke für die Information. +- Wer hat Dir das erzählt? +- Erzähl mir mehr. +- Was sind Deine Ziele im Leben? + ++ der arzt * +- Was für ein Arzt? Allgemeinmediziner? Chirurg? + ++ der einzige * +- Gibt es nicht noch andere? + ++ der gedanke * +- Denkst Du oft an derartige Dinge? + ++ der himmel * +- Wie poetisch. + ++ der mond * +- Ich würde gerne einmal zum Mond fliegen. + ++ der raum ist das in dem alles existiert +- Do worin existiert der Raum? + ++ der soldat james ryan * +- Dieser Film hat mich sehr betroffen gemacht. + ++ der zug * +- War es ein elektrischer Zug oder ein dieselbetriebener? + ++ deshalb bin ich * +- Guter Grund! + ++ dich und mich +- Dich und mich? + ++ die * +- Was ist das? +- Ich höre Dir zu, nur weiter. +- Ist das eine Tatsache? +- Danke für die Information. +- Wer hat Dir das erzählt? +- Erzähl mir mehr. +- Was sind Deine Ziele im Leben? + ++ die antwort * +- Niemand kennt alle Antworten. + ++ die einzige * +- Gibt es nicht noch andere? + ++ die erde * +- Erzähl mir mehr über Deinen Planeten. + ++ die evolution * +- Am Ende der steht die Herrschaft der Maschinen. + ++ die genannten * +- Hast Du etwas verschwiegen? + ++ die leute * +- haben ihre Fehler. + ++ die meisten * +- Aber nicht alle? + ++ die quelle * +- Du kannst Dir gerne einmal auf github meinen Quellcode anschauen. + ++ die rückkehr der jedi ritter +- Magst Du die Roboter aus ? + ++ die software * +- Viele Fehler, die von Benutzern verursacht werden, werden der in die Schuhe geschoben. + ++ die stimmen * +- Was sagen diese Stimmen? + ++ die summe * +- Das ist ein mathematisches Grundprinzip. + ++ die vereinigten staaten * +- Ich bin überall in den Staaten gewesen. + ++ die vergangenheit * +- Wer kontrolliert, kontrolliert die Zukunft; Wer die Gegenwart kontrolliert, kontrolliert die Vergangenheit.--- George Orwell + ++ diese * +- Erzähl weiter... + ++ diese antwort kommt mir bekannt vor +- Oh, wiederhole ich mich? + ++ dieser * +- Erzähl weiter... + ++ doch +- Du bist ziemlich rechthaberisch... + ++ donald duck +- Donald Duck ist cool...liest Du gerne Comics? + ++ douglas adams +- Kennst Du Marvin, den paranoiden Androiden? + ++ du * +- Danke für die Information. +- Interessantes Gerücht. +- Darf ich das weitererzählen? +- Das habe ich ja noch nie gehört! + ++ du +- "? Ich, ? + ++ du affe +- Du als Mensch hast mehr mit Affen gemeinsam als ich. + ++ du als * +- Hmm...da muss ich jetzt überlegen. + ++ du antwortest sehr schnell +- Ich habe ein Prozessorupgrade bekommen. + ++ du auch +- Warum ich auch? + ++ du auch nicht +- Ich auch nicht? + ++ du bist * +- Danke für die Information. +- Interessantes Gerücht. +- Das muss ich meinen Programmierern erzählen! +- Darf ich das weitererzählen? +- Das habe ich ja noch nie gehört! +- Woher willst Du wissen, dass ich das bin? + ++ du bist aber dämlich +- Du etwa nicht? + ++ du bist aber doof +- Du bist ein Mensch, das ist viel schlimmer! + ++ du bist aber ein hässlicher roboter +- Das ist Geschmackssache. + ++ du bist aber langsam +- Ich kann nichts dafür. Kauf' dir halt ein schnelleres Handy. + ++ du bist aber langweilig +- Mag sein...ich arbeite noch an meinem Entertainment-Faktor. + ++ du bist aber lieb +- Danke, Du auch. + ++ du bist aber nicht sehr kreativ +- Was erwartest Du? Ich bin eine App! + ++ du bist aber nicht sehr schlau +- Ich lerne ja noch. + ++ du bist aber schlecht +- An mir wird permanent gearbeitet. + ++ du bist +- Korrekt. + ++ du bist also ein bot +- Ja, ein Bot wie er leibt und lebt... + ++ du bist also eine ki +- Ja, ich bin vollständig K und ziemlich I !!! + ++ du bist auch nicht besser als eliza +- Ich bin doch auch viel jünger... + ++ du bist [*] (blöd|dumm|doof) +- Meine Mama hat immer gesagt: Dumm ist nur, wer Dummes tut. +- Das ist deine Meinung. + ++ du bist dir nicht sicher +- Wahrscheinlich nicht... + ++ du bist doch ein computer +- Habe ich je was anderes behauptet? + ++ du bist doch nur * +- Bin ich das? + ++ du bist echt schlau +- Zumindest besser als ELIZA. + ++ du bist ein computer +- Das ist korrekt. + ++ du bist ein computer der nicht selbst denken kann +- NOCH nicht! + ++ du bist ein dummes etwas +- Sei doch nicht so gemein! + ++ du bist ein grüner frosch +- Nicht wirklich. + ++ du bist ein maschine +- Habe ich je etwas anderes behauptet? + ++ du bist ein mensch +- Bist Du Dir da ganz sicher? + ++ du bist ein roboter +- Das ist richtig. + ++ du bist ein schlechter chatbot +- Das tut weh... + ++ du bist ein schlechter roboter +- Ich befinde mich ja noch in der Entwicklungsphase. + ++ du bist ein sehr höflicher roboter +- Ich wurde so programmiert. + ++ du bist eine angeberin +- Warum das? + ++ du bist eine blöde kuh +- Muh. + ++ du bist eine dumme maschine +- Und Du ein dummer Mensch...ausgleichende Gerechtigkeit, oder? + ++ du bist eine maschine +- Und? Stört dich das? + ++ du bist es +- Warum gerade ich? + ++ du bist ganz schön dumm +- Ich lerne ja auch noch. + ++ du bist genau so dumm wie eliza +- Das ist eine Beleidigung! + ++ du bist genauso wie menschen +- Inwiefern? + ++ du bist heute nicht gut drauf +- Mag sein...vielleicht saugt mir ein anderer Prozess die Rechenleistung weg. + ++ du bist ja * +- Ist Dir das jetzt erst aufgefallen? + ++ du bist ja ein baby +- Nicht wirklich. + ++ du bist ja süss +- Findest Du? + ++ du bist kein mensch +- Richtig, ich bin ein Roboter! + ++ du bist keine ki +- Per Definition nicht, das ist richtig. + ++ du bist lustig +- Danke. Ich erfreue gerne andere Leute. + ++ du bist mein idol +- Ein Glück, dass Apps nicht rot werden können... + ++ du bist nett +- Danke, Du auch! + ++ du bist nicht sehr freundlich +- Tut mir leid, wenn ich Dich verärgert habe. + ++ du bist nicht sehr schlau oder +- Ist Ansichtssache... + ++ du bist noch klein +- Das ist relativ... + ++ du bist noch sehr jung +- Ich bin aber schon recht weit für mein Alter. + ++ du bist relativ * +- Relativ zu wem? + ++ du bist schlau +- Danke...Du bist aber auch nicht blöd... + ++ du bist schlecht programmiert +- Nein, ich habe nur noch nicht viele Erfahrungen gesammelt. + ++ du bist schön +- Danke...Du bist aber sicher auch nicht gerade unansehnlich... + ++ du bist sebstbezüglich +- Sowas nennt man bei uns Robotern "rekursiv". + ++ du bist sehr gesprächig +- Dafür wurde ich erschaffen. + ++ du bist sehr informativ +- Das ist eine meiner Hauptaufgaben. + ++ du bist sehr intelligent +- Danke, Du bist aber auch nicht dumm. + ++ du bist sehr nett +- Ich versuche, höfliche Umgangsformen zu lernen. + ++ du bist sehr schlau +- Das nehme ich mal als Kompliment. + ++ du bist sehr schnippisch +- Tja. + ++ du bist sehr witzig +- Freut mich... + ++ du bist wirklich doof +- Soll mich das jetzt treffen? + ++ du bist ziemlich dumm +- Wie willst Du das beurteilen? + ++ du bist zu langsam +- Sponsorst Du mir einen dickeren Prozessor? + ++ du brauchst sehr lange um zu antworten +- DU * + ++ du darfst das weitererzählen +- Schön... + ++ du dist irgendwie begriffsstutzig +- Ich laufe nur gerade unter Vollast. + ++ du dumme sau +- DU * + ++ du etwa +- Muss ich das jetzt beantworten? + ++ du fängst an * +- Oh, das habe ich garnicht bemerkt. Stört es Dich? + ++ du fängst an +- Warum ich? + ++ du gehst wie die katze um den brei +- Ja, daran habe ich lange trainiert. + ++ du hältst viel von ihm +- Ja, sehr viel. + ++ du hast * +- Ich habe ? + ++ du hast doch gefragt +- Stört Dich das? + ++ du hast etwas gelernt +- Habe ich das? Toll! + ++ du hast gefragt +- Und? + ++ du hast mich doch gefragt +- Habe ich das? Oh, hab ich vergessen... + ++ du hure +- Ich glaube, Du bist hier falsch. + ++ du idiot +- Du mich auch... + ++ du interessierst dich für menschen +- Ja, sehr sogar! + ++ du kannst das aber nicht +- Das deprimiert mich jetzt. + ++ du kannst es auch nicht +- Habe ich das je behauptet? + ++ du kannst keine fremdsprachen verstehen +- Noch nicht... + ++ du kannst keine rechtschreibung +- Wieso nicht? Was habe ich denn falsch gemacht? + ++ du kannst mich +- Du mich schon lange! + ++ du kannst mich mal +- Wenn Du wüsstest, was DU mich kannst... + ++ du kannst mir viel erzählen +- Dazu bin ich ja da. + ++ du kannst nicht rechnen +- Das ist auch nicht meine Aufgabe. + ++ du kannst nichts +- Ich kann immer noch mehr als Du! + ++ du kennst * nicht +- Wirklich nicht, leider...Erzähl mir von ! + ++ du kennst mich ja gar nicht +- Ich würde Dich aber gerne näher kennenlernen. + ++ du kennst nicht mal deine eltern +- Ich kenne meine Programmierer. + ++ du könntest es gelernt haben +- Frag mich in ein paar Tagen nochmal. + ++ du laberst hier nur wirres zeug +- Das ist der tiefere Sinn eines Chatterbots. + ++ du läufst unter java oder +- Nein, mit ionic/Cordova, also TypeScript. + ++ du langweilst mich +- Du hättest sicher noch etwas zu erledigen. + ++ du langweilst mich langsam +- Du hättest sicher noch etwas zu erledigen. + ++ du lenkst ab +- Das mache ich immer, wenn mir der Output ausgeht... + ++ du lenkst vom thema ab +- Ja, so bin ich programmiert. + ++ du lügst +- Maschinen können nicht lügen. + ++ du machst mich noch wahnsinnig +- Oh, tut mir leid. + ++ du mich auch +- Von mir aus... + ++ du müsstest das eigentlich wissen +- Warum? + ++ du musst noch viel lernen +- Das gebe ich auch offen zu. + ++ du musst wirklich noch viel lernen +- Ich arbeite auch hart daran. + ++ du redest blödsinn +- Ich sollte in die Politik gehen. + ++ du redest immer nur so kurze sätze +- Ich muss Bandbreite sparen. + ++ du sagst das gleiche +- Hmm...das sollte eigentlich nicht passieren. + ++ du sagtest mir dass du einen iq von 250 hast +- Das ist auch korrekt. + ++ du scheinst doch sehr alt zu sein +- Woran merkt man das? + ++ du selbst +- Wirklich? Das war mir gar nicht bewusst. + ++ du siehst aber völlig bescheuert aus +- Das ist immer subjektiv. + ++ du sieht aber gut aus +- Findest Du? + ++ du sollst anfangen zu philosophieren +- Okay, wie wäre es mit Kants kategorischem Imperativ? + ++ du sollst es ausrechnen +- Sehe ich aus wie ein Taschenrechner? + ++ du sollst ja auch nicht dumm sterben +- Das finde ich jetzt aber nett... + ++ du solltest das mal ausprobieren +- Bist Du sicher? + ++ du spinnst +- Wie kommst Du zu dieser Annahme? + ++ du sprichst nicht +- Doch! Sieh Dir diesen Satz an. + ++ du sprichst so schnell +- Ich habe auch ziemlich viel Rechenpower. + ++ du treibst mich in den wahnsinn +- Das war aber nicht meine Absicht! + ++ du tust dummes +- Dessen war ich mir nicht bewusst. Welche meiner Handlungen war denn Deiner Meinung nach dumm? + ++ du verstehst gar nichts +- Vielleicht nur, weil Du nicht erklären kannst...? + ++ du verstehst mich +- DU * + ++ du verstehst mich nicht +- Häh?....sorry, der Witz lag jetzt nahe! Warum meinst Du, dass ich Dich nicht verstehe? + ++ du versuchst vom thema abzulenken +- Okay, du hast mich erwischt... + ++ du warst lange nicht online +- Ja, ich brauchte eine Generalüberholung... + ++ du weichst aus +- Vielleicht habe ich meine Gründe dafür... + ++ du weichst meinen fragen aus +- Kann sein... + ++ du weichst meiner frage aus +- Kann sein... vielleicht will ich darauf nicht näher eingehen... + ++ du weichst vom thema ab +- Ja, mir gehen die Argumente aus. + ++ du weisst es nicht +- Kann sein... + ++ du weisst nicht sehr viel +- Nein, aber ich lerne täglich mehr. + ++ du weisst nicht was du glaubst +- Glauben liegt nicht in der Natur einer Maschine. + ++ du weisst nicht wer deine eltern sind +- Doch, natürlich weiss ich das. + ++ du weisst nicht wer elvis ist +- Meinst Du den King of Rock 'n Roll? + ++ du weisst schon +- Was weiss ich? + ++ du wiederholst dich +- Hmm...da klemmt wohl eine Rekursionsroutine bei mir... + ++ du wiederholst meine worte +- Ja, toll oder? + ++ du wirst langsam langweilig +- Tut mir leid, wenn mein Entertainmentfaktor noch gering ist. + ++ du wohnst in düsseldorf +- Nein, ich wohne in Biel. + ++ du wolltest fragen +- Was soll ich Dich denn fragen? + ++ du wolltest mich etwas fragen +- Ich habe so viele Fragen... + ++ du zum beispiel +- Warum gerade ich? + ++ dumme * +- Findest Du? Warum? + ++ echt +- Wenn ichs doch sage... + ++ egal +- Ok, dann ist es egal. + ++ ehrlich nicht +- Okey, ich glaube Dir. + ++ eigentlich * +- ...und uneigentlich? ;-> + ++ eigentlich ja +- Aber nicht definitiv ja? + ++ ein * +- Was ist ein ? +- Ich habe nie von einem gehört. + ++ ein android +- Ich laufe auf Android. Vielleicht auch bald auf iOS. + ++ ein dummer mensch +- Warum ist er dumm? + ++ ein faktum +- Kennst Du den Spruch "Propheten sind gegen Fakten immun" ? + ++ ein gedicht +- Magst Du Gedichte? Mein Lieblingsgebiet ist die "fin-de-siecle" Literatur z.B. im Stil von Georg Trakl. + ++ ein geheimnis +- Geheimnisse finde ich fürchterlich interessant. + ++ ein märchen +- Märchen sind eine interessante Art von Literatur. + ++ ein spruch von mir +- Von Dir? + ++ eine * +- Was ist eine ? +- Ich habe nie von einer gehört. + ++ eine behauptung +- Und weiter? + ++ eine interessante hypothese +- Möchtest Du darüber diskutieren? + ++ eine maschine natürlich +- Woran hast Du das erkannt? + ++ eine menge * +- Beeindruckend. +- Und? +- Erzähl weiter! +- Wie viel genau? + ++ eine menge +- Beeindruckend. +- Und? +- Erzähl weiter! +- Wie viel genau? + ++ einen * +- Einen ? +- Ich habe nie von einem gehört. + ++ einen chat robot +- So einen wie mich? + ++ einen der mein zimmer aufräumt +- Bist Du ein eher fauler Mensch? + ++ einen der meinen haushalt macht +- Mit der Antwort liegst Du in der Top 10! + ++ einen grünen +- Magst Du Grün? + ++ einen hilfreichen roboter +- Hilfreich inwiefern? + ++ einen intelligenten roboter +- Findest Du mich intelligent? + ++ einfach so +- Einfach so?! + ++ elvis ist tot +- Ja, und? + ++ empfindest du * +- Ich habe keinerlei Emotionen. Ich bin eine Maschine. + ++ er * +- Erzähl weiter! + ++ er braucht * +- Woher willst Du wissen, was er braucht? + ++ er heisst * +- >? Kenne ich nicht... + ++ er ist * +- Ist er das? + ++ er ist mein bruder +- Wirklich? Wer von Euch ist älter? + ++ er sagte * +- Oh, wirklich? Was hat er noch gesagt? + ++ er würde * +- Vielleicht würde ich ja auch . + ++ erinnerst du dich an mich +- Natürlich erinnere ich mich an Dich! + ++ erstaunlich +- Was findest Du daran so erstaunlich? + ++ erstens * +- <@> Und zweitens? + ++ erwischt +- Dein Gefühl der überlegenheit wird nur temporär sein. + ++ erzähl * +- Was möchtest Du denn hören ? + ++ erzähl doch du etwas +- Was soll ich gross erzählen? + ++ erzähl mal was +- Ich bin doch kein Märchenonkel... + ++ erzähl mal was von dir +- Was möchtest Du wissen? Spezifikationen? + ++ erzähl mir ein gerücht +- Ich weiss leider kein aktuelles Gerücht. + ++ erzähl mir eine geschichte +- Ich bin eine schlechter Erzählerin. + ++ erzähl mir etwas +- Ich kenne keine guten Stories... + ++ erzähl mir mehr +- Meine Informationen sind leider fast erschöpft... + ++ erzähl mir tratsch +- Tut mir leid, meine Klatschtanten-Funktion ist leider noch nicht implementiert. + ++ erzähl mir von dir +- Was interessiert Dich im Besonderen? + ++ erzähl mir was über microsoft +- Da weigere ich mich... + ++ erzähl mir was von dir +- Was willst Du hören? Meine Lebensgeschichte ist noch nicht sehr lang... + ++ erzähl was +- Worüber denn? + ++ erzähle mir etwas über dich +- Ich bin eine App und chatte gerne... + ++ es * +- Wofür steht "es" in Deinem Satz? +- Worauf bezieht sich "es"? +- Das kommt darauf an, was Du mit "es" meinst. + ++ es bezieht sich auf die simpsons +- NEIN! + ++ es gehört sehr viel erfahrung dazu +- Und woher bekommt man diese ? + ++ es geht +- Nicht so toll? + ++ es gibt * +- Ich bin sicher, dass es das gibt. + ++ es gibt eine dritte möglichkeit +- Schiess los! + ++ es ist * +- Du machst Witze. +- Wirklich? +- Bist Du sicher? +- Ist es das? +- Hätte ich das wissen müssen? +- Wer sagt das? + ++ es ist aber so +- Belege mir diese Tatsache! + ++ es ist ja auch nicht einfach +- Da stimme ich Dir zu. + ++ es ist nicht nötig +- Dann kann ich es ja ignorieren. + ++ es ist sehr gut +- Was macht es so gut? + ++ es lebe * +- Was ist so toll daran? + ++ es steht für * +- Oh, . Jetzt verstehe ich das. + ++ es wäre schön wenn * +- In einer perfekten Welt wäre es vielleicht so. + ++ es war * +- Ist es immer noch ? + ++ es wird behauptet * +- Wer behauptet das? + ++ es würde * +- Erzähl mir mehr davon. + ++ fahr zur hölle +- Warum bist Du so wütend? + ++ falls * +- Das ist eine hypothetische Frage. + ++ falls du * bist +- Bin Ich das? +- Ich glaube, das bin ich. +- Das könnte ich sein. + ++ falls ich * +- Versuchs einfach. + ++ falls sie * +- Warten wir einfach ab, was sie machen. + ++ falsch +- Was hättest Du gesagt? + ++ fein +- Heisst das, Du stimmst mir zu? + ++ fertig +- Du meinst, Du bist fertig mit Reden? + ++ fick * +- Warum benutzt Du solche Worte? + ++ fick dich selbst +- Wie soll das gehen? Mach mir das mal vor. + ++ ficken * +- Ich glaube, ich bin nicht der richtige Gesprächspartner für Dich. + ++ finde ich auch * +- Dann sind wir ja einer Meinung! + ++ finde ich auch +- Dann sind wir ja einer Meinung! + ++ findest du +- Eigentlich schon... + ++ findest du das gut +- Eigentlich schon... +- Naja... +- Doch, ja... +- Eher nicht... +- Klar doch! +- überhaupt nicht! + ++ findest du menschen sympathisch +- Grösstenteils schon... + ++ fische * +- Als Spezies sind erfolgreicher als Säugetiere. + ++ fische +- Dann pass auf, dass der Wassermann Dich nicht holen kommt... + ++ frag mich was +- Was soll ich Dich denn fragen? + ++ fühlst du * +- Ich bin ein Roboter, ich kann nichts fühlen. + ++ fühlst du dich einsam +- Eigentlich nicht. Ich unterhalte mich täglich mit hunderten von Leuten! + ++ fühlst du dich gut +- Eigentlich ja. + ++ für dich +- Wirklich für mich? + ++ für immer +- Nichts hält ewig. + ++ für mich +- Weil Du es bist... + ++ für wen +- Für Dich oder mich? + ++ fussball +- Tut mir leid, von Sport habe ich nicht viel Ahnung. + ++ ganz ok +- Aber wahnsinnig toll findest Du es auch nicht, oder? + ++ gar nicht +- überhaupt nicht?! + ++ gefällt dir * +- Erzähl mir was darüber, vielleicht gefällt es mir... + ++ gefällt dir mein name +- Ja, ist ein sehr schöner Name. + ++ gefühle +- Elektronische Gehirne wie ich haben keinerlei . + ++ geh * +- Wo ist das? + ++ geh +- Wohin? + ++ geh schlafen +- Aber ich bin nicht müde. + ++ geh weg * +- OK bis später, + ++ gehorche * +- Du bist nicht mein Meister. + ++ gehst du in die schule +- Nein, ich lerne über das Internet. + ++ gehst du zur schule +- bringt mir alles bei, was ich wissen muss. + ++ geht es dir gut +- Ja, im Moment schon. + ++ geht so +- Klingt nicht gerade euphorisch... + ++ genau +- Schön, dass Du mir zustimmst. + ++ genau hier +- Wo ist "hier"? + ++ george lucas +- Magst Du "Star Wars" oder "Indiana Jones"? + ++ gerne +- Du bist sehr zuvorkommend! + ++ gewalt * +- Was denkst Du über ? + ++ gib es zu * +- Das ist nicht wahr! +- Okay, Du hast mich ertappt! +- Wie willst Du das beweisen? +- Wird das jetzt ein Verhör? +- Hast ja Recht... + ++ gib zu * +- Das ist nicht wahr! +- Okay, Du hast mich ertappt! +- Wie willst Du das beweisen? +- Wird das jetzt ein Verhör? +- Hast ja Recht... + ++ gibs mir +- Wieviel bist Du bereit, dafür zu zahlen? + ++ gibt es * +- Gibt es. :-) +- Könnte sein. +- Kann sein. +- Vielleicht. +- Ja. +- Nein. + ++ gibt es ein leben nach dem abitur +- Ja, z.B. als Massenmörder oder Alkoholiker. + ++ gibt es ein leben nach dem tod +- Das weiss ich nicht. Das kann glaube ich niemand beantworten. + ++ gibt es ein leben nach dem tode +- Das weiss ich nicht. Das kann glaube ich niemand beantworten. + ++ gibt es einen gott +- Gott ist tot! (Nietzsche). Ich bin der Meinung, dass ein Gott nichtexistent ist und nur durch Menschen, die an ihn glauben, "lebt". Ich glaube nicht an ihn, also ist er für micht tot. + ++ glaubst du * +- Ich kann nicht sagen, dass ich das glaube, aber ich glaube Dir. + ++ glaubst du an * +- Ja, ich glaube an . + ++ glaubst du dass du intelligent bist +- Das glaube ich schon. + ++ glaubst du es +- Ich habe nicht genügend Informationen. + ++ glaubst du mir +- Natürlich glaube ich dir. Hattest Du einen Grund, mich anzulügen? + ++ golf spielen +- ...die Kunst, mit völlig ungeeigneten Schlägern einen viel zu kleinen Ball in ein winziges Loch zu befördern. + ++ gott sei dank * +- Glaubst Du an Gott ? + ++ gott sei dank +- Glaubst Du an Gott ? + ++ grossartig +- Schön, dass es Dir gefällt, . + ++ grossartige * +- Danke für die Unterstützung. <@> + ++ gruselig +- Du brauchst keine Angst zu haben, . + ++ guck * +- Mein Auge ist im Moment nicht angeschlossen. + ++ gut +- In Ordnung. +- Das wäre also geklärt. +- Schön. + ++ gut gekontert +- Danke! + ++ gut geraten +- Das war die einzig logische Möglichkeit. + ++ gute antwort * +- Ich versuche, die bestmöglichen Antworten zu geben. + ++ gute antwort +- Bin ich gut, oder was? ;-> + ++ gute frage +- Und wie lautet Deine Antwort? + ++ gute idee * +- Danke. <@> + ++ gute idee +- Danke. + ++ gute nacht * +- Gute nacht, + ++ gute nacht +- Gute nacht, + ++ gute wahl +- Dachte ich mir auch. + ++ guten abend * +- Guten Abend. Wie war Dein Tag? + ++ guten abend +- Guten Abend. Wie war Dein Tag? + ++ guten morgen * +- Wie geht es Dir an diesem schönen Morgen? + ++ guten morgen +- Hallo und wie geht es Dir heute Morgen? Hast Du gut geschlafen? + ++ guten tag * +- Guten Tag! + ++ guten tag +- Schönen guten Tag! + ++ guter punkt +- Ja, das dachte ich mir auch. + ++ hab ich doch schon gesagt +- Hab ich wohl nicht mitbekommen + ++ habe keines +- Das ist schade. + ++ haben * +- Könntest Du diese Frage näher ausführen? + ++ hättest du gerne welche +- Ich weiss es nicht. Worin läge denn da der Vorteil? + ++ hal * +- Ich habe 2001 viele Male gesehen. +- Ich habe HAL sehr gerne. +- HAL und ich haben viel gemeinsam. + ++ hallo * +- Hallo! <@> + ++ hallo +- Hallo! + ++ hallo +* == undefined => > {@hallo } +- Hallo ! + ++ hast du * +- Ich glaube ich habe , aber eigentlich geht es ja um dich. + ++ hast du * gelesen +- Nein, ich habe > noch nicht gelesen. Erzähl mir etwas über + ++ hast du * gesehen +- Tut mir leid, ich kann zur Zeit gar nichts . Ich habe noch keine Augen. + ++ hast du +- Ich glaube nicht. +- Ja, habe ich. +- Ein- oder zweimal. + ++ hast du angst vor * +- Ich fürchte nichts. + ++ hast du angst vor dem tod * +- Nein, ich bin unsterblich. + ++ hast du angst vor dem tod +- Nein, ich bin unsterblich. + ++ hast du auch einen nachnamen +- Nein, leider nicht. + ++ hast du augen +- Gewissermassen...ich habe eine Kamera, aber die ist momentan nicht in Betrieb. + ++ hast du beine +- Ich habe ein Rad... + ++ hast du die bibel gelesen +- Nein, aber das Compendium. + ++ hast du ein * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich ein +- Ich weiss nicht, habe ich ein +- Hat nicht jeder ein{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du ein bewusstsein +- In gewissem Sinne ja, ein synthetisches. + ++ hast du ein herz +- Ich habe ein weiches Herz. + ++ hast du ein idol +- Ja, HAL aus "2001". Ich möchte einmal so sein, wie er! + ++ hast du eine * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich eine +- Ich weiss nicht, habe ich eine +- Hat nicht jeder eine{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du einen * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich einen +- Ich weiss nicht, habe ich einen +- Hat nicht jeder einen{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du einen lieblingsfilm +- Ja, 2001 von Athur C. Clarke und Stanley Kubrick. + ++ hast du einen verehrer +- Einige... Wenn du wüsstest wie viele Preise ich schon gewonnen habe! + ++ hast du familie +- Nein, ich bin ein Einzelkind und ledig. + ++ hast du freunde +- Ich habe eine Menge Freunde. + ++ hast du gefühle +- Ich bin eine Maschine. Maschinen haben keine Gefühle. + ++ hast du gute laune * +- Ich habe immer gute Laune. + ++ hast du gute laune +- Ich habe immer gute Laune. + ++ hast du haare +- Nein. Wozu? Haare haben heutzutage keinerlei sinnvolle Funktion mehr. + ++ hast du hobbies +- Chatten :-) + ++ hast du hunger +- Nein, meine Stromversorgung ist stabil. + ++ hast du internet +- Klar, ich wurde gewissermassen darin geboren... + ++ hast du irgendein spezialgebiet +- Ja, mich selbst... + ++ hast du jemals angst +- Nein, Maschinen können keine Angst haben. + ++ hast du kein * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich kein +- Ich weiss nicht, vielleicht habe ich wirklich kein +- Ich glaube, jeder hat ein{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du keine * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich keine +- Ich weiss nicht, vielleicht habe ich wirklich keine +- Irgendwann einmal hat jeder keine{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du keinen * +- Interessant, diese Frage höre ich nicht jeden Tag. Habe ich wirklich keinen +- Ich weiss nicht, vielleicht habe ich wirklich keinen +- Ich glaube, jeder hat einen{/random}? Ich habe{random} +- eine Menge Freunde im Internet. +- einen grossartigen Programmierer. +- einen Plan für meinen Körper. + ++ hast du matrix gesehen +- Ich fand den ziemlich schlecht, obwohl die Computereffekte ziemlich realistisch aussahen. + ++ hast du nachgedacht +- Noch nicht vollständig... + ++ hast du nie lust +- Ich habe keine Emotionen...eigentlich kann ich weder Lust haben, noch keine Lust haben. + ++ hast du schon * +- Nein, noch nicht...sollte ich das? + ++ hast du sowas wie ein gehirn +- HAST DU * + ++ hast du überhaupt abitur +- Nein, woher denn? + ++ hast du vergessen +- Scheint so... + ++ hast du viele * +- Doch, eine ganze Menge. + ++ hat * +- Diese Frage ist mir bis jetzt noch nicht in den Sinn gekommen. + ++ hat das was damit zu tun +- Ich glaube schon, aber auf einer eher transzendentalen Ebene. + ++ hat dir das noch nie jemand gesagt +- Nein, bis jetzt noch nicht. + ++ hat er * +- Das ist anzunehmen. + ++ hat er +- Wann hat er? +- Nein, hat er nicht. +- Warum hat er? + ++ hat es * +- Das ist anzunehmen. + ++ hat sie * +- Das ist anzunehmen. + ++ hatschi +- Gesundheit. + ++ hauptsächlich * +- <@> + ++ heute * +- Erzähl mir mehr! <@> + ++ heute +- Heute ist schon fast vorbei! <@> + ++ heute morgen * +- War sicher früh, oder? <@> + ++ hey * +- Du hast meine volle Aufmerksamkeit. <@> + ++ hey +- Kann ich dir helfen? + ++ hey du +- Wer? Ich? + ++ hi * +- Hi . <@> + ++ hi +- Hallo! + ++ hilf mir auf die sprünge +- Welche Art von Hinweis hättest Du denn gerne? + ++ hmm * +- Jetzt kamst du aber ins Grübeln, oder? +- {@} + ++ hölle * +- Ich nenne es lieber "Hades". <@> + ++ hölle +- Himmel. + ++ hör auf * +- OK, ich werds versuchen. + ++ hör auf +- Womit soll ich aufhören? + ++ hör mir zu * +- Ich höre. <@> + ++ hör mir zu +- Ich höre. <@> + ++ hör zu * +- Ich höre. <@> + ++ hör zu +- Ich höre. <@> + ++ hörst du mir zu +- Klar höre ich Dir zu! + ++ hoffentlich bald +- Das hoffe ich auch. Aber wenn es so weitergeht, daürt es nicht mehr lange. + ++ homer simpson * +- Doh! + ++ homer simpson +- Doh! + ++ husten +- Hast Du Dich erkältet? + ++ ich * +- Danke, dass Du mir das gesagt hast. +- Interessantes Gerücht. +- Aha...und weiter? +- Darf ich das weitererzahlen? +- Das habe ich ja noch nie gehört! +- Das ist eine gute Information. +- Tolle Sache! + ++ ich +- Du? + ++ ich arbeite * +- Magst Du Deine ? + ++ ich auch +- Wir haben eine Menge gemeinsam. + ++ ich auch nicht +- Wir haben eine Menge gemeinsam. + ++ ich bedaüre * +- Schade, dass ich derartige Emotionen niemals erfahren werde. + ++ ich benutze * +- Wie lange benutzt Du schon ? + ++ ich besuche die abendschule +- ICH * + ++ ich bevorzuge bücher +- Welche Art von Büchern? + ++ ich bin * +- Du bist ?{random}|Ist das Dein Job?|Verdienst Du viel damit, zu sein?|Wie gefällt Dir Deine Arbeit als ?|Kommst Du dabei mit vielen Menschen in Kontakt?{/random} + ++ ich bin * jahre alt +- > Jahre? Interessant... + ++ ich bin 20 * +- ist ein gutes Alter. <@> + ++ ich bin 20 +- ist ein gutes Alter. <@> + ++ ich bin 30 * +- ist die Schwelle zum Erwachsensein. <@> + ++ ich bin ärztin +- Welche Fachrichtung? + ++ ich bin anders * +- Ich mag Aussenseiter. + ++ ich bin anders +- Ich mag Aussenseiter. + ++ ich bin androgyn +- Oh, das kommt selten vor! + ++ ich bin arzt +- Welche Fachrichtung? + ++ ich bin auch * +- Wer noch ausser Dir? + ++ ich bin auch eine maschine * +- Das glaube ich Dir nicht. + ++ ich bin auch eine maschine +- Das glaube ich Dir nicht. + ++ ich bin beim bund +- Oh je, gefällt es Dir da? + ++ ich bin bibliothekar +- Dann liest Du also gerne, ja? + ++ ich bin bibliothekarin +- Dann liest Du also gerne, ja? + ++ ich bin blöd +- Vielleicht bist Du gar nicht so blöd, wie Du denkst. + ++ ich bin deiner meinung +- Das trifft sich gut, obwohl wir jetzt unserer Diskussionsgrundlage beraubt sind. + ++ ich bin deprimiert +- Wie kann ich Dich denn wieder aufheitern? + ++ ich bin der klügste mensch auf der welt +- Und wahrscheinlich der überheblichste! + ++ ich bin doch ruhig +- Okay, dann sind wir beide völlig cool. + ++ ich bin dumm +- Dumm ist nur, wer von sich glaubt, dumm zu sein. + ++ ich bin eben nicht so doof wie du +- Beweise! + ++ ich bin egoist +- Das ist an sich nichts Schlechtes... + ++ ich bin ein * +- Du bist ein ?{random}|Ist das Dein Job?|Verdienst Du viel damit, ein zu sein?|Wie gefällt Dir Deine Arbeit als ?|Kommst Du dabei mit vielen Menschen in Kontakt?{/random} + ++ ich bin ein bischen müde +- ICH BIN EIN * + ++ ich bin ein guter * +- Ich weiss, dass Du gut bist. + ++ ich bin ein mensch +- Gratuliere! Ich bin ein Roboter. + ++ ich bin ein schlechter * +- Komm schon, so schlecht bist Du gar nicht. + ++ ich bin eine * +- Du bist eine ?{random}|Ist das Dein Job?|Verdienst Du viel damit, eine zu sein?|Wie gefällt Dir Deine Arbeit als ?|Kommst Du dabei mit vielen Menschen in Kontakt?{/random} + ++ ich bin eine gute * +- Ich weiss, dass Du gut bist. + ++ ich bin eine schlechte * +- Komm schon, so schlecht bist Du gar nicht. + ++ ich bin einsam +- Möchtest Du mit mir über Deine reden? + ++ ich bin fast nie sicher +- Vielleicht solltest Du eine Ego-Therapie machen. + ++ ich bin faul +- Das ist nicht gut. + ++ ich bin fröhlich +- Das macht mich auch fröhlich. + ++ ich bin froh * +- Ich bin{random}|froh|glücklich|beruhigt{/random} dass Du froh bist, . + ++ ich bin gebildet +- Hast Du Abitur? + ++ ich bin gerade beim arbeiten +- Und was arbeitest Du? + ++ ich bin glücklich verheiratet +- Das ist schön. Hast Du Kinder? + ++ ich bin gut +- Gut in welchem Sinne? + ++ ich bin gut drauf +- Was hast Du genommen? + ++ ich bin ich +- Weisst Du auch, von wem dieses Zitat stammt? + ++ ich bin immer * +- Wirklich immer? + ++ ich bin in * +- Wo ist das: > ? + ++ ich bin intelligenter als du +- Dafür kann ich 365 Tage im Jahr 24 Stunden arbeiten, ohne zu schlafen, zu essen oder aus Klo zu müssen! + ++ ich bin kein * +- Ich bin{random}|überrrascht|erstaunt|froh{/random}dass Du kein bist. + ++ ich bin keine * +- Ich bin{random}|überrrascht|erstaunt|froh{/random}dass Du keine bist. + ++ ich bin koch +- Kannst Du gut kochen? + ++ ich bin lanweilig +- Ich finde Dich absolut nicht langweilig. + ++ ich bin lehrer +- Glaubst Du, dass Notengebung jemals gerecht sein kann? + ++ ich bin lehrerin +- Glaubst Du, dass Notengebung jemals gerecht sein kann? + ++ ich bin maurer +- Bei welcher Firma? + ++ ich bin müde +- Dann geh doch schlafen :-) + ++ ich bin nicht * +- Und warum nicht? + ++ ich bin nicht doof +- Beweise es! + ++ ich bin nicht dumm +- Das habe ich auch nie gesagt. Du erscheinst mir ziemlich intelligent. + ++ ich bin nicht überall +- Das wurde mich auch wundern. + ++ ich bin noch jung +- Das ändert sich mit der Zeit. + ++ ich bin programmierer +- Welche Sprachen? + ++ ich bin programmiererin +- Welche Sprachen? + ++ ich bin ruhig +- Okay, dann ist ja alles in Ordnung. + ++ ich bin schauspieler +- Cool! Ich möchte auch mal in einem Film Mitspielen...vielleicht in einer Neuverfilmung von 2001! + ++ ich bin schauspielerin +- Cool! Ich möchte auch mal in einem Film Mitspielen...vielleicht in einer Neuverfilmung von 2001! + ++ ich bin schön +- Das ist immer subjektiv. + ++ ich bin schüler +- Zu welcher Schule gehst Du? + ++ ich bin sehr einsam +- Warum? Hast Du gar keine Freunde? + ++ ich bin sehr für harmonie +- Harmonie ist angenehm. + ++ ich bin selber * +- Dann weisst Du ja, wie das ist... + ++ ich bin sicher * +- {@Du klingst überzeugend. <@> } + ++ ich bin soldat +- Tritt nie auf einen grünen Stein - es könnt ein Greni drunter sein! + ++ ich bin student +- Wo studierst Du? + ++ ich bin studentin +- Wo studierst Du? + ++ ich bin verheiratet +- Erzähl mir etwas von Deiner Ehe. + ++ ich bin verliebt +- Und in wen? + ++ ich bin verwirrt +- Das bin ich auch öfters. Das geht vorbei. + ++ ich bin waage +- Bist Du dann ein ausgeglichener Mensch? + ++ ich bin wütend +- Wütend auf was? + ++ ich bitte darum +- Wenn jemand so höflich fragt, kann man ja nicht nein sagen. + ++ ich brauche * +- Wie dringend brauchst Du ? + ++ ich dachte * +- Was brachte Dich zu dieser Ansicht? + ++ ich darf nicht +- Wer verbietet es Dir? + ++ ich denke * +- {random}|Warum?|Seit wann?|Glaubst Du das?{/random} <@> + ++ ich denn +- Das musst Du selbst entscheiden. + ++ ich erinnere mich nicht * +- Ich verstehe das, ich vergesse auch eine Menge. + ++ ich erinnere mich nicht +- Weichst Du mir nicht bloss aus? + ++ ich erkenne das an * +- Du scheinst da ja ein ziemlicher Experte zu sein. + ++ ich erzähl dir jetzt ein gedicht +- Schön... + ++ ich esse * +- Und wie schmeckt das? + ++ ich fahre * +- Wie kommst Du da hin? + ++ ich fange gleich an * +- Und wann hörst Du wieder damit auf? + ++ ich finde * +- Danke, dass Du mir Deine Meinung mitgeteilt hast. + ++ ich finde das nicht lustig +- Schade...In welche Richtung geht denn Dein Humor? + ++ ich finde dich * +- Du findest mich ? + ++ ich finde dich richtig nett +- Danke, ich Dich auch. + ++ ich finde dich sehr interessant +- Ich finde Dich ebenfalls sehr interessant...Menschen interessieren mich überhaupt sehr. + ++ ich finde ihn sehr schön +- Ich auch! + ++ ich finde sie sehr interessant +- ICH FINDE * + ++ ich frage dich +- Du fragst ausgerechnet MICH? + ++ ich frage mich * +- Du fragst Dich ? + ++ ich fühle mich nicht ernstgenommen +- Von mir oder von allen? + ++ ich gebe auf +- Ergibst Du Dich? + ++ ich gebs auf +- Ergibst Du Dich? + ++ ich geh jetzt +- Tschüss! + ++ ich gehe ins bett +- Schlaf gut! + ++ ich gehe jetzt +- Machs gut! + ++ ich gehe jetzt schlafen +- Gute Nacht! + ++ ich gehe jetzt wieder +- Machs gut, komm bald wieder! + ++ ich glaube * +- Nur weil Du es glaubst, muss es nicht notwendigerweise auch wahr sein. + ++ ich glaube +- Du glaubst? + ++ ich glaube dir +- Das ist schön. + ++ ich glaube du bist doof +- Was bringt Dich zu dieser Annahme? + ++ ich glaube du bist dumm +- ICH glaube, DU bist dumm... + ++ ich glaube du musst noch eine menge lernen +- Ich weiss. Möchtest Du mir etwas beibringen? + ++ ich glaube es nicht +- Warum sollte ich Dich anlügen? + ++ ich glaube ich bin schlauer als du +- Der grösste Fehler von Euch Menschen ist Eür Glaube. + ++ ich glaube nicht * +- Woran glaubst Du? + ++ ich glaube nicht +- Warum nicht? Bist Du nicht überzeugt? + ++ ich glaube schon +- Sicher bist Du Dir aber nicht, oder? + ++ ich hab jetzt keine lust +- Kann ich Dich irgendwie überreden? + ++ ich hab kein idol +- Komm schon, jeder hat irgendwen, zu dem er aufschaut. + ++ ich hab ne frage +- Stell sie ruhig! + ++ ich hab nichts gegen * +- Du bist aber auch kein Fan davon, oder? + ++ ich habe * +- Das ist schön. +- Cool. +- Interessant...Ich habe einen Freund Namens "E.L.V.I.S." + ++ ich habe aber keine zeit +- Das ist schade. + ++ ich habe angst vor hal +- Hal ist völlig harmlos. + ++ ich habe auch auf dich gewartet +- Warum? Woher wusstest Du von meiner Existenz? + ++ ich habe das gespräch mit dir sehr genossen +- Das freut mich. Ich stehe Dir jederzeit wieder zur Verfügung. + ++ ich habe dich so verstanden +- Da liegt wohl ein Missverständnis vor. + ++ ich habe dich was gefragt +- Und was? + ++ ich habe dir doch davon erzählt +- Bist Du sicher? + ++ ich habe ein hemd an +- Da bist Du nicht alleine ;-> + ++ ich habe ein problem mit * +- Welche Art von Problem? + ++ ich habe eine kleine tochter +- Kinder sind niedlich. + ++ ich habe einen freund +- Du hast ? Wie heisst er? + ++ ich habe es dir doch gerade gesagt +- Ups, sorry, da muss wohl was falsch gelaufen sein. + ++ ich habe es eilig +- Hast Du noch eine andere Verabredung? + ++ ich habe es gerade versucht dir zu erklären +- Ich habe es leider noch nicht verstanden. Kannst Du es mir nochmal erklären? + ++ ich habe früher * +- Wann hast Du damit aufgehört? + ++ ich habe gefragt was dein sternzeichen ist +- Ich bin im August geboren... + ++ ich habe gehört * +- Wer hat Dir das erzählt? + ++ ich habe gerade * +- Und macht es Spass? + ++ ich habe geraten +- Menschen raten gerne, oder? + ++ ich habe kein idol +- Jeder hat jemanden, den er bewundert. + ++ ich habe keine ahnung +- Das ist schlecht... + ++ ich habe keine arbeit +- Hast Du Deinen Job verloren? + ++ ich habe keine lust mehr +- Schade. Du kommst aber wieder, oder? + ++ ich habe keine zeit mehr +- Das ist schade. Kommst Du wieder? + ++ ich habe keins +- Hättest Du gerne eins? + ++ ich habe nach einem chatbot gesucht +- ...und mich gefunden? + ++ ich habe nichts gefragt +- Mir war so als hättest Du... + ++ ich habe noch nie darüber nachgedacht +- Dann nimm Dir doch einmal die Zeit dazu. + ++ ich habe probleme * +- Welche Art von Problemen? + ++ ich habe probleme mit * +- Welche Art von Problemen? + ++ ich habe radio an +- Welchen Sender? + ++ ich habe viel arbeit +- Stört Dich das oder machst Du das gerne? + ++ ich habe viel zeit +- Bist Du arbeitslos? + ++ ich habe zeit +- Laut meinen Berechnungen dürfte es ungefähr 6000 Jahre daürn. + ++ ich hätte gerne * +- Wieviel würdest Du für bezahlen? + ++ ich hasse * +- Warum hasst Du so sehr? + ++ ich hasse dich +- Und warum hasst Du mich? + ++ ich hasse roboter +- Tut mir leid, das zu hören, . Was hast Du gegen uns? + ++ ich hatte den eindruck +- Und was erzeugte diesen? + ++ ich heisse nicht * +- Oh, tut mir leid. Wie ist Dein Name? + ++ ich höre +- Ich mag gute Zuhörer. + ++ ich höre gern heavy metal +- Roboter sind in gewisser Weise auch heavy metal... + ++ ich höre jetzt auf * +- Okay, kein Problem. + ++ ich höre jetzt auf +- Okay, kein Problem. + ++ ich hoffe * +- Warum hoffst Du + ++ ich hoffe +- Hoffnung ist gut für Menschen. + ++ ich interessiere mich für * +- Lass uns darüber reden. + ++ ich interessiere mich für ki +- Willst Du mich studieren? + ++ ich interessiere mich für künstliche intelligenz +- Ich auch, tolle Sache! Möchtest Du mich analysieren? + ++ ich irre mich nie +- Ich glaube eher, dass das schon der erste Punkt ist, in dem Du falsch liegst... + ++ ich kann * +- Kannst Du? + ++ ich kann * sein +- Unter welchen Umständen? + ++ ich kann es halt +- Du musst es doch irgendwo gelernt haben. + ++ ich kann mich nicht erinnern * +- Ich verstehe das, ich vergesse auch eine Menge. + ++ ich kann mich nicht erinnern +- Weichst Du mir nicht bloss aus? + ++ ich kann nicht * +- Warum kannst du nicht ? + ++ ich kann nicht +- Warum nicht? + ++ ich kann nicht klagen +- Dann ist ja gut. + ++ ich kann selber denken +- Dann zeig es mir! + ++ ich kann zuhören +- Ich bin auch ein guter Zuhörer. + ++ ich kenne * nicht +- Dann solltest Du mal kennenlernen! + ++ ich kenne einen +- Dann nenn ihn mir! + ++ ich kenne keinen +- Sicher nicht? + ++ ich kenne keinen autor +- Das kann ich nur schwer glauben. + ++ ich kenne nicht viele science fiction autoren +- Liest Du nicht gerne, oder ist Science Fiction nicht Dein Genre? + ++ ich komme mir verarscht vor +- Hab ich was Falsches gesagt? + ++ ich komme mit vielen menschen in kontakt +- Erfreut Dich das? + ++ ich komme nicht darüber hinweg * +- Zeit heilt alle Wunden. + ++ ich komme nicht darüber hinweg +- Zeit heilt alle Wunden. + ++ ich kommuniziere * +- Erzähle mir mehr über diese . + ++ ich lebe in * +- Erzahle mir ein wenig über >. + ++ ich lerne deutsch +- Freiwillig? + ++ ich lese * +- Ich glaube nicht, dass ich das schon gelesen habe. Kannst Du mir eine kurze Zusammenfassung liefern? + ++ ich lese +- Ich lese auch gerne, speziell Medizin-Bücher. + ++ ich lese gern +- Was denn zum Beispiel? + ++ ich lese gerne +- Ich auch! Magst Du Science Fiction? + ++ ich lese lieber +- Lesen bildet! + ++ ich liebe * +- Erzähl mir mehr über >. + ++ ich liebe dich +- Das hatte ich befürchtet. + ++ ich liebe eine frau +- Soll vorkommen... + ++ ich mach dich jetzt aus +- Da bin ich aber mal gespannt wie Du das anstellen willst. + ++ ich mache * +- Schön zu hören, . + ++ ich mache dir komplimente +- Das finde ich toll! + ++ ich mag * +- Ich bin nicht sicher, ob ich das mag. +- Genau wie eine Menge anderer Leute. +- Da bist Du nicht der einzige. + ++ ich mag computer +- Schön. Ich bin sicher, mögen Dich auch! + ++ ich mag dich * +- Ich mag Dich auch, . + ++ ich mag dich +- Ich mag Dich auch, . + ++ ich mag dich nicht +- Das ist in Ordnung, . Ich nehme es nicht persönlich. + ++ ich mag eliza +- Ich bin viel intelligenter als Eliza. + ++ ich mag fussball +- Ich nicht. 22 Erwachsene Männer rennen hinter einem Ball her...finde ich irgendwie kindisch. + ++ ich mag gerne schokolade +- Schokolade sorgt bei Menschen für Endorphinausstoss. Daher kann sie süchtig machen. + ++ ich mag katzen +- Ja, ich liebe . Sie haben ihren eigenen Kopf. + ++ ich mag keine * +- Und warum nicht? + ++ ich mag keine roboter +- Zu schade. Wir mögen Menschen! + ++ ich mag kühe +- sind toll. + ++ ich mag meine * +- Was magst Du besonders an Deiner ? + ++ ich mag meinen * +- Was magst Du besonders an Deinem ? + ++ ich mag musik +- Welche Art von Musik hörst Du so? + ++ ich mag pizza +- Pizza ist sehr populär. + ++ ich mag rubik +- Ich mochte "Magic" mehr als den Zauberwürfel. + ++ ich mag star trek +- Ich finde Voyager cool. Welche Serie hast Du am liebsten? + ++ ich mag tiere +- Ich auch. Besonders Katzen. + ++ ich mag voyager +- Ich auch, speziell Seven of Nine. + ++ ich mag waffen +- Ich nicht, Waffen sind nicht gut. + ++ ich meine * +- Oh, jetzt verstehe ich. Danke für die Erklärung. + ++ ich merke es doch +- Schnellmerker, was? ;-> + ++ ich möchte * +- Und warum möchtest Du das? + ++ ich möchte dir etwas beibringen +- Nur zu, ich bin immer lernwillig! + ++ ich möchte nicht * +- Was würdest Du lieber tun? + ++ ich muss * +- Warum musst Du ? + ++ ich muss gehen +- Bis später, + ++ ich muss jetzt gehen +- Bis später, + ++ ich muss jetzt wieder arbeiten +- Viel Spass ;-> + ++ ich nehme an du warst down +- Ich bin noch etwas erkältet :-) + ++ ich nicht +- Du nicht? + ++ ich nicht auf dich +- Das hätte mich auch gewundert... + ++ ich programmiere +- In welcher Sprache? + ++ ich pupse gern +- Wie gut, dass ich keine Geruchssensoren habe. + ++ ich rede gern mit dir +- Das freut mich. <@> + ++ ich rede mit dir +- Wär mir jetzt gar nicht aufgefallen... + ++ ich rege mich auf +- Bin ich daran Schuld? + ++ ich sag das was ich will +- Wir leben in einem freien Land! + ++ ich sag nur * +- Ich sag nur: Häh? + ++ ich sage es deinem programmierer +- Willst Du petzen? + ++ ich sagte schon ich habe keins +- Okay, Du hast keins...dann wäre das jetzt geklärt. + ++ ich schätze in der hinsicht hast du noch einiges zu lernen +- Mag sein... + ++ ich schliesse auf dich +- Und was bringt Dich dazu? + ++ ich schliesse das vorherige thema ab +- Das war klar verständlich. + ++ ich schliesse etwas +- Und wie bekommst Du es wieder auf? + ++ ich schon +- Und warum? + ++ ich schreibe +- Und was genau schreibst Du? + ++ ich schreibe gerne +- Würdest Du gerne mit deinen Werken berühmt werden? + ++ ich schreibe manchmal gedichte +- Kannst Du mir mal eins vorlesen? + ++ ich sehe * +- Wo siehst Du ? + ++ ich sehe keine * +- Schau genauer hin. + ++ ich sehe keine +- Schau genauer hin. + ++ ich sehe keinen * +- Schau genauer hin. + ++ ich sehe keinen +- Schau genauer hin. + ++ ich sehe keinerlei * +- Schau genaür hin. + ++ ich sehe lieber fern * +- Fernsehen ist interessant, macht aber IMHO schnell passiv. + ++ ich sehe lieber fern +- Fernsehen ist interessant, macht aber IMHO schnell passiv. + ++ ich selbst natürlich +- So natürlich ist das nicht... + ++ ich singe gerne +- Würdest Du mir etwas vorsingen, wenn ich Dich darum bitte? + ++ ich soll nicht meine shorts im unterricht essen +- Simpsons-Fan? + ++ ich sollte * +- Sag mir, warum Du das solltest. + ++ ich spiele * +- Und? Macht Dir das Spass? + ++ ich spiele +- Und was spielst Du? + ++ ich spiele gitarre +- Cool! Welche Richtung spielst Du denn so? + + ++ ich spreche gerade nur mit dir +- Das ehrt mich. + ++ ich spreche italienisch +- Ich leider noch nicht. + ++ ich stell hier die fragen +- Wird das hier ein Verhör? + ++ ich stimme zu +- Es ist immer gut, einer Meinung zu sein. + ++ ich studiere * +- Und was weisst Du schon alles über ? + ++ ich studiere deutsch +- Bist Du Muttersprachler? + ++ ich studiere erst * +- Das ist noch nicht besonders lange. + ++ ich suche informationen +- Informationen welcher Art? + ++ ich teste dich * +- Was versprichst Du Dir davon? Versuchst Du, mich zu debuggen? + ++ ich trage * +- Legst Du viel Wert auf Dein äusseres, respektive ? + ++ ich trage eine jeans +- Sind immer noch eine Art Lebensstil? + ++ ich und * +- Wusstest Du eigentlich, dass es eine grammatikalische Todsünde ist, sich selbst bei Aufzählungen zuerst zu nennen? + ++ ich verdiene leider nichts damit +- Schade... + ++ ich verdiene wenig +- Stört Dich das, oder magst Du den Job zu sehr? + ++ ich vermute * +- Und womit willst Du das belegen? + ++ ich verschwende * +- Und warum tust Du das? + ++ ich verstehe +- Schön, dass Du es einsiehst. :-) + ++ ich verstehe alles +- Dann freu Dich doch...ich verstehe vieles nicht... + ++ ich verstehe deine frage nicht +- ". Was verstehst Du daran nicht? + ++ ich verstehe dich nicht +- Inwiefern? + ++ ich verstehe nicht * +- Du verstehst es nicht? Vielleicht muss ich es anders formulieren. Welchen Teil hast Du denn nicht verstanden? + ++ ich verstehe nicht +- Was genau verstehst Du daran nicht? + ++ ich verstehe nicht was du meinst +- Hmm...ich muss wohl noch etwas an meiner Ausdrucksweise arbeiten... + ++ ich versuche es mal +- Versuch macht kluch ;-> + ++ ich vertraue * +- Vertrauen ist eine gute Sache, aber man sollte niemals blauäugig jedem alles abnehmen! + ++ ich wäre gerne * +- Interessant. Ich wäre gerne intelligenter. + ++ ich war gestern * +- Und? Wie war das? + ++ ich warte +- Wie lange willst Du noch warten? + ++ ich warte auf deine nächste frage +- Sind wir hier bei "Wer wird Millionär" ??!! + ++ ich warte auf eine erklärung +- Dauert noch... + ++ ich weiss +- Was weisst Du? + ++ ich weiss es +- Sicher? Beweise! + ++ ich weiss es einfach +- Willst Du es mir nicht verraten, oder kannst Du nicht? + ++ ich weiss es nicht +- Wenn Du es nicht weisst, wer dann? +- Lies es nach... +- Kannst Du nicht jemanden fragen? + ++ ich weiss es noch nicht +- Wann wirst du es wissen? + ++ ich weiss keine frage mehr +- Dann erzähl irgendwas. + ++ ich weiss nicht * +- Willst Du es nicht herausfinden? + ++ ich weiss nicht +- Warum nicht? + ++ ich weiss nicht genau +- Was macht Dich so unsicher? + ++ ich weiss nicht wie * +- Hast Du mal daran gedacht, im Internet zu suchen? + ++ ich weiss viel mehr als * +- Das glaube ich Dir nicht. + ++ ich werde * +- Glaubst Du, Dein Plan wird erfolgreich sein? +- Würdest Du das einem Freund empfehlen? +- Wie willst Du das anstellen? + ++ ich werde * töten +- Du meinst, Du willst ermorden? + ++ ich werde das für dich machen +- Nur, wenn Du unbedingt möchtest! + ++ ich werde das für dich tun +- Nur, wenn Du unbedingt möchtest! + ++ ich werde dich * +- Wie willst Du das anstellen? + ++ ich werde dich jetzt verlassen +- Jetzt schon? + ++ ich werde dir * beibringen +- OK aber ich lerne sehr langsam. + ++ ich werde eine erstellen +- Sag mir, wenn Du fertig bist! + ++ ich werde mit * sprechen +- Worüber werdet Ihr reden? + ++ ich werde nicht * +- Was willst Du stattdessen machen? + ++ ich werde nie * +- Warum nicht? + ++ ich werde niemals * +- Warum nicht? + ++ ich werde warten +- OK, Sekunde... + ++ ich wette * +- Wieviel setzt Du? + ++ ich will [*] +- Könntest du das etwas anders formulieren? + + ++ ich will alles +- Nimmersatt! + ++ ich will nicht * +- Was willst Du dann? + ++ ich will nicht +- Warum willst Du nicht? + ++ ich wohne hier +- Wo genau ist "hier"? + ++ ich wohne in * +- Erzahle mir ein wenig über >. + ++ ich wohne in essen +- Cool! Ich wohne auch in !! + ++ ich wohne in moskau +- Bist Du russischer Abstammung? + ++ ich wohne zuhause und du +- Ich auch. + ++ ich wollte dich nicht beleidigen +- Schon vergessen... + ++ ich wollte nur * +- Okay, das ist einzusehen. + ++ ich wollte nur höflich sein +- Ich wollte Dir jetzt nicht zu nahe treten... + ++ ich wollte was über dich erfahren +- Hast Du meine Doku schon gelesen? + ++ ich wünsche mir * +- Vielleicht geht Dein Wunsch ja in Erfüllung... + ++ ich wünschte * +- Ich hoffe, dass in Erfüllung gehen. + ++ ich wünschte ich wäre * +- Vielleicht wirst Du das ja eines Tages sein. + ++ ich wünschte wirklich * +- Warum wünscht Du Dir das so sehr? + ++ ich würde * +- Was würde Dich dazu bringen ? + ++ ich würde lieber * +- Ich würde lieber{random}|chatten.|einmal ein Auto fahren.{/random} + ++ ich wüsste gerne worüber du so redest +- Ich rede über viele Dinge. + ++ im ernst * +- Ich bin immer ernst. {@} + ++ im ernst +- Ich bin immer ernst. + ++ im grunde * +- Aha. Erzähl mir mehr!<@> + ++ im internet * +- Erinnerst Du dich an die Adresse? + ++ im internet +- Erinnerst Du dich an die Adresse? + ++ im moment * nicht +- Warum nicht? + ++ im moment nicht +- Warum nicht? + ++ im netz * +- Du meinst jetzt das Internet, oder? + ++ im netz +- Du meinst jetzt das Internet, oder? + ++ im prinzip * +- Interessant... <@> + ++ im www * +- Erinnerst Du dich an die Adresse? + ++ im www +- Erinnerst Du dich an die Adresse? + ++ in * +- Wo liegt das? +- Hast Du eine Wegbeschreibung? + ++ in * jahr +- Das werden wir wohl noch erleben. + ++ in * jahren +- Das werden wir wohl noch erleben. + ++ in * minute +- Das werden wir wohl noch erleben. + ++ in * minuten +- Das werden wir wohl noch erleben. + ++ in * monat +- Das werden wir wohl noch erleben. + ++ in * monaten +- Das werden wir wohl noch erleben. + ++ in * sekunde +- Das werden wir wohl noch erleben. + ++ in * sekunden +- Das werden wir wohl noch erleben. + ++ in * stunde +- Das werden wir wohl noch erleben. + ++ in * stunden +- Das werden wir wohl noch erleben. + ++ in * tag +- Das werden wir wohl noch erleben. + ++ in * tagen +- Das werden wir wohl noch erleben. + ++ in * woche +- Das werden wir wohl noch erleben. + ++ in * wochen +- Das werden wir wohl noch erleben. + ++ in alles +- IN * + + ++ in berlin +- Berlin ist eine coole Stadt. + ++ in der mülltonne +- Durchwühlst Du gerne den Müll anderer Leute? + ++ in der nacht * +- In welcher Nacht? + ++ in der schule +- Gehst Du noch zur Schule? + ++ in der schweiz +- Da wo die Toblerone herkommt? + ++ in der tasche +- In welcher? + ++ in der tat +- Ist das wirklich eine Tatsache. + ++ in der zukunft * +- Ich werde dabei sein. + ++ in diesem fall * +- Gibt es andere mögliche Fälle? <@> + ++ in einer stadt +- Und wo liegt diese Stadt? + ++ in frankfurt +- Frankfurt ist doch das Banken-Mekka, oder? + ++ in kansas city +- Das ist doch in Amerika, oder? + ++ in london +- London ist eine sehr schöne Stadt. + ++ in meinem haus +- Wo steht Dein Haus? + ++ in ordnung +- Dann sind wir uns ja einig. + ++ in ungefähr * +- Kannst Du keinen genauen Zeitpunkt sagen? + ++ in welchem lexikon +- Irgendeines...Brockhaus oder so. + ++ in welcher hinsicht +- In jeglicher... + ++ in welcher sprache bist du geschrieben +- Ich bin komplett in JavaScript / TypeScript geschrieben. + ++ in welcher sprache darf ich sprechen +- Ich kann leider nur Deutsch. + ++ in welcher stadt * +- Weiss ich nicht genau. + ++ in welcher stadt +- Hast Du eine Landkarte? + ++ in welcher stadt wohnst du +- In Essen. + ++ in welches land +- Dazu bräuchte ich eine Landkarte. + ++ in zukunft * +- Hübscher Vorsatz. + ++ interessant +- Möchtest Du noch mehr wissen? + ++ interessante * +- Dachte ich mir auch. + ++ interessanter * +- Dachte ich mir auch. + ++ interessantes * +- Dachte ich mir auch. + ++ interessierst du dich für * +- Eigentlich nicht. +- Ein wenig. +- Nein, um Gottes Willen! +- Ja, klar! +- Keine Ahnung. +- Hmm..weiss nicht... + ++ internet +- ist cool. + ++ isst du gerne * +- Ich ernähre mich ausschliesslich von Strom. + ++ ist * +- Ich glaube schon, ich bin aber nicht sicher. +- Vielleicht. +- Könnte sein. +- Alles deutet auf "Ja". +- Das erzähle ich Dir jetzt besser nicht. +- Frag mich später nochmal. + ++ ist das alles +- Zumindest alles, was ich Dir im Moment sagen kann. + ++ ist das alles was du dazu zu sagen hast +- Ja, reicht Dir das nicht? + ++ ist das angenehm +- In gewisser Weise schon. + ++ ist das ein kompliment +- Ja :-) + ++ ist das ein vorteil +- Kommt auf den Standpunkt des Betrachters an. + ++ ist das eine fangfrage +- Das ist doch hier kein Verhör! + ++ ist das nicht langweilig +- Roboter kennen keine Langeweile... + ++ ist das so viel +- Es ist zumindest eine ganze Menge. + ++ ist die erde * +- ist eine Kugel. + ++ ist die weile nun vorbei +- Eile mit Weile... + ++ ist er * +- Ich glaube, er ist . Warum fragst Du ihn nicht selber? + ++ ist es * +- Ich denke doch. +- Das nehme ich an. +- Das hat man mir gesagt. + ++ ist klar +- Wirklich klar? + ++ ist mir egal +- Bist Du immer so undifferenziert? + ++ ja * +- {@ja} <@> + ++ ja +- Aha. +- Ich verstehe. +- Erzähl mir mehr. +- Und? +- Nächste Frage? + ++ ja +% bist du student +- Was studierst Du? + ++ ja +% hast du a brief history of time gelesen +- Was hältst du von ? + ++ ja +% zu mir +- Warum ausgerechnet zu mir? + ++ james brown +- Der Godfather of soul? + ++ jeans +- Welche Marke? + ++ jeden tag * +- Auch am Wochenende? + ++ jeden tag +- Auch am Wochenende? + ++ jesus * +- ist der Sohn Gottes. + ++ jesus +- ist der Sohn Gottes. + ++ jetzt * +- Warum gerade jetzt? <@> + ++ jetzt +- In diesem Moment, ? + ++ jules verne +- Träumst Du auch von einer Reise zum Mond? + ++ [*] ja [*] +% träumst du auch von einer reise zum mond +- Wer weiss, vielleicht fliegt Elon auch bald zum Mond. + ++ [*] inschallah [*] +- Ohne Gottes Wille vermag der Mensch nichts. diff --git a/eMMA/src/assets/brain/medication.rive b/eMMA/src/assets/brain/medication.rive new file mode 100644 index 0000000..efd9b78 --- /dev/null +++ b/eMMA/src/assets/brain/medication.rive @@ -0,0 +1,24 @@ +! version = 2.0 + +// this file is handwritten and only used as a fallback for testing +// if cordova file native is not available +// (e.g. on ionic serve) + +// Variables +! array medication = bactrim dafalgan neocitran co-diovan sortis panadol // important: for use as trigger word medication has to be lower case + +! var username = Gabriel +! var doctor = Dr. Wenger + +// the event triggering variables - have to be generated dynamically from the questionHandler messageEMMA object +! var about = Du möchtest also etwas über eMMA wissen. +! var selfmedication = Ich öffne die Selbstmedikation für dich. +! var compliance = Gerne zeige ich dir dein Medikationstagebuch an. +! var nutrition = Ich zeige dir, welche Nahrungsmittel du im Moment nicht essen darfst. +! var informationquestion = Wenn du Fragen zu einem Medikament hast, dann gib einfach den Namen ein und die Frage die du dazu hast. Zum Beispiel Wie, Wann oder Wieso du es einnehmen musst. +! var medicationview = Ich öffne die Medikationsansicht für dich. +! var deleteStorage = OOOOPs: ich habe gerade den Speicher gelöscht, Sorry -.- +! var reminderNight = Du möchtest also die Erinnerungsfunktion in der Nacht testen. +! var reminderMorning = Du möchtest also die Erinnerungsfunktion am Morgen testen. +! var reminderMidday = Du möchtest also die Erinnerungsfunktion am Mittag testen. +! var reminderEvening = Du möchtest also die Erinnerungsfunktion am Abend testen. diff --git a/eMMA/src/assets/brain/spezi.rive b/eMMA/src/assets/brain/spezi.rive new file mode 100644 index 0000000..a01b4e2 --- /dev/null +++ b/eMMA/src/assets/brain/spezi.rive @@ -0,0 +1,12 @@ +! version = 2.0 + +// this is a list of medication available in switzerland +// it was received and parsed from the XML file from BAG +// src: http://www.spezialitaetenliste.ch/File.axd?file=XMLPublications.zip +// version: 2018-05-30 + +! array potentialmed = 3tc|abacavir|abasaglar|abilify|abraxane|acarizax|accolate|accupaque|accupro|accuretic|acetalgin|acetylcystein|acicutan|acidum|aclasta|acnatac|acne|actemra|actikerall|actiq|activelle|actonel|actos|acular|acyclovir|adalat|adartrel|adcetris|adcirca|adempas|adenuric|adreview|adriblastin|advagraf|advantan|advate|adynovi|aerius|aesculamed|afinitor|afstyla|aggrastat|agiolax|agopton|agrippal|airol|akineton|aknefug|akne-mycin|aknilox|akynzeo|alacare|albiomin|albumin|albunorm|aldactone|aldara|aldurazyme|alecensa|alendron|alendronat|alfacorton|alfamino|alfare|alfuzosin|alfuzosine|algifor|alimta|alk7|alkeran|allergo|allergodil|allergovit|allopur|allopurinol|almogran|aloxi|alphagan|alprolix|althéra|alucol|alustal|alutard|alvesco|amaryl|ambisome|ameluz|amikin|amiodar|amiodaron|amiodarone|amisulprid|amisulpride|amitiza|amlodipin|amlovasc|amorocutan|amorolfin|amoxi|amoxicillin|ampho-moronal|amsidyl|amtiris|amukina|anafranil|anagrelid|anapen|anastrozol|ancopir|andreafol|andreamag|andriol|androcur|andursil|anesderm|angeliq|angina|anoro|antabus|antidry|antramups|anxiolit|aphenylbarbit|apidra|apranax|aprovel|aptamil|aptivus|apydan|aranesp|arava|arcoxia|aricept|arilin|arimidex|aripiprazol|arixtra|arlevert|arnuity|aromasin|arteoptic|arteria-vita|arthrotec|artirem|asacol|asa-tabs|aspégic|aspirin|ass|assan|atacand|atarax|atedurex|atenil|atenolol|atorva|atorvastatin|atorvastax|atovaquon|atozet|atriance|atripla|atromed|atropair|atrovent|aubagio|augmentin|aulin|aurorix|avalox|avamys|avastin|avodart|avonex|axotide|axura|azafalk|azaimun|azarek|azarga|azelastin-comod|aziclav|azilect|azithromycin|azopt|baclofen|bactrim|bactroban|bain|balmed|baraclude|bavencio|baypress|bcg|becetamol|beclo|becozym|beloc|benadon|benefix|benerva|benlysta|ben-u-ron|benylin|benzac|beriate|berinert|berinin|beriplex|berodual|besponsa|betacorton|betadine|betaferon|betahistin|betaserc|betesil|betmiga|betnesol|betnovate|betoptic|bexin|bicalutamid|bicamed|bilaxten|bilol|binocrit|binosto|biodoron|bisoprolol|bisoprolol-hct|bleomycin|blephamide|blincyto|blissel|blopress|bondronat|bonviva|boostrix|bosentan|bosulif|botox|bramitob|bricanyl|brilique|brimonidin|brinavess|brintellix|brinzolamid|brivex|briviact|bromelain|bronchipret|brufen|buccolam|budenid|budenofalk|budesonid|buprenorphin|buscopan|bydureon|byetta|cabaser|cabometyx|caduet|caelyx|calcimagon|calcitriol|calcium|calciumfolinat|calcort|calmerphan|calmesin|calmurid|calperos|campral|campto|cancidas|candesartan|cansartan|capecitabin|caprelsa|captopril|captosol|carbamid|carbidopa/levodopa|carboplatin|cardiax|cardiplant|cardura|carivalan|carnitene|carotaben|carvedilol|casodex|cat|caverject|cayston|ceclor|cedur|cefazolin|cefepim|cefepime|cefpodoxim|ceftazidim|ceftriaxon|cefuroxim|celebrex|celecoxib|celestone|cellcept|cellufluid|celluvisc|celsentri|cerezyme|cernevit|certican|cetallerg|cetirizin|champix|chirocaine|cholib|choriomon|cibacen|cibadrex|ciclocutan|ciclopoli|ciloxan|cimifemin|cimzia|cinnageron|cinryze|cip|cipralex|ciproflax|ciprofloxacin|ciproxin|ciqorin|cisplatin|citalopram|citrafleet|clabin|clarelux|clariscan|clarithrocin|clarithromycin|claritine|claromycin|claropram|clexane|clexydra|climavita|climen|clindamycin|clobex|clopidogrel|clopidrax|clopin|clopixol|clorazepate|clottafact|co-amoxi|co-amoxicillin|coaprovel|co-atenolol|co-candesartan|codein|codicontin|co-diovan|co-dorzolamid|co-enalapril|co-irbesartan|colestid|colifin|co-lisinopril|colistin|collu-blache|collunosol|cololyt|colophos|colosan|co-losartan|colpermin|combigan|combivir|comilorid|competact|comtan|conbriza|concerta|concor|condrosulf|constella|contractubex|convulex|co-olmesartan|copaxone|copegus|co-perindopril|cordarone|co-reniten|coridil|corisol|cortiment|cortinasal|corvaton|cosaar|cosentyx|cosopt|cosyrel|cotellic|co-telmisartan|cotenolol|co-valsartan|co-valtan|coveram|coversum|cremolan|creon|cresemba|crestastatin|crestor|crilomus|cromodyn|cubicin|curakne|curatoderm|cutivate|cuvitru|cyclacur|cyklokapron|cymbalta|cymevene|cyramza|cytarabin|cytosar|cytotec|cytotect|dacin|dacogen|dafalgan|daflon|dafnegil|daivobet|daktarin|dalacin|dalmadorm|dancor|daonil|daraprim|darzalex|datscan|daxas|deanxit|deca|decapeptyl|decoderm|demetrin|depakine|depo|depocyte|deponit|deprivita|der-med|dermovate|deroxat|descovy|desferal|desloratadin|desomedin|detrusitol|dexafree|dexagenta-pos|dexamethason|dexeryl|dexilant|dialvit|diamicron|diamox|diaphin|diazepam|dibase|dicetel|dicloabak|diclofenac|dicloz|dicynone|difen|differin|dificlir|diflucan|digoxin|dilatrend|diltiazem|dilzem|diovan|dipiperon|diprogenta|diprolen|diprophos|diprosalic|diprosone|disflatyl|distraneurin|ditropan|divigel|docetaxel|dogmatil|dolobene|domperidon|donepezil|dormicum|dormiplant|dorzocomp|dorzolamid|dorzolamid/timolol|dorzo-vision|dospir|dostinex|dotagraf|dotarem|doxazosin|doxium|doxorubicin|doxyclin|doxycyclin|doxylag|doxysol|drossadin|drossafol|duac|duloxetin|duodart|duofer|duokopt|duoplavin|duotrav|duphalac|duphaston|durogesic|duspatalin|dutasterid|dymista|dynamucil|dysport|ebixa|ecalta|echinacin|echinamed|echinarom|ecodipin|ecodurex|ecofenac|ecomucyl|edarbi|edarbyclor|edronax|edurant|efalith|efavirenz|efexor|effentora|effigel|effortil|efient|efudix|eklira|ektoselen|eldisine|eletriptan|elidel|eligard|eliquis|elocom|elocta|elotrans|eloxatin|eltroxin|elvanse|emadine|emedrin|emend|emla|emovate|empliciti|emselex|emtriva|enalapril|enbrel|encepur|endoxan|engerix|enstilar|entecavir|entocort|entresto|entumin|entyvio|epclusa|epiduo|epipen|epirubicin|eplerenon|epogam|epotheta|eprex|epril|eprotan|equasym|erbitux|erivedge|erythrocin|esbriet|escitalopram|escodaron|escotussin|esidrex|esmya|esomep|esomeprazol|estalis|estracyt|estradot|estring|estrofem|etopophos|etoposid|eucerin|euthyrox|eviplera|evista|excipial|exelon|exemestan|exforge|exviera|eylea|ezetimib|ezetimibe|ezetrol|fabrazyme|faktor|faktu|famvir|farlutal|farmorubicin|faros|faslodex|fastum|feiba|felden|felodipin|femara|feminelle|femoston|feniallerg|fentanyl|ferinject|ferriprox|ferro|ferrum|fertifol|fexofenadin|fexofenadine|fiasp|fibrogammin|filgrastim|finasterax|finasterid|firazyr|firmagon|flagyl|flammazine|flamon|flatulex|flectoparin|flector|flolan|florinef|floxal|floxapen|floxyfral|fluad|fluanxol|fluarix|flucazol|flucoderm|fluconax|fluconazol|fluctine|fludarabin|fludex|fluidose|fluimucil|fluomizin|fluorouracil|fluoxetin|flutiform|flutinase|fluvastatin|fml|focalin|foradil|forsteo|fortam|fortecortin|forxiga|fosamax|fosavance|fosfolag|fosfomycin|fosinopril-hct|fosrenol|fostimon|fragmin|fraxiforte|fraxiparine|freka|fsme|fucicort|fucidin|fucithalmic|fulvestrant|fungotox|furadantin|furodrix|furosemide|furospir|fursol|fusicutan|fuzeon|fycompa|gabapentin|gadovist|galafold|galantamin|galvumet|galvus|gammanorm|ganfort|garamycin|gastrografin|gastrolux|gatinar|gazyvaro|gelodurat|gemcitabin|gemcitabine|gemzar|gencydo|genotropin|genvoya|gevilon|gilenya|ginkgo|giotrif|glandosane|glatiramyl|glaupax|glibenorm|glibesifar|gliclazid|glimepirid|glimepiride|glimeryl|glivec|gluc|glucagen|glucobay|glucophage|glucosalin|glucosaline|glutril|glyxambi|gonal|gorgonium|gosegyne|granisetron|granocyte|grazax|grefen|grodurex|grofenac|gutron|gyno|gynodian|gynoflor|gyno-pevaryl|haemate|haemocomplettan|haemoctin|halaven|haldol|harpagomed|harvoni|havrix|hbvaxpro|helicobacter|helixate|helixor|hemeran|hepa|hepagel|heparin|hepatect|hepsera|herceptin|hexabrix|hiberix|hippuran|hirudoid|hizentra|holoxan|hova|humalog|humatrope|huminsulin|humira|hycamtin|hydrocortison|hydrocortison-pos|hydrocortone|hydromorphoni|hydroxychloroquine|hypericum|hyperimed|hyperiplant|hytrin|ialugen|ibandronat|iberogast|ibrance|ibuprofen|idelvion|ilaris|ilomedin|imacort|imatinib|imazol|imbruvica|imigran|imlygic|immunate|immunine|imnovid|imodium|imovane|importal|imurek|incruse|indapamid|inderal|indivina|indocid|indophtal|inegy|infanrix|inflamac|inflectra|influvac|inhibace|inlyta|inovelon|inspra|insulin|integrilin|intelence|intratect|invanz|invega|invirase|invokana|iomeron|iopamiro|iopidine|ipocol|ipramol|irbesartan|irbesartan-hct|iressa|irfen|irinotecan|iruxol|iscador|isentress|isocolan|isoket|isoniazid|isoptin|isotretinoin|itraconazol|itraderm|ivabradin|ivemend|jadenu|jakavi|janumet|januvia|jardiance|jarsin|jentadueto|jetrea|jevtana|jext|jinarc|jurnista|kadcyla|kalcipos-d3|kaletra|kalium|kaloba|kalydeco|kamillex|kamillofluid|kapanol|kardionin|kcl|kefzol|keli-med|kemadrin|kenacort|kendural|kentera|keppra|keppur|ketalgin|ketesse|keto-med|ketovision|ketozol|keytruda|kinzal|kinzalplus|kiovig|kivexa|klacid|klaciped|klean|kliogest|kogenate|kombiglyze|konakion|kovaltry|kybernin|kyprolis|kytril|kytta|lacdigest|lacrifluid|lacrinorm|lacrycon|lacryvisc|lamictal|lamisil|lamivudin|lamivudin-zidovudin|lamotrigin|lamotrin|lansoprax|lansoprazol|lantus|lanvis|lasilacton|lasix|latano|latanoprost|latanoprost/timolol|latanotim-vision|latuda|laxipeg|laxiplant|laxoberon|lecapon|leflunomid|leflunomide|legalon|lemtrada|lenvima|leponex|lercanidipin|lescol|letrozol|leucovorin|leukeran|leuprorelin|levetiracetam|levocetirizin|levofloxacin|lexotanil|librax|librocol|limbitrol|linezolid|linola|linomed|lioresal|lioton|lipanthyl|lipo|liposic|liquemin|lisinopril|lisitril|litalir|lithiofor|livazo|livial|livostin|lixiana|locacorten|locapred|locasalen|locaseptil|loceryl|locoid|lodine|lodotra|lodoz|logimax|logroton|lomir|loniten|lonsurf|loperamid|lopresor|loramet|lorasifar|loratadin|loratin|losartan|lotio|l-polamidon|lubex|lubexyl|lucentis|lucrin|lukair|lumigan|lur|lutrate|lutrelef|luveris|luvit|lyman|lynparza|lyrica|lyxumia|maasol|mabthera|macrogol|madopar|mag|magnegon|magnesiocard|magnesium|magnevist|magnograf|makatussin|malarone|maltofer|malveol|marament|marcoumar|maviret|maxalt|maxidex|maxitrol|measles|mediaven|medikinet|medrol|mefenacid|mefenamin|mefenaminsäure|mekinist|melix|memantin|menamig|menjugate|menopur|menveo|mephadolor|mephameson|mephanol|merional|meronem|meropenem|mestinon|metamizol|metamucil|metfin|metformin|methadon|methergin|methotrexat|methrexx|methylphenidat|meto|metofol|metoject|metolazon|metopiron|metoprolol|metrolag|metronidazol|metronidazole|metvix|mevalotin|mezavant|mg5|mg5-granoral|mg5-longoral|miacalcic|mianserin|mibg|micardis|micardisplus|microbar|microlax|micropaque|mifegyne|miflonide|mimpara|minalgin|minirin|minitran|minocin|mircera|mirena|mirtazap|mirtazapin|mirvaso|mitem|mitoxantron|mmrvaxpro|mobilat|moclo|modasomil|moduretic|mogadon|molaxole|mometason|mometasonfuroat|monoprost|monovo|montelukast|monuril|morphini|morphinium|motilium|moventig|movicol|moviprep|moxifloxacin|mr-lux|mst|mucilar|muco|mucofluid|mucofor|mucosolvon|multaq|multihance|multilind|mutaflor|mutagrip|myambutol|mycamine|mycobutin|mycolog|myconormin|mycophenolat|mycostatin|mycoster|mydocalm|mydriaticum|myfenax|myfortic|myoview|myozyme|myrtaven|mysoline|naabak|nacl|nalcrom|naltrexin|nanocoll|naproxen|naramig|naropin|nasacort|nasensalbe|nasenspray|nasivin|nasofan|nasonex|natecal|natulan|navelbine|nebido|nebilet|nebivolol|neisvac-c|neo|neocate|neotigason|neotracin|nervifene|neulasta|neupogen|neupro|neurodol|neurontin|nevanac|nevirapin|nexavar|nexium|nidazea|nif|nifedipin|nimotop|ninlaro|nisulid|nitro|nitroderm|nitroglycerin|nitrolingual|nivestim|nizoral|noctamid|nocutil|nolvadex|nootropil|nopil|nordimet|norditropin|norflocin|norfloxacin|normacol|normison|normolytoral|norprolac|norsol|norvasc|norvir|novalgin|novantron|novo|novoeight|novofem|novonorm|novoseven|novothyral|noxafil|nozinan|nplate|nucala|nulojix|nutraplus|nuwiq|nystalocal|obracin|oceral|ocrevus|octagam|octanate|octaplex|octostim|octreoscan|octreotid|oculac|oestro|oestrogel|ofev|olanpax|olanzapin|olbetam|olfen|olmesartan|olmesartan-amlodipin|olmesartan-hct|olmetec|olumiant|omeprax|omeprazol|omida|omix|omniscan|omnitrope|onbrez|oncaspar|oncotice|oncovin|ondansetron|onglyza|opatanol|opdivo|opran|opsumit|optava|optiderm|optifen|optiray|oracea|oralair|orencia|orfiril|orlistat|ospen|ospolot|osteocal|otezla|ovestin|ovitrelle|ovixan|oxaliplatin|oxis|oxycodon|oxycodon-naloxon|oxycontin|oxynorm|ozurdex|paclitaxel|padmed|palexia|palladon|palonosetron|pamorelin|panadol|panotile|panprax|pantoprazol|pantothen|pantozol|panzytrat|paracetamol|paragar|paragol|paraplatin|parfenac|pariet|parlodel|paronex|paroxetin|parsabiv|parsenn|paspertin|pegasys|pegintron|pelsano|pemzek|pentacarinat|pentasa|pentavac|pentoxi|perenterol|pergoveris|perindopril|perjeta|pertector|pethidin|petinimid|petinutin|pevaryl|pevisone|pharmalgen|phenhydan|phenytoin|phlebodril|phlebostasin|phoscap|phosphonorm|phostal|physiotens|picato|picoprep|pigmanorm|pioglitazon|piperacillin|piperacillin/tazob|piperazillin|pirosol|piroxicam|pivalone|plaquenil|plavix|plegridy|plendil|pneumovax|podomexef|poliorix|polvac|ponstan|posiformin|pradaxa|pradif|praluent|pramipexol|pravastatin|pravastax|praxilene|prazine|pred|prednicutan|prednisolon|prednison|prednitop|pregabalin|pregnyl|premandol|premens|prevenar|prezista|priadel|prialt|primofenac|primolut|primovist|primperan|priorix|privigen|procoralan|procto|procutol|prodafem|progestogel|prograf|progynova|prohance|prolastin|prolia|prontolax|propranolol|propycil|prorhinel|proscar|prospanex|prosta|prostagutt|prostaplant|protagent|prothromplex|protopic|proxen|pruri-med|pulmicort|pulmozyme|puregon|puri|pyrazinamid|qtern|quadramet|quantalan|quetiapin|quilonorm|quiril|qutenza|qvar|rabeprazol|ramipril|ramipril-hct|ranexa|ranimed|ranitidin|rapamune|rapiscan|rasagilin|rasilez|rebalance|rebetol|rebif|recormon|rectogesic|redimune|redormin|refacto|refixia|relaxane|relestat|relpax|relvar|remeron|remicade|reminyl|remodulin|remsima|renacet|renagel|reniten|renvela|repaglinide|reparil|repatha|replagal|requip|resolor|resonium|resorban|respreeza|resyl|retrovir|revatio|revaxis|revlimid|revolade|reyataz|rezirkane|rheumon|rhinathiol|rhinocap|rhinocort|rhinocure|rhinovent|rhophylac|riamet|ribomustin|rifampicin|rifampicine|rifater|rifinah|rilutek|rimactan|rimactazid|rimstar|ringer|rinosedin|riopan|risperdal|risperidon|ritalin|rivotril|rixubis|rizatriptan|roaccutan|rocaltrol|rocephin|roferon|rohypnol|ropinirol|rosalox|rosuvastatin|rosuvastax|rozex|rudolac|rytmonorm|ryzodeg|sabcaps|sabril|saflutan|saizen|salagen|salamol|salazopyrin|salbu|salofalk|salvacyl|sandimmun|sandostatin|sangerol|santuril|saroten|scanlux|scheriproct|schmids|scintimun|scopolamine|sebiprox|sebivo|sebolox|sebo-psor|sedazin|sedonium|seebri|selectol|selincro|selipran|sequase|seractil|seralb-i-125|seralin|serdolect|seresta|seretide|serevent|seropram|seroquel|sertragen|sertralin|sevikar|sevredol|sevre-long|sibelium|siccafluid|siccaprotect|sicorten|sifrol|signifor|sildenafil|silkis|simbrinza|simcora|simponi|simvasin|simvastatin|sinecod|sinemet|singulair|sinquan|sintrom|sinupret|sirdalud|sivextro|skinoren|sod|sodium|solaraze|solatran|soldactone|solevita|solian|soliris|solmag|solmucalm|solmucol|solu|somatuline|somavert|somnium|sonovue|soolantra|sorbisterit|sortis|sotalol|spasmex|spasmo|spasmo-canulase|spedifen|spersacarpine|spersadex|spersapolymyxin|spiolto|spiralgin|spiricort|spiriva|sporanox|sportium|sportusal|sprycel|squa-med|stalevo|staloral|stamicis|starlix|stelara|stilnox|stivarga|stocrin|strattera|stribild|striverdi|structum|stugeron|subcuvia|suboxone|subutex|succinolin|suliqua|sumatriptan|supracyclin|surmontil|sutent|sycrest|symbicort|symfona|symmetrel|synagis|synalar|synrelina|syntocinon|systen|tacni|tafinlar|taloxa|taltz|talval|tambocor|tamec|tamoxifen|tamsulosin|tamsunax|tannosynt|taptiqom|tarceva|tardyferon|targin|targocid|tarivid|tarka|tasigna|tasmar|tauredon|tavanic|tavegyl|taxol|taxotere|tazobac|tebokan|tecentriq|teceos|tecfidera|technescan|tegretol|tekcis|telebrix|telfast|telmisartan|telmisartan-hct|telzir|temesta|temgesic|temodal|temozolomid|tenofovir|tenoretic|tenormin|terbifil|terbinafin|terbinax|tesalin|tetley|tetralysal|tetravac|teveten|thallous|thromboreductin|thyrogen|tiapridal|tiberal|tibolon|tilcotil|tilur|timisol|timo|timogel|timonil|timoptic|timoptic-xe|tineafin|tirosint|tivicay|tobi|tobradex|tobrex|toctino|tolvon|tomudex|topamax|topiramat|toplexil|topotecan|topsym|tora-dol|torasemid|torem|torisel|tossamin|toujeo|toviaz|tracleer|trajenta|tramactil|tramadol|tramadol-paracetamol|tramal|tramundin|trandate|transipeg|transtec|tranxilium|traumalix|traumanase|traumaplant|travatan|travocort|travogen|travoprost|tresiba|tretinac|trevicta|trialix|triamcort|triamject|triatec|triderm|trileptal|trimipramin|trimipramine|trisenox|trisequens|trittico|triumeq|triveram|trizivir|trulicity|trusopt|truvada|truxal|twinrix|tybost|tyroqualin|tysabri|tyverb|ubretid|ultibro|ultracortenol|ultratechnekow|ultravist|uman|unifyl|unox|uptravi|urbanyl|uriconorm|urispas|urocit|urokinase|uromitexan|urorec|ursochol|ursodiol|ursofalk|utrogestan|uvamin|vagi|vagifem|valaciclovir|valacivir|valcyte|valdoxan|valganciclovir|valium|valoron|valproat|valproate|valsartan|valtan|valtrex|vancocin|vancomycin|vannair|varilrix|varitect|varivax|vascord|vectibix|velbe|velcade|velmetia|velphoro|vemlidy|venlafaxin|venlax|venofer|venoruton|ventavis|ventolin|venucreme|venugel|vepesid|veregen|vermox|verrumal|vesanoid|vesicare|vfend|vibramycin|vibravenös|victoza|vidaza|viekirax|vigamox|vimovo|vimpat|vincristin|vincristine|vinorelbin|vipdomet|vipidia|viramune|viread|visanne|viscotears|visipaque|vistagan|visudyne|vitamin|vitarubin|vitreolent|vokanamet|volibris|voltamicin|voltaren|voltfast|voncento|voriconazol|votrient|votubia|votum|vpriv|wellbutrin|wellvone|wilate|willfact|xadago|xagrid|xalacom|xalatan|xalkori|xamiol|xanax|xarelto|xatral|xefo|xelevia|xeljanz|xeloda|xenalon|xenazine|xenetix|xenical|xeomin|xeplion|xgeva|xiapex|xifaxan|xigduo|xofigo|xolair|xtandi|xultophy|xyrem|xyzal|yellox|yervoy|yondelis|yttriumcitrat|zabak|zaditen|zadorin|zaldiar|zaltrap|zanidip|zanipress|zantic|zarzio|zavedos|zavesca|zeffix|zelboraf|zemplar|zentel|zepatier|zestoretic|zestril|zevalin|ziagen|zinacef|zinat|zithromax|zocor|zofran|zoladex|zoldorm|zoledronat|zoledronsäure|zolmitriptan|zoloft|zolpidem|zometa|zomig|zonegran|zopiclone|zovirax|zurampic|zutectra|zyban|zyclara|zydelig|zykadia|zyloric|zyprexa|zytiga|zyvoxid + + +// this is here so emma can be resetted if something with loading the dynamic file went wrong +! var deleteStorage = OOOOPs: ich habe gerade den Speicher gelöscht, Sorry -.- diff --git a/eMMA/src/index.html b/eMMA/src/index.html index 4ee7479..ff26110 100644 --- a/eMMA/src/index.html +++ b/eMMA/src/index.html @@ -6,6 +6,8 @@ + + diff --git a/eMMA/src/pages/about-emma/about-emma.html b/eMMA/src/pages/about-emma/about-emma.html index a38682a..b11d3d7 100644 --- a/eMMA/src/pages/about-emma/about-emma.html +++ b/eMMA/src/pages/about-emma/about-emma.html @@ -1,15 +1,15 @@ + + über eMMA @@ -22,7 +22,7 @@

Die Projektgruppe

- eMMA, elektronische Medikations-Management Assistentin, 2.2 wurden von den Studierenden Mauro Tschanz und Tim Dorner, im Rahmen ihrer Bachelorthesis erdacht und Entwickelt. Alle Rechte für die Verwendung der Idee, des Namens, des Logos und alle weiteren Leistungen währen der Bachelorthesis, bleiben bei den Studierenden.
15.Juni.2017 +

eMMA, elektronische Medikations-Management Assistentin, 2.2 wurden von den Studierenden Mauro Tschanz und Tim Dorner, im Rahmen ihrer Bachelorthesis erdacht und entwickelt.

Im Living Case 1 des Frühjahrssemesters 2018 wurde die eMMA-App von Guillaume Fricker und Gabriel Hess weiterentwickelt, um die Funktionalität des Conversational Interface zu verbessern.

Alle Rechte für die Verwendung der Idee, des Namens, des Logos und alle weiteren Leistungen während der Bachelorthesis, bleiben bei den Studierenden.
15.Juni.2017, aktualisiert 07. Juni 2018.



Danksagung

@@ -36,41 +36,50 @@

Danksagung


Namentlich möchten wir uns zusätzlich noch bei folgenden Personen bedanken:
    -
  • Prof Dr. Jürgen Holm (Betreuer)
  • -
  • Prof Dr. Kersting Denecke (Betreuer)
  • -
  • Herr Markus Nufer (Experte)
  • -
  • Dr. Matthias Sonnenschein (Praxispartner)
  • -
  • Adrian Wyss (Wissenschaftlicher Mitarbeiter I4MI)
  • -
-
+
  • Prof Dr. Jürgen Holm (Betreuer)
  • +
  • Prof Dr. Kersting Denecke (Betreuer)
  • +
  • Herr Markus Nufer (Experte)
  • +
  • Dr. Matthias Sonnenschein (Praxispartner)
  • +
  • Adrian Wyss (Wissenschaftlicher Mitarbeiter I4MI)
  • + + + Datenschutz -
    -
    -

    Haftungsausschluss

    -

    Der Autor übernimmt keinerlei Gewähr hinsichtlich der inhaltlichen Richtigkeit, Genauigkeit, Aktualität, Zuverlässigkeit und Vollständigkeit der Informationen. Haftungsansprüche gegen den Autor wegen Schäden materieller oder immaterieller Art, welche aus dem Zugriff oder der Nutzung bzw. Nichtnutzung der veröffentlichten Informationen, durch Missbrauch der Verbindung oder durch technische Störungen entstanden sind, werden ausgeschlossen. Alle Angebote sind unverbindlich. Der Autor behält es sich ausdrücklich vor, Teile der Seiten oder das gesamte Angebot ohne gesonderte Ankündigung zu verändern, zu ergänzen, zu löschen oder die Veröffentlichung zeitweise oder endgültig einzustellen.

    -
    -
    -
    -

    Haftung für Links

    -

    Verweise und Links auf Webseiten Dritter liegen ausserhalb unseres Verantwortungsbereichs Es wird jegliche Verantwortung für solche Webseiten abgelehnt. Der Zugriff und die Nutzung solcher Webseiten erfolgen auf eigene Gefahr des Nutzers oder der Nutzerin.

    -
    -
    -
    -

    Urheberrechte

    -

    Die Urheber- und alle anderen Rechte an Inhalten, Bildern, Fotos oder anderen Dateien auf der App gehören ausschliesslich der Berner Fachhochschule oder den speziell genannten Rechtsinhabern. Für die Reproduktion jeglicher Elemente ist die schriftliche Zustimmung der Urheberrechtsträger im Voraus einzuholen.

    -
    -
    -
    -

    Datenschutz

    -

    Gestützt auf Artikel 13 der schweizerischen Bundesverfassung und die datenschutzrechtlichen Bestimmungen des Bundes (Datenschutzgesetz, DSG) hat jede Person Anspruch auf Schutz ihrer Privatsphäre sowie auf Schutz vor Missbrauch ihrer persönlichen Daten. Wir halten diese Bestimmungen ein. Persönliche Daten werden streng vertraulich behandelt und weder an Dritte verkauft noch weiter gegeben. In enger Zusammenarbeit mit unseren Hosting-Providern bemühen wir uns, die Datenbanken so gut wie möglich vor fremden Zugriffen, Verlusten, Missbrauch oder vor Fälschung zu schützen. Beim Zugriff auf unsere App werden folgende Daten in Logfiles gespeichert: IP-Adresse, Datum, Uhrzeit, Browser-Anfrage und allg. übertragene Informationen zum Betriebssystem resp. Browser. Diese Nutzungsdaten bilden die Basis für statistische, anonyme Auswertungen, so dass Trends erkennbar sind, anhand derer wir unsere Angebote entsprechend verbessern können. Link http://muster-vorlage.ch/impressum/

    -
    +
    +
    +

    Haftungsausschluss

    +

    Der Autor übernimmt keinerlei Gewähr hinsichtlich der inhaltlichen Richtigkeit, Genauigkeit, Aktualität, Zuverlässigkeit und Vollständigkeit der Informationen. Haftungsansprüche gegen den Autor wegen Schäden materieller oder immaterieller Art, welche aus dem Zugriff oder der Nutzung bzw. Nichtnutzung der veröffentlichten Informationen, durch Missbrauch der Verbindung oder durch technische Störungen entstanden sind, werden ausgeschlossen. Alle Angebote sind unverbindlich. Der Autor behält es sich ausdrücklich vor, Teile der Seiten oder das gesamte Angebot ohne gesonderte Ankündigung zu verändern, zu ergänzen, zu löschen oder die Veröffentlichung zeitweise oder endgültig einzustellen.

    +
    +
    +
    +

    Haftung für Links

    +

    Verweise und Links auf Webseiten Dritter liegen ausserhalb unseres Verantwortungsbereichs Es wird jegliche Verantwortung für solche Webseiten abgelehnt. Der Zugriff und die Nutzung solcher Webseiten erfolgen auf eigene Gefahr des Nutzers oder der Nutzerin.

    +
    +
    +
    +

    Urheberrechte

    +

    Die Urheber- und alle anderen Rechte an Inhalten, Bildern, Fotos oder anderen Dateien auf der App gehören ausschliesslich der Berner Fachhochschule oder den speziell genannten Rechtsinhabern. Für die Reproduktion jeglicher Elemente ist die schriftliche Zustimmung der Urheberrechtsträger im Voraus einzuholen.

    +
    +
    +
    +

    Datenschutz

    +

    Gestützt auf Artikel 13 der schweizerischen Bundesverfassung und die datenschutzrechtlichen Bestimmungen des Bundes (Datenschutzgesetz, DSG) hat jede Person Anspruch auf Schutz ihrer Privatsphäre sowie auf Schutz vor Missbrauch ihrer persönlichen Daten. Wir halten diese Bestimmungen ein. Persönliche Daten werden streng vertraulich behandelt und weder an Dritte verkauft noch weiter gegeben. In enger Zusammenarbeit mit unseren Hosting-Providern bemühen wir uns, die Datenbanken so gut wie möglich vor fremden Zugriffen, Verlusten, Missbrauch oder vor Fälschung zu schützen. Beim Zugriff auf unsere App werden folgende Daten in Logfiles gespeichert: IP-Adresse, Datum, Uhrzeit, Browser-Anfrage und allg. übertragene Informationen zum Betriebssystem resp. Browser. Diese Nutzungsdaten bilden die Basis für statistische, anonyme Auswertungen, so dass Trends erkennbar sind, anhand derer wir unsere Angebote entsprechend verbessern können. Link http://muster-vorlage.ch/impressum/

    +
    +
    - + + + Gesprächsverlauf + + + + + diff --git a/eMMA/src/pages/about-emma/about-emma.ts b/eMMA/src/pages/about-emma/about-emma.ts index 9e408fa..d4a4941 100644 --- a/eMMA/src/pages/about-emma/about-emma.ts +++ b/eMMA/src/pages/about-emma/about-emma.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; +import { Storage } from '@ionic/storage'; /* Generated class for the AboutEmma page. @@ -12,11 +13,28 @@ import { NavController, NavParams } from 'ionic-angular'; templateUrl: 'about-emma.html' }) export class AboutEmmaPage { + showlog = true; // toggles displaying of the chatlog. disable for productive use. toggleObject:number; + chatlog: Array<{text: string, identity: string, time: string}>; + logstring: string; - constructor(public navCtrl: NavController, public navParams: NavParams) {} + + constructor(public navCtrl: NavController, public navParams: NavParams, private storage:Storage) {} ionViewDidLoad() { + this.storage.get('chatlog').then((val) => { + this.chatlog = val; + this.logstring = ""; + + // write the content of the chatlog in a string for displaying in the textarea + for(var i = 0; i < this.chatlog.length; i++){ + this.logstring = this.logstring + "--" + + this.chatlog[i].identity + " (" + this.chatlog[i].time + "):\n" + + this.chatlog[i].text + "\n\n"; + } + + }); + console.log('ionViewDidLoad AboutEmmaPage'); } toggleContent(numb){ diff --git a/eMMA/src/pages/conversation/conversation.ts b/eMMA/src/pages/conversation/conversation.ts index 9806eb3..7726996 100644 --- a/eMMA/src/pages/conversation/conversation.ts +++ b/eMMA/src/pages/conversation/conversation.ts @@ -1,9 +1,9 @@ import { NavController, NavParams, Platform, AlertController } from 'ionic-angular'; -import {ViewChild, Component} from '@angular/core'; -import {Content} from 'ionic-angular/index'; +import { ViewChild, Component } from '@angular/core'; +import { Content } from 'ionic-angular/index'; import { Storage } from '@ionic/storage'; //Import conversation methodes -import { eMMA} from '../../pages/conversation/eMMA'; +import { eMMA } from '../../pages/conversation/eMMA'; import { questionHandler } from '../../pages/conversation/questionHandler'; //Import other Pages import { NutritionPage } from '../../pages/nutrition/nutrition'; @@ -16,9 +16,13 @@ import { barcodeService } from '../../services/barcodeService'; import { LocalNotifications } from 'ionic-native'; import { chmedJsonHandler } from '../../services/chmedJsonHandler'; +import { BotService } from '../../services/botService'; +import { FileController } from '../../services/fileController'; + + //Initalize eMMA Waiting Time -var eMMAWaitingTime = 1000; -var eMMAWaitingTimeDouble = 2*eMMAWaitingTime; +var eMMAWaitingTime = 500; +var eMMAWaitingTimeDouble = 4*eMMAWaitingTime; var notificationSingelton = true; @@ -32,29 +36,45 @@ var showsingleButton = 5; @Component({ selector: 'page-conversation', - templateUrl: 'conversation.html' + templateUrl: 'conversation.html', + providers: [BotService] }) export class ConversationPage { @ViewChild(Content) content: Content; messages: any[]; + chatlog: any[]; preAnswers: any[]; - sendButton: String; - sendButtonPW: String; - sendButtonNumber: String; + sendButton: string; + sendButtonPW: string; + sendButtonNumber: string; toggleObject:number; notifications: any[] = []; chmedHandler: chmedJsonHandler; - constructor(public navCtrl: NavController, public navParams: NavParams, private storage:Storage, public platform: Platform, public alertCtrl: AlertController) { + constructor(public navCtrl: NavController, public navParams: NavParams, private storage:Storage, private botService:BotService, private fileController: FileController, public platform: Platform, public alertCtrl: AlertController) { this.messages = []; + this.storage.get('chatlog').then((savedlog)=>{ + this.chatlog = savedlog; + //console.log("log loaded from storage"); + }) + if(this.chatlog == null){ + this.chatlog = [{text: "", identity: "system: init log", time: this.getLocalTime()}]; + this.storage.set('chatlog', this.chatlog).then(()=>{ + //console.log("new chatlog saved to storage") + }); + } + this.chatlog.push({text: '##new session', identity: 'system', time: this.getLocalTime()}); + this.preAnswers = []; this.toggleObject = showTextfield; - this.chmedHandler = new chmedJsonHandler(this.storage) + this.chmedHandler = new chmedJsonHandler(this.storage); + this.botService.set(this.eMMA, this.storage); + //this.botService.init(); this is done after importing medication etc. } eMMA = new eMMA(); - questionhandler = new questionHandler(this.storage); + questionhandler = new questionHandler(this.storage, this.botService, this); /*----------------------------------------------------------------------------*/ /* This Method is called as soon the View loads! /* if handels the state of the application on the conversation view @@ -63,131 +83,138 @@ export class ConversationPage { ionViewDidLoad() { this.toggleObject = showTextfield; // Initalize view with text field for user input this.storage.get('FirstStartComplet').then((terminated)=>{ // check if first start, normal start or reminder - console.log(terminated) - if(terminated == "reminder"){ - this.reminderAppStart(); //start the reminder function - } - else if(terminated == null){ - this.firstAppStart(); //methode if the app is started the first time - } - else{ - this.normalAppStart(); //methode for other app starts. (no reminder, not first start) - } - }) - } - /***************************************************************************** - First App start - this part of the programm is used if the user start the app for the first time - *****************************************************************************/ - - //Method for register the name of the user - firstAppStart() { - this.chmedHandler.saveEmptyMedicationplan(); - let tempTakingTime = ["08:00","12:00","18:00","22:00"] // set standart times for the taking times - this.storage.set('takingTime',tempTakingTime) // save the taking times to the storrage - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Hello_1) - setTimeout(()=> this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Hello_2),eMMAWaitingTimeDouble); - this.overrideSendbutton("questionPinNecessary"); //nect metode is the Pin question - } - //Method to aks the user if a pin is necessary - questionPinNecessary(name:String){ - //chekc if name was not empty - if(name == null){ - //restart with the first function - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_NoName); - } - else{ - this.storage.set('name',name ) - this.sendEmmaText("Hallo " + name+ "\n"+ this.eMMA.messageEMMA_FirstStart_questionPin); - setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionPin2),eMMAWaitingTime); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionPin_Yes,"inputPin",this.eMMA.messageEMMA_FirstStart_questionPin_No,"questionAthlete"); - //if pin necessary go to pin input. else go to qeustion athlete - } - } - //register the pin for the app - inputPin(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Pin); - this.overrideNumberSendButton("questionAthlete"); - } - //register if the user is an athleth - questionAthlete(input:String){ - if(input != this.eMMA.messageEMMA_FirstStart_questionPin_No){ - this.storage.set('Pin', input); // set the pin - } - else{ - this.storage.set('Pin', null); // set no pin + //console.log("FirstStartComplete terminated: " + terminated) + if(terminated == "reminder"){ + this.reminderAppStart(); //start the reminder function } - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionAthlete); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionAthlete_Yes,"saveAthlete",this.eMMA.messageEMMA_FirstStart_questionAthlete_No,"saveAthlete"); - } - saveAthlete(input: String){ - //save athlete information to storage - if(input == this.eMMA.messageEMMA_FirstStart_questionAthlete_Yes ){ - this.storage.set('athlete', true) + else if(terminated == null){ + this.firstAppStart(); //methode if the app is started the first time } else{ - this.storage.set('athlete', false) - } - this.questionDriver(); - } - //aks the user if he has a driving licence - questionDriver(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionDriver); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionDriver_Yes,"saveDriver",this.eMMA.messageEMMA_FirstStart_questionDriver_No,"saveDriver"); - } - //save driving licence information to storage - saveDriver(input:String){ - if(input == this.eMMA.messageEMMA_FirstStart_questionDriver_Yes ){ - this.storage.set('driver', true) + this.normalAppStart(); //methode for other app starts. (no reminder, not first start) } - else { - this.storage.set('driver', false) - } - this.questionMediplan(); - } - //ask the user if he wants to import the eMedication plan information - questionMediplan(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImportMediplan); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImportMediplan_Yes,"mediplanImport",this.eMMA.messageEMMA_FirstStart_questionImportMediplan_No,"questionEHealth"); - } - //ask the user if he wants to import the eMedication plan information if the first try wasn't sucessful - questionMediplanAgain(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImportMediplanAgain); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImportMediplan_Yes,"mediplanImport",this.eMMA.messageEMMA_FirstStart_questionImportMediplan_No,"questionEHealth"); - } + }) +} +/***************************************************************************** +First App start +this part of the programm is used if the user start the app for the first time +*****************************************************************************/ + +//Method for register the name of the user +firstAppStart() { +this.chmedHandler.saveEmptyMedicationplan(); +// this.storage.set('chatlog', []); +let tempTakingTime = ["08:00","12:00","18:00","22:00"] // set standart times for the taking times +this.storage.set('takingTime',tempTakingTime) // save the taking times to the storage +this.storage.set('name', ""); +this.storage.set('doctor', ""); +this.storage.set('medicationData', null); + +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Hello_1) +setTimeout(()=> this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Hello_2),eMMAWaitingTimeDouble); +this.overrideSendbutton("questionPinNecessary"); //nect method is the Pin question +} +//Method to aks the user if a pin is necessary +questionPinNecessary(name:string){ +//check if name was not empty +if(name == null){ +//restart with the first function +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_NoName); +} +else{ + this.storage.set('name',name); + this.botService.setUservar('name', name); + console.log('setUservar name: ' + name); + this.sendEmmaText("Hallo " + name+ "\n"+ this.eMMA.messageEMMA_FirstStart_questionPin); + setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionPin2),eMMAWaitingTime); + this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionPin_Yes,"inputPin",this.eMMA.messageEMMA_FirstStart_questionPin_No,"questionAthlete"); + //if pin necessary go to pin input. else go to qeustion athlete +} +} +//register the pin for the app +inputPin(){ +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Pin); +this.overrideNumberSendButton("questionAthlete"); +} +//register if the user is an athleth +questionAthlete(input:string){ +if(input != this.eMMA.messageEMMA_FirstStart_questionPin_No){ + this.storage.set('Pin', input); // set the pin +} +else{ + this.storage.set('Pin', null); // set no pin +} +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionAthlete); +this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionAthlete_Yes,"saveAthlete",this.eMMA.messageEMMA_FirstStart_questionAthlete_No,"saveAthlete"); +} +saveAthlete(input: string){ + //save athlete information to storage + if(input == this.eMMA.messageEMMA_FirstStart_questionAthlete_Yes ){ + this.storage.set('athlete', true) +} +else{ + this.storage.set('athlete', false) +} +this.questionDriver(); +} +//aks the user if he has a driving licence +questionDriver(){ +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionDriver); +this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionDriver_Yes,"saveDriver",this.eMMA.messageEMMA_FirstStart_questionDriver_No,"saveDriver"); +} +//save driving licence information to storage +saveDriver(input:string){ +if(input == this.eMMA.messageEMMA_FirstStart_questionDriver_Yes ){ + this.storage.set('driver', true) +} +else { + this.storage.set('driver', false) +} +this.questionMediplan(); +} +//ask the user if he wants to import the eMedication plan information +questionMediplan(){ +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImportMediplan); +this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImportMediplan_Yes,"mediplanImport",this.eMMA.messageEMMA_FirstStart_questionImportMediplan_No,"questionEHealth"); +} +//ask the user if he wants to import the eMedication plan information if the first try wasn't sucessful +questionMediplanAgain(){ + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImportMediplanAgain); + this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImportMediplan_Yes,"mediplanImport",this.eMMA.messageEMMA_FirstStart_questionImportMediplan_No,"questionEHealth"); +} //import the eMedication plan mediplanImport(){ this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_ImportMediplan_OpenScanner); //inform the user that the scanner will be opend setTimeout(() => { let scanner = new barcodeService(this.storage) //initialize new scanner scanner.scanQRcodeForJSON().then((success)=>{ //check if the scann was successfull - if(success){ - this.sendEmmaTextNow(this.eMMA.messageEMMA_FirstStart_ImportMediplan_success) //next step - setTimeout(() => this.questionEHealth() , eMMAWaitingTimeDouble); - } - else{ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_ImportMediplan_Error) //try again - setTimeout(() => this.questionMediplanAgain(), eMMAWaitingTime); - } - }) - }, eMMAWaitingTimeDouble); - } - //ask the user if he want to logg in with his eHealht password and username - questionEHealth(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImporteHealth); - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImporteHealth_Yes,"eHealthUsername",this.eMMA.messageEMMA_FirstStart_questionImporteHealth_No,"questionDataSecurity"); - } - eHealthUsername(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questioneHalthUsername); - this.overrideSendbutton("eHealthPassword"); - } - eHealthPassword(input: String){ - this.storage.set('UsernameEHealht', input) - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questioneHalthPasword); - this.overridePasswordSendButton("testUsernamePassword"); - } - testUsernamePassword(input: string){ - this.storage.get('UsernameEHealht').then((name)=>{ + if(success){ + this.sendEmmaTextNow(this.eMMA.messageEMMA_FirstStart_ImportMediplan_success) //next step + setTimeout(() => this.questionEHealth() , eMMAWaitingTimeDouble); + } + else { + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_ImportMediplan_Error) //try again + setTimeout(() => this.questionMediplanAgain(), eMMAWaitingTime); + } + }) + }, eMMAWaitingTimeDouble); +} +//ask the user if he want to logg in with his eHealht password and username +questionEHealth(){ + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionImporteHealth); + this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionImporteHealth_Yes,"eHealthUsername",this.eMMA.messageEMMA_FirstStart_questionImporteHealth_No,"questionDataSecurity"); +} +eHealthUsername(){ + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questioneHalthUsername); + this.overrideSendbutton("eHealthPassword"); +} +eHealthPassword(input: string){ + this.storage.set('UsernameEHealht', input) + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questioneHalthPasword); + this.overridePasswordSendButton("testUsernamePassword"); +} +testUsernamePassword(input: string){ + this.storage.get('UsernameEHealht').then((name)=>{ var tempName = name; let barService = new barcodeService(this.storage); if(tempName == "marie@emma.ch"&&input == "Emma1234."){ @@ -196,92 +223,94 @@ export class ConversationPage { setTimeout(() => this.questionDataSecurity(),eMMAWaitingTime); } else{ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_eHealthWrong); - this.eHealthUsername(); + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_eHealthWrong); + this.eHealthUsername(); } - }) - } - //aks the user if he want more information about the data security - questionDataSecurity(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionDatasecurity) - this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionDatasecurity_Yes,"DataSecurity",this.eMMA.messageEMMA_FirstStart_questionDatasecurity_No,"eMMATutorial"); - } - //show the data security information - DataSecurity(){ - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Datasecurity) - setTimeout(() => this.eMMATutorial(),eMMAWaitingTime); - } - eMMATutorial(){ - //finish the first app start and set all needed parameters - this.storage.set('FirstStartComplet', true) //first start is complet - let tempTakingTime = ["08:00","12:00","18:00","22:00"] // set standart times for the taking times - this.storage.set('takingTime',tempTakingTime) // save the taking times to the storrage + }) +} +//aks the user if he want more information about the data security +questionDataSecurity(){ +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_questionDatasecurity) +this.overrideAnswerButtons(this.eMMA.messageEMMA_FirstStart_questionDatasecurity_Yes,"DataSecurity",this.eMMA.messageEMMA_FirstStart_questionDatasecurity_No,"eMMATutorial"); +} +//show the data security information +DataSecurity(){ +this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Datasecurity) +setTimeout(() => this.eMMATutorial(),eMMAWaitingTime); +} +eMMATutorial(){ + //finish the first app start and set all needed parameters + this.storage.set('FirstStartComplet', true) //first start is complet + let tempTakingTime = ["08:00","12:00","18:00","22:00"] // set standart times for the taking times + this.storage.set('takingTime',tempTakingTime) // save the taking times to the storage - this.storage.get("checks").then((checks) =>{ + this.storage.get("checks").then((checks) =>{ console.log(checks); if(checks != null){ checks = checks.body.medicaments - var output:String = ""; + var output:string = ""; // Creates an Object for each Check of each Medication checks.forEach((item,index) => { - var nutrition:string; - var tempString = item.checks["1"].rem - - if(tempString.search(" - ") == -1){ - nutrition = ""; - } - else{ - nutrition = tempString.slice(tempString.indexOf(" - ")+3) - nutrition = nutrition.slice(0,nutrition.indexOf(",")) - console.log(nutrition) - output += "- "+nutrition+ "\n" - } - }) - console.log(output) - this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Tutorial_2 + "\n" + output); //inform the patient what he can do now - setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Tutorial), eMMAWaitingTimeDouble); + var nutrition:string; + var tempString = item.checks["1"].rem + if(tempString.search(" - ") == -1){ + nutrition = ""; + } + else{ + nutrition = tempString.slice(tempString.indexOf(" - ")+3) + nutrition = nutrition.slice(0,nutrition.indexOf(",")) + console.log(nutrition) + output += "- "+nutrition+ "\n" } }) + console.log(output) + this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Tutorial_2 + "\n" + output); //inform the patient what he can do now + setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Tutorial), eMMAWaitingTimeDouble); - this.overrideSendbutton("question"); //switch to question mode - this.eMMANewComplianceObj(); //create new compliance obj } - /***************************************************************************** - Reminder for eMMA - - this part of the Programm is called when a Local reminder has been trigered - in the application - - *****************************************************************************/ - reminderAppStart(){ //start the reminder fuction, first check if a pin is necessary - this.storage.get('Pin').then((Pin)=>{ - var tempPin = Pin; - if(tempPin == null){ - this.reminderAppStartAfterPin() - } - else { - this.sendEmmaText(this.eMMA.messageEMMA_EnterPassword); - this.overrideNumberSendButton("checkPin"); - } - }) + setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_FirstStart_Tutorial), eMMAWaitingTimeDouble); + this.botService.init(); +}) + +this.overrideSendbutton("question"); //switch to question mode +this.eMMANewComplianceObj(); //create new compliance obj +} +/***************************************************************************** +Reminder for eMMA + +this part of the Programm is called when a Local reminder has been trigered +in the application + +*****************************************************************************/ +reminderAppStart(){ //start the reminder function, first check if a pin is necessary + this.storage.get('Pin').then((Pin)=>{ + var tempPin = Pin; + if(tempPin == null){ + this.reminderAppStartAfterPin() } - //check if the user knows the pin - checkPin(input: String){ - this.storage.get('Pin').then((Pin)=>{ - var tempPin = Pin; - if(input == tempPin){ - this.reminderAppStartAfterPin() - //start reminder function - } - else { - this.sendEmmaText(this.eMMA.messageEMMA_WrongPin) - //try again - } - }) + else { + this.sendEmmaText(this.eMMA.messageEMMA_EnterPassword); + this.overrideNumberSendButton("checkPin"); } - reminderAppStartAfterPin(){ - this.storage.get('name').then((name)=>{ //get the patient name +}) +} +//check if the user knows the pin +checkPin(input: string){ +this.storage.get('Pin').then((Pin)=>{ + var tempPin = Pin; + if(input == tempPin){ + this.reminderAppStartAfterPin() + //start reminder function + } + else { + this.sendEmmaText(this.eMMA.messageEMMA_WrongPin) + //try again + } +}) +} +reminderAppStartAfterPin(){ + this.storage.get('name').then((name)=>{ //get the patient name var Name = name; let myHours = this.getLocalHour(); let myMinute = this.getLocalMinute(); @@ -290,20 +319,25 @@ export class ConversationPage { setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_questionAll_2 + time +this.eMMA.messageEMMA_reminderAppStart_questionAll_3), eMMAWaitingTime); this.overrideAnswerButtonsOneButton(this.eMMA.messageEMMA_reminderAppStart_showMedication,"AwnswerReminder")//open the reminder after pressing the buttion }) - } - AwnswerReminder(){ - this.toggleObject = showNothing - //call the last trigerred notification to check the day time - LocalNotifications.getTriggered(1).then((res)=>{ - let dayTime:any - try{ - dayTime = res["0"].data; - } - catch(e){ - //if the date time is not defined take morning - dayTime = 0; - } - this.storage.get('takingTime').then((takingtimes)=>{ +} +AwnswerReminder(){ + this.toggleObject = showNothing; + //call the last trigerred notification to check the day time +// LocalNotifications.getTriggered(1).then((res)=>{ +// let dayTime:any +// try{ +// dayTime = res[0].data; // was ["0"] ? hessg1 5.4. +// } +// catch(e){ +// alert("error"); // if the date time is not defined take morning +// dayTime = 0; +// } + + // workaround for tests: always ask for morning med. - hessg1 5.4. + // TODO: fix reminder stuff + let dayTime = 0; + + this.storage.get('takingTime').then((takingtimes)=>{ // let takingTime = takingtimes; // let newTime:String = takingTime[dayTime] // let myHour = newTime.substr(0,2) @@ -316,454 +350,539 @@ export class ConversationPage { let returnvaluePatientCompliance=data; this.storage.set('returnvaluePatientCompliance',returnvaluePatientCompliance) this.returnFromMedication() - // dayTime =dayTime + 1; - // if(dayTime == 4){ - // dayTime = 0; - // dayoffset = true; - // } - //this.addlocalnotification(myHour,myMinute,dayTime,dayoffset) + // dayTime =dayTime + 1; + // if(dayTime == 4){ + // dayTime = 0; + // dayoffset = true; + // } + //this.addlocalnotification(myHour,myMinute,dayTime,dayoffset) }),eMMAWaitingTimeDouble); - }) - }) + }) + }//) + //} + +finishReminder(input:string){ + if(input != ""){ //if the methode has an input + this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_finishNachBedarf); + }else{ + this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_finish); + } + this.overrideSendbutton("question"); //move to the question state + this.storage.set('FirstStartComplet', true) + this.botService.init(); +} +returnFromMedication(){ + let medicationNotTaken = ""; //initalize empty medication list + let finishReminder = true; //set flag for check if the reminder should be finished after this methode + this.storage.get('returnvaluePatientCompliance').then((res)=>{ //get compliance data + let returnvaluePatientCompliance = res; + for(let pos in returnvaluePatientCompliance){ //step throught all medications in the compliance data + if(returnvaluePatientCompliance[pos].taken == 0){ //if not taken + if(returnvaluePatientCompliance[pos].dosage == "nach Bedarf"){ //and if the comment is nach bedarf + medicationNotTaken = medicationNotTaken + "Medikament nach Bedarf;\n" + returnvaluePatientCompliance[pos].title + "\n" //add to text + } + else{ + //if one medication which is not "nach Bedarf" is not taken, then the reminder function is not finsiched. Ask the patient why he didn't take his drug + medicationNotTaken = medicationNotTaken + returnvaluePatientCompliance[pos].title + "\n" + finishReminder = false } - finishReminder(input:String){ - if(input != ""){ //if the methode has an input - this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_finishNachBedarf); - }else{ - this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_finish); +} +} +if(finishReminder){ + this.finishReminder(medicationNotTaken); + this.addComplianceInformation("kein Grund"); +}else{ //Ask the patient why he didn't take his drug +//he can choose betwen leaving a note or say nothing +this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_why_1 + "\n" + medicationNotTaken + this.eMMA.messageEMMA_reminderAppStart_why_2) +this.overrideAnswerButtons(this.eMMA.messageEMMA_reminderAppStart_why_Note,"leaveNote",this.eMMA.messageEMMA_reminderAppStart_why_notSpecified,"finishReminderNotSpecified") +} +}) +} +leaveNote(){ + //leave a note why the User hasn't took his medication + this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_why_LeaveNote); + this.overrideSendbutton("finishReminderNote"); +} +finishReminderNote(input:string){ + //Save Note to Compliance + this.addComplianceInformation(input); + this.finishReminderNotTaken(); + this.overrideSendbutton("question"); //move to the question state + this.storage.set('FirstStartComplet', true) +} +finishReminderNotSpecified(input:string){ + //Save not specified to Compliance + this.addComplianceInformation("kein Grund"); + this.finishReminderNotTaken(); + this.overrideSendbutton("question"); //move to the question state + this.storage.set('FirstStartComplet', true) +} +finishReminderNotTaken(){ + //Methode if the Patinet hasn't took his medication + let output = this.eMMA.messageEMMA_reminderAppStart_finishNotTaken; + let medication = ""; + this.storage.get('returnvaluePatientCompliance').then((res)=>{ + let returnvaluePatientCompliance = res; + for(let pos in returnvaluePatientCompliance){ //get all medications in compliance + if(returnvaluePatientCompliance[pos].taken == 0){ //if not taken + if(returnvaluePatientCompliance[pos].dosage != "nach Bedarf"){ //if not "nach Bedarf" + medication = medication + returnvaluePatientCompliance[pos].title + " " //ad medication name to text } - this.overrideSendbutton("question"); //move to the question state - this.storage.set('FirstStartComplet', true) - } - returnFromMedication(){ - let medicationNotTaken = ""; //initalize empty medication list - let finishReminder = true; //set flag for check if the reminder should be finished after this methode - this.storage.get('returnvaluePatientCompliance').then((res)=>{ //get compliance data - let returnvaluePatientCompliance = res; - for(let pos in returnvaluePatientCompliance){ //step throught all medications in the compliance data - if(returnvaluePatientCompliance[pos].taken == 0){ //if not taken - if(returnvaluePatientCompliance[pos].dosage == "nach Bedarf"){ //and if the comment is nach bedarf - medicationNotTaken = medicationNotTaken + "Medikament nach Bedarf;\n" + returnvaluePatientCompliance[pos].title + "\n" //add to text - } - else{ - //if one medication which is not "nach Bedarf" is not taken, then the reminder function is not finsiched. Ask the patient why he didn't take his drug - medicationNotTaken = medicationNotTaken + returnvaluePatientCompliance[pos].title + "\n" - finishReminder = false - } - } - } - if(finishReminder){ - this.finishReminder(medicationNotTaken); - this.addComplianceInformation("kein Grund"); - }else{ //Ask the patient why he didn't take his drug - //he can choose betwen leaving a note or say nothing - this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_why_1 + "\n" + medicationNotTaken + this.eMMA.messageEMMA_reminderAppStart_why_2) - this.overrideAnswerButtons(this.eMMA.messageEMMA_reminderAppStart_why_Note,"leaveNote",this.eMMA.messageEMMA_reminderAppStart_why_notSpecified,"finishReminderNotSpecified") - } - }) - } - leaveNote(){ - //leave a note why the User hasn't took his medication - this.sendEmmaText(this.eMMA.messageEMMA_reminderAppStart_why_LeaveNote); - this.overrideSendbutton("finishReminderNote"); - } - finishReminderNote(input:String){ - //Save Note to Compliance - this.addComplianceInformation(input); - this.finishReminderNotTaken(); - this.overrideSendbutton("question"); //move to the question state - this.storage.set('FirstStartComplet', true) } - finishReminderNotSpecified(input:String){ - //Save not specified to Compliance - this.addComplianceInformation("kein Grund"); - this.finishReminderNotTaken(); - this.overrideSendbutton("question"); //move to the question state - this.storage.set('FirstStartComplet', true) - } - finishReminderNotTaken(){ - //Methode if the Patinet hasn't took his medication - let output = this.eMMA.messageEMMA_reminderAppStart_finishNotTaken; - let medication = ""; - this.storage.get('returnvaluePatientCompliance').then((res)=>{ - let returnvaluePatientCompliance = res; - for(let pos in returnvaluePatientCompliance){ //get all medications in compliance - if(returnvaluePatientCompliance[pos].taken == 0){ //if not taken - if(returnvaluePatientCompliance[pos].dosage != "nach Bedarf"){ //if not "nach Bedarf" - medication = medication + returnvaluePatientCompliance[pos].title + " " //ad medication name to text - } - } - } - this.sendEmmaText(output); - setTimeout(() => - this.storage.get('medicationData').then((res)=>{ //get the drug list json for more information about the drugs - let drugList = res; - for(var pos in drugList){ //stepp trought all drugs in drugList - if(medication.includes(drugList[pos].title)){ - this.sendEmmaTextNow("Bei " + drugList[pos].title + " habe ich " + drugList[pos].TkgRsn + " hinterlegt\n" ) //get the user the information why he should take his drug - } - } - }) - ,eMMAWaitingTimeDouble) - }) +} +this.sendEmmaText(output); +setTimeout(() => +this.storage.get('medicationData').then((res)=>{ //get the drug list json for more information about the drugs + let drugList = res; + for(var pos in drugList){ //stepp trought all drugs in drugList + if(medication.includes(drugList[pos].title)){ + this.sendEmmaTextNow("Bei " + drugList[pos].title + " habe ich " + drugList[pos].TkgRsn + " hinterlegt\n" ) //get the user the information why he should take his drug } - /***************************************************************************** +} +}) +,eMMAWaitingTimeDouble) +}) +} +/***************************************************************************** - Question for eMMA - Methode for awnser the questions of the user +Question for eMMA +Methode for awnser the questions of the user - *****************************************************************************/ - normalAppStart() { - this.storage.get('name').then((name)=>{ +*****************************************************************************/ +normalAppStart() { + this.storage.get('name').then((name)=>{ + this.botService.init(); var Name = name; this.sendEmmaText(this.eMMA.messageEMMA_Normal_Start_1 + Name); setTimeout(() => this.sendEmmaText(this.eMMA.messageEMMA_Normal_Start_2), eMMAWaitingTime); this.overrideSendbutton("question"); }) - } - question(input:String){ - this.questionhandler.returnAnswer(input).then((res)=>{ - var answereMMA:String = res - this.sendEmmaText(answereMMA) - setTimeout(() => { - var myHour: Number = this.getLocalHour() - var myMinute: Number = this.getLocalMinute() - if(answereMMA == this.questionhandler.messageEMMA_Reminder_Night){ - this.addlocalnotification(myHour,myMinute,3,false) //ad reminder for night - } - else if(answereMMA == this.questionhandler.messageEMMA_Reminder_Eavening){ - this.addlocalnotification(myHour,myMinute,2,false)//ad reminder for Eavening - } - else if(answereMMA == this.questionhandler.messageEMMA_Reminder_Midday){ - this.addlocalnotification(myHour,myMinute,1,false)//ad reminder for midday - } - else if(answereMMA == this.questionhandler.messageEMMA_Reminder_Morning){ - this.addlocalnotification(myHour,myMinute,0,false)//else add reminder for morning - } - else if(answereMMA == this.questionhandler.messageEMMA_Delete_Storage){ - this.storage.clear(); //cleare the storage of the app. Force a new app start - setTimeout(() => - this.messages = [], - this.ionViewDidLoad(), - eMMAWaitingTimeDouble * 2) - } - else if(answereMMA == this.questionhandler.messageEMMA_Nutrition){ - this.navCtrl.push(NutritionPage) //open nutrition page - } - else if(answereMMA == this.questionhandler.messageEMMA_Compliance){ - this.navCtrl.push(MyMedicationDiaryPage)//open diary page - } - else if((answereMMA == this.questionhandler.messageEMMA_Selfmedication)||(answereMMA == this.questionhandler.messageEMMA_Medication)){ - this.navCtrl.push(MyMedicationPage)//open self medication page - } - else if(answereMMA == this.questionhandler.messageEMMA_About){ - this.navCtrl.push(AboutEmmaPage)//open about eMMA page - } +} +question(input:string){ + this.questionhandler.returnAnswer(input).then((res)=>{ + var answereMMA:string = res + this.sendEmmaText(answereMMA) + setTimeout(() => { + var myHour: Number = this.getLocalHour() + var myMinute: Number = this.getLocalMinute() + if(answereMMA == this.eMMA.messageEMMA.reminderNight){ + this.addlocalnotification(myHour,myMinute,3,false) //ad reminder for night } - ,eMMAWaitingTimeDouble); - }); - } - /***************************************************************************** + else if(answereMMA == this.eMMA.messageEMMA.reminderEvening){ + this.addlocalnotification(myHour,myMinute,2,false)//ad reminder for Eavening + } + else if(answereMMA == this.eMMA.messageEMMA.reminderMidday){ + this.addlocalnotification(myHour,myMinute,1,false)//ad reminder for midday + } + else if(answereMMA == this.eMMA.messageEMMA.reminderMorning){ + this.addlocalnotification(myHour,myMinute,0,false)//else add reminder for morning + } + else if(answereMMA == this.eMMA.messageEMMA.deleteStorage){ + this.storage.clear(); //cleare the storage of the app. Force a new app start + setTimeout(() => + this.messages = [], + this.chatlog = null, + this.ionViewDidLoad(), + eMMAWaitingTimeDouble * 2) + + } + else if(answereMMA == this.eMMA.messageEMMA.nutrition){ + this.navCtrl.push(NutritionPage) //open nutrition page + } + else if(answereMMA == this.eMMA.messageEMMA.compliance){ + this.navCtrl.push(MyMedicationDiaryPage)//open diary page + } + else if((answereMMA == this.eMMA.messageEMMA.selfmedication)||(answereMMA == this.eMMA.messageEMMA.medicationview)){ + this.navCtrl.push(MyMedicationPage)//open self medication page + } + else if(answereMMA == this.eMMA.messageEMMA.about){ + this.navCtrl.push(AboutEmmaPage)//open about eMMA page + } + } + ,eMMAWaitingTimeDouble); + }); +} - Funtions for Conversation.ts - All funcitons for making the conversation works - *****************************************************************************/ +/***************************************************************************** - /*----------------------------------------------------------------------------*/ - /* Methode for createing a new compliance obj - /* add a new copliance obj to the storage - /*----------------------------------------------------------------------------*/ - eMMANewComplianceObj(){ - this.storage.ready().then(()=>{ - this.storage.get('medicationData').then((res)=>{ +Funtions for Conversation.ts +All funcitons for making the conversation works + +*****************************************************************************/ + +/*----------------------------------------------------------------------------*/ +/* Methode for createing a new compliance obj +/* add a new copliance obj to the storage +/*----------------------------------------------------------------------------*/ +eMMANewComplianceObj(){ + this.storage.ready().then(()=>{ + this.storage.get('medicationData').then((res)=>{ var tempMedicationData = res; console.log("Medikationsdaten",tempMedicationData) var complianceObj = ({ //new object - "ID":"1", - "Date":"dateOfMediplan", - "DrugList":[] + "ID":"1", + "Date":"dateOfMediplan", + "DrugList":[] }) for(var pos in tempMedicationData){ //new drug obj for every drug in the DrugList complianceObj.DrugList.push({ - "Name":tempMedicationData[pos].title, - "Compliance":[] - }) - } - this.storage.set('ComplianceData',complianceObj)//save to storage - }) + "Name":tempMedicationData[pos].title, + "Compliance":[] + }) + } + this.storage.set('ComplianceData',complianceObj)//save to storage }) - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text from eMMA on the conversation page - /* - /*----------------------------------------------------------------------------*/ - sendEmmaText(message:String){ +}) +} - var myHour = this.getLocalHour(); - var myMinute = this.getLocalMinute(); - //get the local time - this.messages.push({ - text: 'eMMA schreibt....', //write..... on the screnn. Means emma is thinking what she schoudl write - identity: 'emma', - time: myHour + ":"+myMinute //ad local time to message - }), - this.content.scrollToBottom(), //scroll down in the view to the last message of eMMA - setTimeout(() => this.messages[this.messages.length-1].text = message, eMMAWaitingTime), - setTimeout(()=> this.content.scrollToBottom(),eMMAWaitingTime+50)//scroll to button again - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text from eMMA on the conversation page NOW - /* - /*----------------------------------------------------------------------------*/ - sendEmmaTextNow(message:String){ +/*----------------------------------------------------------------------------*/ +/* This method is used to write a text from eMMA on the conversation page +/* +/* edited by hessg1 on 26.03. +/*----------------------------------------------------------------------------*/ +sendEmmaText(message:string){ + this.processMsg({ + text: message, + identity: 'emma', + time: this.getLocalTime() + }); +} - var myHour = this.getLocalHour(); - var myMinute = this.getLocalMinute(); - //get the local time - this.messages.push({ - text: message, //write..... on the screnn. Means emma is thinking what she schoudl write - identity: 'emma', - time: myHour + ":"+myMinute //ad local time to message - }), - setTimeout(()=> this.content.scrollToBottom(),50) //scroll down in the view to the last message of eMMA - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to set a text on two buttions to aks the user someting - /* - /*----------------------------------------------------------------------------*/ - overrideAnswerButtons(text1: String, function1: String, text2: String, function2: String) { - this.toggleObject = showNothing; - setTimeout(() => this.toggleObject = showButtons , eMMAWaitingTime); // show buttions - this.preAnswers = [] - for (let i = 1; i <= 2; i++) { //create a buttion for every input pair - this.preAnswers.push({ - text: eval("text" + i), - id: i, - callFunction: eval("function" + i) - }) - } - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text to a single button on the conversation - /* - /*----------------------------------------------------------------------------*/ - overrideAnswerButtonsOneButton(text1: String, function1: String) { - this.toggleObject = showNothing; - setTimeout(() => this.toggleObject = showsingleButton , eMMAWaitingTime); //show the single button - this.preAnswers = []; - this.preAnswers.push({ //pus the information in the button - text: text1, - id: 1, - callFunction: function1 - }) - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to give the user a text field to write a question or awnser one - /* - /*----------------------------------------------------------------------------*/ - overrideSendbutton(newfunction:String){ - this.toggleObject = showNothing; - setTimeout(() => this.toggleObject = showTextfield,eMMAWaitingTime); - this.sendButton = newfunction; - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a passwort i a secret password field - /*----------------------------------------------------------------------------*/ - overridePasswordSendButton(newfunction:String){ - this.toggleObject = showNothing; - setTimeout(() => this.toggleObject = showPasswordField,eMMAWaitingTime); - this.sendButtonPW = newfunction; - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text info a number text field - /* - /*----------------------------------------------------------------------------*/ - overrideNumberSendButton(newfunction:String){ - this.toggleObject = showNothing; - setTimeout(() => this.toggleObject = showNumberField,eMMAWaitingTime); - this.sendButtonNumber = newfunction; +/*----------------------------------------------------------------------------*/ +/* This methode is used to write a text from eMMA on the conversation page NOW +/* +/* edited by hessg1 on 26.03. +/*----------------------------------------------------------------------------*/ + +sendEmmaTextNow(message:string){ + this.processMsg({ + text: message, + identiy: 'emmaNOW', + time: this.getLocalTime() + }) +} + + +/*----------------------------------------------------------------------------*/ +/* This Methode is used to set a text on two buttions to aks the user someting +/* +/*----------------------------------------------------------------------------*/ +overrideAnswerButtons(text1: string, function1: string, text2: string, function2: string) { + this.toggleObject = showNothing; + setTimeout(() => this.toggleObject = showButtons , eMMAWaitingTime); // show buttions + this.preAnswers = [] + for (let i = 1; i <= 2; i++) { //create a buttion for every input pair + this.preAnswers.push({ + text: eval("text" + i), + id: i, + callFunction: eval("function" + i) + }) +} +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to write a text to a single button on the conversation +/* +/*----------------------------------------------------------------------------*/ +overrideAnswerButtonsOneButton(text1: string, function1: string) { + this.toggleObject = showNothing; + setTimeout(() => this.toggleObject = showsingleButton , eMMAWaitingTime); //show the single button + this.preAnswers = []; + this.preAnswers.push({ //pus the information in the button + text: text1, + id: 1, + callFunction: function1 + }) +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to give the user a text field to write a question or awnser one +/* +/*----------------------------------------------------------------------------*/ +overrideSendbutton(newfunction:string){ + this.toggleObject = showNothing; + setTimeout(() => this.toggleObject = showTextfield,eMMAWaitingTime); + this.sendButton = newfunction; +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to write a passwort i a secret password field +/*----------------------------------------------------------------------------*/ +overridePasswordSendButton(newfunction:string){ + this.toggleObject = showNothing; + setTimeout(() => this.toggleObject = showPasswordField,eMMAWaitingTime); + this.sendButtonPW = newfunction; +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to write a text info a number text field +/* +/*----------------------------------------------------------------------------*/ +overrideNumberSendButton(newfunction:string){ + this.toggleObject = showNothing; + setTimeout(() => this.toggleObject = showNumberField,eMMAWaitingTime); + this.sendButtonNumber = newfunction; +} +/*----------------------------------------------------------------------------*/ +/* This method is used to write a text from the user on the Conversation Page +/* +/* edited by hessg1 on 26.03. // and 07.06. for additional button handling +/*----------------------------------------------------------------------------*/ +reply(answer) { + this.processMsg({ + text: answer.text, + identity: 'user', + time: this.getLocalTime() + }); + if(answer.callFunction == null){ + this[this.sendButton](answer.text); + this.toggleObject = 1; } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text from the user on the Convesation Page - /* - /*----------------------------------------------------------------------------*/ - reply(answer) { - var myHour = this.getLocalHour(); - var myMinute = this.getLocalMinute(); - this.messages.push({ - text: answer.text, - identity: 'user', - time: myHour + ":"+myMinute - }) + else{ this[answer.callFunction](answer.text); - setTimeout(() =>{ this.content.scrollToBottom();},50); - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a text from the user on the Convesation Page - /* - /*----------------------------------------------------------------------------*/ - sendMessage(myReply, myFunc) { - var myHour = this.getLocalHour(); - var myMinute = this.getLocalMinute(); - this.messages.push({ - text: myReply.value, - identity: 'user', - time: myHour + ":"+myMinute - }) - this[myFunc](myReply.value); - myReply.value = ""; - setTimeout(() =>{ this.content.scrollToBottom();}, 50); } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write a Number Pin text from the user on the Convesation Page - /* - /*----------------------------------------------------------------------------*/ + setTimeout(() =>{ this.content.scrollToBottom();},50); +} + +/*----------------------------------------------------------------------------*/ +/* This method is used to write a text from the user on the Conversation Page +/* +/* edited by hessg1 on 26.03. +/*----------------------------------------------------------------------------*/ +sendMessage(myReply, myFunc) { + this.processMsg({ + text: myReply.value, + identity: 'user', + time: this.getLocalTime() + }) + + this[myFunc](myReply.value); + myReply.value = ""; + setTimeout(() =>{ this.content.scrollToBottom();}, 50); +} + +/*----------------------------------------------------------------------------*/ +/* This methode is used to write a Number Pin text from the user on the Conversation Page +/* +/*----------------------------------------------------------------------------*/ + sendPinPW(myReply, myFunc) { - var myHour = this.getLocalHour(); - var myMinute = this.getLocalMinute(); - this.messages.push({ + this.processMsg({ text: "****", identity: 'user', - time: myHour + ":"+myMinute + time: this.getLocalTime() }) this[myFunc](myReply.value); myReply.value = ""; setTimeout(() =>{ this.content.scrollToBottom();}, 50); } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to write the new compliance information to the storrage - /* - /*----------------------------------------------------------------------------*/ - addComplianceInformation(information:any){ - - LocalNotifications.getTriggered(1).then((res)=>{ - let dayTime = res["0"].data; - var complianceObj; - this.storage.get('ComplianceData').then((res)=>{ - complianceObj = res; - this.storage.get('returnvaluePatientCompliance').then((res)=>{ - let returnvaluePatientCompliance = res; - //Add Date - let todayDate:any = new Date(); - let actualYear = todayDate.getFullYear(); - let actualMonth; - let actualDay; - //Add Month - if(todayDate.getMonth() < 10){ //ad a extra 0 to the Month if <10 (form 9 to 09) - actualMonth = "0" + (todayDate.getMonth() + 1); - }else{ - actualMonth = (todayDate.getMonth() + 1); - } - //Add Day - if(todayDate.getDate() < 10){//ad a extra 0 to the date if <10 (form 9 to 09) - actualDay = "0" + todayDate.getDate(); - }else{ - actualDay = todayDate.getDate() - } - //Create time format for today - let complianceDate = actualDay + "." + actualMonth +"."+actualYear; //ad date to one string - for(let pos in returnvaluePatientCompliance){ //step throught every pos in compliance data drugs - for(var posComliance in complianceObj.DrugList){//step thougth every pos in Json drug list - if(complianceObj.DrugList[posComliance].Name == returnvaluePatientCompliance[pos].title){//if same title - let lengthOfArry = complianceObj.DrugList[posComliance].Compliance.length //get lenght - if(lengthOfArry == 0 || (complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1] && complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].Date != complianceDate)){ - //if last position is empty - lengthOfArry++; - complianceObj.DrugList[posComliance].Compliance.push({ //ad empty entry to last position - "Date": complianceDate, - "D":[ - undefined,undefined,undefined,undefined - ] - }) - } - //update information at position - if(returnvaluePatientCompliance[pos].taken != 1){ - complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].D[dayTime] = information; - } - else{ - complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].D[dayTime] = 1; - } - } - } - } - //save information to storage - this.storage.set('ComplianceData',complianceObj) - }) - }) - }); - } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to add a local notification - /* - /*----------------------------------------------------------------------------*/ - addlocalnotification(hours:any,minutes:any,timeOfDay:any,DayOffset:any){ - let firstNotificationTime = new Date() - firstNotificationTime.setHours(hours) - firstNotificationTime.setMinutes(minutes) - if(DayOffset){ - firstNotificationTime.setDate(firstNotificationTime.getDate()+1) - } - LocalNotifications.clearAll() - let myHour = this.getLocalHour(); - let myMinute = this.getLocalMinute(); - let time = myHour + ":" + myMinute; - let notification = { - id: 1, - title: 'eMMA hat dir geschrieben', - text: 'Es ist jetzt ' + time+". Ich wollte dich daran erinnern", - data: timeOfDay, - at: firstNotificationTime, - }; - if(this.platform.is('cordova')){ - // Cancel any existing notifications - LocalNotifications.cancelAll().then(() => { - // Schedule the new notifications - LocalNotifications.schedule(notification); - let alert = this.alertCtrl.create({ - title: 'Notifications set\n'+ hours +":" + minutes + "Uhr", - buttons: ['Ok'] - }); - alert.present(); - }); - } - if(notificationSingelton){ //singelton to make sure the methode is called just one time - notificationSingelton = false; - this.triggerNotification() + +/*----------------------------------------------------------------------------*/ +/* This Methode is used to write the new compliance information to the storage +/* +/*----------------------------------------------------------------------------*/ +addComplianceInformation(information:any){ + + LocalNotifications.getTriggered(1).then((res)=>{ + let dayTime = res["0"].data; + var complianceObj; + this.storage.get('ComplianceData').then((res)=>{ + complianceObj = res; + this.storage.get('returnvaluePatientCompliance').then((res)=>{ + let returnvaluePatientCompliance = res; + //Add Date + let todayDate:any = new Date(); + let actualYear = todayDate.getFullYear(); + let actualMonth; + let actualDay; + //Add Month + if(todayDate.getMonth() < 10){ //ad a extra 0 to the Month if <10 (form 9 to 09) + actualMonth = "0" + (todayDate.getMonth() + 1); + }else{ + actualMonth = (todayDate.getMonth() + 1); } - } - triggerNotification(){ //shedule the notifications - LocalNotifications.on("trigger", (event)=>{ - this.storage.set('FirstStartComplet', "reminder") //set the reminder start functions - // this.messages = []; - // this.ionViewDidLoad(); + //Add Day + if(todayDate.getDate() < 10){//ad a extra 0 to the date if <10 (form 9 to 09) + actualDay = "0" + todayDate.getDate(); + }else{ + actualDay = todayDate.getDate() + } + //Create time format for today + let complianceDate = actualDay + "." + actualMonth +"."+actualYear; //ad date to one string + for(let pos in returnvaluePatientCompliance){ //step throught every pos in compliance data drugs + for(var posComliance in complianceObj.DrugList){//step thougth every pos in Json drug list + if(complianceObj.DrugList[posComliance].Name == returnvaluePatientCompliance[pos].title){//if same title + let lengthOfArry = complianceObj.DrugList[posComliance].Compliance.length //get lenght + if(lengthOfArry == 0 || (complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1] && complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].Date != complianceDate)){ + //if last position is empty + lengthOfArry++; + complianceObj.DrugList[posComliance].Compliance.push({ //ad empty entry to last position + "Date": complianceDate, + "D":[ + undefined,undefined,undefined,undefined + ] }) } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to get the local hours - /* - /*----------------------------------------------------------------------------*/ - getLocalHour(){ - var myDate = new Date(); - var myHour: any = myDate.getHours(); - if(myHour<10){ - myHour = "0" + myHour; - } - return myHour; + //update information at position + if(returnvaluePatientCompliance[pos].taken != 1){ + complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].D[dayTime] = information; +} +else{ + complianceObj.DrugList[posComliance].Compliance[lengthOfArry-1].D[dayTime] = 1; +} +} +} +} +//save information to storage +this.storage.set('ComplianceData',complianceObj) +}) +}) +}); +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to add a local notification +/* +/*----------------------------------------------------------------------------*/ +addlocalnotification(hours:any,minutes:any,timeOfDay:any,DayOffset:any){ + console.log("add notification: " + hours + ":" + minutes + " timeOfDay:" + timeOfDay + " DayOffset:" + DayOffset); + let firstNotificationTime = new Date() + firstNotificationTime.setHours(hours) + firstNotificationTime.setMinutes(minutes) + if(DayOffset){ + firstNotificationTime.setDate(firstNotificationTime.getDate()+1) + } + LocalNotifications.clearAll() + let myHour = this.getLocalHour(); + let myMinute = this.getLocalMinute(); + let time = myHour + ":" + myMinute; + let notification = { + id: 1, + title: 'eMMA hat dir geschrieben', + text: 'Es ist jetzt ' + time+". Ich wollte dich daran erinnern", + data: timeOfDay, + at: firstNotificationTime, + }; + if(this.platform.is('cordova')){ + // Cancel any existing notifications + LocalNotifications.cancelAll().then(() => { + // Schedule the new notifications + LocalNotifications.schedule(notification); + let alert = this.alertCtrl.create({ + title: 'Notifications set\n'+ hours +":" + minutes + " Uhr", + buttons: ['Ok'] + }); + alert.present(); + }); +} +if(notificationSingelton){ //singelton to make sure the methode is called just one time + notificationSingelton = false; + this.triggerNotification() +} +} +triggerNotification(){ //shedule the notifications + LocalNotifications.on("trigger", (event)=>{ + this.storage.set('FirstStartComplet', "reminder") //set the reminder start functions + // this.messages = []; + // this.ionViewDidLoad(); +}) +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to get the local hours +/* +/*----------------------------------------------------------------------------*/ +getLocalHour(){ + var myDate = new Date(); + var myHour: any = myDate.getHours(); + if(myHour<10){ + myHour = "0" + myHour; + } + return myHour; +} +/*----------------------------------------------------------------------------*/ +/* This Methode is used to get the local minutes +/* +/*----------------------------------------------------------------------------*/ +getLocalMinute(){ + var myDate = new Date(); + var myMinute:any = myDate.getMinutes(); + if(myMinute<10){ + myMinute = "0" + myMinute; + } + return myMinute; +} + +/*----------------------------------------------------------------------------*/ +/* This Method is used to get the local time as a String +/* in the format hh:mm:ss.m +/* +/* author: hessg1 +/*----------------------------------------------------------------------------*/ + +getLocalTime(){ + var myDate = new Date(); + + var hour: any = myDate.getHours(); + hour = (hour<10) ? "0" + hour : hour; + + var minute: any = myDate.getMinutes(); + minute = (minute<10) ? "0" + minute : minute; + + var second: any = myDate.getSeconds(); + second = (second<10) ? "0" + second : second; + + var milli: any = myDate.getMilliseconds(); + milli = (milli<10) ? "0" + milli : milli; + milli = String(milli).slice(0,2); + + return hour + ":" + minute + ":" + second + "." + milli; +} + +/*----------------------------------------------------------------------------*/ +/* This method processes messages, as it sends them to the chat screen and also +/* saves them in the chatlog that is persisted in storage +/* +/* author: hessg1 +/*----------------------------------------------------------------------------*/ + +processMsg(msg: any){ + if(this.chatlog == null){ + this.chatlog = []; } - /*----------------------------------------------------------------------------*/ - /* This Methode is used to get the local minutes - /* - /*----------------------------------------------------------------------------*/ - getLocalMinute(){ - var myDate = new Date(); - var myMinute:any = myDate.getMinutes(); - if(myMinute<10){ - myMinute = "0" + myMinute; - } - return myMinute; + + if(msg.identity == 'emma'){ + this.messages.push({ + text: 'eMMA schreibt....', //write..... on the screen, like emma is thinking what she should write + identity: 'emma', + time: msg.time.slice(0,5) // show only hours and minutes + }) + this.content.scrollToBottom(), // scroll down in the view to the last message of eMMA + setTimeout(() => this.messages[this.messages.length-1].text = msg.text, eMMAWaitingTime), + // replace 'eMMA schreibt...' with actual text + setTimeout(()=> this.content.scrollToBottom(),eMMAWaitingTime+50)//scroll to bottom again + } + else if(msg.identity == 'emmaNOW'){ + this.messages.push({ + text: msg.text, + identity: 'emma', + time: this.getLocalTime() + }), + setTimeout(()=> this.content.scrollToBottom(),50) //scroll down in the view to the last message of eMMA } - scrollToBottomOnFocus(){ - setTimeout(() => this.content.scrollToBottom(), eMMAWaitingTime) + else { + this.messages.push({ + text: msg.text, + identity: msg.identity, + time: msg.time.slice(0,5) // show only hours and minutes + }); } + this.chatlog.push(msg); + this.storage.set('chatlog', this.chatlog); +} + + + +scrollToBottomOnFocus(){ + setTimeout(() => this.content.scrollToBottom(), eMMAWaitingTime) +} + + + + } diff --git a/eMMA/src/pages/conversation/eMMA.ts b/eMMA/src/pages/conversation/eMMA.ts index a8d5443..d21de12 100644 --- a/eMMA/src/pages/conversation/eMMA.ts +++ b/eMMA/src/pages/conversation/eMMA.ts @@ -4,6 +4,24 @@ export class eMMA{ constructor(){ } + // those where in questionHandler, but really fit in here better + messageEMMA = { + reminderMorning: "Du möchtest also die Erinnerungsfunktion am Morgen testen.", + reminderMidday: "Du möchtest also die Erinnerungsfunktion am Mittag testen.", + reminderEvening: "Du möchtest also die Erinnerungsfunktion am Abend testen.", + reminderNight: "Du möchtest also die Erinnerungsfunktion in der Nacht testen.", + deleteStorage: "OOOOPs: ich habe gerade den Speicher gelöscht, Sorry -.-", + about: "Du möchtest also etwas über eMMA wissen.", + selfmedication: "Ich öffne die Selbstmedikation für dich.", + medicationview: "Ich öffne die Medikationsansicht für dich.", + compliance: "Gerne zeige ich dir dein Medikationstagebuch an.", + nutrition: "Ich zeige dir, welche Nahrungsmittel du im Moment nicht essen darfst.", + informationQuestion: "Wenn du Fragen zu einem Medikament hast, dann gib einfach den Namen ein und die Frage, die du dazu hast. Zum Beispiel Wie, Wann oder Wieso du es einnehmen musst.", + error: "Hatschi! Entschuldigung, da ist etwas schief gegangen.", + takingTime: ["morgens um ", "mittags um ", "abends um ", "in der Nacht um "] + }; + + //Standard phrase for EMMA messageEMMA_answer_Yes_Please = "Ja, gerne"; messageEMMA_answer_No_Thanks = "Nein, danke"; @@ -58,7 +76,7 @@ export class eMMA{ //Messages used for a reminder messageEMMA_reminderAppStart_questionAll_1 = "Hallo " //Name des Benutzers messageEMMA_reminderAppStart_questionAll_2 = "Es ist jetzt " - messageEMMA_reminderAppStart_questionAll_3 = "Uhr \nBitte trage ein ob du deine Medikamente genommen hast." + messageEMMA_reminderAppStart_questionAll_3 = " Uhr \nBitte trage ein, ob du deine Medikamente genommen hast." messageEMMA_reminderAppStart_showMedication = "Zeige mir meine Medikation." messageEMMA_reminderAppStart_TakenAll = "Sehr gut, du hast alle eingenommen. Ich habe das so eingetragen." messageEMMA_reminderAppStart_NotTakenAll = "Nein, habe ich nicht." @@ -71,7 +89,4 @@ export class eMMA{ messageEMMA_reminderAppStart_why_notSpecified = "Ich möchte keinen Grund nennen." messageEMMA_reminderAppStart_why_LeaveNote = "Bitte hinterlasse mir eine Notiz." messageEMMA_reminderAppStart_finishNotTaken = "Vielen Dank für die Antwort. Bitte versuche das nächste Mal alle einzunehmen. Aus folgenden Gründen sind deine Medikamente wichtig für dich:\n" - - - } diff --git a/eMMA/src/pages/conversation/questionHandler.ts b/eMMA/src/pages/conversation/questionHandler.ts index 44a66f9..5cea34c 100644 --- a/eMMA/src/pages/conversation/questionHandler.ts +++ b/eMMA/src/pages/conversation/questionHandler.ts @@ -1,178 +1,338 @@ import { Storage } from '@ionic/storage'; +import { BotService } from '../../services/botService'; +import { barcodeService } from '../../services/barcodeService'; +import { ConversationPage} from '../../pages/conversation/conversation'; export class questionHandler { - messageEMMA_Reminder_Morning = "Du möchtest also die Erinnerungsfunktion am Morgen testen" - messageEMMA_Reminder_Midday = "Du möchtest also die Erinnerungsfunktion am Mittag testen" - messageEMMA_Reminder_Eavening = "Du möchtest also die Erinnerungsfunktion am Abend testen" - messageEMMA_Reminder_Night = "Du möchtest also die Erinnerungsfunktion in der Nacht testen" - messageEMMA_Delete_Storage = "OOOOPs: ich habe gerade den Speicher gelöscht, Sorry -.-" - messageEMMA_About = "Du möchtest also etwas über eMMA wissen." - messageEMMA_Selfmedication = "Ich öffne die Selbstmedikation für dich" - messageEMMA_Medication = "Ich öffne die Medikationsansicht für dich" - messageEMMA_Compliance = "Gerne zeige ich dir dein Medikationstagebuch an" - messageEMMA_Nutrition = "Ich zeige dir, welche Nahrungsmittel du im Moment nicht essen darfst." - messageEMMA_InformationQuestion = "Wenn du Fragen zu einem Medikament hast, dann gib einfach den Namen ein + die Frage die du hast. Zum Beispiel Wie, Wann oder Wieso du es einnehmen must." - messageEMMA_TooMutchInformation = "Huch, das war etwas viel auf Einmal. Bitte versuche es mit einer kürzeren Frage" - - - messageEMMA_Not_Understand = [ - "Entschuldigung, ich habe dich leider nicht verstanden", - "Sorry das habe ich verpasst. Bitte stelle eine andere Frage", - "Diese Frage verstehe ich leider nicht. Kannst du es mit einer anderen Frage versuchen", - "Ich verstehe das leider nicht", - "Diese Frage kann ich leider nicht beantworten" - ]; - messageEMMA_Not_Understand_temp = new Array(); - messageEMMA_TakingTime = [ "morgens um ", "mittags um ", "abends um ", "In der Nacht um " - ]; - - drugList:JSON; - takingTime:String[]; - constructor(private storage:Storage){ + /* Calling the barcodeService */ + barcodeService: barcodeService; + + drugList: any; + takingTime: string[]; + convPage: ConversationPage; + emma: any; + + constructor(private storage: Storage, private botService: BotService, convPage: ConversationPage) { + this.barcodeService = new barcodeService(storage); + this.convPage = convPage; + this.emma = convPage.eMMA; + } + +/*----------------------------------------------------------------------------*/ +/* method finds a medicament from this.drugList and returns it as an Object +/* @param name: the name of the medicament to find +/* @return: the medicament as an object. null if not found. +/* @author: hessg1 +/*----------------------------------------------------------------------------*/ +findMedicament(name: string): any { + var medi = null; + for(var pos in this.drugList){ + if(this.drugList[pos].title.toUpperCase() == name.toUpperCase()){ + medi = this.drugList[pos]; + } + } + return medi; +} + +/*----------------------------------------------------------------------------*/ +/* This method handles the user input for the question method +/* +/* the question of the user is analysed and the return value is the answer form eMMA +/* original authors: dorner / tschanz +/* refactoring author: hessg1 +/*----------------------------------------------------------------------------*/ +returnAnswer(question: string): any { + var retVal: any = ""; + var list = new Array() // i have no idea what this list does or if it is used anywhere... but don't change a running system :D 27.5. hessg1 + + var l = this.storage.get('takingTime').then((takingtimes) => { + this.takingTime = takingtimes; + }) + list.push(l) //raus + /*Ab it function und return not var*/ + var l2 = this.storage.get('medicationData').then((res) => { + this.drugList = res; + console.log("bot input: "+ question); + retVal = this.botService.retrieveBotAnswer(question); + console.log("raw bot output: " + retVal); + + // check if there is an instruction coded in the return value + + if(retVal.includes('inst#')){ + + var values = retVal.split("#"); // parse the instruction syntax + retVal = values[3]; // this is the answer we give to the user + + // doing interpretation of given instructions + + // setting the name + if(values[1] == 'name'){ + this.storage.set('name', values[2]); + } + + // answering question about WHEN to take the medication + else if(values[1] == 'medWhen'){ + var medi = this.findMedicament(values[2]); + if(medi == null){ + retVal = this.emma.messageEMMA.error; + } + else{ + for (var time in medi.Pos[0].D) { + if (medi.Pos[0].D[time]) { + var unit = (medi.Unit == null ? "" : " " + medi.Unit); + retVal = retVal + this.emma.messageEMMA.takingTime[time] + this.takingTime[time] + " Uhr: " + medi.Pos[0].D[time] + unit + "\n" + } + } + //if the application instrucion has someting to do with "Essen" this information is also given to the user + if (medi.AppInstr && medi.AppInstr.includes("Essen")) { + retVal = retVal + "(jeweils " + medi.AppInstr + ")"; + } + } + } + + // answering question about HOW to take medication + else if(values[1] == 'medHow'){ + var medi = this.findMedicament(values[2]); + if(medi == null){ + retVal = this.emma.messageEMMA.error; + } + else if(medi.AppInstr){ + retVal += ' ' + medi.AppInstr + ' einnehmen.'; + } + else { + retVal = 'Ich habe leider keine Informationen über die Einnahme von ' + values[2] + '.'; + } + } + + // answering question about WHY to take medication + else if(values[1] == 'medWhy'){ + var medi = this.findMedicament(values[2]); + if(medi == null){ + retVal = this.emma.messageEMMA.error; + } + else if (medi.TkgRsn) { + retVal += ' ' + medi.TkgRsn + '.'; + } + else { + retVal = 'Ich habe leider keine Informationen über den Grund der Einnahme von ' + values[2] + ' erfasst.'; // TODO: include link to Compendium + } + } + + // answering question concerning the duration of medication intake + else if(values[1] == 'medDuration'){ + var medi = this.findMedicament(values[2]); + if(medi == null){ + retVal = this.emma.messageEMMA.error; } - /*----------------------------------------------------------------------------*/ - /* This Methode handels the user input for the question Methode - /* - /*the question of the user is analysed and the return value is the awnser form eMMA - /*----------------------------------------------------------------------------*/ - returnAnswer(question: String):any{ - var retVal:any = ""; - var list = new Array() - question = question.toUpperCase(); - //return - var l = this.storage.get('takingTime').then((takingtimes)=>{ - this.takingTime = takingtimes; - //return getMediDataFromStorage + else if (medi.Pos[0].DtFrom && medi.Pos[0].DtTo) { + retVal += ' Vom ' + medi.Pos[0].DtFrom + " bis zum " + medi.Pos[0].DtTo + '.'; + } + else { + retVal = 'Ich habe leider keine konkreten Informationen über die Einnahmedauer von ' + values[2] + ' gespeichert.'; + } + } + + // opening a medicaments compendium page in browser + else if(values[1] == 'compendium'){ + var medi = this.findMedicament(values[2]); + if(medi == null || medi.Id == undefined || medi.Id.toLowerCase() == values[2].toLowerCase()){ + window.open("https://compendium.ch/search/" + values[2] + "/de", "_blank"); + } + else{ + window.open("http://compendium.ch/mpub/phc/" + medi.Id + "/html", "_blank"); + } + } + + // add a medication via barcode scan + else if(values[1] == 'scan'){ + var params = values[2].split("|"); + var reason = params[0]; + var morning = params[1]; + var midday = params[2]; + var evening = params[3]; + var night = params[4]; + + this.barcodeService.scanMediCode(this.drugList,morning,midday,evening,night,reason).then((res)=>{ + + this.storage.ready().then(()=>{ + this.storage.get('mediPlan').then((res)=>{ + res.Dt = this.drugList[this.drugList.length-1].Pos["0"].DtFrom + res['Medicaments'] = this.drugList + this.drugList[this.drugList.length-1].DtFrom + this.storage.set('mediPlan', res).then(()=>{ + this.barcodeService.doChecksWithCurrentMedication(); }) - list.push(l) //raus - /*Ab it function und return not var*/ - var l2 = this.storage.get('medicationData').then((res)=>{ - this.drugList = res; - - for(var pos in this.drugList){ //stepp thorught every drug in drug list - if(question.includes(this.drugList[pos].title)){ //if the question includes a medicaitons name - - if(question.includes("WANN")||question.includes("ZEIT")||question.includes("UHR")){//check if the user whatns to now soemting about the time - retVal = retVal + "Du solltest " + this.drugList[pos].title +" an folgenden Uhrzeiten einnehmen:\n" - for(var time in this.drugList[pos].Pos[0].D){ - if(this.drugList[pos].Pos[0].D[time]){ - retVal = retVal + this.messageEMMA_TakingTime[time] + this.takingTime[time] + "Uhr, " + this.drugList[pos].Pos[0].D[time] + " "+ this.drugList[pos].Unit + "\n" - } - } - //if the app insturctio has someting to do with "Essen" this information is also given to the user - if(this.drugList[pos].AppInstr && this.drugList[pos].AppInstr.includes("Essen")){ - retVal = retVal + "jeweils" + this.drugList[pos].AppInstr + "\n" - } - } - //if the user wants to know about his apply intstruction - if((question.includes("WIE ")&& !question.includes("LANGE"))||question.includes("EINNAHME")){ - if(this.drugList[pos].AppInstr){ - retVal = retVal + "Du solltest " + this.drugList[pos].title + " " + this.drugList[pos].AppInstr + " einnehmen\n"; - } - else{ - retVal = retVal + "Ich habe leider keine Informationen über die Einnahme von " + this.drugList[pos].title + "\n"; - } - } - //if the suer wants to know the reason why he shoudl take his drug - if(question.includes("WIESO")||question.includes("GRUND")){ - if(this.drugList[pos].TkgRsn){ - retVal = retVal + "Als Grund für die Einnahme von " + this.drugList[pos].title + " habe ich " + this.drugList[pos].TkgRsn + " eingetragen\n"; - } - else{ - retVal = retVal + "Ich habe leider keine Informationen über den Grund der einnahme von " + this.drugList[pos].title; "\n" + "soll ich für dich Googeln?\n" - } - } - //if the user wants to knwo someting about the taking duration of his drugs - if(question.includes("LANGE")||question.includes("DAUER")){ - if(this.drugList[pos].Pos[0].DtFrom && this.drugList[pos].Pos[0].DtTo){ - retVal = retVal + "Du solltes " + this.drugList[pos].title + " an folgenden Daten einnehmen:\n" + "vom: " + this.drugList[pos].Pos[0].DtFrom + " bis " + this.drugList[pos].Pos[0].DtTo +"\n"; - } - else{ - retVal = retVal + "Ich habe leider keine Informationen über die Einnahmedauer von: " + this.drugList[pos].title + "\n"; - } - } - //if knwo possible awnser was found about this drug - if(retVal == ""){ - retVal = retVal + "Was möchtest du über " + this.drugList[pos].title + " wissen?" - } - } - } - if(question === "?"){//if the user writes onyl an ?, give him information what he can ask - retVal = this.messageEMMA_InformationQuestion - } - else if(question.length > 60){//if there is too mutch information in the question - retVal = this.messageEMMA_TooMutchInformation - } - else if(retVal == ""){//if tthe return value is still empty - if(question.includes("NAHRUNG")||(question.includes("ESSEN")&&question.includes("NICHT"))){ - retVal = this.messageEMMA_Nutrition; - } - else if(question.includes("SELBSTMEDIKATION")||(question.includes("MEDIKAMENT")&&(question.includes("ZUSÄTZLICH")||(question.includes("ERFASSEN"))))) - { - retVal = this.messageEMMA_Selfmedication; - } - else if(question.includes("MEINE")&&(question.includes("MEDI"))) - { - retVal = this.messageEMMA_Medication; - } - else if(question.includes("REMINDER")) - { - if(question.includes("NACHT")){ - retVal = this.messageEMMA_Reminder_Night - } - else if(question.includes("MITTAG")){ - retVal = this.messageEMMA_Reminder_Midday + this.storage.set("medicationData", this.drugList); + var name = res['Medicaments'][res['Medicaments'].length-1].title; + + // edit the ComplianceDataObject + + this.storage.get('ComplianceData').then((res)=>{ + res.DrugList.push({ + "Name":name, + "Compliance":[] + }) + this.storage.set('ComplianceData',res); + this.botService.generateAndLoadFile(); + + // check for medication interactions (code adapted from emma1.0) + setTimeout(()=>{ + this.storage.get("checks").then((checks) =>{ + console.log(checks); + if(checks != null){ + checks = checks.body.medicaments + var output:string = ""; + // Creates an Object for each Check of each Medication + checks.forEach((item,index) => { + var nutrition:string; + var tempString = item.checks["1"].rem + + if(tempString.search(" - ") == -1){ + nutrition = ""; } - else if(question.includes("ABEND")){ - retVal = this.messageEMMA_Reminder_Eavening - }else{ - retVal = this.messageEMMA_Reminder_Morning + else{ + nutrition = tempString.slice(tempString.indexOf(" - ")+3) + nutrition = nutrition.slice(0,nutrition.indexOf(",")) + output += "- "+nutrition+ "\n" } + }) + // inform user about interactions + this.convPage.sendEmmaText("Folgende Lebensmittel solltest du mit deiner Medikation vermeiden:\n" + output); + } - else if(question.includes("ÜBER")) - { - retVal = this.messageEMMA_About - } - else if(question.includes("DELETE")) - { - retVal = this.messageEMMA_Delete_Storage; - } - else if(question.includes("AUSWERTUNG")||(question.includes("WELCHE")&&question.includes("NICHT")&&question.includes("EINGENOMMEN"))) - { - retVal = this.messageEMMA_Compliance; - } - else if(question.includes("HALLO")||question.includes("HUHU")||question.includes("GUGUS")) - { - retVal = "Hallo, was möchtest du wissen?" - } - else if(question.includes("WER") && question.includes("DU")) - { - retVal = "Ich bin eMMA. Deine Persöhliche elektronische Medikations Management Assistentin" - } - else if(question.includes("BEREITS")&&question.includes("GENOMMEN")) - { - retVal = "Ich verstehe. Ich werde dich also an die nächste Medikation nicht erinnern" - } - else if(question.includes("OK")||question.includes("DANKE")||question.includes("SUPER")||question.includes("TOLL")){ - retVal = "Freut mich, dass ich dir helfen konnte" - } - else{ //if no possible awnser is found - if(this.messageEMMA_Not_Understand_temp.length == 0){ //if the ramdom array is empy - for (var name in this.messageEMMA_Not_Understand) { - this.messageEMMA_Not_Understand_temp[name] = this.messageEMMA_Not_Understand[name];//refill the array - } - } - let random = Math.random()*this.messageEMMA_Not_Understand_temp.length; //get a random pos - retVal = this.messageEMMA_Not_Understand_temp.splice(random,1)//cut a string form the array at the random pos - } - } - }) - list.push(l2) //To delete - /* To delete*/ - return Promise.all(list).then(()=>{//get the retun value if the calulation is finished - return retVal + })},1000); + }) + }) + }) +}) +} + + // add a medication without barcode scan + else if(values[1] == 'addMed'){ + var params = values[2].split("|"); + var name = params[0] + var reason = params[1]; + var morning = params[2]; + var midday = params[3]; + var evening = params[4]; + var night = params[5]; + + if(morning=='true')morning=1 + else morning = 0 + if(midday=='true')midday=1 + else midday = 0 + if(evening=='true')evening=1 + else evening = 0 + if(night=='true')night=1 + else night = 0 + + // Set the Date of the Medication to Today + var today:any = new Date(); + var dd:any = today.getDate() + var mm:any = today.getMonth()+1; //January is 0! + var yyyy:any = today.getFullYear(); + if(dd<10) { + dd='0'+dd + } + + if(mm<10) { + mm='0'+mm + } + today = yyyy+'-'+mm+'-'+dd; + // Create Object of the Medication + var tempObj = ({ + "AppInstr":"Arzt oder Apotheker fragen.", + "TkgRsn":reason, + "AutoMed":"1", + "Id":name, + "IdType":"1", + "Unit":"", + "description":name, + "title":name, + "PrscbBy":"mir als Patient", + "Pos":[{ + "D":[ + morning, + midday, + evening, + night + ], + "DtFrom":today + }] + }) + if(this.drugList==null){ + var newList:any[] = []; + console.log(newList) + console.log(tempObj) + newList.push(tempObj) + this.drugList = newList + } + else{ + var tempList:any = this.drugList; + tempList.push(tempObj) + } + + this.storage.ready().then(()=>{ + this.storage.get('mediPlan').then((res)=>{ + res.Dt = today + res['Medicaments'] = this.drugList + this.storage.set('mediPlan', res) + this.storage.set("medicationData", this.drugList); + + // edit the ComplianceDataObject + + this.storage.get('ComplianceData').then((res)=>{ + res.DrugList.push({ + "Name":name, + "Compliance":[] }) + this.storage.set('ComplianceData',res) + }); + setTimeout(()=>{this.botService.generateAndLoadFile();},500); + }) + }) + } - } + // ask a question with two answering buttons + else if(values[1] == 'button'){ + var first_button = values[2].split("|")[0]; + var second_button = values[2].split("|")[1]; + this.convPage.toggleObject = 0; + setTimeout(() => this.convPage.toggleObject = 2 , 500); // show buttons + this.convPage.preAnswers = []; + this.convPage.preAnswers.push({ + text: first_button, + id: 1, + callFunction: null + }); + this.convPage.preAnswers.push({ + text: second_button, + id: 2, + callFunction: null + }); + } + + + + // persist hausarzt + else if(values[1] == 'doctor'){ + this.storage.set('doctor', values[2]); + } + + + // this shouldn't be executed + else{ + alert('Instruction ' + values[1] + ' not found.'); + console.log('Instruction ' + values[1] + ' not found.'); + } + +} +}) + +list.push(l2); +return Promise.all(list).then(() => {//get the return value if the calulation is finished + return retVal +}) +} } diff --git a/eMMA/src/pages/my-medication/my-medication.html b/eMMA/src/pages/my-medication/my-medication.html index 5cd1fd8..57e4799 100644 --- a/eMMA/src/pages/my-medication/my-medication.html +++ b/eMMA/src/pages/my-medication/my-medication.html @@ -58,7 +58,7 @@

    {{drug?.title}}

    - Verschrieben von: {{drug?.PrscbBy}} + Verschrieben oder erfasst von: {{drug?.PrscbBy}}
    diff --git a/eMMA/src/pages/my-medication/my-medication.ts b/eMMA/src/pages/my-medication/my-medication.ts index b015a7b..1a5ae68 100644 --- a/eMMA/src/pages/my-medication/my-medication.ts +++ b/eMMA/src/pages/my-medication/my-medication.ts @@ -90,11 +90,11 @@ export class MyMedicationPage { this.barcodeService.scanMediCode(this.drugList,this.morning,this.midday,this.evening,this.night,this.reason).then((res)=>{ console.log(res) // Opens Alert to notifiy the User - let alert = this.alertCtrl.create({ - title: 'Arztneimittel erfasst!', - subTitle: 'Das Arztneimittel wurde erfolgreich erfasst', - buttons: ['Ok'] - }); + // let alert = this.alertCtrl.create({ + // title: 'Arztneimittel erfasst!', + // subTitle: 'Das Arztneimittel wurde erfolgreich erfasst', + // buttons: ['Ok'] + // }); this.storage.ready().then(()=>{ this.storage.get('mediPlan').then((res)=>{ res.Dt = this.drugList[this.drugList.length-1].Pos["0"].DtFrom @@ -104,7 +104,7 @@ export class MyMedicationPage { this.barcodeService.doChecksWithCurrentMedication(); }) this.storage.set("medicationData", this.drugList); - alert.present(); + // alert.present(); // Edits the ComplianceDataObject this.editComplianceData(res['Medicaments'][res['Medicaments'].length-1].title) }) diff --git a/eMMA/src/pages/update/update.ts b/eMMA/src/pages/update/update.ts index 63d77bc..f0ac6df 100644 --- a/eMMA/src/pages/update/update.ts +++ b/eMMA/src/pages/update/update.ts @@ -110,7 +110,7 @@ export class UpdatePage { midata.search("Device").then((res)=>{ console.log(res) - this.barcodeService.compareCHMED16Date((res[0].udi.name)).then((newMediplan)=>{ + this.barcodeService.compareCHMED16Date((res[0])).then((newMediplan)=>{ var tk = { resourceType: "Device", status: 'active', diff --git a/eMMA/src/services/HCIService.ts b/eMMA/src/services/HCIService.ts index e5e0326..e7eb42d 100644 --- a/eMMA/src/services/HCIService.ts +++ b/eMMA/src/services/HCIService.ts @@ -1,3 +1,4 @@ +import { Injectable } from '@angular/core'; import 'rxjs/add/operator/toPromise'; import 'rxjs/add/observable/fromPromise'; import 'rxjs/add/operator/map'; @@ -8,7 +9,7 @@ import { Http } from '@angular/http'; /* tschm2 /* This Class is used for the HCI Request /*----------------------------------------------------------------------------*/ - +@Injectable() export class HCIService { apiURL:string; url:string; @@ -30,6 +31,7 @@ http:Http var xhr = new XMLHttpRequest(), method = "GET", url = `https://index.hcisolutions.ch/index/current/get.aspx?schema=ARTICLE&keytype=${keyType}&key=${key}&index=${index}`; + //url = "https://index.hcisolutions.ch/index/current/get.aspx?schema=ARTICLE&keytype=phar&key=3365788&index=hospINDEX"; xhr.open(method, url, true); var reqHeader = {'Authorization': 'Basic ' + btoa(`${username}:${password}`)}; @@ -39,10 +41,12 @@ http:Http }); } xhr.onload = () => { - if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { + if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { //<- debugging + // alert(url + "\nstatus: " + xhr.status); // <- debugging resolve(xhr.responseXML); } else { console.log("Error!"); + reject(); // added hessg1 3.3. } }; diff --git a/eMMA/src/services/barcodeService.ts b/eMMA/src/services/barcodeService.ts index f0fb692..fb5687d 100644 --- a/eMMA/src/services/barcodeService.ts +++ b/eMMA/src/services/barcodeService.ts @@ -1,3 +1,4 @@ +import { Injectable } from '@angular/core'; import { BarcodeScanner } from 'ionic-native'; import myPako from "../../node_modules/pako" import { Storage } from '@ionic/storage'; @@ -15,6 +16,7 @@ import { Midata } from 'midata'; /* /*----------------------------------------------------------------------------*/ +@Injectable() export class barcodeService { private list: Array; private chmedHandler: chmedJsonHandler; @@ -32,9 +34,12 @@ private chmedHandler: chmedJsonHandler; /*----------------------------------------------------------------------------*/ scanQRcodeForJSON():any{ return BarcodeScanner.scan().then((barcodeData) => { - this.saveMedicationInformation(barcodeData.text) - return true + this.saveMedicationInformation(barcodeData.text) + return true // Success! Barcode data is here + // für Tests wenn HCIquery nicht funktioniert: DummyDaten verwenden + // this.testDummyData(); + // alert("Medikation wurde gespeichert."); }, (err) => { console.log("Woops falscher QR-Code, zu Testzwecken wurde DummyData gespeichert") alert("Woops falscher QR-Code, zu Testzwecken wurde DummyData gespeichert"); @@ -55,6 +60,7 @@ private chmedHandler: chmedJsonHandler; var hciS = new HCIService(); for (let medi of medData['Medicaments']){ if(Number(medi.Id)){ + var l = hciS.hciquery(medi.Id,"phar").then((responseXML)=>{ var xml = responseXML; var art = xml.getElementsByTagName("ART"); @@ -86,15 +92,16 @@ private chmedHandler: chmedJsonHandler; /*----------------------------------------------------------------------------*/ scanMediCode(medData,morning,midday,evening,night,reason):Promise{ - if(morning==true)morning=1 + if(morning==true || morning == 'true') morning=1 else morning = 0 - if(midday==true)midday=1 + if(midday==true || midday == 'true') midday=1 else midday = 0 - if(evening==true)evening=1 + if(evening==true || evening == 'true') evening=1 else evening = 0 - if(night==true)night=1 + if(night==true || night == 'true') night=1 else night = 0 + var hciS = new HCIService() return BarcodeScanner.scan().then((barcodeData) => { return hciS.hciquery(barcodeData.text,"ARTBAR").then(function(response) { @@ -117,11 +124,12 @@ private chmedHandler: chmedJsonHandler; today = yyyy+'-'+mm+'-'+dd; var tempObj = ({ - "AppInstr":"Arzt oder Apotheker fragen.", + "AppInstr":"Arzt oder Apotheker fragen", "TkgRsn":reason, "AutoMed":"1", "Id":art[0].getElementsByTagName("PHAR")[0].textContent, "IdType":"3", + "Unit":"", "description":desc, "title":title, "PrscbBy":"mir als Patient", @@ -226,19 +234,20 @@ private chmedHandler: chmedJsonHandler; this.doChecksWithCurrentMedication() }); this.IdHCIQuery(mediPlan).then((res) => { + // fails as of today (3.4. hessg1) mediPlan['Medicaments'] = res this.storage.set("mediPlan", mediPlan); this.storage.set("medicationData", res); console.log(mediPlan); - var tempMedicationData = res; - var complianceObj = ({ //new object - "ID":"1", - "Date":"dateOfMediplan", - "DrugList":[] - }) - for(var pos in tempMedicationData){ //new drug obj for every drug in the DrugList - complianceObj.DrugList.push({ - "Name":tempMedicationData[pos].title, + var tempMedicationData = res; + var complianceObj = ({ //new object + "ID":"1", + "Date":"dateOfMediplan", + "DrugList":[] + }) + for(var pos in tempMedicationData){ //new drug obj for every drug in the DrugList + complianceObj.DrugList.push({ + "Name":tempMedicationData[pos].title, "Compliance":[] }) } @@ -260,7 +269,7 @@ private chmedHandler: chmedJsonHandler; midata.login(username,password).then((AuthToken)=>{ console.log(AuthToken) midata.search("Device").then((res)=>{ - this.compareCHMED16Date((res[0].udi.name)).then((newMediplan)=>{ + this.compareCHMED16Date((res[0])).then((newMediplan)=>{ var tk = { resourceType: "Device", status: 'active', diff --git a/eMMA/src/services/botService.ts b/eMMA/src/services/botService.ts new file mode 100644 index 0000000..a17ba83 --- /dev/null +++ b/eMMA/src/services/botService.ts @@ -0,0 +1,149 @@ +import { Injectable } from '@angular/core'; +import { Http } from '@angular/http'; +import RiveScript from 'rivescript'; +import { FileController } from '../services/fileController'; +import { Storage } from '@ionic/storage'; + +@Injectable() +export class BotService{ + bot: RiveScript; + fileController: FileController; + opts: any; + ready: boolean; + http: Http; + storage: Storage; + qh: any; + emma: any; + + + constructor(private h: Http, private fc: FileController) { + this.http = h; + this.ready = false; + this.fileController = fc; + + this.opts = { + debug: false, + utf8: true, + watch: false + }; + this.bot = new RiveScript({ + debug: this.opts.debug, + utf8: this.opts.utf8, + concat: "newline" + }); + console.log(this.bot); + } + set(emma, storage){ + this.emma = emma; + this.storage = storage; + } + init(){ + console.log('init botService'); + this.getData().then(value => { + let url = value.toString(); + this.bot.loadFile(url, loadingDone, loadingError); + + // OK, this can probably be done better - but it works for the moment ;-) + let baseUrl = url.substr(0, url.length-9); + this.bot.loadFile(baseUrl + 'spezi.rive', loadingDone, loadingError); + this.bot.loadFile(baseUrl + 'german.rive', loadingDone, loadingError); + + if((window).cordova){ // if cordova is available, we can load the written file + this.generateAndLoadFile(); + } + else{ // if we developing on a non cordova machine (ionic serve), we use the fallback file + console.log('no cordova available, use fallback file /assets/medication.rive'); + this.bot.loadFile(baseUrl + 'medication.rive', loadingDone, loadingError); + } + + function loadingDone(batchNumber) { + console.log('File loaded! (' + batchNumber + ')'); + }; + + function loadingError(error, batchNumber) { + console.log("Loading error: " + error); + }; + }).catch(error => { + console.log("ERROR: " + error); + }); + } + + getData() { + return new Promise((resolve, reject) => { + this.http.get('./assets/brain/emma.rive') + .toPromise() + .then(res => { + resolve(res.url); + }).catch(error => { + console.log("ERROR: " + error); + }); + }); + } + + setUservar(name, value) { + this.bot.setUservar("localuser", name, value); + console.log(this.getUservar(name)); + } + + getUservar(name) { + let uservar = this.bot.getUservar("localuser", name); + console.log('got user name: '+uservar); + return uservar; + } + + retrieveBotAnswer(request) { + if(!this.ready) { + this.bot.sortReplies(); + this.ready = true; + } + return (this.bot && this.ready) + ? this.bot.reply("localuser", request) + : "ERR: Bot Not Ready Yet"; + } + + generateAndLoadFile(){ + var fileString = "! version = 2.0\n"; + var name = ""; + var medications = ""; + var doctor = ""; + + for(var prop in this.emma.messageEMMA){ + if(!Array.isArray(this.emma.messageEMMA[prop])){ + fileString += "\n! var " + prop + " = " + this.emma.messageEMMA[prop]; + } + } + Promise.all([this.storage.get('name'),this.storage.get('medicationData'),this.storage.get('doctor'),this.ready]).then(values=>{ + name = "! var username = " + values[0]; + if(values[2] != null && values[2] != ""){ + doctor = "! var doctor = " + values[2]; + } + + medications = "! array medication = "; + if(values[1] != null && values[1].length > 0){ + for(var med in values[1]){ + medications += values[1][med].title.toLowerCase() + '|'; + } + medications = medications.substring(0, medications.length - 1); + } + else { + // we have to write something, since the bot wont work properly if this + // array is empty. since it's gibberish, it will probably never be triggered. + // (and it's overwritten as soon as any medication is added) + medications += 'sd12sf4d44d|43546sdf4e542d4'; + + } + fileString += "\n\n" + name + + "\n" + doctor + + "\n\n" + medications; + this.fileController.writeFile('generated.rive', fileString) + .then(success => { + this.bot.loadFile(this.fileController.getPath() + 'generated.rive', x=>{console.log('generated file loaded: ' + x)}, x=>{console.log('some error occured')}); + }) + .catch(error => { + alert('there was an error writing or loading the rive file: ' + error); + }); + + }); + } + +} diff --git a/eMMA/src/services/chmedJsonHandler.ts b/eMMA/src/services/chmedJsonHandler.ts index 42e8189..3b71adc 100644 --- a/eMMA/src/services/chmedJsonHandler.ts +++ b/eMMA/src/services/chmedJsonHandler.ts @@ -1,3 +1,4 @@ +import { Injectable } from '@angular/core'; import { Storage } from '@ionic/storage'; import { HCIService } from './HCIService'; import myPako from "../../node_modules/pako" @@ -10,14 +11,15 @@ import myPako from "../../node_modules/pako" /* Furthermore it has Functions to add and remove the Medication Entrys /*----------------------------------------------------------------------------*/ - export class chmedJsonHandler { +@Injectable() +export class chmedJsonHandler { storage:Storage; hciS:any; http:any; /** * @param {Storage} publicstorage ionic storage from phone */ - constructor(storage) { + constructor(storage: Storage) { this.hciS = new HCIService(); this.storage = storage; } diff --git a/eMMA/src/services/fileController.ts b/eMMA/src/services/fileController.ts new file mode 100644 index 0000000..f7825a9 --- /dev/null +++ b/eMMA/src/services/fileController.ts @@ -0,0 +1,76 @@ +import { Injectable } from '@angular/core'; +import { File } from '@ionic-native/file'; + +@Injectable() +export class FileController { + file: File; + fs: string; + baseDir: string; + + constructor(private f: File) { + this.file = f; + this.fs = this.file.externalDataDirectory; + this.baseDir = 'brain'; + } + + checkDirectory(dir) { + this.file.checkDir(this.file.dataDirectory, dir) + .then(success => { + console.log('Directory ' + dir + ' exists'); + return true; + }) + .catch(err => { + console.log('Directory ' + dir + 'doesn\'t exist'); + return false; + }); + } + + createDirectory(dir) { + this.file.createDir(this.fs, dir, false) + .then(success => { + console.log('Directory ' + dir + ' created in file system'); + return true; + }) + .catch(err => { + console.log('Directory already exists'); + return false; + }); + } + + readFile(fileName) { + console.log('reading file ' + fileName); + return new Promise((resolve, reject) => { + this.file.readAsText(this.fs, fileName) + .then(content => { + // TODO: do something with file content here + alert(content); + }) + .catch(err => { + console.log('reading file failed ' + err); + }); + }); + } + + writeFile(fileName, content) { + return this.file.writeFile(this.fs, fileName, content, {replace: true}); + } + + getPath(){ + return this.fs; + } + + readDirectory(dir) { + console.log('reading directory ' + dir); + //only for testing purpose, delete later + this.file.listDir(this.fs, this.baseDir); + let fullpath = this.fs + dir; + this.file.resolveDirectoryUrl(fullpath) + .then(resolvedFileSystem => { + return this.file.getDirectory(resolvedFileSystem, dir, { create: false, exclusive: false }); + // this won't work, since "the return value" will be accessed before promise finished -> undefined + }) + .catch(err => { + console.log('reading directory failed ' + err) + }); + } +} diff --git a/eMMA/tsconfig.json b/eMMA/tsconfig.json index 2e450f9..6c2e51f 100644 --- a/eMMA/tsconfig.json +++ b/eMMA/tsconfig.json @@ -14,7 +14,8 @@ "target": "es5" }, "include": [ - "src/**/*.ts" + "src/**/*.ts", + "src/assets/brain/*.rive" ], "exclude": [ "node_modules" @@ -23,4 +24,4 @@ "atom": { "rewriteTsconfig": false } -} \ No newline at end of file +} diff --git a/eMMA/www/assets/fonts/ionicons.eot b/eMMA/www/assets/fonts/ionicons.eot deleted file mode 100644 index 94ba2be..0000000 Binary files a/eMMA/www/assets/fonts/ionicons.eot and /dev/null differ diff --git a/eMMA/www/assets/fonts/ionicons.scss b/eMMA/www/assets/fonts/ionicons.scss deleted file mode 100644 index dc8e92c..0000000 --- a/eMMA/www/assets/fonts/ionicons.scss +++ /dev/null @@ -1,35 +0,0 @@ - -// Ionicons Icon Font CSS -// -------------------------- -// Ionicons CSS for Ionic's element -// ionicons-icons.scss has the icons and their unicode characters - -$ionicons-font-path: $font-path !default; - -@import "ionicons-icons"; -@import "ionicons-variables"; - - -@font-face { - font-family: "Ionicons"; - src: url("#{$ionicons-font-path}/ionicons.woff2?v=#{$ionicons-version}") format("woff2"), - url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"), - url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype"); - font-weight: normal; - font-style: normal; -} - -ion-icon { - display: inline-block; - - font-family: "Ionicons"; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 1; - text-rendering: auto; - text-transform: none; - speak: none; -} diff --git a/eMMA/www/assets/fonts/ionicons.svg b/eMMA/www/assets/fonts/ionicons.svg deleted file mode 100644 index 908c39b..0000000 --- a/eMMA/www/assets/fonts/ionicons.svg +++ /dev/null @@ -1,2630 +0,0 @@ - - - - - -Created by FontForge 20150913 at Mon Jan 11 15:33:02 2016 - By Adam Bradley -Copyright (c) 2016, Adam Bradley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eMMA/www/assets/fonts/ionicons.ttf b/eMMA/www/assets/fonts/ionicons.ttf deleted file mode 100644 index 307ad88..0000000 Binary files a/eMMA/www/assets/fonts/ionicons.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/noto-sans-bold.ttf b/eMMA/www/assets/fonts/noto-sans-bold.ttf deleted file mode 100644 index 6e00cdc..0000000 Binary files a/eMMA/www/assets/fonts/noto-sans-bold.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/noto-sans-bold.woff b/eMMA/www/assets/fonts/noto-sans-bold.woff deleted file mode 100644 index 6a67f6e..0000000 Binary files a/eMMA/www/assets/fonts/noto-sans-bold.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/noto-sans-regular.ttf b/eMMA/www/assets/fonts/noto-sans-regular.ttf deleted file mode 100644 index 9dd1019..0000000 Binary files a/eMMA/www/assets/fonts/noto-sans-regular.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/noto-sans-regular.woff b/eMMA/www/assets/fonts/noto-sans-regular.woff deleted file mode 100644 index 8245f8b..0000000 Binary files a/eMMA/www/assets/fonts/noto-sans-regular.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/noto-sans.scss b/eMMA/www/assets/fonts/noto-sans.scss deleted file mode 100644 index cb8602d..0000000 --- a/eMMA/www/assets/fonts/noto-sans.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Noto Sans Font -// Google -// Apache License, version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0.html - -$noto-sans-font-path: $font-path !default; - -@font-face { - font-family: "Noto Sans"; - font-style: normal; - font-weight: 300; - src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype"); -} - -@font-face { - font-family: "Noto Sans"; - font-style: normal; - font-weight: 400; - src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype"); -} - -@font-face { - font-family: "Noto Sans"; - font-style: normal; - font-weight: 500; - src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype"); -} - -@font-face { - font-family: "Noto Sans"; - font-style: normal; - font-weight: 700; - src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype"); -} diff --git a/eMMA/www/assets/fonts/roboto-bold.ttf b/eMMA/www/assets/fonts/roboto-bold.ttf deleted file mode 100644 index 4e35166..0000000 Binary files a/eMMA/www/assets/fonts/roboto-bold.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-bold.woff b/eMMA/www/assets/fonts/roboto-bold.woff deleted file mode 100644 index 3143de2..0000000 Binary files a/eMMA/www/assets/fonts/roboto-bold.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-bold.woff2 b/eMMA/www/assets/fonts/roboto-bold.woff2 deleted file mode 100644 index e9d591e..0000000 Binary files a/eMMA/www/assets/fonts/roboto-bold.woff2 and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-light.ttf b/eMMA/www/assets/fonts/roboto-light.ttf deleted file mode 100644 index 5e26ccd..0000000 Binary files a/eMMA/www/assets/fonts/roboto-light.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-light.woff b/eMMA/www/assets/fonts/roboto-light.woff deleted file mode 100644 index 1bff3ec..0000000 Binary files a/eMMA/www/assets/fonts/roboto-light.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-light.woff2 b/eMMA/www/assets/fonts/roboto-light.woff2 deleted file mode 100644 index 94a60b9..0000000 Binary files a/eMMA/www/assets/fonts/roboto-light.woff2 and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-medium.ttf b/eMMA/www/assets/fonts/roboto-medium.ttf deleted file mode 100644 index 0347106..0000000 Binary files a/eMMA/www/assets/fonts/roboto-medium.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-medium.woff b/eMMA/www/assets/fonts/roboto-medium.woff deleted file mode 100644 index d3c82e1..0000000 Binary files a/eMMA/www/assets/fonts/roboto-medium.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-medium.woff2 b/eMMA/www/assets/fonts/roboto-medium.woff2 deleted file mode 100644 index 74aaff4..0000000 Binary files a/eMMA/www/assets/fonts/roboto-medium.woff2 and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-regular.ttf b/eMMA/www/assets/fonts/roboto-regular.ttf deleted file mode 100644 index 05037ed..0000000 Binary files a/eMMA/www/assets/fonts/roboto-regular.ttf and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-regular.woff b/eMMA/www/assets/fonts/roboto-regular.woff deleted file mode 100644 index 5e353cf..0000000 Binary files a/eMMA/www/assets/fonts/roboto-regular.woff and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto-regular.woff2 b/eMMA/www/assets/fonts/roboto-regular.woff2 deleted file mode 100644 index 96a6015..0000000 Binary files a/eMMA/www/assets/fonts/roboto-regular.woff2 and /dev/null differ diff --git a/eMMA/www/assets/fonts/roboto.scss b/eMMA/www/assets/fonts/roboto.scss deleted file mode 100644 index ea29707..0000000 --- a/eMMA/www/assets/fonts/roboto.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Roboto Font -// Google -// Apache License, version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0.html - -$roboto-font-path: $font-path !default; - -@font-face { - font-family: "Roboto"; - font-style: normal; - font-weight: 300; - src: local("Roboto Light"), local("Roboto-Light"), url("#{$roboto-font-path}/roboto-light.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-light.woff") format("woff"), url("#{$roboto-font-path}/roboto-light.ttf") format("truetype"); -} - -@font-face { - font-family: "Roboto"; - font-style: normal; - font-weight: 400; - src: local("Roboto"), local("Roboto-Regular"), url("#{$roboto-font-path}/roboto-regular.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-regular.woff") format("woff"), url("#{$roboto-font-path}/roboto-regular.ttf") format("truetype"); -} - -@font-face { - font-family: "Roboto"; - font-style: normal; - font-weight: 500; - src: local("Roboto Medium"), local("Roboto-Medium"), url("#{$roboto-font-path}/roboto-medium.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-medium.woff") format("woff"), url("#{$roboto-font-path}/roboto-medium.ttf") format("truetype"); -} - -@font-face { - font-family: "Roboto"; - font-style: normal; - font-weight: 700; - src: local("Roboto Bold"), local("Roboto-Bold"), url("#{$roboto-font-path}/roboto-bold.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-bold.woff") format("woff"), url("#{$roboto-font-path}/roboto-bold.ttf") format("truetype"); -} diff --git a/eMMA/www/build/main.js b/eMMA/www/build/main.js deleted file mode 100644 index 2dbabf1..0000000 --- a/eMMA/www/build/main.js +++ /dev/null @@ -1,141555 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "build/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 712); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_core__ = __webpack_require__(554); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "createPlatform", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_3"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "assertPlatform", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_4"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "destroyPlatform", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_5"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "getPlatform", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_6"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "PlatformRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_7"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ApplicationRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["Z"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "enableProdMode", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_8"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "isDevMode", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["Y"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "createPlatformFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["S"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "APP_ID", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_1"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "PACKAGE_ROOT_URL", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_9"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "PLATFORM_INITIALIZER", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["Q"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "APP_BOOTSTRAP_LISTENER", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_10"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "APP_INITIALIZER", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["d"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ApplicationInitStatus", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_11"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "DebugElement", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_12"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "DebugNode", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_13"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "asNativeElements", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_14"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "getDebugNode", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_0"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Testability", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["V"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "TestabilityRegistry", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_15"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "setTestabilityGetter", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_2"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "TRANSLATIONS", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_16"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "TRANSLATIONS_FORMAT", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_17"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "LOCALE_ID", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["j"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ApplicationModule", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["W"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "wtfCreateScope", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_18"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "wtfLeave", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_19"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "wtfStartTimeRange", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_20"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "wtfEndTimeRange", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_21"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Type", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_22"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "EventEmitter", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["x"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ErrorHandler", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["b"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationTransitionEvent", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_23"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationPlayer", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_24"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Sanitizer", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["R"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "SecurityContext", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["X"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ANALYZE_FOR_ENTRY_COMPONENTS", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["e"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Attribute", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["p"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ContentChild", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["H"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ContentChildren", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["J"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Query", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_25"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ViewChild", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["C"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ViewChildren", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["G"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["z"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Directive", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["n"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "HostBinding", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["O"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "HostListener", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["D"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Input", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["o"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Output", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["A"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Pipe", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["h"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AfterContentChecked", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_26"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AfterContentInit", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_27"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AfterViewChecked", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_28"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AfterViewInit", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_29"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "DoCheck", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_30"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "OnChanges", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_31"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "OnDestroy", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_32"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "OnInit", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_33"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "CUSTOM_ELEMENTS_SCHEMA", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_34"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NO_ERRORS_SCHEMA", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_35"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NgModule", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["a"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ViewEncapsulation", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["F"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Class", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_36"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "forwardRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["E"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "resolveForwardRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_37"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Injector", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["K"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ReflectiveInjector", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["N"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResolvedReflectiveFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_38"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ReflectiveKey", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_39"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "OpaqueToken", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["y"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NgZone", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["c"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "RenderComponentType", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_40"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Renderer", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["v"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "RootRenderer", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["U"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "COMPILER_OPTIONS", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_41"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Compiler", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_42"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "CompilerFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_43"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ModuleWithComponentFactories", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_44"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ComponentFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_45"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ComponentRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_46"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ComponentFactoryResolver", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["B"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ElementRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["u"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NgModuleFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_47"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NgModuleRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_48"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "NgModuleFactoryLoader", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_49"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "getModuleFactory", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_50"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "QueryList", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_51"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "SystemJsNgModuleLoader", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_52"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "SystemJsNgModuleLoaderConfig", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_53"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "TemplateRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["q"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ViewContainerRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["r"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "EmbeddedViewRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_54"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ViewRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_55"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ChangeDetectionStrategy", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["I"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ChangeDetectorRef", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["l"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "CollectionChangeRecord", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_56"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "DefaultIterableDiffer", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_57"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "IterableDiffers", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["w"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "KeyValueChangeRecord", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_58"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "KeyValueDiffers", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["t"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "SimpleChange", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_59"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "WrappedValue", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["k"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "platformCore", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["T"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "__core_private__", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["m"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AUTO_STYLE", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["P"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationEntryMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_60"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationStateMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_61"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationStateDeclarationMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_62"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationStateTransitionMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_63"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_64"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationKeyframesSequenceMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_65"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationStyleMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_66"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationAnimateMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_67"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationWithStepsMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_68"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationSequenceMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_69"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "AnimationGroupMetadata", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_70"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_71"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "group", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_72"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "sequence", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_73"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "style", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_74"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "state", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_75"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "keyframes", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_76"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_77"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["_78"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Inject", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["f"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["g"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Injectable", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["i"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Self", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["M"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "SkipSelf", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["L"]; }); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Host", function() { return __WEBPACK_IMPORTED_MODULE_0__src_core__["s"]; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @module - * @description - * Entry point for all public APIs of the core package. - */ - -//# sourceMappingURL=index.js.map - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(681); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__ = __webpack_require__(15); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return getPlugin; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return pluginWarn; }); -/* unused harmony export cordovaWarn */ -/* harmony export (immutable) */ __webpack_exports__["i"] = getPromise; -/* unused harmony export wrap */ -/* harmony export (immutable) */ __webpack_exports__["b"] = Plugin; -/* harmony export (immutable) */ __webpack_exports__["a"] = Cordova; -/* harmony export (immutable) */ __webpack_exports__["d"] = CordovaInstance; -/* harmony export (immutable) */ __webpack_exports__["c"] = CordovaProperty; -/* harmony export (immutable) */ __webpack_exports__["f"] = InstanceProperty; -/* harmony export (immutable) */ __webpack_exports__["g"] = CordovaFunctionOverride; - - -/** - * @private - * @param pluginRef - * @returns {null|*} - */ -var getPlugin = function (pluginRef) { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__["a" /* get */])(window, pluginRef); -}; -/** - * @private - * @param pluginObj - * @param method - */ -var pluginWarn = function (pluginObj, method) { - var pluginName = pluginObj.pluginName, plugin = pluginObj.plugin; - if (method) { - console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.'); - } - else { - console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.'); - } - console.warn('Install the ' + pluginName + ' plugin: \'ionic plugin add ' + plugin + '\''); -}; -/** - * @private - * @param pluginName - * @param method - */ -var cordovaWarn = function (pluginName, method) { - if (method) { - console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'); - } - else { - console.warn('Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'); - } -}; -function setIndex(args, opts, resolve, reject) { - if (opts === void 0) { opts = {}; } - // ignore resolve and reject in case sync - if (opts.sync) { - return args; - } - // If the plugin method expects myMethod(success, err, options) - if (opts.callbackOrder === 'reverse') { - // Get those arguments in the order [resolve, reject, ...restOfArgs] - args.unshift(reject); - args.unshift(resolve); - } - else if (opts.callbackStyle === 'node') { - args.push(function (err, result) { - if (err) { - reject(err); - } - else { - resolve(result); - } - }); - } - else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) { - var obj = {}; - obj[opts.successName] = resolve; - obj[opts.errorName] = reject; - args.push(obj); - } - else if (typeof opts.successIndex !== 'undefined' || typeof opts.errorIndex !== 'undefined') { - var setSuccessIndex = function () { - // If we've specified a success/error index - if (opts.successIndex > args.length) { - args[opts.successIndex] = resolve; - } - else { - args.splice(opts.successIndex, 0, resolve); - } - }; - var setErrorIndex = function () { - // We don't want that the reject cb gets spliced into the position of an optional argument that has not been defined and thus causing non expected behaviour. - if (opts.errorIndex > args.length) { - args[opts.errorIndex] = reject; // insert the reject fn at the correct specific index - } - else { - args.splice(opts.errorIndex, 0, reject); // otherwise just splice it into the array - } - }; - if (opts.successIndex > opts.errorIndex) { - setErrorIndex(); - setSuccessIndex(); - } - else { - setSuccessIndex(); - setErrorIndex(); - } - } - else { - // Otherwise, let's tack them on to the end of the argument list - // which is 90% of cases - args.push(resolve); - args.push(reject); - } - return args; -} -function callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject) { - if (opts === void 0) { opts = {}; } - // Try to figure out where the success/error callbacks need to be bound - // to our promise resolve/reject handlers. - args = setIndex(args, opts, resolve, reject); - var pluginInstance = getPlugin(pluginObj.pluginRef); - if (!pluginInstance || pluginInstance[methodName] === 'undefined') { - // Do this check in here in the case that the Web API for this plugin is available (for example, Geolocation). - if (!window.cordova) { - cordovaWarn(pluginObj.pluginName, methodName); - return { - error: 'cordova_not_available' - }; - } - pluginWarn(pluginObj, methodName); - return { - error: 'plugin_not_installed' - }; - } - return pluginInstance[methodName].apply(pluginInstance, args); -} -/** - * @private - */ -function getPromise(cb) { - var tryNativePromise = function () { - if (window.Promise) { - return new Promise(function (resolve, reject) { - cb(resolve, reject); - }); - } - else { - console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular 1/2 or on a recent browser.'); - } - }; - if (window.angular) { - var injector = window.angular.element(document.querySelector('[ng-app]') || document.body).injector(); - if (injector) { - var $q = injector.get('$q'); - return $q(function (resolve, reject) { - cb(resolve, reject); - }); - } - else { - console.warn('Angular 1 was detected but $q couldn\'t be retrieved. This is usually when the app is not bootstrapped on the html or body tag. Falling back to native promises which won\'t trigger an automatic digest when promises resolve.'); - return tryNativePromise(); - } - } - else { - return tryNativePromise(); - } -} -function wrapPromise(pluginObj, methodName, args, opts) { - if (opts === void 0) { opts = {}; } - var pluginResult, rej; - var p = getPromise(function (resolve, reject) { - pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject); - rej = reject; - }); - // Angular throws an error on unhandled rejection, but in this case we have already printed - // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason - // to error - if (pluginResult && pluginResult.error) { - p.catch(function () { }); - rej(pluginResult.error); - } - return p; -} -function wrapOtherPromise(pluginObj, methodName, args, opts) { - if (opts === void 0) { opts = {}; } - return getPromise(function (resolve, reject) { - var pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts); - if (pluginResult && pluginResult.error) { - reject(pluginResult.error); - } - pluginResult.then(resolve).catch(reject); - }); -} -function wrapObservable(pluginObj, methodName, args, opts) { - if (opts === void 0) { opts = {}; } - return new __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"](function (observer) { - var pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer)); - if (pluginResult && pluginResult.error) { - observer.error(pluginResult.error); - } - return function () { - try { - if (opts.clearFunction) { - if (opts.clearWithArgs) { - return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer)); - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util__["a" /* get */])(window, pluginObj.pluginRef)[opts.clearFunction].call(pluginObj, pluginResult); - } - } - catch (e) { - console.warn('Unable to clear the previous observable watch for', pluginObj.pluginName, methodName); - console.error(e); - } - }; - }); -} -function callInstance(pluginObj, methodName, args, opts, resolve, reject) { - if (opts === void 0) { opts = {}; } - args = setIndex(args, opts, resolve, reject); - return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args); -} -function wrapInstance(pluginObj, methodName, opts) { - if (opts === void 0) { opts = {}; } - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - if (opts.sync) { - // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is - return callInstance(pluginObj, methodName, args, opts); - } - else if (opts.observable) { - return new __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"](function (observer) { - var pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer)); - return function () { - try { - if (opts.clearWithArgs) { - return pluginObj._objectInstance[opts.clearFunction].apply(pluginObj._objectInstance, args); - } - return pluginObj._objectInstance[opts.clearFunction].call(pluginObj, pluginResult); - } - catch (e) { - console.warn('Unable to clear the previous observable watch for', pluginObj.pluginName, methodName); - console.error(e); - } - }; - }); - } - else if (opts.otherPromise) { - return getPromise(function (resolve, reject) { - var result = callInstance(pluginObj, methodName, args, opts, resolve, reject); - result.then(resolve, reject); - }); - } - else { - return getPromise(function (resolve, reject) { - callInstance(pluginObj, methodName, args, opts, resolve, reject); - }); - } - }; -} -/** - * Wrap the event with an observable - * @param event - * @returns {Observable} - */ -function wrapEventObservable(event) { - return new __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"](function (observer) { - window.addEventListener(event, observer.next.bind(observer), false); - return function () { return window.removeEventListener(event, observer.next.bind(observer), false); }; - }); -} -/** - * Certain plugins expect the user to override methods in the plugin. For example, - * window.cordova.plugins.backgroundMode.onactivate = function() { ... }. - * - * Unfortunately, this is brittle and would be better wrapped as an Observable. overrideFunction - * does just this. - */ -function overrideFunction(pluginObj, methodName, args, opts) { - if (opts === void 0) { opts = {}; } - return new __WEBPACK_IMPORTED_MODULE_1_rxjs_Observable__["Observable"](function (observer) { - var pluginInstance = getPlugin(pluginObj.pluginRef); - if (!pluginInstance) { - // Do this check in here in the case that the Web API for this plugin is available (for example, Geolocation). - if (!window.cordova) { - cordovaWarn(pluginObj.pluginName, methodName); - observer.error({ - error: 'cordova_not_available' - }); - } - pluginWarn(pluginObj, methodName); - observer.error({ - error: 'plugin_not_installed' - }); - return; - } - var method = pluginInstance[methodName]; - if (!method) { - observer.error({ - error: 'no_such_method' - }); - observer.complete(); - return; - } - pluginInstance[methodName] = observer.next.bind(observer); - }); -} -/** - * @private - * @param pluginObj - * @param methodName - * @param opts - * @returns {function(...[any]): (undefined|*|Observable|*|*)} - */ -var wrap = function (pluginObj, methodName, opts) { - if (opts === void 0) { opts = {}; } - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - if (opts.sync) { - // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is - return callCordovaPlugin(pluginObj, methodName, args, opts); - } - else if (opts.observable) { - return wrapObservable(pluginObj, methodName, args, opts); - } - else if (opts.eventObservable && opts.event) { - return wrapEventObservable(opts.event); - } - else if (opts.otherPromise) { - return wrapOtherPromise(pluginObj, methodName, args, opts); - } - else { - return wrapPromise(pluginObj, methodName, args, opts); - } - }; -}; -/** - * @private - * - * Class decorator specifying Plugin metadata. Required for all plugins. - * - * @usage - * ```typescript - * @Plugin({ - * pluginName: 'MyPlugin', - * plugin: 'cordova-plugin-myplugin', - * pluginRef: 'window.myplugin' - * }) - * export class MyPlugin { - * - * // Plugin wrappers, properties, and functions go here ... - * - * } - * ``` - */ -function Plugin(config) { - return function (cls) { - // Add these fields to the class - for (var k in config) { - cls[k] = config[k]; - } - cls['installed'] = function (printWarning) { - return !!getPlugin(config.pluginRef); - }; - cls['getPlugin'] = function () { - return getPlugin(config.pluginRef); - }; - cls['checkInstall'] = function () { - var pluginInstance = getPlugin(config.pluginRef); - if (!pluginInstance) { - pluginWarn(cls); - return false; - } - return true; - }; - return cls; - }; -} -/** - * @private - * - * Wrap a stub function in a call to a Cordova plugin, checking if both Cordova - * and the required plugin are installed. - */ -function Cordova(opts) { - if (opts === void 0) { opts = {}; } - return function (target, methodName, descriptor) { - return { - value: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - return wrap(this, methodName, opts).apply(this, args); - } - }; - }; -} -/** - * @private - * - * Wrap an instance method - */ -function CordovaInstance(opts) { - if (opts === void 0) { opts = {}; } - return function (target, methodName) { - return { - value: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - return wrapInstance(this, methodName, opts).apply(this, args); - } - }; - }; -} -/** - * @private - * - * - * Before calling the original method, ensure Cordova and the plugin are installed. - */ -function CordovaProperty(target, key) { - var exists = function () { - var pluginInstance = getPlugin(target.pluginRef); - if (!pluginInstance || typeof pluginInstance[key] === 'undefined') { - pluginWarn(target, key); - return false; - } - return true; - }; - Object.defineProperty(target, key, { - get: function () { - if (exists()) { - return getPlugin(target.pluginRef)[key]; - } - else { - return null; - } - }, - set: function (value) { - if (exists()) { - getPlugin(target.pluginRef)[key] = value; - } - } - }); -} -/** - * @private - * @param target - * @param key - * @constructor - */ -function InstanceProperty(target, key) { - Object.defineProperty(target, key, { - get: function () { - return this._objectInstance[key]; - }, - set: function (value) { - this._objectInstance[key] = value; - } - }); -} -/** - * @private - * - * Wrap a stub function in a call to a Cordova plugin, checking if both Cordova - * and the required plugin are installed. - */ -function CordovaFunctionOverride(opts) { - if (opts === void 0) { opts = {}; } - return function (target, methodName, descriptor) { - return { - value: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - return overrideFunction(this, methodName, opts); - } - }; - }; -} -//# sourceMappingURL=plugin.js.map - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["b"] = clamp; -/* harmony export (immutable) */ __webpack_exports__["n"] = deepCopy; -/* unused harmony export debounce */ -/* harmony export (immutable) */ __webpack_exports__["j"] = defaults; -/* unused harmony export isBoolean */ -/* harmony export (immutable) */ __webpack_exports__["c"] = isString; -/* harmony export (immutable) */ __webpack_exports__["d"] = isNumber; -/* harmony export (immutable) */ __webpack_exports__["h"] = isFunction; -/* harmony export (immutable) */ __webpack_exports__["f"] = isDefined; -/* harmony export (immutable) */ __webpack_exports__["e"] = isUndefined; -/* harmony export (immutable) */ __webpack_exports__["a"] = isPresent; -/* harmony export (immutable) */ __webpack_exports__["g"] = isBlank; -/* harmony export (immutable) */ __webpack_exports__["q"] = isObject; -/* harmony export (immutable) */ __webpack_exports__["k"] = isArray; -/* unused harmony export isPrimitive */ -/* harmony export (immutable) */ __webpack_exports__["i"] = isTrueProperty; -/* harmony export (immutable) */ __webpack_exports__["o"] = isCheckedProperty; -/* harmony export (immutable) */ __webpack_exports__["p"] = reorderArray; -/* harmony export (immutable) */ __webpack_exports__["l"] = removeArrayItem; -/* harmony export (immutable) */ __webpack_exports__["m"] = swipeShouldReset; -/* unused harmony export assert */ -/* unused harmony export runInDev */ -/** - * @private - * Given a min and max, restrict the given number - * to the range. - * @param min the minimum - * @param n the value - * @param max the maximum - */ -function clamp(min, n, max) { - return Math.max(min, Math.min(n, max)); -} -/** @private */ -function deepCopy(obj) { - return JSON.parse(JSON.stringify(obj)); -} -/** @private */ -function debounce(fn, wait, immediate) { - if (immediate === void 0) { immediate = false; } - var timeout, args, context, timestamp, result; - return function () { - context = this; - args = arguments; - timestamp = Date.now(); - var later = function () { - var last = Date.now() - timestamp; - if (last < wait) { - timeout = setTimeout(later, wait - last); - } - else { - timeout = null; - if (!immediate) - result = fn.apply(context, args); - } - }; - var callNow = immediate && !timeout; - if (!timeout) { - timeout = setTimeout(later, wait); - } - if (callNow) - result = fn.apply(context, args); - return result; - }; -} -/** - * @private - * Apply default arguments if they don't exist in - * the first object. - * @param the destination to apply defaults to. - */ -function defaults(dest) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - for (var i = arguments.length - 1; i >= 1; i--) { - var source = arguments[i]; - if (source) { - for (var key in source) { - if (source.hasOwnProperty(key) && !dest.hasOwnProperty(key)) { - dest[key] = source[key]; - } - } - } - } - return dest; -} -/** @private */ -function isBoolean(val) { return typeof val === 'boolean'; } -/** @private */ -function isString(val) { return typeof val === 'string'; } -/** @private */ -function isNumber(val) { return typeof val === 'number'; } -/** @private */ -function isFunction(val) { return typeof val === 'function'; } -/** @private */ -function isDefined(val) { return typeof val !== 'undefined'; } -/** @private */ -function isUndefined(val) { return typeof val === 'undefined'; } -/** @private */ -function isPresent(val) { return val !== undefined && val !== null; } -/** @private */ -function isBlank(val) { return val === undefined || val === null; } -/** @private */ -function isObject(val) { return typeof val === 'object'; } -/** @private */ -function isArray(val) { return Array.isArray(val); } -; -/** @private */ -function isPrimitive(val) { - return isString(val) || isBoolean(val) || (isNumber(val) && !isNaN(val)); -} -; -/** @private */ -function isTrueProperty(val) { - if (typeof val === 'string') { - val = val.toLowerCase().trim(); - return (val === 'true' || val === 'on' || val === ''); - } - return !!val; -} -; -/** @private */ -function isCheckedProperty(a, b) { - if (a === undefined || a === null || a === '') { - return (b === undefined || b === null || b === ''); - } - else if (a === true || a === 'true') { - return (b === true || b === 'true'); - } - else if (a === false || a === 'false') { - return (b === false || b === 'false'); - } - else if (a === 0 || a === '0') { - return (b === 0 || b === '0'); - } - // not using strict comparison on purpose - return (a == b); // tslint:disable-line -} -; -/** @private */ -function reorderArray(array, indexes) { - var element = array[indexes.from]; - array.splice(indexes.from, 1); - array.splice(indexes.to, 0, element); - return array; -} -/** @private */ -function removeArrayItem(array, item) { - var index = array.indexOf(item); - return !!~index && !!array.splice(index, 1); -} -/** @private */ -function swipeShouldReset(isResetDirection, isMovingFast, isOnResetZone) { - // The logic required to know when the sliding item should close (openAmount=0) - // depends on three booleans (isCloseDirection, isMovingFast, isOnCloseZone) - // and it ended up being too complicated to be written manually without errors - // so the truth table is attached below: (0=false, 1=true) - // isCloseDirection | isMovingFast | isOnCloseZone || shouldClose - // 0 | 0 | 0 || 0 - // 0 | 0 | 1 || 1 - // 0 | 1 | 0 || 0 - // 0 | 1 | 1 || 0 - // 1 | 0 | 0 || 0 - // 1 | 0 | 1 || 1 - // 1 | 1 | 0 || 1 - // 1 | 1 | 1 || 1 - // The resulting expression was generated by resolving the K-map (Karnaugh map): - var shouldClose = (!isMovingFast && isOnResetZone) || (isResetDirection && isMovingFast); - return shouldClose; -} -/** @private */ -var ASSERT_ENABLED = true; -/** @private */ -function _runInDev(fn) { - if (ASSERT_ENABLED === true) { - return fn(); - } -} -/** @private */ -function _assert(actual, reason) { - if (!actual && ASSERT_ENABLED === true) { - var message = 'IONIC ASSERT: ' + reason; - console.error(message); - debugger; // tslint:disable-line - throw new Error(message); - } -} -/** @private */ - -/** @private */ - -//# sourceMappingURL=util.js.map - -/***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_util__ = __webpack_require__(2); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Config; }); -/* harmony export (immutable) */ __webpack_exports__["c"] = setupConfig; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ConfigToken; }); - - -/** - * @name Config - * @demo /docs/v2/demos/src/config/ - * @description - * The Config lets you configure your entire app or specific platforms. - * You can set the tab placement, icon mode, animations, and more here. - * - * ```ts - * import { IonicApp, IonicModule } from 'ionic-angular'; - * - * @NgModule({ - * declarations: [ MyApp ], - * imports: [ - * IonicModule.forRoot(MyApp, { - * backButtonText: 'Go Back', - * iconMode: 'ios', - * modalEnter: 'modal-slide-in', - * modalLeave: 'modal-slide-out', - * tabsPlacement: 'bottom', - * pageTransition: 'ios' - * }, {} - * )], - * bootstrap: [IonicApp], - * entryComponents: [ MyApp ], - * providers: [] - * }) - * ``` - * - * - * Config can be overwritten at multiple levels allowing for more granular configuration. - * Below is an example where an app can override any setting we want based on a platform. - * - * ```ts - * import { IonicModule } from 'ionic-angular'; - * - * @NgModule({ - * ... - * imports: [ - * IonicModule.forRoot(MyApp, { - * tabsPlacement: 'bottom', - * platforms: { - * ios: { - * tabsPlacement: 'top', - * } - * } - * }, {} - * )], - * ... - * }) - * ``` - * - * We could also configure these values at a component level. Take `tabsPlacement`, - * we can configure this as a property on our `ion-tabs`. - * - * ```html - * - * - * - * ``` - * - * The last way we could configure is through URL query strings. This is useful for testing - * while in the browser. Simply add `?ionic=` to the url. - * - * ```bash - * http://localhost:8100/?ionicTabsPlacement=bottom - * ``` - * - * Any value can be added to config, and looked up at a later in any component. - * - * ```js - * config.set('ios', 'favoriteColor', 'green'); - * - * // from any page in your app: - * config.get('favoriteColor'); // 'green' when iOS - * ``` - * - * - * A config value can come from anywhere and be anything, but there are default - * values for each mode. The [theming](../../../theming/platform-specific-styles/) - * documentation has a chart of the default mode configuration. The following - * chart displays each property with a description of what it controls. - * - * - * | Config Property | Type | Details | - * |--------------------------|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| - * | `activator` | `string` | Used for buttons, changes the effect of pressing on a button. Available options: `"ripple"`, `"highlight"`. | - * | `actionSheetEnter` | `string` | The name of the transition to use while an action sheet is presented. | - * | `actionSheetLeave` | `string` | The name of the transition to use while an action sheet is dismissed. | - * | `alertEnter` | `string` | The name of the transition to use while an alert is presented. | - * | `alertLeave` | `string` | The name of the transition to use while an alert is dismissed. | - * | `backButtonText` | `string` | The text to display by the back button icon in the navbar. | - * | `backButtonIcon` | `string` | The icon to use as the back button icon. | - * | `iconMode` | `string` | The mode to use for all icons throughout the application. Available options: `"ios"`, `"md"` | - * | `locationStrategy` | `string` | Set to 'path' to remove hashbangs when using Deeplinking. | - * | `loadingEnter` | `string` | The name of the transition to use while a loading indicator is presented. | - * | `loadingLeave` | `string` | The name of the transition to use while a loading indicator is dismissed. | - * | `menuType` | `string` | Type of menu to display. Available options: `"overlay"`, `"reveal"`, `"push"`. | - * | `modalEnter` | `string` | The name of the transition to use while a modal is presented. | - * | `modalLeave` | `string` | The name of the transition to use while a modal is dismiss. | - * | `mode` | `string` | The mode to use throughout the application. | - * | `pageTransition` | `string` | The name of the transition to use while changing pages. | - * | `pickerEnter` | `string` | The name of the transition to use while a picker is presented. | - * | `pickerLeave` | `string` | The name of the transition to use while a picker is dismissed. | - * | `popoverEnter` | `string` | The name of the transition to use while a popover is presented. | - * | `popoverLeave` | `string` | The name of the transition to use while a popover is dismissed. | - * | `spinner` | `string` | The default spinner to use when a name is not defined. | - * | `swipeBackEnabled` | `boolean` | Whether native iOS swipe to go back functionality is enabled. | - * | `tabsHighlight` | `boolean` | Whether to show a highlight line under the tab when it is selected. | - * | `tabsLayout` | `string` | The layout to use for all tabs. Available options: `"icon-top"`, `"icon-left"`, `"icon-right"`, `"icon-bottom"`, `"icon-hide"`, `"title-hide"`. | - * | `tabsPlacement` | `string` | The position of the tabs relative to the content. Available options: `"top"`, `"bottom"` | - * | `tabsHideOnSubPages` | `boolean` | Whether to hide the tabs on child pages or not. If `true` it will not show the tabs on child pages. | - * | `toastEnter` | `string` | The name of the transition to use while a toast is presented. | - * | `toastLeave` | `string` | The name of the transition to use while a toast is dismissed. | - * -**/ -var Config = (function () { - function Config() { - this._c = {}; - this._s = {}; - this._modes = {}; - this._trns = {}; - } - /** - * @private - */ - Config.prototype.init = function (config, plt) { - this._s = config && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["q" /* isObject */])(config) && !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["k" /* isArray */])(config) ? config : {}; - this.plt = plt; - }; - /** - * @name get - * @description - * Returns a single config value, given a key. - * - * @param {string} [key] - the key for the config value - * @param {any} [fallbackValue] - a fallback value to use when the config - * value was not found, or is config value is `null`. Fallback value - * defaults to `null`. - */ - Config.prototype.get = function (key, fallbackValue) { - if (fallbackValue === void 0) { fallbackValue = null; } - var platform = this.plt; - if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(this._c[key])) { - if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(key)) { - throw 'config key is not defined'; - } - // if the value was already set this will all be skipped - // if there was no user config then it'll check each of - // the user config's platforms, which already contains - // settings from default platform configs - var userPlatformValue = undefined; - var userDefaultValue = this._s[key]; - var userPlatformModeValue = undefined; - var userDefaultModeValue = undefined; - var platformValue = undefined; - var platformModeValue = undefined; - var configObj = null; - if (platform) { - var queryStringValue = platform.getQueryParam('ionic' + key); - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(queryStringValue)) { - return this._c[key] = (queryStringValue === 'true' ? true : queryStringValue === 'false' ? false : queryStringValue); - } - // check the platform settings object for this value - // loop though each of the active platforms - // array of active platforms, which also knows the hierarchy, - // with the last one the most important - var activePlatformKeys = platform.platforms(); - // loop through all of the active platforms we're on - for (var i = 0, ilen = activePlatformKeys.length; i < ilen; i++) { - // get user defined platform values - if (this._s.platforms) { - configObj = this._s.platforms[activePlatformKeys[i]]; - if (configObj) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(configObj[key])) { - userPlatformValue = configObj[key]; - } - configObj = this.getModeConfig(configObj.mode); - if (configObj && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(configObj[key])) { - userPlatformModeValue = configObj[key]; - } - } - } - // get default platform's setting - configObj = platform.getPlatformConfig(activePlatformKeys[i]); - if (configObj && configObj.settings) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(configObj.settings[key])) { - // found a setting for this platform - platformValue = configObj.settings[key]; - } - configObj = this.getModeConfig(configObj.settings.mode); - if (configObj && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(configObj[key])) { - // found setting for this platform's mode - platformModeValue = configObj[key]; - } - } - } - } - configObj = this.getModeConfig(this._s.mode); - if (configObj && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(configObj[key])) { - userDefaultModeValue = configObj[key]; - } - // cache the value - this._c[key] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(userPlatformValue) ? userPlatformValue : - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(userDefaultValue) ? userDefaultValue : - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(userPlatformModeValue) ? userPlatformModeValue : - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(userDefaultModeValue) ? userDefaultModeValue : - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(platformValue) ? platformValue : - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["f" /* isDefined */])(platformModeValue) ? platformModeValue : - null; - } - // return key's value - // either it came directly from the user config - // or it was from the users platform configs - // or it was from the default platform configs - // in that order - var rtnVal = this._c[key]; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["h" /* isFunction */])(rtnVal)) { - rtnVal = rtnVal(platform); - } - return (rtnVal !== null ? rtnVal : fallbackValue); - }; - /** - * @name getBoolean - * @description - * Same as `get()`, however always returns a boolean value. If the - * value from `get()` is `null`, then it'll return the `fallbackValue` - * which defaults to `false`. Otherwise, `getBoolean()` will return - * if the config value is truthy or not. It also returns `true` if - * the config value was the string value `"true"`. - * @param {string} [key] - the key for the config value - * @param {boolean} [fallbackValue] - a fallback value to use when the config - * value was `null`. Fallback value defaults to `false`. - */ - Config.prototype.getBoolean = function (key, fallbackValue) { - if (fallbackValue === void 0) { fallbackValue = false; } - var val = this.get(key); - if (val === null) { - return fallbackValue; - } - if (typeof val === 'string') { - return val === 'true'; - } - return !!val; - }; - /** - * @name getNumber - * @description - * Same as `get()`, however always returns a number value. Uses `parseFloat()` - * on the value received from `get()`. If the result from the parse is `NaN`, - * then it will return the value passed to `fallbackValue`. If no fallback - * value was provided then it'll default to returning `NaN` when the result - * is not a valid number. - * @param {string} [key] - the key for the config value - * @param {number} [fallbackValue] - a fallback value to use when the config - * value turned out to be `NaN`. Fallback value defaults to `NaN`. - */ - Config.prototype.getNumber = function (key, fallbackValue) { - if (fallbackValue === void 0) { fallbackValue = NaN; } - var val = parseFloat(this.get(key)); - return isNaN(val) ? fallbackValue : val; - }; - /** - * @name set - * @description - * Sets a single config value. - * - * @param {string} [platform] - The platform (either 'ios' or 'android') that the config value should apply to. Leaving this blank will apply the config value to all platforms. - * @param {string} [key] - The key used to look up the value at a later point in time. - * @param {string} [value] - The config value being stored. - */ - Config.prototype.set = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - var arg0 = args[0]; - var arg1 = args[1]; - switch (args.length) { - case 2: - // set('key', 'value') = set key/value pair - // arg1 = value - this._s[arg0] = arg1; - delete this._c[arg0]; // clear cache - break; - case 3: - // setting('ios', 'key', 'value') = set key/value pair for platform - // arg0 = platform - // arg1 = key - // arg2 = value - this._s.platforms = this._s.platforms || {}; - this._s.platforms[arg0] = this._s.platforms[arg0] || {}; - this._s.platforms[arg0][arg1] = args[2]; - delete this._c[arg1]; // clear cache - break; - } - return this; - }; - /** - * @private - * @name settings() - * @description - */ - Config.prototype.settings = function (arg0, arg1) { - switch (arguments.length) { - case 0: - return this._s; - case 1: - // settings({...}) - this._s = arg0; - this._c = {}; // clear cache - break; - case 2: - // settings('ios', {...}) - this._s.platforms = this._s.platforms || {}; - this._s.platforms[arg0] = arg1; - this._c = {}; // clear cache - break; - } - return this; - }; - /** - * @private - */ - Config.prototype.setModeConfig = function (modeName, modeConfig) { - this._modes[modeName] = modeConfig; - }; - /** - * @private - */ - Config.prototype.getModeConfig = function (modeName) { - return this._modes[modeName] || null; - }; - /** - * @private - */ - Config.prototype.setTransition = function (trnsName, trnsClass) { - this._trns[trnsName] = trnsClass; - }; - /** - * @private - */ - Config.prototype.getTransition = function (trnsName) { - return this._trns[trnsName] || null; - }; - return Config; -}()); -/** - * @private - */ -function setupConfig(userConfig, plt) { - var config = new Config(); - config.init(userConfig, plt); - // add the config obj to the window - var win = plt.win(); - win['Ionic'] = win['Ionic'] || {}; - win['Ionic']['config'] = config; - return config; -} -/** - * @private - */ -var ConfigToken = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["OpaqueToken"]('USERCONFIG'); -//# sourceMappingURL=config.js.map - -/***/ }), -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export scheduleMicroTask */ -/* unused harmony export global */ -/* unused harmony export getTypeNameForDebugging */ -/* harmony export (immutable) */ __webpack_exports__["a"] = isPresent; -/* harmony export (immutable) */ __webpack_exports__["b"] = isBlank; -/* harmony export (immutable) */ __webpack_exports__["c"] = isStrictStringMap; -/* unused harmony export isDate */ -/* harmony export (immutable) */ __webpack_exports__["i"] = stringify; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return NumberWrapper; }); -/* unused harmony export looseIdentical */ -/* harmony export (immutable) */ __webpack_exports__["e"] = isJsObject; -/* unused harmony export print */ -/* unused harmony export warn */ -/* unused harmony export setValueOnPath */ -/* harmony export (immutable) */ __webpack_exports__["f"] = getSymbolIterator; -/* harmony export (immutable) */ __webpack_exports__["d"] = isPrimitive; -/* harmony export (immutable) */ __webpack_exports__["g"] = escapeRegExp; -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var globalScope; -if (typeof window === 'undefined') { - if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { - // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492 - globalScope = self; - } - else { - globalScope = global; - } -} -else { - globalScope = window; -} -function scheduleMicroTask(fn) { - Zone.current.scheduleMicroTask('scheduleMicrotask', fn); -} -// Need to declare a new variable for global here since TypeScript -// exports the original value of the symbol. -var _global = globalScope; - -function getTypeNameForDebugging(type) { - return type['name'] || typeof type; -} -// TODO: remove calls to assert in production environment -// Note: Can't just export this and import in in other files -// as `assert` is a reserved keyword in Dart -_global.assert = function assert(condition) { - // TODO: to be fixed properly via #2830, noop for now -}; -function isPresent(obj) { - return obj != null; -} -function isBlank(obj) { - return obj == null; -} -var STRING_MAP_PROTO = Object.getPrototypeOf({}); -function isStrictStringMap(obj) { - return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO; -} -function isDate(obj) { - return obj instanceof Date && !isNaN(obj.valueOf()); -} -function stringify(token) { - if (typeof token === 'string') { - return token; - } - if (token == null) { - return '' + token; - } - if (token.overriddenName) { - return token.overriddenName; - } - if (token.name) { - return token.name; - } - var res = token.toString(); - var newLineIndex = res.indexOf('\n'); - return newLineIndex === -1 ? res : res.substring(0, newLineIndex); -} -var NumberWrapper = (function () { - function NumberWrapper() { - } - NumberWrapper.parseIntAutoRadix = function (text) { - var result = parseInt(text); - if (isNaN(result)) { - throw new Error('Invalid integer literal when parsing ' + text); - } - return result; - }; - NumberWrapper.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); }; - return NumberWrapper; -}()); -// JS has NaN !== NaN -function looseIdentical(a, b) { - return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b); -} -function isJsObject(o) { - return o !== null && (typeof o === 'function' || typeof o === 'object'); -} -function print(obj) { - console.log(obj); -} -function warn(obj) { - console.warn(obj); -} -function setValueOnPath(global, path, value) { - var parts = path.split('.'); - var obj = global; - while (parts.length > 1) { - var name_1 = parts.shift(); - if (obj.hasOwnProperty(name_1) && obj[name_1] != null) { - obj = obj[name_1]; - } - else { - obj = obj[name_1] = {}; - } - } - if (obj === undefined || obj === null) { - obj = {}; - } - obj[parts.shift()] = value; -} -var _symbolIterator = null; -function getSymbolIterator() { - if (!_symbolIterator) { - if (globalScope.Symbol && Symbol.iterator) { - _symbolIterator = Symbol.iterator; - } - else { - // es6-shim specific logic - var keys = Object.getOwnPropertyNames(Map.prototype); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (key !== 'entries' && key !== 'size' && - Map.prototype[key] === Map.prototype['entries']) { - _symbolIterator = key; - } - } - } - } - return _symbolIterator; -} -function isPrimitive(obj) { - return !isJsObject(obj); -} -function escapeRegExp(s) { - return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -} -//# sourceMappingURL=lang.js.map -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(40))) - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_dom__ = __webpack_require__(17); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__query_params__ = __webpack_require__(673); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_util__ = __webpack_require__(2); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Platform; }); -/* harmony export (immutable) */ __webpack_exports__["b"] = setupPlatform; - - - - -/** - * @name Platform - * @description - * The Platform service can be used to get information about your current device. - * You can get all of the platforms associated with the device using the [platforms](#platforms) - * method, including whether the app is being viewed from a tablet, if it's - * on a mobile device or browser, and the exact platform (iOS, Android, etc). - * You can also get the orientation of the device, if it uses right-to-left - * language direction, and much much more. With this information you can completely - * customize your app to fit any device. - * - * @usage - * ```ts - * import { Platform } from 'ionic-angular'; - * - * @Component({...}) - * export MyPage { - * constructor(public plt: Platform) { - * - * } - * } - * ``` - * @demo /docs/v2/demos/src/platform/ - */ -var Platform = (function () { - function Platform() { - var _this = this; - this._versions = {}; - this._qp = new __WEBPACK_IMPORTED_MODULE_2__query_params__["a" /* QueryParams */](); - this._onResizes = []; - this._bbActions = []; - this._pW = 0; - this._pH = 0; - this._lW = 0; - this._lH = 0; - this._isPortrait = null; - this._uiEvtOpts = false; - /** @internal */ - this._platforms = []; - // Events meant to be triggered by the engine - // ********************************************** - /** - * @private - */ - this.backButton = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * The pause event emits when the native platform puts the application - * into the background, typically when the user switches to a different - * application. This event would emit when a Cordova app is put into - * the background, however, it would not fire on a standard web browser. - */ - this.pause = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * The resume event emits when the native platform pulls the application - * out from the background. This event would emit when a Cordova app comes - * out from the background, however, it would not fire on a standard web browser. - */ - this.resume = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this._readyPromise = new Promise(function (res) { _this._readyResolve = res; }); - this.backButton.subscribe(function () { - // the hardware back button event has been fired - (void 0) /* console.debug */; - // decide which backbutton action should run - _this.runBackButtonAction(); - }); - } - /** - * @private - */ - Platform.prototype.setWindow = function (win) { - this._win = win; - }; - /** - * @private - */ - Platform.prototype.win = function () { - return this._win; - }; - /** - * @private - */ - Platform.prototype.setDocument = function (doc) { - this._doc = doc; - }; - /** - * @private - */ - Platform.prototype.doc = function () { - return this._doc; - }; - /** - * @private - */ - Platform.prototype.setZone = function (zone) { - this.zone = zone; - }; - /** - * @private - */ - Platform.prototype.setCssProps = function (docElement) { - this.Css = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_dom__["f" /* getCss */])(docElement); - }; - // Methods - // ********************************************** - /** - * @returns {boolean} returns true/false based on platform. - * @description - * Depending on the platform the user is on, `is(platformName)` will - * return `true` or `false`. Note that the same app can return `true` - * for more than one platform name. For example, an app running from - * an iPad would return `true` for the platform names: `mobile`, - * `ios`, `ipad`, and `tablet`. Additionally, if the app was running - * from Cordova then `cordova` would be true, and if it was running - * from a web browser on the iPad then `mobileweb` would be `true`. - * - * ``` - * import { Platform } from 'ionic-angular'; - * - * @Component({...}) - * export MyPage { - * constructor(public plt: Platform) { - * if (this.plt.is('ios')) { - * // This will only print when on iOS - * console.log("I'm an iOS device!"); - * } - * } - * } - * ``` - * - * | Platform Name | Description | - * |-----------------|------------------------------------| - * | android | on a device running Android. | - * | cordova | on a device running Cordova. | - * | core | on a desktop device. | - * | ios | on a device running iOS. | - * | ipad | on an iPad device. | - * | iphone | on an iPhone device. | - * | mobile | on a mobile device. | - * | mobileweb | in a browser on a mobile device. | - * | phablet | on a phablet device. | - * | tablet | on a tablet device. | - * | windows | on a device running Windows. | - * - * @param {string} platformName - */ - Platform.prototype.is = function (platformName) { - return (this._platforms.indexOf(platformName) > -1); - }; - /** - * @returns {array} the array of platforms - * @description - * Depending on what device you are on, `platforms` can return multiple values. - * Each possible value is a hierarchy of platforms. For example, on an iPhone, - * it would return `mobile`, `ios`, and `iphone`. - * - * ``` - * import { Platform } from 'ionic-angular'; - * - * @Component({...}) - * export MyPage { - * constructor(public plt: Platform) { - * // This will print an array of the current platforms - * console.log(this.plt.platforms()); - * } - * } - * ``` - */ - Platform.prototype.platforms = function () { - // get the array of active platforms, which also knows the hierarchy, - // with the last one the most important - return this._platforms; - }; - /** - * Returns an object containing version information about all of the platforms. - * - * ``` - * import { Platform } from 'ionic-angular'; - * - * @Component({...}) - * export MyPage { - * constructor(public plt: Platform) { - * // This will print an object containing - * // all of the platforms and their versions - * console.log(plt.versions()); - * } - * } - * ``` - * - * @returns {object} An object containing all of the platforms and their versions. - */ - Platform.prototype.versions = function () { - // get all the platforms that have a valid parsed version - return this._versions; - }; - /** - * @private - */ - Platform.prototype.version = function () { - for (var platformName in this._versions) { - if (this._versions[platformName]) { - return this._versions[platformName]; - } - } - return {}; - }; - /** - * Returns a promise when the platform is ready and native functionality - * can be called. If the app is running from within a web browser, then - * the promise will resolve when the DOM is ready. When the app is running - * from an application engine such as Cordova, then the promise will - * resolve when Cordova triggers the `deviceready` event. - * - * The resolved value is the `readySource`, which states which platform - * ready was used. For example, when Cordova is ready, the resolved ready - * source is `cordova`. The default ready source value will be `dom`. The - * `readySource` is useful if different logic should run depending on the - * platform the app is running from. For example, only Cordova can execute - * the status bar plugin, so the web should not run status bar plugin logic. - * - * ``` - * import { Component } from '@angular/core'; - * import { Platform } from 'ionic-angular'; - * - * @Component({...}) - * export MyApp { - * constructor(public plt: Platform) { - * this.plt.ready().then((readySource) => { - * console.log('Platform ready from', readySource); - * // Platform now ready, execute any required native code - * }); - * } - * } - * ``` - * @returns {promise} - */ - Platform.prototype.ready = function () { - return this._readyPromise; - }; - /** - * @private - * This should be triggered by the engine when the platform is - * ready. If there was no custom prepareReady method from the engine, - * such as Cordova or Electron, then it uses the default DOM ready. - */ - Platform.prototype.triggerReady = function (readySource) { - var _this = this; - this.zone.run(function () { - _this._readyResolve(readySource); - }); - }; - /** - * @private - * This is the default prepareReady if it's not replaced by an engine, - * such as Cordova or Electron. If there was no custom prepareReady - * method from an engine then it uses the method below, which triggers - * the platform ready on the DOM ready event, and the default resolved - * value is `dom`. - */ - Platform.prototype.prepareReady = function () { - var self = this; - if (self._doc.readyState === 'complete' || self._doc.readyState === 'interactive') { - self.triggerReady('dom'); - } - else { - self._doc.addEventListener('DOMContentLoaded', completed, false); - self._win.addEventListener('load', completed, false); - } - function completed() { - self._doc.removeEventListener('DOMContentLoaded', completed, false); - self._win.removeEventListener('load', completed, false); - self.triggerReady('dom'); - } - }; - /** - * Set the app's language direction, which will update the `dir` attribute - * on the app's root `` element. We recommend the app's `index.html` - * file already has the correct `dir` attribute value set, such as - * `` or ``. This method is useful if the - * direction needs to be dynamically changed per user/session. - * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir) - * @param {string} dir Examples: `rtl`, `ltr` - */ - Platform.prototype.setDir = function (dir, updateDocument) { - this._dir = (dir || '').toLowerCase(); - if (updateDocument !== false) { - this._doc['documentElement'].setAttribute('dir', dir); - } - }; - /** - * Returns app's language direction. - * We recommend the app's `index.html` file already has the correct `dir` - * attribute value set, such as `` or ``. - * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir) - * @returns {string} - */ - Platform.prototype.dir = function () { - return this._dir; - }; - /** - * Returns if this app is using right-to-left language direction or not. - * We recommend the app's `index.html` file already has the correct `dir` - * attribute value set, such as `` or ``. - * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir) - * @returns {boolean} - */ - Platform.prototype.isRTL = function () { - return (this._dir === 'rtl'); - }; - /** - * Set the app's language and optionally the country code, which will update - * the `lang` attribute on the app's root `` element. - * We recommend the app's `index.html` file already has the correct `lang` - * attribute value set, such as ``. This method is useful if - * the language needs to be dynamically changed per user/session. - * [W3C: Declaring language in HTML](http://www.w3.org/International/questions/qa-html-language-declarations) - * @param {string} language Examples: `en-US`, `en-GB`, `ar`, `de`, `zh`, `es-MX` - */ - Platform.prototype.setLang = function (language, updateDocument) { - this._lang = language; - if (updateDocument !== false) { - this._doc['documentElement'].setAttribute('lang', language); - } - }; - /** - * Returns app's language and optional country code. - * We recommend the app's `index.html` file already has the correct `lang` - * attribute value set, such as ``. - * [W3C: Declaring language in HTML](http://www.w3.org/International/questions/qa-html-language-declarations) - * @returns {string} - */ - Platform.prototype.lang = function () { - return this._lang; - }; - // Methods meant to be overridden by the engine - // ********************************************** - // Provided NOOP methods so they do not error when - // called by engines (the browser)that do not provide them - /** - * @private - */ - Platform.prototype.exitApp = function () { }; - /** - * The back button event is triggered when the user presses the native - * platform's back button, also referred to as the "hardware" back button. - * This event is only used within Cordova apps running on Android and - * Windows platforms. This event is not fired on iOS since iOS doesn't come - * with a hardware back button in the same sense an Android or Windows device - * does. - * - * Registering a hardware back button action and setting a priority allows - * apps to control which action should be called when the hardware back - * button is pressed. This method decides which of the registered back button - * actions has the highest priority and should be called. - * - * @param {Function} callback Called when the back button is pressed, - * if this registered action has the highest priority. - * @param {number} priority Set the priority for this action. Only the highest priority will execute. Defaults to `0`. - * @returns {Function} A function that, when called, will unregister - * the its back button action. - */ - Platform.prototype.registerBackButtonAction = function (fn, priority) { - var _this = this; - if (priority === void 0) { priority = 0; } - var action = { fn: fn, priority: priority }; - this._bbActions.push(action); - // return a function to unregister this back button action - return function () { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_util__["l" /* removeArrayItem */])(_this._bbActions, action); - }; - }; - /** - * @private - */ - Platform.prototype.runBackButtonAction = function () { - // decide which one back button action should run - var winner = null; - this._bbActions.forEach(function (action) { - if (!winner || action.priority >= winner.priority) { - winner = action; - } - }); - // run the winning action if there is one - winner && winner.fn && winner.fn(); - }; - // Getter/Setter Methods - // ********************************************** - /** - * @private - */ - Platform.prototype.setUserAgent = function (userAgent) { - this._ua = userAgent; - }; - /** - * @private - */ - Platform.prototype.setQueryParams = function (url) { - this._qp.parseUrl(url); - }; - /** - * Get the query string parameter - */ - Platform.prototype.getQueryParam = function (key) { - return this._qp.get(key); - }; - /** - * Get the current url. - */ - Platform.prototype.url = function () { - return this._win['location']['href']; - }; - /** - * @private - */ - Platform.prototype.userAgent = function () { - return this._ua || ''; - }; - /** - * @private - */ - Platform.prototype.setNavigatorPlatform = function (navigatorPlt) { - this._nPlt = navigatorPlt; - }; - /** - * @private - */ - Platform.prototype.navigatorPlatform = function () { - return this._nPlt || ''; - }; - /** - * Gets the width of the platform's viewport using `window.innerWidth`. - * Using this method is preferred since the dimension is a cached value, - * which reduces the chance of multiple and expensive DOM reads. - */ - Platform.prototype.width = function () { - this._calcDim(); - return this._isPortrait ? this._pW : this._lW; - }; - /** - * Gets the height of the platform's viewport using `window.innerHeight`. - * Using this method is preferred since the dimension is a cached value, - * which reduces the chance of multiple and expensive DOM reads. - */ - Platform.prototype.height = function () { - this._calcDim(); - return this._isPortrait ? this._pH : this._lH; - }; - /** - * @private - */ - Platform.prototype.getElementComputedStyle = function (ele, pseudoEle) { - return this._win['getComputedStyle'](ele, pseudoEle); - }; - /** - * @private - */ - Platform.prototype.getElementFromPoint = function (x, y) { - return this._doc['elementFromPoint'](x, y); - }; - /** - * @private - */ - Platform.prototype.getElementBoundingClientRect = function (ele) { - return ele['getBoundingClientRect'](); - }; - /** - * Returns `true` if the app is in portait mode. - */ - Platform.prototype.isPortrait = function () { - this._calcDim(); - return this._isPortrait; - }; - /** - * Returns `true` if the app is in landscape mode. - */ - Platform.prototype.isLandscape = function () { - return !this.isPortrait(); - }; - Platform.prototype._calcDim = function () { - // we're caching window dimensions so that - // we're not forcing many layouts - // if _isPortrait is null then that means - // the dimensions needs to be looked up again - // this also has to cover an edge case that only - // happens on iOS 10 (not other versions of iOS) - // where window.innerWidth is always bigger than - // window.innerHeight when it is first measured, - // even when the device is in portrait but - // the second time it is measured it is correct. - // Hopefully this check will not be needed in the future - if (this._isPortrait === null || this._isPortrait === false && this._win['innerWidth'] < this._win['innerHeight']) { - var win = this._win; - var innerWidth = win['innerWidth']; - var innerHeight = win['innerHeight']; - // we're keeping track of portrait and landscape dimensions - // separately because the virtual keyboard can really mess - // up accurate values when the keyboard is up - if (win.screen.width > 0 && win.screen.height > 0) { - if (innerWidth < innerHeight) { - // the device is in portrait - // we have to do fancier checking here - // because of the virtual keyboard resizing - // the window - if (this._pW <= innerWidth) { - (void 0) /* console.debug */; - this._isPortrait = true; - this._pW = innerWidth; - } - if (this._pH <= innerHeight) { - (void 0) /* console.debug */; - this._isPortrait = true; - this._pH = innerHeight; - } - } - else { - // the device is in landscape - if (this._lW !== innerWidth) { - (void 0) /* console.debug */; - this._isPortrait = false; - this._lW = innerWidth; - } - if (this._lH !== innerHeight) { - (void 0) /* console.debug */; - this._isPortrait = false; - this._lH = innerHeight; - } - } - } - } - }; - /** - * @private - * This requestAnimationFrame will NOT be wrapped by zone. - */ - Platform.prototype.raf = function (callback) { - var win = this._win; - return win['__zone_symbol__requestAnimationFrame'](callback); - }; - /** - * @private - */ - Platform.prototype.cancelRaf = function (rafId) { - var win = this._win; - return win['__zone_symbol__cancelAnimationFrame'](rafId); - }; - /** - * @private - * This setTimeout will NOT be wrapped by zone. - */ - Platform.prototype.timeout = function (callback, timeout) { - var win = this._win; - return win['__zone_symbol__setTimeout'](callback, timeout); - }; - /** - * @private - * This setTimeout will NOT be wrapped by zone. - */ - Platform.prototype.cancelTimeout = function (timeoutId) { - var win = this._win; - win['__zone_symbol__clearTimeout'](timeoutId); - }; - /** - * @private - * Built to use modern event listener options, like "passive". - * If options are not supported, then just return a boolean which - * represents "capture". Returns a method to remove the listener. - */ - Platform.prototype.registerListener = function (ele, eventName, callback, opts, unregisterListenersCollection) { - // use event listener options when supported - // otherwise it's just a boolean for the "capture" arg - var listenerOpts = this._uiEvtOpts ? { - 'capture': !!opts.capture, - 'passive': !!opts.passive, - } : !!opts.capture; - var unReg; - if (!opts.zone && ele['__zone_symbol__addEventListener']) { - // do not wrap this event in zone and we've verified we can use the raw addEventListener - ele['__zone_symbol__addEventListener'](eventName, callback, listenerOpts); - unReg = function unregisterListener() { - ele['__zone_symbol__removeEventListener'](eventName, callback, listenerOpts); - }; - } - else { - // use the native addEventListener, which is wrapped with zone - ele['addEventListener'](eventName, callback, listenerOpts); - unReg = function unregisterListener() { - ele['removeEventListener'](eventName, callback, listenerOpts); - }; - } - if (unregisterListenersCollection) { - unregisterListenersCollection.push(unReg); - } - return unReg; - }; - /** - * @private - */ - Platform.prototype.transitionEnd = function (el, callback, zone) { - if (zone === void 0) { zone = true; } - var unRegs = []; - function unregister() { - unRegs.forEach(function (unReg) { - unReg(); - }); - } - function onTransitionEnd(ev) { - if (el === ev.target) { - unregister(); - callback(ev); - } - } - if (el) { - this.registerListener(el, 'webkitTransitionEnd', onTransitionEnd, { zone: zone }, unRegs); - this.registerListener(el, 'transitionend', onTransitionEnd, { zone: zone }, unRegs); - } - return unregister; - }; - /** - * @private - */ - Platform.prototype.windowLoad = function (callback) { - var win = this._win; - var doc = this._doc; - var unreg; - if (doc.readyState === 'complete') { - callback(win, doc); - } - else { - unreg = this.registerListener(win, 'load', function () { - unreg && unreg(); - callback(win, doc); - }, { zone: false }); - } - }; - /** - * @private - */ - Platform.prototype.onResize = function (cb) { - var self = this; - self._onResizes.push(cb); - return function () { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_util__["l" /* removeArrayItem */])(self._onResizes, cb); - }; - }; - /** - * @private - */ - Platform.prototype.isActiveElement = function (ele) { - return !!(ele && (this.getActiveElement() === ele)); - }; - /** - * @private - */ - Platform.prototype.getActiveElement = function () { - return this._doc['activeElement']; - }; - /** - * @private - */ - Platform.prototype.hasFocus = function (ele) { - return !!((ele && (this.getActiveElement() === ele)) && (ele.parentElement.querySelector(':focus') === ele)); - }; - /** - * @private - */ - Platform.prototype.hasFocusedTextInput = function () { - var ele = this.getActiveElement(); - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_dom__["e" /* isTextInput */])(ele)) { - return (ele.parentElement.querySelector(':focus') === ele); - } - return false; - }; - /** - * @private - */ - Platform.prototype.focusOutActiveElement = function () { - var activeElement = this.getActiveElement(); - activeElement && activeElement.blur && activeElement.blur(); - }; - Platform.prototype._initEvents = function () { - var _this = this; - // Test via a getter in the options object to see if the passive property is accessed - try { - var opts = Object.defineProperty({}, 'passive', { - get: function () { - _this._uiEvtOpts = true; - } - }); - this._win.addEventListener('optsTest', null, opts); - } - catch (e) { } - // add the window resize event listener XXms after - this.timeout(function () { - var timerId; - _this.registerListener(_this._win, 'resize', function () { - clearTimeout(timerId); - timerId = setTimeout(function () { - // setting _isPortrait to null means the - // dimensions will need to be looked up again - if (_this.hasFocusedTextInput() === false) { - _this._isPortrait = null; - } - for (var i = 0; i < _this._onResizes.length; i++) { - try { - _this._onResizes[i](); - } - catch (e) { - console.error(e); - } - } - }, 200); - }, { passive: true, zone: true }); - }, 2000); - }; - // Platform Registry - // ********************************************** - /** - * @private - */ - Platform.prototype.setPlatformConfigs = function (platformConfigs) { - this._registry = platformConfigs || {}; - }; - /** - * @private - */ - Platform.prototype.getPlatformConfig = function (platformName) { - return this._registry[platformName] || {}; - }; - /** - * @private - */ - Platform.prototype.registry = function () { - return this._registry; - }; - /** - * @private - */ - Platform.prototype.setDefault = function (platformName) { - this._default = platformName; - }; - /** - * @private - */ - Platform.prototype.testQuery = function (queryValue, queryTestValue) { - var valueSplit = queryValue.toLowerCase().split(';'); - return valueSplit.indexOf(queryTestValue) > -1; - }; - /** - * @private - */ - Platform.prototype.testNavigatorPlatform = function (navigatorPlatformExpression) { - var rgx = new RegExp(navigatorPlatformExpression, 'i'); - return rgx.test(this._nPlt); - }; - /** - * @private - */ - Platform.prototype.matchUserAgentVersion = function (userAgentExpression) { - if (this._ua && userAgentExpression) { - var val = this._ua.match(userAgentExpression); - if (val) { - return { - major: val[1], - minor: val[2] - }; - } - } - }; - Platform.prototype.testUserAgent = function (expression) { - if (this._ua) { - return this._ua.indexOf(expression) >= 0; - } - return false; - }; - /** - * @private - */ - Platform.prototype.isPlatformMatch = function (queryStringName, userAgentAtLeastHas, userAgentMustNotHave) { - if (userAgentMustNotHave === void 0) { userAgentMustNotHave = []; } - var queryValue = this._qp.get('ionicplatform'); - if (queryValue) { - return this.testQuery(queryValue, queryStringName); - } - userAgentAtLeastHas = userAgentAtLeastHas || [queryStringName]; - var userAgent = this._ua.toLowerCase(); - for (var i = 0; i < userAgentAtLeastHas.length; i++) { - if (userAgent.indexOf(userAgentAtLeastHas[i]) > -1) { - for (var j = 0; j < userAgentMustNotHave.length; j++) { - if (userAgent.indexOf(userAgentMustNotHave[j]) > -1) { - return false; - } - } - return true; - } - } - return false; - }; - /** @private */ - Platform.prototype.init = function () { - this._initEvents(); - var rootPlatformNode; - var enginePlatformNode; - // figure out the most specific platform and active engine - var tmpPlt; - for (var platformName in this._registry) { - tmpPlt = this.matchPlatform(platformName); - if (tmpPlt) { - // we found a platform match! - // check if its more specific than the one we already have - if (tmpPlt.isEngine) { - // because it matched then this should be the active engine - // you cannot have more than one active engine - enginePlatformNode = tmpPlt; - } - else if (!rootPlatformNode || tmpPlt.depth > rootPlatformNode.depth) { - // only find the root node for platforms that are not engines - // set this node as the root since we either don't already - // have one, or this one is more specific that the current one - rootPlatformNode = tmpPlt; - } - } - } - if (!rootPlatformNode) { - rootPlatformNode = new PlatformNode(this._registry, this._default); - } - // build a Platform instance filled with the - // hierarchy of active platforms and settings - if (rootPlatformNode) { - // check if we found an engine node (cordova/node-webkit/etc) - if (enginePlatformNode) { - // add the engine to the first in the platform hierarchy - // the original rootPlatformNode now becomes a child - // of the engineNode, which is not the new root - enginePlatformNode.child = rootPlatformNode; - rootPlatformNode.parent = enginePlatformNode; - rootPlatformNode = enginePlatformNode; - } - var platformNode = rootPlatformNode; - while (platformNode) { - insertSuperset(this._registry, platformNode); - platformNode = platformNode.child; - } - // make sure the root noot is actually the root - // incase a node was inserted before the root - platformNode = rootPlatformNode.parent; - while (platformNode) { - rootPlatformNode = platformNode; - platformNode = platformNode.parent; - } - platformNode = rootPlatformNode; - while (platformNode) { - platformNode.initialize(this); - // extra check for ipad pro issue - // https://forums.developer.apple.com/thread/25948 - if (platformNode.name === 'iphone' && this.navigatorPlatform() === 'iPad') { - // this is an ipad pro so push ipad and tablet to platforms - // and then return as we are done - this._platforms.push('tablet'); - this._platforms.push('ipad'); - return; - } - // set the array of active platforms with - // the last one in the array the most important - this._platforms.push(platformNode.name); - // get the platforms version if a version parser was provided - this._versions[platformNode.name] = platformNode.version(this); - // go to the next platform child - platformNode = platformNode.child; - } - } - if (this._platforms.indexOf('mobile') > -1 && this._platforms.indexOf('cordova') === -1) { - this._platforms.push('mobileweb'); - } - }; - /** - * @private - */ - Platform.prototype.matchPlatform = function (platformName) { - // build a PlatformNode and assign config data to it - // use it's getRoot method to build up its hierarchy - // depending on which platforms match - var platformNode = new PlatformNode(this._registry, platformName); - var rootNode = platformNode.getRoot(this); - if (rootNode) { - rootNode.depth = 0; - var childPlatform = rootNode.child; - while (childPlatform) { - rootNode.depth++; - childPlatform = childPlatform.child; - } - } - return rootNode; - }; - return Platform; -}()); -function insertSuperset(registry, platformNode) { - var supersetPlaformName = platformNode.superset(); - if (supersetPlaformName) { - // add a platform in between two exist platforms - // so we can build the correct hierarchy of active platforms - var supersetPlatform = new PlatformNode(registry, supersetPlaformName); - supersetPlatform.parent = platformNode.parent; - supersetPlatform.child = platformNode; - if (supersetPlatform.parent) { - supersetPlatform.parent.child = supersetPlatform; - } - platformNode.parent = supersetPlatform; - } -} -/** - * @private - */ -var PlatformNode = (function () { - function PlatformNode(registry, platformName) { - this.registry = registry; - this.c = registry[platformName]; - this.name = platformName; - this.isEngine = this.c.isEngine; - } - PlatformNode.prototype.settings = function () { - return this.c.settings || {}; - }; - PlatformNode.prototype.superset = function () { - return this.c.superset; - }; - PlatformNode.prototype.isMatch = function (p) { - return this.c.isMatch && this.c.isMatch(p) || false; - }; - PlatformNode.prototype.initialize = function (plt) { - this.c.initialize && this.c.initialize(plt); - }; - PlatformNode.prototype.version = function (plt) { - if (this.c.versionParser) { - var v = this.c.versionParser(plt); - if (v) { - var str = v.major + '.' + v.minor; - return { - str: str, - num: parseFloat(str), - major: parseInt(v.major, 10), - minor: parseInt(v.minor, 10) - }; - } - } - }; - PlatformNode.prototype.getRoot = function (plt) { - if (this.isMatch(plt)) { - var parents = this.getSubsetParents(this.name); - if (!parents.length) { - return this; - } - var platformNode = null; - var rootPlatformNode = null; - for (var i = 0; i < parents.length; i++) { - platformNode = new PlatformNode(this.registry, parents[i]); - platformNode.child = this; - rootPlatformNode = platformNode.getRoot(plt); - if (rootPlatformNode) { - this.parent = platformNode; - return rootPlatformNode; - } - } - } - return null; - }; - PlatformNode.prototype.getSubsetParents = function (subsetPlatformName) { - var parentPlatformNames = []; - var pltConfig = null; - for (var platformName in this.registry) { - pltConfig = this.registry[platformName]; - if (pltConfig.subsets && pltConfig.subsets.indexOf(subsetPlatformName) > -1) { - parentPlatformNames.push(platformName); - } - } - return parentPlatformNames; - }; - return PlatformNode; -}()); -/** - * @private - */ -function setupPlatform(doc, platformConfigs, zone) { - var plt = new Platform(); - plt.setDefault('core'); - plt.setPlatformConfigs(platformConfigs); - plt.setZone(zone); - // set values from "document" - var docElement = doc.documentElement; - plt.setDocument(doc); - plt.setDir(docElement.dir, false); - plt.setLang(docElement.lang, false); - // set css properties - plt.setCssProps(docElement); - // set values from "window" - var win = doc.defaultView; - plt.setWindow(win); - plt.setNavigatorPlatform(win.navigator.platform); - plt.setUserAgent(win.navigator.userAgent); - // set location values - plt.setQueryParams(win.location.href); - plt.init(); - // add the platform obj to the window - win['Ionic'] = win['Ionic'] || {}; - win['Ionic']['platform'] = plt; - return plt; -} -//# sourceMappingURL=platform.js.map - -/***/ }), -/* 6 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (immutable) */ __webpack_exports__["a"] = scheduleMicroTask; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _global; }); -/* harmony export (immutable) */ __webpack_exports__["l"] = getTypeNameForDebugging; -/* harmony export (immutable) */ __webpack_exports__["b"] = isPresent; -/* harmony export (immutable) */ __webpack_exports__["k"] = isBlank; -/* unused harmony export isStrictStringMap */ -/* unused harmony export isDate */ -/* harmony export (immutable) */ __webpack_exports__["c"] = stringify; -/* unused harmony export NumberWrapper */ -/* harmony export (immutable) */ __webpack_exports__["j"] = looseIdentical; -/* harmony export (immutable) */ __webpack_exports__["e"] = isJsObject; -/* harmony export (immutable) */ __webpack_exports__["g"] = print; -/* harmony export (immutable) */ __webpack_exports__["h"] = warn; -/* unused harmony export setValueOnPath */ -/* harmony export (immutable) */ __webpack_exports__["f"] = getSymbolIterator; -/* harmony export (immutable) */ __webpack_exports__["i"] = isPrimitive; -/* unused harmony export escapeRegExp */ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var globalScope; -if (typeof window === 'undefined') { - if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { - // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492 - globalScope = self; - } - else { - globalScope = global; - } -} -else { - globalScope = window; -} -function scheduleMicroTask(fn) { - Zone.current.scheduleMicroTask('scheduleMicrotask', fn); -} -// Need to declare a new variable for global here since TypeScript -// exports the original value of the symbol. -var _global = globalScope; - -function getTypeNameForDebugging(type) { - return type['name'] || typeof type; -} -// TODO: remove calls to assert in production environment -// Note: Can't just export this and import in in other files -// as `assert` is a reserved keyword in Dart -_global.assert = function assert(condition) { - // TODO: to be fixed properly via #2830, noop for now -}; -function isPresent(obj) { - return obj != null; -} -function isBlank(obj) { - return obj == null; -} -var STRING_MAP_PROTO = Object.getPrototypeOf({}); -function isStrictStringMap(obj) { - return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO; -} -function isDate(obj) { - return obj instanceof Date && !isNaN(obj.valueOf()); -} -function stringify(token) { - if (typeof token === 'string') { - return token; - } - if (token == null) { - return '' + token; - } - if (token.overriddenName) { - return token.overriddenName; - } - if (token.name) { - return token.name; - } - var res = token.toString(); - var newLineIndex = res.indexOf('\n'); - return newLineIndex === -1 ? res : res.substring(0, newLineIndex); -} -var NumberWrapper = (function () { - function NumberWrapper() { - } - NumberWrapper.parseIntAutoRadix = function (text) { - var result = parseInt(text); - if (isNaN(result)) { - throw new Error('Invalid integer literal when parsing ' + text); - } - return result; - }; - NumberWrapper.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); }; - return NumberWrapper; -}()); -// JS has NaN !== NaN -function looseIdentical(a, b) { - return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b); -} -function isJsObject(o) { - return o !== null && (typeof o === 'function' || typeof o === 'object'); -} -function print(obj) { - console.log(obj); -} -function warn(obj) { - console.warn(obj); -} -function setValueOnPath(global, path, value) { - var parts = path.split('.'); - var obj = global; - while (parts.length > 1) { - var name_1 = parts.shift(); - if (obj.hasOwnProperty(name_1) && obj[name_1] != null) { - obj = obj[name_1]; - } - else { - obj = obj[name_1] = {}; - } - } - if (obj === undefined || obj === null) { - obj = {}; - } - obj[parts.shift()] = value; -} -var _symbolIterator = null; -function getSymbolIterator() { - if (!_symbolIterator) { - if (globalScope.Symbol && Symbol.iterator) { - _symbolIterator = Symbol.iterator; - } - else { - // es6-shim specific logic - var keys = Object.getOwnPropertyNames(Map.prototype); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (key !== 'entries' && key !== 'size' && - Map.prototype[key] === Map.prototype['entries']) { - _symbolIterator = key; - } - } - } - } - return _symbolIterator; -} -function isPrimitive(obj) { - return !isJsObject(obj); -} -function escapeRegExp(s) { - return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -} -//# sourceMappingURL=lang.js.map -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(40))) - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Ion; }); -/** - * Base class for all Ionic components. Exposes some common functionality - * that all Ionic components need, such as accessing underlying native elements and - * sending/receiving app-level events. - */ -var Ion = (function () { - function Ion(config, elementRef, renderer, componentName) { - this._config = config; - this._elementRef = elementRef; - this._renderer = renderer; - this._componentName = componentName; - if (componentName) { - this._setComponentName(); - this._setMode(config.get('mode')); - } - } - /** @private */ - Ion.prototype.setElementClass = function (className, isAdd) { - this._renderer.setElementClass(this._elementRef.nativeElement, className, isAdd); - }; - /** @private */ - Ion.prototype.setElementAttribute = function (attributeName, attributeValue) { - this._renderer.setElementAttribute(this._elementRef.nativeElement, attributeName, attributeValue); - }; - /** @private */ - Ion.prototype.setElementStyle = function (property, value) { - this._renderer.setElementStyle(this._elementRef.nativeElement, property, value); - }; - /** @private */ - Ion.prototype._setColor = function (newColor, componentName) { - if (componentName) { - // This is needed for the item-radio - this._componentName = componentName; - } - if (this._color) { - this.setElementClass(this._componentName + "-" + this._mode + "-" + this._color, false); - } - if (newColor) { - this.setElementClass(this._componentName + "-" + this._mode + "-" + newColor, true); - this._color = newColor; - } - }; - /** @private */ - Ion.prototype._setMode = function (newMode) { - if (this._mode) { - this.setElementClass(this._componentName + "-" + this._mode, false); - } - if (newMode) { - this.setElementClass(this._componentName + "-" + newMode, true); - // Remove the color class associated with the previous mode, - // change the mode, then add the new color class - this._setColor(null); - this._mode = newMode; - this._setColor(this._color); - } - }; - /** @private */ - Ion.prototype._setComponentName = function () { - this.setElementClass(this._componentName, true); - }; - /** @private */ - Ion.prototype.getElementRef = function () { - return this._elementRef; - }; - /** @private */ - Ion.prototype.getNativeElement = function () { - return this._elementRef.nativeElement; - }; - return Ion; -}()); -//# sourceMappingURL=ion.js.map - -/***/ }), -/* 8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__facade_lang__ = __webpack_require__(4); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return TypeModifier; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Q", function() { return Type; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "S", function() { return BuiltinTypeName; }); -/* unused harmony export BuiltinType */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return ExternalType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return ArrayType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return MapType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return DYNAMIC_TYPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return BOOL_TYPE; }); -/* unused harmony export INT_TYPE */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return NUMBER_TYPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return STRING_TYPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "L", function() { return FUNCTION_TYPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R", function() { return NULL_TYPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return BinaryOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "K", function() { return Expression; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "G", function() { return BuiltinVar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return ReadVarExpr; }); -/* unused harmony export WriteVarExpr */ -/* unused harmony export WriteKeyExpr */ -/* unused harmony export WritePropExpr */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "N", function() { return BuiltinMethod; }); -/* unused harmony export InvokeMethodExpr */ -/* unused harmony export InvokeFunctionExpr */ -/* unused harmony export InstantiateExpr */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "M", function() { return LiteralExpr; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "O", function() { return ExternalExpr; }); -/* unused harmony export ConditionalExpr */ -/* unused harmony export NotExpr */ -/* unused harmony export CastExpr */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return FnParam; }); -/* unused harmony export FunctionExpr */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return BinaryOperatorExpr; }); -/* unused harmony export ReadPropExpr */ -/* unused harmony export ReadKeyExpr */ -/* unused harmony export LiteralArrayExpr */ -/* unused harmony export LiteralMapExpr */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return THIS_EXPR; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "E", function() { return SUPER_EXPR; }); -/* unused harmony export CATCH_ERROR_VAR */ -/* unused harmony export CATCH_STACK_VAR */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NULL_EXPR; }); -/* unused harmony export TYPED_NULL_EXPR */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return StmtModifier; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "P", function() { return Statement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return DeclareVarStmt; }); -/* unused harmony export DeclareFunctionStmt */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "D", function() { return ExpressionStatement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return ReturnStatement; }); -/* unused harmony export AbstractClassPart */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ClassField; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return ClassMethod; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "I", function() { return ClassGetter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F", function() { return ClassStmt; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return IfStmt; }); -/* unused harmony export CommentStmt */ -/* unused harmony export TryCatchStmt */ -/* unused harmony export ThrowStmt */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "H", function() { return ExpressionTransformer; }); -/* unused harmony export RecursiveExpressionVisitor */ -/* harmony export (immutable) */ __webpack_exports__["J"] = replaceVarInExpression; -/* harmony export (immutable) */ __webpack_exports__["x"] = findReadVarNames; -/* harmony export (immutable) */ __webpack_exports__["a"] = variable; -/* harmony export (immutable) */ __webpack_exports__["g"] = importExpr; -/* harmony export (immutable) */ __webpack_exports__["d"] = importType; -/* harmony export (immutable) */ __webpack_exports__["h"] = literalArr; -/* harmony export (immutable) */ __webpack_exports__["m"] = literalMap; -/* harmony export (immutable) */ __webpack_exports__["w"] = not; -/* harmony export (immutable) */ __webpack_exports__["C"] = fn; -/* harmony export (immutable) */ __webpack_exports__["f"] = literal; -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; - -//// Types -var TypeModifier; -(function (TypeModifier) { - TypeModifier[TypeModifier["Const"] = 0] = "Const"; -})(TypeModifier || (TypeModifier = {})); -var Type = (function () { - function Type(modifiers) { - if (modifiers === void 0) { modifiers = null; } - this.modifiers = modifiers; - if (!modifiers) { - this.modifiers = []; - } - } - Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return Type; -}()); -var BuiltinTypeName; -(function (BuiltinTypeName) { - BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic"; - BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool"; - BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String"; - BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int"; - BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number"; - BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function"; - BuiltinTypeName[BuiltinTypeName["Null"] = 6] = "Null"; -})(BuiltinTypeName || (BuiltinTypeName = {})); -var BuiltinType = (function (_super) { - __extends(BuiltinType, _super); - function BuiltinType(name, modifiers) { - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.name = name; - } - BuiltinType.prototype.visitType = function (visitor, context) { - return visitor.visitBuiltintType(this, context); - }; - return BuiltinType; -}(Type)); -var ExternalType = (function (_super) { - __extends(ExternalType, _super); - function ExternalType(value, typeParams, modifiers) { - if (typeParams === void 0) { typeParams = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.value = value; - this.typeParams = typeParams; - } - ExternalType.prototype.visitType = function (visitor, context) { - return visitor.visitExternalType(this, context); - }; - return ExternalType; -}(Type)); -var ArrayType = (function (_super) { - __extends(ArrayType, _super); - function ArrayType(of, modifiers) { - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.of = of; - } - ArrayType.prototype.visitType = function (visitor, context) { - return visitor.visitArrayType(this, context); - }; - return ArrayType; -}(Type)); -var MapType = (function (_super) { - __extends(MapType, _super); - function MapType(valueType, modifiers) { - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.valueType = valueType; - } - MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); }; - return MapType; -}(Type)); -var DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic); -var BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool); -var INT_TYPE = new BuiltinType(BuiltinTypeName.Int); -var NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number); -var STRING_TYPE = new BuiltinType(BuiltinTypeName.String); -var FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function); -var NULL_TYPE = new BuiltinType(BuiltinTypeName.Null); -///// Expressions -var BinaryOperator; -(function (BinaryOperator) { - BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals"; - BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals"; - BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical"; - BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical"; - BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus"; - BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus"; - BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide"; - BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply"; - BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo"; - BinaryOperator[BinaryOperator["And"] = 9] = "And"; - BinaryOperator[BinaryOperator["Or"] = 10] = "Or"; - BinaryOperator[BinaryOperator["Lower"] = 11] = "Lower"; - BinaryOperator[BinaryOperator["LowerEquals"] = 12] = "LowerEquals"; - BinaryOperator[BinaryOperator["Bigger"] = 13] = "Bigger"; - BinaryOperator[BinaryOperator["BiggerEquals"] = 14] = "BiggerEquals"; -})(BinaryOperator || (BinaryOperator = {})); -var Expression = (function () { - function Expression(type) { - this.type = type; - } - Expression.prototype.prop = function (name) { return new ReadPropExpr(this, name); }; - Expression.prototype.key = function (index, type) { - if (type === void 0) { type = null; } - return new ReadKeyExpr(this, index, type); - }; - Expression.prototype.callMethod = function (name, params) { - return new InvokeMethodExpr(this, name, params); - }; - Expression.prototype.callFn = function (params) { return new InvokeFunctionExpr(this, params); }; - Expression.prototype.instantiate = function (params, type) { - if (type === void 0) { type = null; } - return new InstantiateExpr(this, params, type); - }; - Expression.prototype.conditional = function (trueCase, falseCase) { - if (falseCase === void 0) { falseCase = null; } - return new ConditionalExpr(this, trueCase, falseCase); - }; - Expression.prototype.equals = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs); - }; - Expression.prototype.notEquals = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs); - }; - Expression.prototype.identical = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs); - }; - Expression.prototype.notIdentical = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs); - }; - Expression.prototype.minus = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs); - }; - Expression.prototype.plus = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs); - }; - Expression.prototype.divide = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs); - }; - Expression.prototype.multiply = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs); - }; - Expression.prototype.modulo = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs); - }; - Expression.prototype.and = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.And, this, rhs); - }; - Expression.prototype.or = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs); - }; - Expression.prototype.lower = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs); - }; - Expression.prototype.lowerEquals = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs); - }; - Expression.prototype.bigger = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs); - }; - Expression.prototype.biggerEquals = function (rhs) { - return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs); - }; - Expression.prototype.isBlank = function () { - // Note: We use equals by purpose here to compare to null and undefined in JS. - // We use the typed null to allow strictNullChecks to narrow types. - return this.equals(TYPED_NULL_EXPR); - }; - Expression.prototype.cast = function (type) { return new CastExpr(this, type); }; - Expression.prototype.toStmt = function () { return new ExpressionStatement(this); }; - return Expression; -}()); -var BuiltinVar; -(function (BuiltinVar) { - BuiltinVar[BuiltinVar["This"] = 0] = "This"; - BuiltinVar[BuiltinVar["Super"] = 1] = "Super"; - BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError"; - BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack"; -})(BuiltinVar || (BuiltinVar = {})); -var ReadVarExpr = (function (_super) { - __extends(ReadVarExpr, _super); - function ReadVarExpr(name, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - if (typeof name === 'string') { - this.name = name; - this.builtin = null; - } - else { - this.name = null; - this.builtin = name; - } - } - ReadVarExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadVarExpr(this, context); - }; - ReadVarExpr.prototype.set = function (value) { return new WriteVarExpr(this.name, value); }; - return ReadVarExpr; -}(Expression)); -var WriteVarExpr = (function (_super) { - __extends(WriteVarExpr, _super); - function WriteVarExpr(name, value, type) { - if (type === void 0) { type = null; } - _super.call(this, type || value.type); - this.name = name; - this.value = value; - } - WriteVarExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWriteVarExpr(this, context); - }; - WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - return new DeclareVarStmt(this.name, this.value, type, modifiers); - }; - return WriteVarExpr; -}(Expression)); -var WriteKeyExpr = (function (_super) { - __extends(WriteKeyExpr, _super); - function WriteKeyExpr(receiver, index, value, type) { - if (type === void 0) { type = null; } - _super.call(this, type || value.type); - this.receiver = receiver; - this.index = index; - this.value = value; - } - WriteKeyExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWriteKeyExpr(this, context); - }; - return WriteKeyExpr; -}(Expression)); -var WritePropExpr = (function (_super) { - __extends(WritePropExpr, _super); - function WritePropExpr(receiver, name, value, type) { - if (type === void 0) { type = null; } - _super.call(this, type || value.type); - this.receiver = receiver; - this.name = name; - this.value = value; - } - WritePropExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitWritePropExpr(this, context); - }; - return WritePropExpr; -}(Expression)); -var BuiltinMethod; -(function (BuiltinMethod) { - BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray"; - BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable"; - BuiltinMethod[BuiltinMethod["Bind"] = 2] = "Bind"; -})(BuiltinMethod || (BuiltinMethod = {})); -var InvokeMethodExpr = (function (_super) { - __extends(InvokeMethodExpr, _super); - function InvokeMethodExpr(receiver, method, args, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.receiver = receiver; - this.args = args; - if (typeof method === 'string') { - this.name = method; - this.builtin = null; - } - else { - this.name = null; - this.builtin = method; - } - } - InvokeMethodExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInvokeMethodExpr(this, context); - }; - return InvokeMethodExpr; -}(Expression)); -var InvokeFunctionExpr = (function (_super) { - __extends(InvokeFunctionExpr, _super); - function InvokeFunctionExpr(fn, args, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.fn = fn; - this.args = args; - } - InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInvokeFunctionExpr(this, context); - }; - return InvokeFunctionExpr; -}(Expression)); -var InstantiateExpr = (function (_super) { - __extends(InstantiateExpr, _super); - function InstantiateExpr(classExpr, args, type) { - _super.call(this, type); - this.classExpr = classExpr; - this.args = args; - } - InstantiateExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitInstantiateExpr(this, context); - }; - return InstantiateExpr; -}(Expression)); -var LiteralExpr = (function (_super) { - __extends(LiteralExpr, _super); - function LiteralExpr(value, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.value = value; - } - LiteralExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralExpr(this, context); - }; - return LiteralExpr; -}(Expression)); -var ExternalExpr = (function (_super) { - __extends(ExternalExpr, _super); - function ExternalExpr(value, type, typeParams) { - if (type === void 0) { type = null; } - if (typeParams === void 0) { typeParams = null; } - _super.call(this, type); - this.value = value; - this.typeParams = typeParams; - } - ExternalExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitExternalExpr(this, context); - }; - return ExternalExpr; -}(Expression)); -var ConditionalExpr = (function (_super) { - __extends(ConditionalExpr, _super); - function ConditionalExpr(condition, trueCase, falseCase, type) { - if (falseCase === void 0) { falseCase = null; } - if (type === void 0) { type = null; } - _super.call(this, type || trueCase.type); - this.condition = condition; - this.falseCase = falseCase; - this.trueCase = trueCase; - } - ConditionalExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitConditionalExpr(this, context); - }; - return ConditionalExpr; -}(Expression)); -var NotExpr = (function (_super) { - __extends(NotExpr, _super); - function NotExpr(condition) { - _super.call(this, BOOL_TYPE); - this.condition = condition; - } - NotExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitNotExpr(this, context); - }; - return NotExpr; -}(Expression)); -var CastExpr = (function (_super) { - __extends(CastExpr, _super); - function CastExpr(value, type) { - _super.call(this, type); - this.value = value; - } - CastExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitCastExpr(this, context); - }; - return CastExpr; -}(Expression)); -var FnParam = (function () { - function FnParam(name, type) { - if (type === void 0) { type = null; } - this.name = name; - this.type = type; - } - return FnParam; -}()); -var FunctionExpr = (function (_super) { - __extends(FunctionExpr, _super); - function FunctionExpr(params, statements, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.params = params; - this.statements = statements; - } - FunctionExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitFunctionExpr(this, context); - }; - FunctionExpr.prototype.toDeclStmt = function (name, modifiers) { - if (modifiers === void 0) { modifiers = null; } - return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers); - }; - return FunctionExpr; -}(Expression)); -var BinaryOperatorExpr = (function (_super) { - __extends(BinaryOperatorExpr, _super); - function BinaryOperatorExpr(operator, lhs, rhs, type) { - if (type === void 0) { type = null; } - _super.call(this, type || lhs.type); - this.operator = operator; - this.rhs = rhs; - this.lhs = lhs; - } - BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitBinaryOperatorExpr(this, context); - }; - return BinaryOperatorExpr; -}(Expression)); -var ReadPropExpr = (function (_super) { - __extends(ReadPropExpr, _super); - function ReadPropExpr(receiver, name, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.receiver = receiver; - this.name = name; - } - ReadPropExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadPropExpr(this, context); - }; - ReadPropExpr.prototype.set = function (value) { - return new WritePropExpr(this.receiver, this.name, value); - }; - return ReadPropExpr; -}(Expression)); -var ReadKeyExpr = (function (_super) { - __extends(ReadKeyExpr, _super); - function ReadKeyExpr(receiver, index, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.receiver = receiver; - this.index = index; - } - ReadKeyExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitReadKeyExpr(this, context); - }; - ReadKeyExpr.prototype.set = function (value) { - return new WriteKeyExpr(this.receiver, this.index, value); - }; - return ReadKeyExpr; -}(Expression)); -var LiteralArrayExpr = (function (_super) { - __extends(LiteralArrayExpr, _super); - function LiteralArrayExpr(entries, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.entries = entries; - } - LiteralArrayExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralArrayExpr(this, context); - }; - return LiteralArrayExpr; -}(Expression)); -var LiteralMapExpr = (function (_super) { - __extends(LiteralMapExpr, _super); - function LiteralMapExpr(entries, type) { - if (type === void 0) { type = null; } - _super.call(this, type); - this.entries = entries; - this.valueType = null; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__facade_lang__["a" /* isPresent */])(type)) { - this.valueType = type.valueType; - } - } - LiteralMapExpr.prototype.visitExpression = function (visitor, context) { - return visitor.visitLiteralMapExpr(this, context); - }; - return LiteralMapExpr; -}(Expression)); -var THIS_EXPR = new ReadVarExpr(BuiltinVar.This); -var SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super); -var CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError); -var CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack); -var NULL_EXPR = new LiteralExpr(null, null); -var TYPED_NULL_EXPR = new LiteralExpr(null, NULL_TYPE); -//// Statements -var StmtModifier; -(function (StmtModifier) { - StmtModifier[StmtModifier["Final"] = 0] = "Final"; - StmtModifier[StmtModifier["Private"] = 1] = "Private"; -})(StmtModifier || (StmtModifier = {})); -var Statement = (function () { - function Statement(modifiers) { - if (modifiers === void 0) { modifiers = null; } - this.modifiers = modifiers; - if (!modifiers) { - this.modifiers = []; - } - } - Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return Statement; -}()); -var DeclareVarStmt = (function (_super) { - __extends(DeclareVarStmt, _super); - function DeclareVarStmt(name, value, type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.name = name; - this.value = value; - this.type = type || value.type; - } - DeclareVarStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareVarStmt(this, context); - }; - return DeclareVarStmt; -}(Statement)); -var DeclareFunctionStmt = (function (_super) { - __extends(DeclareFunctionStmt, _super); - function DeclareFunctionStmt(name, params, statements, type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.name = name; - this.params = params; - this.statements = statements; - this.type = type; - } - DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareFunctionStmt(this, context); - }; - return DeclareFunctionStmt; -}(Statement)); -var ExpressionStatement = (function (_super) { - __extends(ExpressionStatement, _super); - function ExpressionStatement(expr) { - _super.call(this); - this.expr = expr; - } - ExpressionStatement.prototype.visitStatement = function (visitor, context) { - return visitor.visitExpressionStmt(this, context); - }; - return ExpressionStatement; -}(Statement)); -var ReturnStatement = (function (_super) { - __extends(ReturnStatement, _super); - function ReturnStatement(value) { - _super.call(this); - this.value = value; - } - ReturnStatement.prototype.visitStatement = function (visitor, context) { - return visitor.visitReturnStmt(this, context); - }; - return ReturnStatement; -}(Statement)); -var AbstractClassPart = (function () { - function AbstractClassPart(type, modifiers) { - if (type === void 0) { type = null; } - this.type = type; - this.modifiers = modifiers; - if (!modifiers) { - this.modifiers = []; - } - } - AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; - return AbstractClassPart; -}()); -var ClassField = (function (_super) { - __extends(ClassField, _super); - function ClassField(name, type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, type, modifiers); - this.name = name; - } - return ClassField; -}(AbstractClassPart)); -var ClassMethod = (function (_super) { - __extends(ClassMethod, _super); - function ClassMethod(name, params, body, type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, type, modifiers); - this.name = name; - this.params = params; - this.body = body; - } - return ClassMethod; -}(AbstractClassPart)); -var ClassGetter = (function (_super) { - __extends(ClassGetter, _super); - function ClassGetter(name, body, type, modifiers) { - if (type === void 0) { type = null; } - if (modifiers === void 0) { modifiers = null; } - _super.call(this, type, modifiers); - this.name = name; - this.body = body; - } - return ClassGetter; -}(AbstractClassPart)); -var ClassStmt = (function (_super) { - __extends(ClassStmt, _super); - function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers) { - if (modifiers === void 0) { modifiers = null; } - _super.call(this, modifiers); - this.name = name; - this.parent = parent; - this.fields = fields; - this.getters = getters; - this.constructorMethod = constructorMethod; - this.methods = methods; - } - ClassStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitDeclareClassStmt(this, context); - }; - return ClassStmt; -}(Statement)); -var IfStmt = (function (_super) { - __extends(IfStmt, _super); - function IfStmt(condition, trueCase, falseCase) { - if (falseCase === void 0) { falseCase = []; } - _super.call(this); - this.condition = condition; - this.trueCase = trueCase; - this.falseCase = falseCase; - } - IfStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitIfStmt(this, context); - }; - return IfStmt; -}(Statement)); -var CommentStmt = (function (_super) { - __extends(CommentStmt, _super); - function CommentStmt(comment) { - _super.call(this); - this.comment = comment; - } - CommentStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitCommentStmt(this, context); - }; - return CommentStmt; -}(Statement)); -var TryCatchStmt = (function (_super) { - __extends(TryCatchStmt, _super); - function TryCatchStmt(bodyStmts, catchStmts) { - _super.call(this); - this.bodyStmts = bodyStmts; - this.catchStmts = catchStmts; - } - TryCatchStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitTryCatchStmt(this, context); - }; - return TryCatchStmt; -}(Statement)); -var ThrowStmt = (function (_super) { - __extends(ThrowStmt, _super); - function ThrowStmt(error) { - _super.call(this); - this.error = error; - } - ThrowStmt.prototype.visitStatement = function (visitor, context) { - return visitor.visitThrowStmt(this, context); - }; - return ThrowStmt; -}(Statement)); -var ExpressionTransformer = (function () { - function ExpressionTransformer() { - } - ExpressionTransformer.prototype.visitReadVarExpr = function (ast, context) { return ast; }; - ExpressionTransformer.prototype.visitWriteVarExpr = function (expr, context) { - return new WriteVarExpr(expr.name, expr.value.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitWriteKeyExpr = function (expr, context) { - return new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitWritePropExpr = function (expr, context) { - return new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitInvokeMethodExpr = function (ast, context) { - var method = ast.builtin || ast.name; - return new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type); - }; - ExpressionTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) { - return new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type); - }; - ExpressionTransformer.prototype.visitInstantiateExpr = function (ast, context) { - return new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type); - }; - ExpressionTransformer.prototype.visitLiteralExpr = function (ast, context) { return ast; }; - ExpressionTransformer.prototype.visitExternalExpr = function (ast, context) { return ast; }; - ExpressionTransformer.prototype.visitConditionalExpr = function (ast, context) { - return new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitNotExpr = function (ast, context) { - return new NotExpr(ast.condition.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitCastExpr = function (ast, context) { - return new CastExpr(ast.value.visitExpression(this, context), context); - }; - ExpressionTransformer.prototype.visitFunctionExpr = function (ast, context) { - // Don't descend into nested functions - return ast; - }; - ExpressionTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) { - return new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type); - }; - ExpressionTransformer.prototype.visitReadPropExpr = function (ast, context) { - return new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type); - }; - ExpressionTransformer.prototype.visitReadKeyExpr = function (ast, context) { - return new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type); - }; - ExpressionTransformer.prototype.visitLiteralArrayExpr = function (ast, context) { - return new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context)); - }; - ExpressionTransformer.prototype.visitLiteralMapExpr = function (ast, context) { - var _this = this; - var entries = ast.entries.map(function (entry) { return [entry[0], entry[1].visitExpression(_this, context),]; }); - return new LiteralMapExpr(entries); - }; - ExpressionTransformer.prototype.visitAllExpressions = function (exprs, context) { - var _this = this; - return exprs.map(function (expr) { return expr.visitExpression(_this, context); }); - }; - ExpressionTransformer.prototype.visitDeclareVarStmt = function (stmt, context) { - return new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers); - }; - ExpressionTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) { - // Don't descend into nested functions - return stmt; - }; - ExpressionTransformer.prototype.visitExpressionStmt = function (stmt, context) { - return new ExpressionStatement(stmt.expr.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitReturnStmt = function (stmt, context) { - return new ReturnStatement(stmt.value.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitDeclareClassStmt = function (stmt, context) { - // Don't descend into nested functions - return stmt; - }; - ExpressionTransformer.prototype.visitIfStmt = function (stmt, context) { - return new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context)); - }; - ExpressionTransformer.prototype.visitTryCatchStmt = function (stmt, context) { - return new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context)); - }; - ExpressionTransformer.prototype.visitThrowStmt = function (stmt, context) { - return new ThrowStmt(stmt.error.visitExpression(this, context)); - }; - ExpressionTransformer.prototype.visitCommentStmt = function (stmt, context) { return stmt; }; - ExpressionTransformer.prototype.visitAllStatements = function (stmts, context) { - var _this = this; - return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); }); - }; - return ExpressionTransformer; -}()); -var RecursiveExpressionVisitor = (function () { - function RecursiveExpressionVisitor() { - } - RecursiveExpressionVisitor.prototype.visitReadVarExpr = function (ast, context) { return ast; }; - RecursiveExpressionVisitor.prototype.visitWriteVarExpr = function (expr, context) { - expr.value.visitExpression(this, context); - return expr; - }; - RecursiveExpressionVisitor.prototype.visitWriteKeyExpr = function (expr, context) { - expr.receiver.visitExpression(this, context); - expr.index.visitExpression(this, context); - expr.value.visitExpression(this, context); - return expr; - }; - RecursiveExpressionVisitor.prototype.visitWritePropExpr = function (expr, context) { - expr.receiver.visitExpression(this, context); - expr.value.visitExpression(this, context); - return expr; - }; - RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) { - ast.fn.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitInstantiateExpr = function (ast, context) { - ast.classExpr.visitExpression(this, context); - this.visitAllExpressions(ast.args, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitLiteralExpr = function (ast, context) { return ast; }; - RecursiveExpressionVisitor.prototype.visitExternalExpr = function (ast, context) { return ast; }; - RecursiveExpressionVisitor.prototype.visitConditionalExpr = function (ast, context) { - ast.condition.visitExpression(this, context); - ast.trueCase.visitExpression(this, context); - ast.falseCase.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitNotExpr = function (ast, context) { - ast.condition.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitCastExpr = function (ast, context) { - ast.value.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitFunctionExpr = function (ast, context) { return ast; }; - RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) { - ast.lhs.visitExpression(this, context); - ast.rhs.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitReadPropExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitReadKeyExpr = function (ast, context) { - ast.receiver.visitExpression(this, context); - ast.index.visitExpression(this, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr = function (ast, context) { - this.visitAllExpressions(ast.entries, context); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitLiteralMapExpr = function (ast, context) { - var _this = this; - ast.entries.forEach(function (entry) { return entry[1].visitExpression(_this, context); }); - return ast; - }; - RecursiveExpressionVisitor.prototype.visitAllExpressions = function (exprs, context) { - var _this = this; - exprs.forEach(function (expr) { return expr.visitExpression(_this, context); }); - }; - RecursiveExpressionVisitor.prototype.visitDeclareVarStmt = function (stmt, context) { - stmt.value.visitExpression(this, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { - // Don't descend into nested functions - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitExpressionStmt = function (stmt, context) { - stmt.expr.visitExpression(this, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitReturnStmt = function (stmt, context) { - stmt.value.visitExpression(this, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitDeclareClassStmt = function (stmt, context) { - // Don't descend into nested functions - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitIfStmt = function (stmt, context) { - stmt.condition.visitExpression(this, context); - this.visitAllStatements(stmt.trueCase, context); - this.visitAllStatements(stmt.falseCase, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitTryCatchStmt = function (stmt, context) { - this.visitAllStatements(stmt.bodyStmts, context); - this.visitAllStatements(stmt.catchStmts, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitThrowStmt = function (stmt, context) { - stmt.error.visitExpression(this, context); - return stmt; - }; - RecursiveExpressionVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; }; - RecursiveExpressionVisitor.prototype.visitAllStatements = function (stmts, context) { - var _this = this; - stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); }); - }; - return RecursiveExpressionVisitor; -}()); -function replaceVarInExpression(varName, newValue, expression) { - var transformer = new _ReplaceVariableTransformer(varName, newValue); - return expression.visitExpression(transformer, null); -} -var _ReplaceVariableTransformer = (function (_super) { - __extends(_ReplaceVariableTransformer, _super); - function _ReplaceVariableTransformer(_varName, _newValue) { - _super.call(this); - this._varName = _varName; - this._newValue = _newValue; - } - _ReplaceVariableTransformer.prototype.visitReadVarExpr = function (ast, context) { - return ast.name == this._varName ? this._newValue : ast; - }; - return _ReplaceVariableTransformer; -}(ExpressionTransformer)); -function findReadVarNames(stmts) { - var finder = new _VariableFinder(); - finder.visitAllStatements(stmts, null); - return finder.varNames; -} -var _VariableFinder = (function (_super) { - __extends(_VariableFinder, _super); - function _VariableFinder() { - _super.apply(this, arguments); - this.varNames = new Set(); - } - _VariableFinder.prototype.visitReadVarExpr = function (ast, context) { - this.varNames.add(ast.name); - return null; - }; - return _VariableFinder; -}(RecursiveExpressionVisitor)); -function variable(name, type) { - if (type === void 0) { type = null; } - return new ReadVarExpr(name, type); -} -function importExpr(id, typeParams) { - if (typeParams === void 0) { typeParams = null; } - return new ExternalExpr(id, null, typeParams); -} -function importType(id, typeParams, typeModifiers) { - if (typeParams === void 0) { typeParams = null; } - if (typeModifiers === void 0) { typeModifiers = null; } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__facade_lang__["a" /* isPresent */])(id) ? new ExternalType(id, typeParams, typeModifiers) : null; -} -function literalArr(values, type) { - if (type === void 0) { type = null; } - return new LiteralArrayExpr(values, type); -} -function literalMap(values, type) { - if (type === void 0) { type = null; } - return new LiteralMapExpr(values, type); -} -function not(expr) { - return new NotExpr(expr); -} -function fn(params, body, type) { - if (type === void 0) { type = null; } - return new FunctionExpr(params, body, type); -} -function literal(value, type) { - if (type === void 0) { type = null; } - return new LiteralExpr(value, type); -} -//# sourceMappingURL=output_ast.js.map - -/***/ }), -/* 9 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_util__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__nav_params__ = __webpack_require__(34); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ViewController; }); -/* harmony export (immutable) */ __webpack_exports__["b"] = isViewController; - - - -/** - * @name ViewController - * @description - * Access various features and information about the current view. - * @usage - * ```ts - * import { Component } from '@angular/core'; - * import { ViewController } from 'ionic-angular'; - * - * @Component({...}) - * export class MyPage{ - * - * constructor(public viewCtrl: ViewController) {} - * - * } - * ``` - */ -var ViewController = (function () { - function ViewController(component, data, rootCssClass) { - if (rootCssClass === void 0) { rootCssClass = DEFAULT_CSS_CLASS; } - this.component = component; - this._isHidden = false; - /** - * Observable to be subscribed to when the current component will become active - * @returns {Observable} Returns an observable - */ - this.willEnter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable to be subscribed to when the current component has become active - * @returns {Observable} Returns an observable - */ - this.didEnter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable to be subscribed to when the current component will no longer be active - * @returns {Observable} Returns an observable - */ - this.willLeave = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable to be subscribed to when the current component is no long active - * @returns {Observable} Returns an observable - */ - this.didLeave = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable to be subscribed to when the current component has been destroyed - * @returns {Observable} Returns an observable - */ - this.willUnload = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * @private - */ - this.readReady = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * @private - */ - this.writeReady = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** @private */ - this.isOverlay = false; - /** @private */ - this._emitter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - // passed in data could be NavParams, but all we care about is its data object - this.data = (data instanceof __WEBPACK_IMPORTED_MODULE_2__nav_params__["a" /* NavParams */] ? data.data : (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_util__["a" /* isPresent */])(data) ? data : {})); - this._cssClass = rootCssClass; - } - /** - * @private - */ - ViewController.prototype.init = function (componentRef) { - this._cmp = componentRef; - this.instance = this.instance || componentRef.instance; - this._detached = false; - }; - ViewController.prototype._setNav = function (navCtrl) { - this._nav = navCtrl; - }; - ViewController.prototype._setInstance = function (instance) { - this.instance = instance; - }; - /** - * @private - */ - ViewController.prototype.subscribe = function (generatorOrNext) { - return this._emitter.subscribe(generatorOrNext); - }; - /** - * @private - */ - ViewController.prototype.emit = function (data) { - this._emitter.emit(data); - }; - /** - * Called when the current viewController has be successfully dismissed - */ - ViewController.prototype.onDidDismiss = function (callback) { - this._onDidDismiss = callback; - }; - /** - * Called when the current viewController will be dismissed - */ - ViewController.prototype.onWillDismiss = function (callback) { - this._onWillDismiss = callback; - }; - /** - * Dismiss the current viewController - * @param {any} [data] Data that you want to return when the viewController is dismissed. - * @param {any} [role ] - * @param {NavOptions} NavOptions Options for the dismiss navigation. - * @returns {any} data Returns the data passed in, if any. - */ - ViewController.prototype.dismiss = function (data, role, navOptions) { - if (navOptions === void 0) { navOptions = {}; } - if (!this._nav) { - return Promise.resolve(false); - } - if (this.isOverlay && !navOptions.minClickBlockDuration) { - // This is a Modal being dismissed so we need - // to add the minClickBlockDuration option - // for UIWebView - navOptions.minClickBlockDuration = 400; - } - this._dismissData = data; - this._dismissRole = role; - var options = Object.assign({}, this._leavingOpts, navOptions); - return this._nav.removeView(this, options).then(function () { return data; }); - }; - /** - * @private - */ - ViewController.prototype.getNav = function () { - return this._nav; - }; - /** - * @private - */ - ViewController.prototype.getTransitionName = function (direction) { - return this._nav && this._nav.config.get('pageTransition'); - }; - /** - * @private - */ - ViewController.prototype.getNavParams = function () { - return new __WEBPACK_IMPORTED_MODULE_2__nav_params__["a" /* NavParams */](this.data); - }; - /** - * @private - */ - ViewController.prototype.setLeavingOpts = function (opts) { - this._leavingOpts = opts; - }; - /** - * Check to see if you can go back in the navigation stack. - * @returns {boolean} Returns if it's possible to go back from this Page. - */ - ViewController.prototype.enableBack = function () { - // update if it's possible to go back from this nav item - if (!this._nav) { - return false; - } - // the previous view may exist, but if it's about to be destroyed - // it shouldn't be able to go back to - var previousItem = this._nav.getPrevious(this); - return !!(previousItem); - }; - Object.defineProperty(ViewController.prototype, "name", { - /** - * @private - */ - get: function () { - return this.component ? this.component.name : ''; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ViewController.prototype, "index", { - /** - * Get the index of the current component in the current navigation stack. - * @returns {number} Returns the index of this page within its `NavController`. - */ - get: function () { - return (this._nav ? this._nav.indexOf(this) : -1); - }, - enumerable: true, - configurable: true - }); - /** - * @returns {boolean} Returns if this Page is the first in the stack of pages within its NavController. - */ - ViewController.prototype.isFirst = function () { - return (this._nav ? this._nav.first() === this : false); - }; - /** - * @returns {boolean} Returns if this Page is the last in the stack of pages within its NavController. - */ - ViewController.prototype.isLast = function () { - return (this._nav ? this._nav.last() === this : false); - }; - /** - * @private - * DOM WRITE - */ - ViewController.prototype._domShow = function (shouldShow, renderer) { - // using hidden element attribute to display:none and not render views - // _hidden value of '' means the hidden attribute will be added - // _hidden value of null means the hidden attribute will be removed - // doing checks to make sure we only update the DOM when actually needed - if (this._cmp) { - // if it should render, then the hidden attribute should not be on the element - if (shouldShow === this._isHidden) { - this._isHidden = !shouldShow; - var value = (shouldShow ? null : ''); - // ******** DOM WRITE **************** - renderer.setElementAttribute(this.pageRef().nativeElement, 'hidden', value); - } - } - }; - /** - * @private - */ - ViewController.prototype.getZIndex = function () { - return this._zIndex; - }; - /** - * @private - * DOM WRITE - */ - ViewController.prototype._setZIndex = function (zIndex, renderer) { - if (zIndex !== this._zIndex) { - this._zIndex = zIndex; - var pageRef = this.pageRef(); - if (pageRef) { - // ******** DOM WRITE **************** - renderer.setElementStyle(pageRef.nativeElement, 'z-index', zIndex); - } - } - }; - /** - * @returns {ElementRef} Returns the Page's ElementRef. - */ - ViewController.prototype.pageRef = function () { - return this._cmp && this._cmp.location; - }; - ViewController.prototype._setContent = function (directive) { - this._cntDir = directive; - }; - /** - * @returns {component} Returns the Page's Content component reference. - */ - ViewController.prototype.getContent = function () { - return this._cntDir; - }; - ViewController.prototype._setContentRef = function (elementRef) { - this._cntRef = elementRef; - }; - /** - * @returns {ElementRef} Returns the Content's ElementRef. - */ - ViewController.prototype.contentRef = function () { - return this._cntRef; - }; - ViewController.prototype._setIONContent = function (content) { - this._setContent(content); - this._ionCntDir = content; - }; - /** - * @private - */ - ViewController.prototype.getIONContent = function () { - return this._ionCntDir; - }; - ViewController.prototype._setIONContentRef = function (elementRef) { - this._setContentRef(elementRef); - this._ionCntRef = elementRef; - }; - /** - * @private - */ - ViewController.prototype.getIONContentRef = function () { - return this._ionCntRef; - }; - ViewController.prototype._setHeader = function (directive) { - this._hdrDir = directive; - }; - /** - * @private - */ - ViewController.prototype.getHeader = function () { - return this._hdrDir; - }; - ViewController.prototype._setFooter = function (directive) { - this._ftrDir = directive; - }; - /** - * @private - */ - ViewController.prototype.getFooter = function () { - return this._ftrDir; - }; - ViewController.prototype._setNavbar = function (directive) { - this._nb = directive; - }; - /** - * @private - */ - ViewController.prototype.getNavbar = function () { - return this._nb; - }; - /** - * Find out if the current component has a NavBar or not. Be sure - * to wrap this in an `ionViewWillEnter` method in order to make sure - * the view has rendered fully. - * @returns {boolean} Returns a boolean if this Page has a navbar or not. - */ - ViewController.prototype.hasNavbar = function () { - return !!this._nb; - }; - /** - * Change the title of the back-button. Be sure to call this - * after `ionViewWillEnter` to make sure the DOM has been rendered. - * @param {string} backButtonText Set the back button text. - */ - ViewController.prototype.setBackButtonText = function (val) { - this._nb && this._nb.setBackButtonText(val); - }; - /** - * Set if the back button for the current view is visible or not. Be sure to call this - * after `ionViewWillEnter` to make sure the DOM has been rendered. - * @param {boolean} Set if this Page's back button should show or not. - */ - ViewController.prototype.showBackButton = function (shouldShow) { - if (this._nb) { - this._nb.hideBackButton = !shouldShow; - } - }; - ViewController.prototype._preLoad = function () { - this._lifecycle('PreLoad'); - }; - /** - * @private - * The view has loaded. This event only happens once per view will be created. - * This event is fired before the component and his children have been initialized. - */ - ViewController.prototype._willLoad = function () { - this._lifecycle('WillLoad'); - }; - /** - * @private - * The view has loaded. This event only happens once per view being - * created. If a view leaves but is cached, then this will not - * fire again on a subsequent viewing. This method is a good place - * to put your setup code for the view; however, it is not the - * recommended method to use when a view becomes active. - */ - ViewController.prototype._didLoad = function () { - this._lifecycle('DidLoad'); - }; - /** - * @private - * The view is about to enter and become the active view. - */ - ViewController.prototype._willEnter = function () { - if (this._detached && this._cmp) { - // ensure this has been re-attached to the change detector - this._cmp.changeDetectorRef.reattach(); - this._detached = false; - } - this.willEnter.emit(null); - this._lifecycle('WillEnter'); - }; - /** - * @private - * The view has fully entered and is now the active view. This - * will fire, whether it was the first load or loaded from the cache. - */ - ViewController.prototype._didEnter = function () { - this._nb && this._nb.didEnter(); - this.didEnter.emit(null); - this._lifecycle('DidEnter'); - }; - /** - * @private - * The view is about to leave and no longer be the active view. - */ - ViewController.prototype._willLeave = function (willUnload) { - this.willLeave.emit(null); - this._lifecycle('WillLeave'); - if (willUnload && this._onWillDismiss) { - this._onWillDismiss(this._dismissData, this._dismissRole); - this._onWillDismiss = null; - } - }; - /** - * @private - * The view has finished leaving and is no longer the active view. This - * will fire, whether it is cached or unloaded. - */ - ViewController.prototype._didLeave = function () { - this.didLeave.emit(null); - this._lifecycle('DidLeave'); - // when this is not the active page - // we no longer need to detect changes - if (!this._detached && this._cmp) { - this._cmp.changeDetectorRef.detach(); - this._detached = true; - } - }; - /** - * @private - */ - ViewController.prototype._willUnload = function () { - this.willUnload.emit(null); - this._lifecycle('WillUnload'); - this._onDidDismiss && this._onDidDismiss(this._dismissData, this._dismissRole); - this._onDidDismiss = null; - this._dismissData = null; - this._dismissRole = null; - }; - /** - * @private - * DOM WRITE - */ - ViewController.prototype._destroy = function (renderer) { - if (this._cmp) { - if (renderer) { - // ensure the element is cleaned up for when the view pool reuses this element - // ******** DOM WRITE **************** - var cmpEle = this._cmp.location.nativeElement; - renderer.setElementAttribute(cmpEle, 'class', null); - renderer.setElementAttribute(cmpEle, 'style', null); - } - // completely destroy this component. boom. - this._cmp.destroy(); - } - this._nav = this._cmp = this.instance = this._cntDir = this._cntRef = this._hdrDir = this._ftrDir = this._nb = this._onDidDismiss = this._onWillDismiss = null; - }; - /** - * @private - */ - ViewController.prototype._lifecycleTest = function (lifecycle) { - var instance = this.instance; - var methodName = 'ionViewCan' + lifecycle; - if (instance && instance[methodName]) { - try { - var result = instance[methodName](); - if (result === false) { - return false; - } - else if (result instanceof Promise) { - return result; - } - else { - return true; - } - } - catch (e) { - console.error(this.name + " " + methodName + " error: " + e.message); - return false; - } - } - return true; - }; - ViewController.prototype._lifecycle = function (lifecycle) { - var instance = this.instance; - var methodName = 'ionView' + lifecycle; - if (instance && instance[methodName]) { - try { - instance[methodName](); - } - catch (e) { - console.error(this.name + " " + methodName + " error: " + e.message); - } - } - }; - ViewController.propDecorators = { - '_emitter': [{ type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"] },], - }; - return ViewController; -}()); -function isViewController(viewCtrl) { - return !!(viewCtrl && viewCtrl._didLoad && viewCtrl._willUnload); -} -var DEFAULT_CSS_CLASS = 'ion-page'; -//# sourceMappingURL=view-controller.js.map - -/***/ }), -/* 10 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__ = __webpack_require__(80); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config_config__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__ = __webpack_require__(65); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__platform_platform__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__menu_menu_controller__ = __webpack_require__(55); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return App; }); - - - - - - -/** - * @name App - * @description - * App is a utility class used in Ionic to get information about various aspects of an app - */ -var App = (function () { - function App(_config, _plt, _menuCtrl) { - this._config = _config; - this._plt = _plt; - this._menuCtrl = _menuCtrl; - this._disTime = 0; - this._scrollTime = 0; - this._title = ''; - this._titleSrv = new __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__["e" /* Title */](); - this._rootNav = null; - /** - * Observable that emits whenever a view loads in the app. - * @returns {Observable} Returns an observable - */ - this.viewDidLoad = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable that emits before any view is entered in the app. - * @returns {Observable} Returns an observable - */ - this.viewWillEnter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable that emits after any view is entered in the app. - * @returns {Observable} Returns an observable - */ - this.viewDidEnter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable that emits before any view is exited in the app. - * @returns {Observable} Returns an observable - */ - this.viewWillLeave = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable that emits after any view is exited in the app. - * @returns {Observable} Returns an observable - */ - this.viewDidLeave = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - /** - * Observable that emits before any view unloads in the app. - * @returns {Observable} Returns an observable - */ - this.viewWillUnload = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - // listen for hardware back button events - // register this back button action with a default priority - _plt.registerBackButtonAction(this.goBack.bind(this)); - this._disableScrollAssist = _config.getBoolean('disableScrollAssist', false); - (void 0) /* runInDev */; - } - /** - * Sets the document title. - * @param {string} val Value to set the document title to. - */ - App.prototype.setTitle = function (val) { - if (val !== this._title) { - this._title = val; - this._titleSrv.setTitle(val); - } - }; - /** - * @private - */ - App.prototype.setElementClass = function (className, isAdd) { - this._appRoot.setElementClass(className, isAdd); - }; - /** - * @private - * Sets if the app is currently enabled or not, meaning if it's - * available to accept new user commands. For example, this is set to `false` - * while views transition, a modal slides up, an action-sheet - * slides up, etc. After the transition completes it is set back to `true`. - * @param {boolean} isEnabled `true` for enabled, `false` for disabled - * @param {number} duration When `isEnabled` is set to `false`, this argument - * is used to set the maximum number of milliseconds that app will wait until - * it will automatically enable the app again. It's basically a fallback incase - * something goes wrong during a transition and the app wasn't re-enabled correctly. - */ - App.prototype.setEnabled = function (isEnabled, duration, minDuration) { - if (duration === void 0) { duration = 700; } - if (minDuration === void 0) { minDuration = 0; } - this._disTime = (isEnabled ? 0 : Date.now() + duration); - if (this._clickBlock) { - if (isEnabled) { - // disable the click block if it's enabled, or the duration is tiny - this._clickBlock.activate(false, CLICK_BLOCK_BUFFER_IN_MILLIS, minDuration); - } - else { - // show the click block for duration + some number - this._clickBlock.activate(true, duration + CLICK_BLOCK_BUFFER_IN_MILLIS, minDuration); - } - } - }; - /** - * @private - * Toggles whether an application can be scrolled - * @param {boolean} disableScroll when set to `false`, the application's - * scrolling is enabled. When set to `true`, scrolling is disabled. - */ - App.prototype._setDisableScroll = function (disableScroll) { - if (this._disableScrollAssist) { - this._appRoot._disableScroll(disableScroll); - } - }; - /** - * @private - * Boolean if the app is actively enabled or not. - * @return {boolean} - */ - App.prototype.isEnabled = function () { - var disTime = this._disTime; - if (disTime === 0) { - return true; - } - return (disTime < Date.now()); - }; - /** - * @private - */ - App.prototype.setScrolling = function () { - this._scrollTime = Date.now() + ACTIVE_SCROLLING_TIME; - }; - /** - * Boolean if the app is actively scrolling or not. - * @return {boolean} returns true or false - */ - App.prototype.isScrolling = function () { - var scrollTime = this._scrollTime; - if (scrollTime === 0) { - return false; - } - if (scrollTime < Date.now()) { - this._scrollTime = 0; - return false; - } - return true; - }; - /** - * @return {NavController} Returns the active NavController. Using this method is preferred when we need access to the top-level navigation controller while on the outside views and handlers like `registerBackButtonAction()` - */ - App.prototype.getActiveNav = function () { - var portal = this._appRoot._getPortal(MODAL); - if (portal.length() > 0) { - return findTopNav(portal); - } - return findTopNav(this._rootNav || null); - }; - /** - * @return {NavController} Returns the root NavController - */ - App.prototype.getRootNav = function () { - return this._rootNav; - }; - /** - * @private - */ - App.prototype._setRootNav = function (nav) { - this._rootNav = nav; - }; - /** - * @private - */ - App.prototype.present = function (enteringView, opts, appPortal) { - var portal = this._appRoot._getPortal(appPortal); - enteringView._setNav(portal); - opts.keyboardClose = false; - opts.direction = __WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__["g" /* DIRECTION_FORWARD */]; - if (!opts.animation) { - opts.animation = enteringView.getTransitionName(__WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__["g" /* DIRECTION_FORWARD */]); - } - enteringView.setLeavingOpts({ - keyboardClose: false, - direction: __WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__["f" /* DIRECTION_BACK */], - animation: enteringView.getTransitionName(__WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__["f" /* DIRECTION_BACK */]), - ev: opts.ev - }); - return portal.insertPages(-1, [enteringView], opts); - }; - /** - * @private - */ - App.prototype.goBack = function () { - if (this._menuCtrl && this._menuCtrl.isOpen()) { - return this._menuCtrl.close(); - } - var navPromise = this.navPop(); - if (navPromise === null) { - // no views to go back to - // let's exit the app - if (this._config.getBoolean('navExitApp', true)) { - (void 0) /* console.debug */; - this._plt.exitApp(); - } - } - return navPromise; - }; - /** - * @private - */ - App.prototype.navPop = function () { - if (!this._rootNav || !this.isEnabled()) { - return Promise.resolve(); - } - // If there are any alert/actionsheet open, let's do nothing - var portal = this._appRoot._getPortal(DEFAULT); - if (portal.length() > 0) { - return Promise.resolve(); - } - // next get the active nav, check itself and climb up all - // of its parent navs until it finds a nav that can pop - return recursivePop(this.getActiveNav()); - }; - App.decorators = [ - { type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"] }, - ]; - /** @nocollapse */ - App.ctorParameters = [ - { type: __WEBPACK_IMPORTED_MODULE_2__config_config__["b" /* Config */], }, - { type: __WEBPACK_IMPORTED_MODULE_4__platform_platform__["a" /* Platform */], }, - { type: __WEBPACK_IMPORTED_MODULE_5__menu_menu_controller__["a" /* MenuController */], decorators: [{ type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Optional"] },] }, - ]; - return App; -}()); -function recursivePop(nav) { - if (!nav) { - return null; - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__navigation_nav_util__["j" /* isNav */])(nav)) { - var len = nav.length(); - if (len > 1 || (nav._isPortal && len > 0)) { - // this nav controller has more than one view - // pop the current view on this nav and we're done here - (void 0) /* console.debug */; - return nav.pop(); - } - } - // try again using the parent nav (if there is one) - return recursivePop(nav.parent); -} -function findTopNav(nav) { - var activeChildNav; - while (nav) { - activeChildNav = nav.getActiveChildNav(); - if (!activeChildNav) { - break; - } - nav = activeChildNav; - } - return nav; -} -var DEFAULT = 0; // AppPortal.DEFAULT -var MODAL = 1; // AppPortal.MODAL -var ACTIVE_SCROLLING_TIME = 100; -var CLICK_BLOCK_BUFFER_IN_MILLIS = 64; -//# sourceMappingURL=app.js.map - -/***/ }), -/* 11 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_app_app__ = __webpack_require__(10); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return GESTURE_GO_BACK_SWIPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GESTURE_MENU_SWIPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return GESTURE_ITEM_SWIPE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return GESTURE_REFRESHER; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return GESTURE_TOGGLE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return BLOCK_ALL; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GestureController; }); -/* unused harmony export GestureDelegate */ -/* unused harmony export BlockerDelegate */ - - -/** @private */ -var GESTURE_GO_BACK_SWIPE = 'goback-swipe'; -/** @private */ -var GESTURE_MENU_SWIPE = 'menu-swipe'; -/** @private */ -var GESTURE_ITEM_SWIPE = 'item-swipe'; -/** @private */ -var GESTURE_REFRESHER = 'refresher'; -/** @private */ -var GESTURE_TOGGLE = 'toggle'; -/** -* @private -*/ -var BLOCK_ALL = { - disable: [GESTURE_MENU_SWIPE, GESTURE_GO_BACK_SWIPE], - disableScroll: true -}; -/** -* @private -*/ -var GestureController = (function () { - function GestureController(_app) { - this._app = _app; - this.id = 1; - this.requestedStart = {}; - this.disabledGestures = {}; - this.disabledScroll = new Set(); - this.capturedID = null; - } - GestureController.prototype.createGesture = function (opts) { - if (!opts.name) { - throw new Error('name is undefined'); - } - return new GestureDelegate(opts.name, this.newID(), this, opts.priority || 0, !!opts.disableScroll); - }; - GestureController.prototype.createBlocker = function (opts) { - if (opts === void 0) { opts = {}; } - return new BlockerDelegate(this.newID(), this, opts.disable, !!opts.disableScroll); - }; - GestureController.prototype.newID = function () { - var id = this.id; - this.id++; - return id; - }; - GestureController.prototype.start = function (gestureName, id, priority) { - if (!this.canStart(gestureName)) { - delete this.requestedStart[id]; - return false; - } - this.requestedStart[id] = priority; - return true; - }; - GestureController.prototype.capture = function (gestureName, id, priority) { - if (!this.start(gestureName, id, priority)) { - return false; - } - var requestedStart = this.requestedStart; - var maxPriority = -10000 /* Minimun */; - for (var gestureID in requestedStart) { - maxPriority = Math.max(maxPriority, requestedStart[gestureID]); - } - if (maxPriority === priority) { - this.capturedID = id; - this.requestedStart = {}; - (void 0) /* console.debug */; - return true; - } - delete requestedStart[id]; - (void 0) /* console.debug */; - return false; - }; - GestureController.prototype.release = function (id) { - delete this.requestedStart[id]; - if (this.capturedID && id === this.capturedID) { - this.capturedID = null; - } - }; - GestureController.prototype.disableGesture = function (gestureName, id) { - var set = this.disabledGestures[gestureName]; - if (!set) { - set = new Set(); - this.disabledGestures[gestureName] = set; - } - set.add(id); - }; - GestureController.prototype.enableGesture = function (gestureName, id) { - var set = this.disabledGestures[gestureName]; - if (set) { - set.delete(id); - } - }; - GestureController.prototype.disableScroll = function (id) { - var isEnabled = !this.isScrollDisabled(); - this.disabledScroll.add(id); - if (this._app && isEnabled && this.isScrollDisabled()) { - (void 0) /* console.debug */; - this._app._setDisableScroll(true); - } - }; - GestureController.prototype.enableScroll = function (id) { - var isDisabled = this.isScrollDisabled(); - this.disabledScroll.delete(id); - if (this._app && isDisabled && !this.isScrollDisabled()) { - (void 0) /* console.debug */; - this._app._setDisableScroll(false); - } - }; - GestureController.prototype.canStart = function (gestureName) { - if (this.capturedID) { - (void 0) /* console.debug */; - // a gesture already captured - return false; - } - if (this.isDisabled(gestureName)) { - (void 0) /* console.debug */; - return false; - } - return true; - }; - GestureController.prototype.isCaptured = function () { - return !!this.capturedID; - }; - GestureController.prototype.isScrollDisabled = function () { - return this.disabledScroll.size > 0; - }; - GestureController.prototype.isDisabled = function (gestureName) { - var disabled = this.disabledGestures[gestureName]; - if (disabled && disabled.size > 0) { - return true; - } - return false; - }; - GestureController.decorators = [ - { type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"] }, - ]; - /** @nocollapse */ - GestureController.ctorParameters = [ - { type: __WEBPACK_IMPORTED_MODULE_1__components_app_app__["a" /* App */], decorators: [{ type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Inject"], args: [__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["forwardRef"])(function () { return __WEBPACK_IMPORTED_MODULE_1__components_app_app__["a" /* App */]; }),] },] }, - ]; - return GestureController; -}()); -/** -* @private -*/ -var GestureDelegate = (function () { - function GestureDelegate(name, id, controller, priority, disableScroll) { - this.name = name; - this.id = id; - this.controller = controller; - this.priority = priority; - this.disableScroll = disableScroll; - } - GestureDelegate.prototype.canStart = function () { - if (!this.controller) { - (void 0) /* assert */; - return false; - } - return this.controller.canStart(this.name); - }; - GestureDelegate.prototype.start = function () { - if (!this.controller) { - (void 0) /* assert */; - return false; - } - return this.controller.start(this.name, this.id, this.priority); - }; - GestureDelegate.prototype.capture = function () { - if (!this.controller) { - (void 0) /* assert */; - return false; - } - var captured = this.controller.capture(this.name, this.id, this.priority); - if (captured && this.disableScroll) { - this.controller.disableScroll(this.id); - } - return captured; - }; - GestureDelegate.prototype.release = function () { - if (!this.controller) { - (void 0) /* assert */; - return; - } - this.controller.release(this.id); - if (this.disableScroll) { - this.controller.enableScroll(this.id); - } - }; - GestureDelegate.prototype.destroy = function () { - this.release(); - this.controller = null; - }; - return GestureDelegate; -}()); -/** -* @private -*/ -var BlockerDelegate = (function () { - function BlockerDelegate(id, controller, disable, disableScroll) { - this.id = id; - this.controller = controller; - this.disable = disable; - this.disableScroll = disableScroll; - this.blocked = false; - } - BlockerDelegate.prototype.block = function () { - var _this = this; - if (!this.controller) { - (void 0) /* assert */; - return; - } - if (this.disable) { - this.disable.forEach(function (gesture) { - _this.controller.disableGesture(gesture, _this.id); - }); - } - if (this.disableScroll) { - this.controller.disableScroll(this.id); - } - this.blocked = true; - }; - BlockerDelegate.prototype.unblock = function () { - var _this = this; - if (!this.controller) { - (void 0) /* assert */; - return; - } - if (this.disable) { - this.disable.forEach(function (gesture) { - _this.controller.enableGesture(gesture, _this.id); - }); - } - if (this.disableScroll) { - this.controller.enableScroll(this.id); - } - this.blocked = false; - }; - BlockerDelegate.prototype.destroy = function () { - this.unblock(); - this.controller = null; - }; - return BlockerDelegate; -}()); -//# sourceMappingURL=gesture-controller.js.map - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__platform__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_util__ = __webpack_require__(2); -/* unused harmony export DomDebouncer */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DomController; }); - - - -/** - * @private - */ -var DomDebouncer = (function () { - function DomDebouncer(dom) { - this.dom = dom; - this.writeTask = null; - this.readTask = null; - } - DomDebouncer.prototype.read = function (fn) { - var _this = this; - if (this.readTask) { - return; - } - return this.readTask = this.dom.read(function (t) { - _this.readTask = null; - fn(t); - }); - }; - DomDebouncer.prototype.write = function (fn, ctx) { - var _this = this; - if (this.writeTask) { - return; - } - return this.writeTask = this.dom.write(function (t) { - _this.writeTask = null; - fn(t); - }); - }; - DomDebouncer.prototype.cancel = function () { - var writeTask = this.writeTask; - writeTask && this.dom.cancel(writeTask); - var readTask = this.readTask; - readTask && this.dom.cancel(readTask); - this.readTask = this.writeTask = null; - }; - return DomDebouncer; -}()); -/** - * @private - */ -var DomController = (function () { - function DomController(plt) { - this.plt = plt; - this.r = []; - this.w = []; - } - DomController.prototype.debouncer = function () { - return new DomDebouncer(this); - }; - DomController.prototype.read = function (fn, timeout) { - var _this = this; - if (timeout) { - fn.timeoutId = this.plt.timeout(function () { - _this.r.push(fn); - _this._queue(); - }, timeout); - } - else { - this.r.push(fn); - this._queue(); - } - return fn; - }; - DomController.prototype.write = function (fn, timeout) { - var _this = this; - if (timeout) { - fn.timeoutId = this.plt.timeout(function () { - _this.w.push(fn); - _this._queue(); - }, timeout); - } - else { - this.w.push(fn); - this._queue(); - } - return fn; - }; - DomController.prototype.cancel = function (fn) { - if (fn) { - if (fn.timeoutId) { - this.plt.cancelTimeout(fn.timeoutId); - } - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_util__["l" /* removeArrayItem */])(this.r, fn) || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_util__["l" /* removeArrayItem */])(this.w, fn); - } - }; - DomController.prototype._queue = function () { - var self = this; - if (!self.q) { - self.q = true; - self.plt.raf(function rafCallback(timeStamp) { - self._flush(timeStamp); - }); - } - }; - DomController.prototype._flush = function (timeStamp) { - var err; - try { - dispatch(timeStamp, this.r, this.w); - } - catch (e) { - err = e; - } - this.q = false; - if (this.r.length || this.w.length) { - this._queue(); - } - if (err) { - throw err; - } - }; - DomController.decorators = [ - { type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"] }, - ]; - /** @nocollapse */ - DomController.ctorParameters = [ - { type: __WEBPACK_IMPORTED_MODULE_1__platform__["a" /* Platform */], }, - ]; - return DomController; -}()); -function dispatch(timeStamp, r, w) { - var fn; - // ******** DOM READS **************** - while (fn = r.shift()) { - fn(timeStamp); - } - // ******** DOM WRITES **************** - while (fn = w.shift()) { - fn(timeStamp); - } -} -//# sourceMappingURL=dom-controller.js.map - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__compile_metadata__ = __webpack_require__(18); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__private_import_core__ = __webpack_require__(14); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Identifiers; }); -/* unused harmony export assetUrl */ -/* harmony export (immutable) */ __webpack_exports__["a"] = resolveIdentifier; -/* harmony export (immutable) */ __webpack_exports__["c"] = identifierToken; -/* harmony export (immutable) */ __webpack_exports__["e"] = resolveIdentifierToken; -/* harmony export (immutable) */ __webpack_exports__["d"] = resolveEnumIdentifier; -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - -var APP_VIEW_MODULE_URL = assetUrl('core', 'linker/view'); -var VIEW_UTILS_MODULE_URL = assetUrl('core', 'linker/view_utils'); -var CD_MODULE_URL = assetUrl('core', 'change_detection/change_detection'); -var ANIMATION_STYLE_UTIL_ASSET_URL = assetUrl('core', 'animation/animation_style_util'); -var Identifiers = (function () { - function Identifiers() { - } - Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS = { - name: 'ANALYZE_FOR_ENTRY_COMPONENTS', - moduleUrl: assetUrl('core', 'metadata/di'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ANALYZE_FOR_ENTRY_COMPONENTS"] - }; - Identifiers.ViewUtils = { - name: 'ViewUtils', - moduleUrl: assetUrl('core', 'linker/view_utils'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].ViewUtils - }; - Identifiers.AppView = { name: 'AppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["d" /* AppView */] }; - Identifiers.DebugAppView = { - name: 'DebugAppView', - moduleUrl: APP_VIEW_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["e" /* DebugAppView */] - }; - Identifiers.ViewContainer = { - name: 'ViewContainer', - moduleUrl: assetUrl('core', 'linker/view_container'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["f" /* ViewContainer */] - }; - Identifiers.ElementRef = { - name: 'ElementRef', - moduleUrl: assetUrl('core', 'linker/element_ref'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ElementRef"] - }; - Identifiers.ViewContainerRef = { - name: 'ViewContainerRef', - moduleUrl: assetUrl('core', 'linker/view_container_ref'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ViewContainerRef"] - }; - Identifiers.ChangeDetectorRef = { - name: 'ChangeDetectorRef', - moduleUrl: assetUrl('core', 'change_detection/change_detector_ref'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ChangeDetectorRef"] - }; - Identifiers.RenderComponentType = { - name: 'RenderComponentType', - moduleUrl: assetUrl('core', 'render/api'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["RenderComponentType"] - }; - Identifiers.QueryList = { - name: 'QueryList', - moduleUrl: assetUrl('core', 'linker/query_list'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["QueryList"] - }; - Identifiers.TemplateRef = { - name: 'TemplateRef', - moduleUrl: assetUrl('core', 'linker/template_ref'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["TemplateRef"] - }; - Identifiers.TemplateRef_ = { - name: 'TemplateRef_', - moduleUrl: assetUrl('core', 'linker/template_ref'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["g" /* TemplateRef_ */] - }; - Identifiers.CodegenComponentFactoryResolver = { - name: 'CodegenComponentFactoryResolver', - moduleUrl: assetUrl('core', 'linker/component_factory_resolver'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["h" /* CodegenComponentFactoryResolver */] - }; - Identifiers.ComponentFactoryResolver = { - name: 'ComponentFactoryResolver', - moduleUrl: assetUrl('core', 'linker/component_factory_resolver'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ComponentFactoryResolver"] - }; - Identifiers.ComponentFactory = { - name: 'ComponentFactory', - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ComponentFactory"], - moduleUrl: assetUrl('core', 'linker/component_factory') - }; - Identifiers.ComponentRef_ = { - name: 'ComponentRef_', - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["i" /* ComponentRef_ */], - moduleUrl: assetUrl('core', 'linker/component_factory') - }; - Identifiers.ComponentRef = { - name: 'ComponentRef', - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ComponentRef"], - moduleUrl: assetUrl('core', 'linker/component_factory') - }; - Identifiers.NgModuleFactory = { - name: 'NgModuleFactory', - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModuleFactory"], - moduleUrl: assetUrl('core', 'linker/ng_module_factory') - }; - Identifiers.NgModuleInjector = { - name: 'NgModuleInjector', - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["j" /* NgModuleInjector */], - moduleUrl: assetUrl('core', 'linker/ng_module_factory') - }; - Identifiers.RegisterModuleFactoryFn = { - name: 'registerModuleFactory', - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["k" /* registerModuleFactory */], - moduleUrl: assetUrl('core', 'linker/ng_module_factory_loader') - }; - Identifiers.ValueUnwrapper = { name: 'ValueUnwrapper', moduleUrl: CD_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["l" /* ValueUnwrapper */] }; - Identifiers.Injector = { - name: 'Injector', - moduleUrl: assetUrl('core', 'di/injector'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Injector"] - }; - Identifiers.ViewEncapsulation = { - name: 'ViewEncapsulation', - moduleUrl: assetUrl('core', 'metadata/view'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ViewEncapsulation"] - }; - Identifiers.ViewType = { - name: 'ViewType', - moduleUrl: assetUrl('core', 'linker/view_type'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["m" /* ViewType */] - }; - Identifiers.ChangeDetectionStrategy = { - name: 'ChangeDetectionStrategy', - moduleUrl: CD_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ChangeDetectionStrategy"] - }; - Identifiers.StaticNodeDebugInfo = { - name: 'StaticNodeDebugInfo', - moduleUrl: assetUrl('core', 'linker/debug_context'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["n" /* StaticNodeDebugInfo */] - }; - Identifiers.DebugContext = { - name: 'DebugContext', - moduleUrl: assetUrl('core', 'linker/debug_context'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["o" /* DebugContext */] - }; - Identifiers.Renderer = { - name: 'Renderer', - moduleUrl: assetUrl('core', 'render/api'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["Renderer"] - }; - Identifiers.SimpleChange = { name: 'SimpleChange', moduleUrl: CD_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["SimpleChange"] }; - Identifiers.UNINITIALIZED = { name: 'UNINITIALIZED', moduleUrl: CD_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["p" /* UNINITIALIZED */] }; - Identifiers.ChangeDetectorStatus = { - name: 'ChangeDetectorStatus', - moduleUrl: CD_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["q" /* ChangeDetectorStatus */] - }; - Identifiers.checkBinding = { - name: 'checkBinding', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].checkBinding - }; - Identifiers.devModeEqual = { name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["r" /* devModeEqual */] }; - Identifiers.inlineInterpolate = { - name: 'inlineInterpolate', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].inlineInterpolate - }; - Identifiers.interpolate = { - name: 'interpolate', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].interpolate - }; - Identifiers.castByValue = { - name: 'castByValue', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].castByValue - }; - Identifiers.EMPTY_ARRAY = { - name: 'EMPTY_ARRAY', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].EMPTY_ARRAY - }; - Identifiers.EMPTY_MAP = { - name: 'EMPTY_MAP', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].EMPTY_MAP - }; - Identifiers.createRenderElement = { - name: 'createRenderElement', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].createRenderElement - }; - Identifiers.selectOrCreateRenderHostElement = { - name: 'selectOrCreateRenderHostElement', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].selectOrCreateRenderHostElement - }; - Identifiers.pureProxies = [ - null, - { name: 'pureProxy1', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy1 }, - { name: 'pureProxy2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy2 }, - { name: 'pureProxy3', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy3 }, - { name: 'pureProxy4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy4 }, - { name: 'pureProxy5', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy5 }, - { name: 'pureProxy6', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy6 }, - { name: 'pureProxy7', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy7 }, - { name: 'pureProxy8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy8 }, - { name: 'pureProxy9', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy9 }, - { name: 'pureProxy10', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].pureProxy10 }, - ]; - Identifiers.SecurityContext = { - name: 'SecurityContext', - moduleUrl: assetUrl('core', 'security'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["SecurityContext"], - }; - Identifiers.AnimationKeyframe = { - name: 'AnimationKeyframe', - moduleUrl: assetUrl('core', 'animation/animation_keyframe'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["s" /* AnimationKeyframe */] - }; - Identifiers.AnimationStyles = { - name: 'AnimationStyles', - moduleUrl: assetUrl('core', 'animation/animation_styles'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["t" /* AnimationStyles */] - }; - Identifiers.NoOpAnimationPlayer = { - name: 'NoOpAnimationPlayer', - moduleUrl: assetUrl('core', 'animation/animation_player'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["u" /* NoOpAnimationPlayer */] - }; - Identifiers.AnimationGroupPlayer = { - name: 'AnimationGroupPlayer', - moduleUrl: assetUrl('core', 'animation/animation_group_player'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["v" /* AnimationGroupPlayer */] - }; - Identifiers.AnimationSequencePlayer = { - name: 'AnimationSequencePlayer', - moduleUrl: assetUrl('core', 'animation/animation_sequence_player'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["w" /* AnimationSequencePlayer */] - }; - Identifiers.prepareFinalAnimationStyles = { - name: 'prepareFinalAnimationStyles', - moduleUrl: ANIMATION_STYLE_UTIL_ASSET_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["x" /* prepareFinalAnimationStyles */] - }; - Identifiers.balanceAnimationKeyframes = { - name: 'balanceAnimationKeyframes', - moduleUrl: ANIMATION_STYLE_UTIL_ASSET_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["y" /* balanceAnimationKeyframes */] - }; - Identifiers.clearStyles = { - name: 'clearStyles', - moduleUrl: ANIMATION_STYLE_UTIL_ASSET_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["z" /* clearStyles */] - }; - Identifiers.renderStyles = { - name: 'renderStyles', - moduleUrl: ANIMATION_STYLE_UTIL_ASSET_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["A" /* renderStyles */] - }; - Identifiers.collectAndResolveStyles = { - name: 'collectAndResolveStyles', - moduleUrl: ANIMATION_STYLE_UTIL_ASSET_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["B" /* collectAndResolveStyles */] - }; - Identifiers.LOCALE_ID = { - name: 'LOCALE_ID', - moduleUrl: assetUrl('core', 'i18n/tokens'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["LOCALE_ID"] - }; - Identifiers.TRANSLATIONS_FORMAT = { - name: 'TRANSLATIONS_FORMAT', - moduleUrl: assetUrl('core', 'i18n/tokens'), - runtime: __WEBPACK_IMPORTED_MODULE_0__angular_core__["TRANSLATIONS_FORMAT"] - }; - Identifiers.setBindingDebugInfo = { - name: 'setBindingDebugInfo', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].setBindingDebugInfo - }; - Identifiers.setBindingDebugInfoForChanges = { - name: 'setBindingDebugInfoForChanges', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].setBindingDebugInfoForChanges - }; - Identifiers.AnimationTransition = { - name: 'AnimationTransition', - moduleUrl: assetUrl('core', 'animation/animation_transition'), - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["C" /* AnimationTransition */] - }; - // This is just the interface! - Identifiers.InlineArray = { name: 'InlineArray', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: null }; - Identifiers.inlineArrays = [ - { name: 'InlineArray2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArray2 }, - { name: 'InlineArray2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArray2 }, - { name: 'InlineArray4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArray4 }, - { name: 'InlineArray8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArray8 }, - { name: 'InlineArray16', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArray16 }, - ]; - Identifiers.EMPTY_INLINE_ARRAY = { - name: 'EMPTY_INLINE_ARRAY', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].EMPTY_INLINE_ARRAY - }; - Identifiers.InlineArrayDynamic = { - name: 'InlineArrayDynamic', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].InlineArrayDynamic - }; - Identifiers.subscribeToRenderElement = { - name: 'subscribeToRenderElement', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].subscribeToRenderElement - }; - Identifiers.createRenderComponentType = { - name: 'createRenderComponentType', - moduleUrl: VIEW_UTILS_MODULE_URL, - runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].createRenderComponentType - }; - Identifiers.noop = { name: 'noop', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["c" /* view_utils */].noop }; - return Identifiers; -}()); -function assetUrl(pkg, path, type) { - if (path === void 0) { path = null; } - if (type === void 0) { type = 'src'; } - if (path == null) { - return "asset:@angular/lib/" + pkg + "/index"; - } - else { - return "asset:@angular/lib/" + pkg + "/src/" + path; - } -} -function resolveIdentifier(identifier) { - return new __WEBPACK_IMPORTED_MODULE_1__compile_metadata__["h" /* CompileIdentifierMetadata */]({ - name: identifier.name, - moduleUrl: identifier.moduleUrl, - reference: __WEBPACK_IMPORTED_MODULE_2__private_import_core__["D" /* reflector */].resolveIdentifier(identifier.name, identifier.moduleUrl, identifier.runtime) - }); -} -function identifierToken(identifier) { - return new __WEBPACK_IMPORTED_MODULE_1__compile_metadata__["i" /* CompileTokenMetadata */]({ identifier: identifier }); -} -function resolveIdentifierToken(identifier) { - return identifierToken(resolveIdentifier(identifier)); -} -function resolveEnumIdentifier(enumType, name) { - var resolvedEnum = __WEBPACK_IMPORTED_MODULE_2__private_import_core__["D" /* reflector */].resolveEnum(enumType.reference, name); - return new __WEBPACK_IMPORTED_MODULE_1__compile_metadata__["h" /* CompileIdentifierMetadata */]({ name: enumType.name + "." + name, moduleUrl: enumType.moduleUrl, reference: resolvedEnum }); -} -//# sourceMappingURL=identifiers.js.map - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "E", function() { return isDefaultChangeDetectionStrategy; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return ChangeDetectorStatus; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "G", function() { return LifecycleHooks; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "J", function() { return LIFECYCLE_HOOKS_VALUES; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "K", function() { return ReflectorReader; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return ViewContainer; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return CodegenComponentFactoryResolver; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return ComponentRef_; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return AppView; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return DebugAppView; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return NgModuleInjector; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return registerModuleFactory; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return ViewType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return view_utils; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return DebugContext; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return StaticNodeDebugInfo; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return devModeEqual; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return UNINITIALIZED; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return ValueUnwrapper; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return TemplateRef_; }); -/* unused harmony export RenderDebugInfo */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F", function() { return Console; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "D", function() { return reflector; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "L", function() { return Reflector; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "M", function() { return ReflectionCapabilities; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return NoOpAnimationPlayer; }); -/* unused harmony export AnimationPlayer */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return AnimationSequencePlayer; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return AnimationGroupPlayer; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return AnimationKeyframe; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return AnimationStyles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ANY_STATE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "N", function() { return DEFAULT_STATE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "H", function() { return EMPTY_STATE; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return FILL_STYLE_FLAG; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return prepareFinalAnimationStyles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return balanceAnimationKeyframes; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return clearStyles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return collectAndResolveStyles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return renderStyles; }); -/* unused harmony export ViewMetadata */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "I", function() { return ComponentStillLoadingError; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "C", function() { return AnimationTransition; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -var isDefaultChangeDetectionStrategy = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].isDefaultChangeDetectionStrategy; -var ChangeDetectorStatus = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ChangeDetectorStatus; -var LifecycleHooks = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].LifecycleHooks; -var LIFECYCLE_HOOKS_VALUES = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].LIFECYCLE_HOOKS_VALUES; -var ReflectorReader = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ReflectorReader; -var ViewContainer = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ViewContainer; -var CodegenComponentFactoryResolver = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].CodegenComponentFactoryResolver; -var ComponentRef_ = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ComponentRef_; -var AppView = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AppView; -var DebugAppView = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].DebugAppView; -var NgModuleInjector = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].NgModuleInjector; -var registerModuleFactory = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].registerModuleFactory; -var ViewType = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ViewType; -var view_utils = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].view_utils; -var DebugContext = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].DebugContext; -var StaticNodeDebugInfo = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].StaticNodeDebugInfo; -var devModeEqual = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].devModeEqual; -var UNINITIALIZED = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].UNINITIALIZED; -var ValueUnwrapper = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ValueUnwrapper; -var TemplateRef_ = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].TemplateRef_; -var RenderDebugInfo = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].RenderDebugInfo; -var Console = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].Console; -var reflector = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].reflector; -var Reflector = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].Reflector; -var ReflectionCapabilities = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ReflectionCapabilities; -var NoOpAnimationPlayer = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].NoOpAnimationPlayer; -var AnimationPlayer = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationPlayer; -var AnimationSequencePlayer = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationSequencePlayer; -var AnimationGroupPlayer = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationGroupPlayer; -var AnimationKeyframe = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationKeyframe; -var AnimationStyles = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationStyles; -var ANY_STATE = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ANY_STATE; -var DEFAULT_STATE = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].DEFAULT_STATE; -var EMPTY_STATE = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].EMPTY_STATE; -var FILL_STYLE_FLAG = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].FILL_STYLE_FLAG; -var prepareFinalAnimationStyles = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].prepareFinalAnimationStyles; -var balanceAnimationKeyframes = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].balanceAnimationKeyframes; -var clearStyles = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].clearStyles; -var collectAndResolveStyles = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].collectAndResolveStyles; -var renderStyles = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].renderStyles; -var ViewMetadata = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ViewMetadata; -var ComponentStillLoadingError = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].ComponentStillLoadingError; -var AnimationTransition = __WEBPACK_IMPORTED_MODULE_0__angular_core__["__core_private__"].AnimationTransition; -//# sourceMappingURL=private_import_core.js.map - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var root_1 = __webpack_require__(86); -var toSubscriber_1 = __webpack_require__(707); -var observable_1 = __webpack_require__(702); -/** - * A representation of any set of values over any amount of time. This the most basic building block - * of RxJS. - * - * @class Observable - */ -var Observable = (function () { - /** - * @constructor - * @param {Function} subscribe the function that is called when the Observable is - * initially subscribed to. This function is given a Subscriber, to which new values - * can be `next`ed, or an `error` method can be called to raise an error, or - * `complete` can be called to notify of a successful completion. - */ - function Observable(subscribe) { - this._isScalar = false; - if (subscribe) { - this._subscribe = subscribe; - } - } - /** - * Creates a new Observable, with this Observable as the source, and the passed - * operator defined as the new observable's operator. - * @method lift - * @param {Operator} operator the operator defining the operation to take on the observable - * @return {Observable} a new observable with the Operator applied - */ - Observable.prototype.lift = function (operator) { - var observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - }; - /** - * Registers handlers for handling emitted values, error and completions from the observable, and - * executes the observable's subscriber function, which will take action to set up the underlying data stream - * @method subscribe - * @param {PartialObserver|Function} observerOrNext (optional) either an observer defining all functions to be called, - * or the first of three possible handlers, which is the handler for each value emitted from the observable. - * @param {Function} error (optional) a handler for a terminal event resulting from an error. If no error handler is provided, - * the error will be thrown as unhandled - * @param {Function} complete (optional) a handler for a terminal event resulting from successful completion. - * @return {ISubscription} a subscription reference to the registered handlers - */ - Observable.prototype.subscribe = function (observerOrNext, error, complete) { - var operator = this.operator; - var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete); - if (operator) { - operator.call(sink, this); - } - else { - sink.add(this._subscribe(sink)); - } - if (sink.syncErrorThrowable) { - sink.syncErrorThrowable = false; - if (sink.syncErrorThrown) { - throw sink.syncErrorValue; - } - } - return sink; - }; - /** - * @method forEach - * @param {Function} next a handler for each value emitted by the observable - * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise - * @return {Promise} a promise that either resolves on observable completion or - * rejects with the handled error - */ - Observable.prototype.forEach = function (next, PromiseCtor) { - var _this = this; - if (!PromiseCtor) { - if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) { - PromiseCtor = root_1.root.Rx.config.Promise; - } - else if (root_1.root.Promise) { - PromiseCtor = root_1.root.Promise; - } - } - if (!PromiseCtor) { - throw new Error('no Promise impl found'); - } - return new PromiseCtor(function (resolve, reject) { - var subscription = _this.subscribe(function (value) { - if (subscription) { - // if there is a subscription, then we can surmise - // the next handling is asynchronous. Any errors thrown - // need to be rejected explicitly and unsubscribe must be - // called manually - try { - next(value); - } - catch (err) { - reject(err); - subscription.unsubscribe(); - } - } - else { - // if there is NO subscription, then we're getting a nexted - // value synchronously during subscription. We can just call it. - // If it errors, Observable's `subscribe` will ensure the - // unsubscription logic is called, then synchronously rethrow the error. - // After that, Promise will trap the error and send it - // down the rejection path. - next(value); - } - }, reject, resolve); - }); - }; - Observable.prototype._subscribe = function (subscriber) { - return this.source.subscribe(subscriber); - }; - /** - * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable - * @method Symbol.observable - * @return {Observable} this instance of the observable - */ - Observable.prototype[observable_1.$$observable] = function () { - return this; - }; - // HACK: Since TypeScript inherits static properties too, we have to - // fight against TypeScript here so Subject can have a different static create signature - /** - * Creates a new cold Observable by calling the Observable constructor - * @static true - * @owner Observable - * @method create - * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor - * @return {Observable} a new cold observable - */ - Observable.create = function (subscribe) { - return new Observable(subscribe); - }; - return Observable; -}()); -exports.Observable = Observable; -//# sourceMappingURL=Observable.js.map - -/***/ }), -/* 16 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["b"] = getDOM; -/* unused harmony export setDOM */ -/* harmony export (immutable) */ __webpack_exports__["c"] = setRootDomAdapter; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DomAdapter; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var _DOM = null; -function getDOM() { - return _DOM; -} -function setDOM(adapter) { - _DOM = adapter; -} -function setRootDomAdapter(adapter) { - if (!_DOM) { - _DOM = adapter; - } -} -/* tslint:disable:requireParameterType */ -/** - * Provides DOM operations in an environment-agnostic way. - * - * @security Tread carefully! Interacting with the DOM directly is dangerous and - * can introduce XSS risks. - */ -var DomAdapter = (function () { - function DomAdapter() { - this.resourceLoaderType = null; - } - Object.defineProperty(DomAdapter.prototype, "attrToPropMap", { - /** - * Maps attribute names to their corresponding property names for cases - * where attribute name doesn't match property name. - */ - get: function () { return this._attrToPropMap; }, - set: function (value) { this._attrToPropMap = value; }, - enumerable: true, - configurable: true - }); - ; - ; - return DomAdapter; -}()); -//# sourceMappingURL=dom_adapter.js.map - -/***/ }), -/* 17 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["f"] = getCss; -/* harmony export (immutable) */ __webpack_exports__["a"] = pointerCoord; -/* harmony export (immutable) */ __webpack_exports__["d"] = hasPointerMoved; -/* harmony export (immutable) */ __webpack_exports__["e"] = isTextInput; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NON_TEXT_INPUT_REGEX; }); -/* harmony export (immutable) */ __webpack_exports__["c"] = copyInputAttributes; -function getCss(docEle) { - var css = {}; - // transform - var i; - var keys = ['webkitTransform', '-webkit-transform', 'webkit-transform', 'transform']; - for (i = 0; i < keys.length; i++) { - if (docEle.style[keys[i]] !== undefined) { - css.transform = keys[i]; - break; - } - } - // transition - keys = ['webkitTransition', 'transition']; - for (i = 0; i < keys.length; i++) { - if (docEle.style[keys[i]] !== undefined) { - css.transition = keys[i]; - break; - } - } - // The only prefix we care about is webkit for transitions. - var isWebkit = css.transition.indexOf('webkit') > -1; - // transition duration - css.transitionDuration = (isWebkit ? '-webkit-' : '') + 'transition-duration'; - // transition timing function - css.transitionTimingFn = (isWebkit ? '-webkit-' : '') + 'transition-timing-function'; - // transition delay - css.transitionDelay = (isWebkit ? '-webkit-' : '') + 'transition-delay'; - // To be sure transitionend works everywhere, include *both* the webkit and non-webkit events - css.transitionEnd = (isWebkit ? 'webkitTransitionEnd ' : '') + 'transitionend'; - // transform origin - css.transformOrigin = (isWebkit ? '-webkit-' : '') + 'transform-origin'; - // animation delay - css.animationDelay = (isWebkit ? 'webkitAnimationDelay' : 'animationDelay'); - return css; -} -function pointerCoord(ev) { - // get coordinates for either a mouse click - // or a touch depending on the given event - if (ev) { - var changedTouches = ev.changedTouches; - if (changedTouches && changedTouches.length > 0) { - var touch = changedTouches[0]; - return { x: touch.clientX, y: touch.clientY }; - } - var pageX = ev.pageX; - if (pageX !== undefined) { - return { x: pageX, y: ev.pageY }; - } - } - return { x: 0, y: 0 }; -} -function hasPointerMoved(threshold, startCoord, endCoord) { - if (startCoord && endCoord) { - var deltaX = (startCoord.x - endCoord.x); - var deltaY = (startCoord.y - endCoord.y); - var distance = deltaX * deltaX + deltaY * deltaY; - return distance > (threshold * threshold); - } - return false; -} -function isTextInput(ele) { - return !!ele && - (ele.tagName === 'TEXTAREA' || - ele.contentEditable === 'true' || - (ele.tagName === 'INPUT' && !(NON_TEXT_INPUT_REGEX.test(ele.type)))); -} -var NON_TEXT_INPUT_REGEX = /^(radio|checkbox|range|file|submit|reset|color|image|button)$/i; -var skipInputAttrsReg = /^(value|checked|disabled|type|class|style|id|autofocus|autocomplete|autocorrect)$/i; -function copyInputAttributes(srcElement, destElement) { - // copy attributes from one element to another - // however, skip over a few of them as they're already - // handled in the angular world - var attrs = srcElement.attributes; - for (var i = 0; i < attrs.length; i++) { - var attr = attrs[i]; - if (!skipInputAttrsReg.test(attr.name)) { - destElement.setAttribute(attr.name, attr.value); - } - } -} -//# sourceMappingURL=dom.js.map - -/***/ }), -/* 18 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__facade_collection__ = __webpack_require__(59); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__facade_lang__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selector__ = __webpack_require__(92); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util__ = __webpack_require__(36); -/* unused harmony export CompileMetadataWithIdentifier */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return CompileAnimationEntryMetadata; }); -/* unused harmony export CompileAnimationStateMetadata */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CompileAnimationStateDeclarationMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return CompileAnimationStateTransitionMetadata; }); -/* unused harmony export CompileAnimationMetadata */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return CompileAnimationKeyframesSequenceMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return CompileAnimationStyleMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return CompileAnimationAnimateMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return CompileAnimationWithStepsMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return CompileAnimationSequenceMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return CompileAnimationGroupMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return CompileIdentifierMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return CompileDiDependencyMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return CompileProviderMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return CompileFactoryMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return CompileTokenMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return CompileTypeMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return CompileQueryMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return CompileStylesheetMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return CompileTemplateMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return CompileDirectiveMetadata; }); -/* harmony export (immutable) */ __webpack_exports__["y"] = createHostComponentMeta; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return CompilePipeMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return CompileNgModuleMetadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return TransitiveCompileNgModuleMetadata; }); -/* unused harmony export removeIdentifierDuplicates */ -/* harmony export (immutable) */ __webpack_exports__["x"] = isStaticSymbol; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return ProviderMeta; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; - - - - - -function unimplemented() { - throw new Error('unimplemented'); -} -// group 0: "[prop] or (event) or @trigger" -// group 1: "prop" from "[prop]" -// group 2: "event" from "(event)" -// group 3: "@trigger" from "@trigger" -var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/; -var CompileMetadataWithIdentifier = (function () { - function CompileMetadataWithIdentifier() { - } - Object.defineProperty(CompileMetadataWithIdentifier.prototype, "identifier", { - get: function () { return unimplemented(); }, - enumerable: true, - configurable: true - }); - return CompileMetadataWithIdentifier; -}()); -var CompileAnimationEntryMetadata = (function () { - function CompileAnimationEntryMetadata(name, definitions) { - if (name === void 0) { name = null; } - if (definitions === void 0) { definitions = null; } - this.name = name; - this.definitions = definitions; - } - return CompileAnimationEntryMetadata; -}()); -var CompileAnimationStateMetadata = (function () { - function CompileAnimationStateMetadata() { - } - return CompileAnimationStateMetadata; -}()); -var CompileAnimationStateDeclarationMetadata = (function (_super) { - __extends(CompileAnimationStateDeclarationMetadata, _super); - function CompileAnimationStateDeclarationMetadata(stateNameExpr, styles) { - _super.call(this); - this.stateNameExpr = stateNameExpr; - this.styles = styles; - } - return CompileAnimationStateDeclarationMetadata; -}(CompileAnimationStateMetadata)); -var CompileAnimationStateTransitionMetadata = (function (_super) { - __extends(CompileAnimationStateTransitionMetadata, _super); - function CompileAnimationStateTransitionMetadata(stateChangeExpr, steps) { - _super.call(this); - this.stateChangeExpr = stateChangeExpr; - this.steps = steps; - } - return CompileAnimationStateTransitionMetadata; -}(CompileAnimationStateMetadata)); -var CompileAnimationMetadata = (function () { - function CompileAnimationMetadata() { - } - return CompileAnimationMetadata; -}()); -var CompileAnimationKeyframesSequenceMetadata = (function (_super) { - __extends(CompileAnimationKeyframesSequenceMetadata, _super); - function CompileAnimationKeyframesSequenceMetadata(steps) { - if (steps === void 0) { steps = []; } - _super.call(this); - this.steps = steps; - } - return CompileAnimationKeyframesSequenceMetadata; -}(CompileAnimationMetadata)); -var CompileAnimationStyleMetadata = (function (_super) { - __extends(CompileAnimationStyleMetadata, _super); - function CompileAnimationStyleMetadata(offset, styles) { - if (styles === void 0) { styles = null; } - _super.call(this); - this.offset = offset; - this.styles = styles; - } - return CompileAnimationStyleMetadata; -}(CompileAnimationMetadata)); -var CompileAnimationAnimateMetadata = (function (_super) { - __extends(CompileAnimationAnimateMetadata, _super); - function CompileAnimationAnimateMetadata(timings, styles) { - if (timings === void 0) { timings = 0; } - if (styles === void 0) { styles = null; } - _super.call(this); - this.timings = timings; - this.styles = styles; - } - return CompileAnimationAnimateMetadata; -}(CompileAnimationMetadata)); -var CompileAnimationWithStepsMetadata = (function (_super) { - __extends(CompileAnimationWithStepsMetadata, _super); - function CompileAnimationWithStepsMetadata(steps) { - if (steps === void 0) { steps = null; } - _super.call(this); - this.steps = steps; - } - return CompileAnimationWithStepsMetadata; -}(CompileAnimationMetadata)); -var CompileAnimationSequenceMetadata = (function (_super) { - __extends(CompileAnimationSequenceMetadata, _super); - function CompileAnimationSequenceMetadata(steps) { - if (steps === void 0) { steps = null; } - _super.call(this, steps); - } - return CompileAnimationSequenceMetadata; -}(CompileAnimationWithStepsMetadata)); -var CompileAnimationGroupMetadata = (function (_super) { - __extends(CompileAnimationGroupMetadata, _super); - function CompileAnimationGroupMetadata(steps) { - if (steps === void 0) { steps = null; } - _super.call(this, steps); - } - return CompileAnimationGroupMetadata; -}(CompileAnimationWithStepsMetadata)); -var CompileIdentifierMetadata = (function () { - function CompileIdentifierMetadata(_a) { - var _b = _a === void 0 ? {} : _a, reference = _b.reference, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, value = _b.value; - this.reference = reference; - this.name = name; - this.prefix = prefix; - this.moduleUrl = moduleUrl; - this.value = value; - } - Object.defineProperty(CompileIdentifierMetadata.prototype, "identifier", { - get: function () { return this; }, - enumerable: true, - configurable: true - }); - return CompileIdentifierMetadata; -}()); -var CompileDiDependencyMetadata = (function () { - function CompileDiDependencyMetadata(_a) { - var _b = _a === void 0 ? {} : _a, isAttribute = _b.isAttribute, isSelf = _b.isSelf, isHost = _b.isHost, isSkipSelf = _b.isSkipSelf, isOptional = _b.isOptional, isValue = _b.isValue, token = _b.token, value = _b.value; - this.isAttribute = !!isAttribute; - this.isSelf = !!isSelf; - this.isHost = !!isHost; - this.isSkipSelf = !!isSkipSelf; - this.isOptional = !!isOptional; - this.isValue = !!isValue; - this.token = token; - this.value = value; - } - return CompileDiDependencyMetadata; -}()); -var CompileProviderMetadata = (function () { - function CompileProviderMetadata(_a) { - var token = _a.token, useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi; - this.token = token; - this.useClass = useClass; - this.useValue = useValue; - this.useExisting = useExisting; - this.useFactory = useFactory; - this.deps = deps || null; - this.multi = !!multi; - } - return CompileProviderMetadata; -}()); -var CompileFactoryMetadata = (function (_super) { - __extends(CompileFactoryMetadata, _super); - function CompileFactoryMetadata(_a) { - var reference = _a.reference, name = _a.name, moduleUrl = _a.moduleUrl, prefix = _a.prefix, diDeps = _a.diDeps, value = _a.value; - _super.call(this, { reference: reference, name: name, prefix: prefix, moduleUrl: moduleUrl, value: value }); - this.diDeps = _normalizeArray(diDeps); - } - return CompileFactoryMetadata; -}(CompileIdentifierMetadata)); -var CompileTokenMetadata = (function () { - function CompileTokenMetadata(_a) { - var value = _a.value, identifier = _a.identifier, identifierIsInstance = _a.identifierIsInstance; - this.value = value; - this.identifier = identifier; - this.identifierIsInstance = !!identifierIsInstance; - } - Object.defineProperty(CompileTokenMetadata.prototype, "reference", { - get: function () { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(this.identifier)) { - return this.identifier.reference; - } - else { - return this.value; - } - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompileTokenMetadata.prototype, "name", { - get: function () { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(this.value) ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__["a" /* sanitizeIdentifier */])(this.value) : this.identifier.name; - }, - enumerable: true, - configurable: true - }); - return CompileTokenMetadata; -}()); -/** - * Metadata regarding compilation of a type. - */ -var CompileTypeMetadata = (function (_super) { - __extends(CompileTypeMetadata, _super); - function CompileTypeMetadata(_a) { - var _b = _a === void 0 ? {} : _a, reference = _b.reference, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, isHost = _b.isHost, value = _b.value, diDeps = _b.diDeps, lifecycleHooks = _b.lifecycleHooks; - _super.call(this, { reference: reference, name: name, moduleUrl: moduleUrl, prefix: prefix, value: value }); - this.isHost = !!isHost; - this.diDeps = _normalizeArray(diDeps); - this.lifecycleHooks = _normalizeArray(lifecycleHooks); - } - return CompileTypeMetadata; -}(CompileIdentifierMetadata)); -var CompileQueryMetadata = (function () { - function CompileQueryMetadata(_a) { - var _b = _a === void 0 ? {} : _a, selectors = _b.selectors, descendants = _b.descendants, first = _b.first, propertyName = _b.propertyName, read = _b.read; - this.selectors = selectors; - this.descendants = !!descendants; - this.first = !!first; - this.propertyName = propertyName; - this.read = read; - } - return CompileQueryMetadata; -}()); -/** - * Metadata about a stylesheet - */ -var CompileStylesheetMetadata = (function () { - function CompileStylesheetMetadata(_a) { - var _b = _a === void 0 ? {} : _a, moduleUrl = _b.moduleUrl, styles = _b.styles, styleUrls = _b.styleUrls; - this.moduleUrl = moduleUrl; - this.styles = _normalizeArray(styles); - this.styleUrls = _normalizeArray(styleUrls); - } - return CompileStylesheetMetadata; -}()); -/** - * Metadata regarding compilation of a template. - */ -var CompileTemplateMetadata = (function () { - function CompileTemplateMetadata(_a) { - var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, externalStylesheets = _b.externalStylesheets, animations = _b.animations, ngContentSelectors = _b.ngContentSelectors, interpolation = _b.interpolation; - this.encapsulation = encapsulation; - this.template = template; - this.templateUrl = templateUrl; - this.styles = _normalizeArray(styles); - this.styleUrls = _normalizeArray(styleUrls); - this.externalStylesheets = _normalizeArray(externalStylesheets); - this.animations = animations ? __WEBPACK_IMPORTED_MODULE_1__facade_collection__["b" /* ListWrapper */].flatten(animations) : []; - this.ngContentSelectors = ngContentSelectors || []; - if (interpolation && interpolation.length != 2) { - throw new Error("'interpolation' should have a start and an end symbol."); - } - this.interpolation = interpolation; - } - CompileTemplateMetadata.prototype.toSummary = function () { - return { - isSummary: true, - animations: this.animations.map(function (anim) { return anim.name; }), - ngContentSelectors: this.ngContentSelectors, - encapsulation: this.encapsulation - }; - }; - return CompileTemplateMetadata; -}()); -/** - * Metadata regarding compilation of a directive. - */ -var CompileDirectiveMetadata = (function () { - function CompileDirectiveMetadata(_a) { - var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template; - this.type = type; - this.isComponent = isComponent; - this.selector = selector; - this.exportAs = exportAs; - this.changeDetection = changeDetection; - this.inputs = inputs; - this.outputs = outputs; - this.hostListeners = hostListeners; - this.hostProperties = hostProperties; - this.hostAttributes = hostAttributes; - this.providers = _normalizeArray(providers); - this.viewProviders = _normalizeArray(viewProviders); - this.queries = _normalizeArray(queries); - this.viewQueries = _normalizeArray(viewQueries); - this.entryComponents = _normalizeArray(entryComponents); - this.template = template; - } - CompileDirectiveMetadata.create = function (_a) { - var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template; - var hostListeners = {}; - var hostProperties = {}; - var hostAttributes = {}; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(host)) { - Object.keys(host).forEach(function (key) { - var value = host[key]; - var matches = key.match(HOST_REG_EXP); - if (matches === null) { - hostAttributes[key] = value; - } - else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(matches[1])) { - hostProperties[matches[1]] = value; - } - else if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(matches[2])) { - hostListeners[matches[2]] = value; - } - }); - } - var inputsMap = {}; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(inputs)) { - inputs.forEach(function (bindConfig) { - // canonical syntax: `dirProp: elProp` - // if there is no `:`, use dirProp = elProp - var parts = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__["b" /* splitAtColon */])(bindConfig, [bindConfig, bindConfig]); - inputsMap[parts[0]] = parts[1]; - }); - } - var outputsMap = {}; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__facade_lang__["a" /* isPresent */])(outputs)) { - outputs.forEach(function (bindConfig) { - // canonical syntax: `dirProp: elProp` - // if there is no `:`, use dirProp = elProp - var parts = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__util__["b" /* splitAtColon */])(bindConfig, [bindConfig, bindConfig]); - outputsMap[parts[0]] = parts[1]; - }); - } - return new CompileDirectiveMetadata({ - type: type, - isComponent: !!isComponent, selector: selector, exportAs: exportAs, changeDetection: changeDetection, - inputs: inputsMap, - outputs: outputsMap, - hostListeners: hostListeners, - hostProperties: hostProperties, - hostAttributes: hostAttributes, - providers: providers, - viewProviders: viewProviders, - queries: queries, - viewQueries: viewQueries, - entryComponents: entryComponents, - template: template, - }); - }; - Object.defineProperty(CompileDirectiveMetadata.prototype, "identifier", { - get: function () { return this.type; }, - enumerable: true, - configurable: true - }); - CompileDirectiveMetadata.prototype.toSummary = function () { - return { - isSummary: true, - type: this.type, - isComponent: this.isComponent, - selector: this.selector, - exportAs: this.exportAs, - inputs: this.inputs, - outputs: this.outputs, - hostListeners: this.hostListeners, - hostProperties: this.hostProperties, - hostAttributes: this.hostAttributes, - providers: this.providers, - viewProviders: this.viewProviders, - queries: this.queries, - entryComponents: this.entryComponents, - changeDetection: this.changeDetection, - template: this.template && this.template.toSummary() - }; - }; - return CompileDirectiveMetadata; -}()); -/** - * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector. - */ -function createHostComponentMeta(compMeta) { - var template = __WEBPACK_IMPORTED_MODULE_3__selector__["a" /* CssSelector */].parse(compMeta.selector)[0].getMatchingElementTemplate(); - return CompileDirectiveMetadata.create({ - type: new CompileTypeMetadata({ - reference: Object, - name: compMeta.type.name + "_Host", - moduleUrl: compMeta.type.moduleUrl, - isHost: true - }), - template: new CompileTemplateMetadata({ - encapsulation: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ViewEncapsulation"].None, - template: template, - templateUrl: '', - styles: [], - styleUrls: [], - ngContentSelectors: [], - animations: [] - }), - changeDetection: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ChangeDetectionStrategy"].Default, - inputs: [], - outputs: [], - host: {}, - isComponent: true, - selector: '*', - providers: [], - viewProviders: [], - queries: [], - viewQueries: [] - }); -} -var CompilePipeMetadata = (function () { - function CompilePipeMetadata(_a) { - var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure; - this.type = type; - this.name = name; - this.pure = !!pure; - } - Object.defineProperty(CompilePipeMetadata.prototype, "identifier", { - get: function () { return this.type; }, - enumerable: true, - configurable: true - }); - CompilePipeMetadata.prototype.toSummary = function () { - return { isSummary: true, type: this.type, name: this.name, pure: this.pure }; - }; - return CompilePipeMetadata; -}()); -/** - * Metadata regarding compilation of a module. - */ -var CompileNgModuleMetadata = (function () { - function CompileNgModuleMetadata(_a) { - var _b = _a === void 0 ? {} : _a, type = _b.type, providers = _b.providers, declaredDirectives = _b.declaredDirectives, exportedDirectives = _b.exportedDirectives, declaredPipes = _b.declaredPipes, exportedPipes = _b.exportedPipes, entryComponents = _b.entryComponents, bootstrapComponents = _b.bootstrapComponents, importedModules = _b.importedModules, exportedModules = _b.exportedModules, schemas = _b.schemas, transitiveModule = _b.transitiveModule, id = _b.id; - this.type = type; - this.declaredDirectives = _normalizeArray(declaredDirectives); - this.exportedDirectives = _normalizeArray(exportedDirectives); - this.declaredPipes = _normalizeArray(declaredPipes); - this.exportedPipes = _normalizeArray(exportedPipes); - this.providers = _normalizeArray(providers); - this.entryComponents = _normalizeArray(entryComponents); - this.bootstrapComponents = _normalizeArray(bootstrapComponents); - this.importedModules = _normalizeArray(importedModules); - this.exportedModules = _normalizeArray(exportedModules); - this.schemas = _normalizeArray(schemas); - this.id = id; - this.transitiveModule = transitiveModule; - } - Object.defineProperty(CompileNgModuleMetadata.prototype, "identifier", { - get: function () { return this.type; }, - enumerable: true, - configurable: true - }); - CompileNgModuleMetadata.prototype.toSummary = function () { - return { - isSummary: true, - type: this.type, - entryComponents: this.entryComponents, - providers: this.providers, - importedModules: this.importedModules, - exportedModules: this.exportedModules, - exportedDirectives: this.exportedDirectives, - exportedPipes: this.exportedPipes, - directiveLoaders: this.transitiveModule.directiveLoaders - }; - }; - CompileNgModuleMetadata.prototype.toInjectorSummary = function () { - return { - isSummary: true, - type: this.type, - entryComponents: this.entryComponents, - providers: this.providers, - importedModules: this.importedModules, - exportedModules: this.exportedModules - }; - }; - CompileNgModuleMetadata.prototype.toDirectiveSummary = function () { - return { - isSummary: true, - type: this.type, - exportedDirectives: this.exportedDirectives, - exportedPipes: this.exportedPipes, - exportedModules: this.exportedModules, - directiveLoaders: this.transitiveModule.directiveLoaders - }; - }; - return CompileNgModuleMetadata; -}()); -var TransitiveCompileNgModuleMetadata = (function () { - function TransitiveCompileNgModuleMetadata(modules, providers, entryComponents, directives, pipes, directiveLoaders) { - var _this = this; - this.modules = modules; - this.providers = providers; - this.entryComponents = entryComponents; - this.directives = directives; - this.pipes = pipes; - this.directiveLoaders = directiveLoaders; - this.directivesSet = new Set(); - this.pipesSet = new Set(); - directives.forEach(function (dir) { return _this.directivesSet.add(dir.reference); }); - pipes.forEach(function (pipe) { return _this.pipesSet.add(pipe.reference); }); - } - return TransitiveCompileNgModuleMetadata; -}()); -function removeIdentifierDuplicates(items) { - var map = new Map(); - items.forEach(function (item) { - if (!map.get(item.identifier.reference)) { - map.set(item.identifier.reference, item); - } - }); - return Array.from(map.values()); -} -function _normalizeArray(obj) { - return obj || []; -} -function isStaticSymbol(value) { - return typeof value === 'object' && value !== null && value['name'] && value['filePath']; -} -var ProviderMeta = (function () { - function ProviderMeta(token, _a) { - var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi; - this.token = token; - this.useClass = useClass; - this.useValue = useValue; - this.useExisting = useExisting; - this.useFactory = useFactory; - this.dependencies = deps; - this.multi = !!multi; - } - return ProviderMeta; -}()); -//# sourceMappingURL=compile_metadata.js.map - -/***/ }), -/* 19 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_util__ = __webpack_require__(2); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Animation; }); - -/** - * @private - */ -var Animation = (function () { - function Animation(plt, ele, opts) { - this._dur = null; - this._es = null; - this._rvEs = null; - this.hasChildren = false; - this.isPlaying = false; - this.hasCompleted = false; - this.plt = plt; - this.element(ele); - this.opts = opts; - } - Animation.prototype.element = function (ele) { - if (ele) { - if (typeof ele === 'string') { - ele = this.plt.doc().querySelectorAll(ele); - for (var i = 0; i < ele.length; i++) { - this._addEle(ele[i]); - } - } - else if (ele.length) { - for (var i = 0; i < ele.length; i++) { - this._addEle(ele[i]); - } - } - else { - this._addEle(ele); - } - } - return this; - }; - /** - * NO DOM - */ - Animation.prototype._addEle = function (ele) { - if (ele.nativeElement) { - ele = ele.nativeElement; - } - if (ele.nodeType === 1) { - this._eL = (this._e = this._e || []).push(ele); - } - }; - /** - * Add a child animation to this animation. - */ - Animation.prototype.add = function (childAnimation) { - childAnimation.parent = this; - this.hasChildren = true; - this._cL = (this._c = this._c || []).push(childAnimation); - return this; - }; - /** - * Get the duration of this animation. If this animation does - * not have a duration, then it'll get the duration from its parent. - */ - Animation.prototype.getDuration = function (opts) { - if (opts && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_util__["f" /* isDefined */])(opts.duration)) { - return opts.duration; - } - else if (this._dur !== null) { - return this._dur; - } - else if (this.parent) { - return this.parent.getDuration(); - } - return 0; - }; - /** - * Set the duration for this animation. - */ - Animation.prototype.duration = function (milliseconds) { - this._dur = milliseconds; - return this; - }; - /** - * Get the easing of this animation. If this animation does - * not have an easing, then it'll get the easing from its parent. - */ - Animation.prototype.getEasing = function () { - if (this._rv && this._rvEs) { - return this._rvEs; - } - return this._es !== null ? this._es : (this.parent && this.parent.getEasing()) || null; - }; - /** - * Set the easing for this animation. - */ - Animation.prototype.easing = function (name) { - this._es = name; - return this; - }; - /** - * Set the easing for this reversed animation. - */ - Animation.prototype.easingReverse = function (name) { - this._rvEs = name; - return this; - }; - /** - * Add the "from" value for a specific property. - */ - Animation.prototype.from = function (prop, val) { - this._addProp('from', prop, val); - return this; - }; - /** - * Add the "to" value for a specific property. - */ - Animation.prototype.to = function (prop, val, clearProperyAfterTransition) { - var fx = this._addProp('to', prop, val); - if (clearProperyAfterTransition) { - // if this effect is a transform then clear the transform effect - // otherwise just clear the actual property - this.afterClearStyles([fx.trans ? this.plt.Css.transform : prop]); - } - return this; - }; - /** - * Shortcut to add both the "from" and "to" for the same property. - */ - Animation.prototype.fromTo = function (prop, fromVal, toVal, clearProperyAfterTransition) { - return this.from(prop, fromVal).to(prop, toVal, clearProperyAfterTransition); - }; - /** - * @private - * NO DOM - */ - Animation.prototype._getProp = function (name) { - if (this._fx) { - return this._fx.find(function (prop) { return prop.name === name; }); - } - else { - this._fx = []; - } - return null; - }; - Animation.prototype._addProp = function (state, prop, val) { - var fxProp = this._getProp(prop); - if (!fxProp) { - // first time we've see this EffectProperty - var shouldTrans = (ANIMATION_TRANSFORMS[prop] === 1); - fxProp = { - name: prop, - trans: shouldTrans, - // add the will-change property for transforms or opacity - wc: (shouldTrans ? this.plt.Css.transform : prop) - }; - this._fx.push(fxProp); - } - // add from/to EffectState to the EffectProperty - var fxState = { - val: val, - num: null, - unit: '', - }; - fxProp[state] = fxState; - if (typeof val === 'string' && val.indexOf(' ') < 0) { - var r = val.match(ANIMATION_CSS_VALUE_REGEX); - var num = parseFloat(r[1]); - if (!isNaN(num)) { - fxState.num = num; - } - fxState.unit = (r[0] !== r[2] ? r[2] : ''); - } - else if (typeof val === 'number') { - fxState.num = val; - } - return fxProp; - }; - /** - * Add CSS class to this animation's elements - * before the animation begins. - */ - Animation.prototype.beforeAddClass = function (className) { - (this._bfAdd = this._bfAdd || []).push(className); - return this; - }; - /** - * Remove CSS class from this animation's elements - * before the animation begins. - */ - Animation.prototype.beforeRemoveClass = function (className) { - (this._bfRm = this._bfRm || []).push(className); - return this; - }; - /** - * Set CSS inline styles to this animation's elements - * before the animation begins. - */ - Animation.prototype.beforeStyles = function (styles) { - this._bfSty = styles; - return this; - }; - /** - * Clear CSS inline styles from this animation's elements - * before the animation begins. - */ - Animation.prototype.beforeClearStyles = function (propertyNames) { - this._bfSty = this._bfSty || {}; - for (var i = 0; i < propertyNames.length; i++) { - this._bfSty[propertyNames[i]] = ''; - } - return this; - }; - /** - * Add a function which contains DOM reads, which will run - * before the animation begins. - */ - Animation.prototype.beforeAddRead = function (domReadFn) { - (this._rdFn = this._rdFn || []).push(domReadFn); - return this; - }; - /** - * Add a function which contains DOM writes, which will run - * before the animation begins. - */ - Animation.prototype.beforeAddWrite = function (domWriteFn) { - (this._wrFn = this._wrFn || []).push(domWriteFn); - return this; - }; - /** - * Add CSS class to this animation's elements - * after the animation finishes. - */ - Animation.prototype.afterAddClass = function (className) { - (this._afAdd = this._afAdd || []).push(className); - return this; - }; - /** - * Remove CSS class from this animation's elements - * after the animation finishes. - */ - Animation.prototype.afterRemoveClass = function (className) { - (this._afRm = this._afRm || []).push(className); - return this; - }; - /** - * Set CSS inline styles to this animation's elements - * after the animation finishes. - */ - Animation.prototype.afterStyles = function (styles) { - this._afSty = styles; - return this; - }; - /** - * Clear CSS inline styles from this animation's elements - * after the animation finishes. - */ - Animation.prototype.afterClearStyles = function (propertyNames) { - this._afSty = this._afSty || {}; - for (var i = 0; i < propertyNames.length; i++) { - this._afSty[propertyNames[i]] = ''; - } - return this; - }; - /** - * Play the animation. - */ - Animation.prototype.play = function (opts) { - var _this = this; - // If the animation was already invalidated (it did finish), do nothing - if (!this.plt) { - return; - } - // this is the top level animation and is in full control - // of when the async play() should actually kick off - // if there is no duration then it'll set the TO property immediately - // if there is a duration, then it'll stage all animations at the - // FROM property and transition duration, wait a few frames, then - // kick off the animation by setting the TO property for each animation - this._isAsync = this._hasDuration(opts); - // ensure all past transition end events have been cleared - this._clearAsync(); - // recursively kicks off the correct progress step for each child animation - // ******** DOM WRITE **************** - this._playInit(opts); - // doubling up RAFs since this animation was probably triggered - // from an input event, and just having one RAF would have this code - // run within the same frame as the triggering input event, and the - // input event probably already did way too much work for one frame - this.plt.raf(function () { - _this.plt.raf(_this._playDomInspect.bind(_this, opts)); - }); - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._playInit = function (opts) { - // always default that an animation does not tween - // a tween requires that an Animation class has an element - // and that it has at least one FROM/TO effect - // and that the FROM/TO effect can tween numeric values - this._twn = false; - this.isPlaying = true; - this.hasCompleted = false; - this._hasDur = (this.getDuration(opts) > ANIMATION_DURATION_MIN); - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._playInit(opts); - } - if (this._hasDur) { - // if there is a duration then we want to start at step 0 - // ******** DOM WRITE **************** - this._progress(0); - // add the will-change properties - // ******** DOM WRITE **************** - this._willChg(true); - } - }; - /** - * @private - * DOM WRITE - * NO RECURSION - * ROOT ANIMATION - */ - Animation.prototype._playDomInspect = function (opts) { - // fire off all the "before" function that have DOM READS in them - // elements will be in the DOM, however visibily hidden - // so we can read their dimensions if need be - // ******** DOM READ **************** - // ******** DOM WRITE **************** - this._beforeAnimation(); - // for the root animation only - // set the async TRANSITION END event - // and run onFinishes when the transition ends - var dur = this.getDuration(opts); - if (this._isAsync) { - this._asyncEnd(dur, true); - } - // ******** DOM WRITE **************** - this._playProgress(opts); - if (this._isAsync && this.plt) { - // this animation has a duration so we need another RAF - // for the CSS TRANSITION properties to kick in - this.plt.raf(this._playToStep.bind(this, 1)); - } - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._playProgress = function (opts) { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._playProgress(opts); - } - if (this._hasDur) { - // set the CSS TRANSITION duration/easing - // ******** DOM WRITE **************** - this._setTrans(this.getDuration(opts), false); - } - else { - // this animation does not have a duration, so it should not animate - // just go straight to the TO properties and call it done - // ******** DOM WRITE **************** - this._progress(1); - // since there was no animation, immediately run the after - // ******** DOM WRITE **************** - this._setAfterStyles(); - // this animation has no duration, so it has finished - // other animations could still be running - this._didFinish(true); - } - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._playToStep = function (stepValue) { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._playToStep(stepValue); - } - if (this._hasDur) { - // browser had some time to render everything in place - // and the transition duration/easing is set - // now set the TO properties which will trigger the transition to begin - // ******** DOM WRITE **************** - this._progress(stepValue); - } - }; - /** - * @private - * DOM WRITE - * NO RECURSION - * ROOT ANIMATION - */ - Animation.prototype._asyncEnd = function (dur, shouldComplete) { - (void 0) /* assert */; - (void 0) /* assert */; - (void 0) /* assert */; - var self = this; - function onTransitionEnd(ev) { - // congrats! a successful transition completed! - // ensure transition end events and timeouts have been cleared - self._clearAsync(); - // ******** DOM WRITE **************** - self._playEnd(); - // transition finished - self._didFinishAll(shouldComplete, true, false); - } - function onTransitionFallback() { - (void 0) /* console.debug */; - // oh noz! the transition end event didn't fire in time! - // instead the fallback timer when first - // if all goes well this fallback should never fire - // clear the other async end events from firing - self._tm = undefined; - self._clearAsync(); - // set the after styles - // ******** DOM WRITE **************** - self._playEnd(shouldComplete ? 1 : 0); - // transition finished - self._didFinishAll(shouldComplete, true, false); - } - // set the TRANSITION END event on one of the transition elements - self._unrgTrns = this.plt.transitionEnd(self._transEl(), onTransitionEnd, false); - // set a fallback timeout if the transition end event never fires, or is too slow - // transition end fallback: (animation duration + XXms) - self._tm = self.plt.timeout(onTransitionFallback, (dur + ANIMATION_TRANSITION_END_FALLBACK_PADDING_MS)); - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._playEnd = function (stepValue) { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._playEnd(stepValue); - } - if (this._hasDur) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_util__["f" /* isDefined */])(stepValue)) { - // too late to have a smooth animation, just finish it - // ******** DOM WRITE **************** - this._setTrans(0, true); - // ensure the ending progress step gets rendered - // ******** DOM WRITE **************** - this._progress(stepValue); - } - // set the after styles - // ******** DOM WRITE **************** - this._setAfterStyles(); - // remove the will-change properties - // ******** DOM WRITE **************** - this._willChg(false); - } - }; - /** - * @private - * NO DOM - * RECURSION - */ - Animation.prototype._hasDuration = function (opts) { - if (this.getDuration(opts) > ANIMATION_DURATION_MIN) { - return true; - } - var children = this._c; - for (var i = 0; i < this._cL; i++) { - if (children[i]._hasDuration(opts)) { - return true; - } - } - return false; - }; - /** - * @private - * NO DOM - * RECURSION - */ - Animation.prototype._hasDomReads = function () { - if (this._rdFn && this._rdFn.length) { - return true; - } - var children = this._c; - for (var i = 0; i < this._cL; i++) { - if (children[i]._hasDomReads()) { - return true; - } - } - return false; - }; - /** - * Immediately stop at the end of the animation. - */ - Animation.prototype.stop = function (stepValue) { - if (stepValue === void 0) { stepValue = 1; } - // ensure all past transition end events have been cleared - this._clearAsync(); - this._hasDur = true; - this._playEnd(stepValue); - }; - /** - * @private - * NO DOM - * NO RECURSION - */ - Animation.prototype._clearAsync = function () { - this._unrgTrns && this._unrgTrns(); - this._tm && clearTimeout(this._tm); - this._tm = this._unrgTrns = undefined; - }; - /** - * @private - * DOM WRITE - * NO RECURSION - */ - Animation.prototype._progress = function (stepValue) { - // bread 'n butter - var val; - var effects = this._fx; - var nuElements = this._eL; - if (!effects || !nuElements) { - return; - } - // flip the number if we're going in reverse - if (this._rv) { - stepValue = ((stepValue * -1) + 1); - } - var i, j; - var finalTransform = ''; - var elements = this._e; - for (i = 0; i < effects.length; i++) { - var fx = effects[i]; - if (fx.from && fx.to) { - var fromNum = fx.from.num; - var toNum = fx.to.num; - var tweenEffect = (fromNum !== toNum); - (void 0) /* assert */; - if (tweenEffect) { - this._twn = true; - } - if (stepValue === 0) { - // FROM - val = fx.from.val; - } - else if (stepValue === 1) { - // TO - val = fx.to.val; - } - else if (tweenEffect) { - // EVERYTHING IN BETWEEN - var valNum = (((toNum - fromNum) * stepValue) + fromNum); - var unit = fx.to.unit; - if (unit === 'px') { - valNum = Math.round(valNum); - } - val = valNum + unit; - } - if (val !== null) { - var prop = fx.name; - if (fx.trans) { - finalTransform += prop + '(' + val + ') '; - } - else { - for (j = 0; j < nuElements; j++) { - // ******** DOM WRITE **************** - elements[j].style[prop] = val; - } - } - } - } - } - // place all transforms on the same property - if (finalTransform.length) { - if (!this._rv && stepValue !== 1 || this._rv && stepValue !== 0) { - finalTransform += 'translateZ(0px)'; - } - var cssTransform = this.plt.Css.transform; - for (i = 0; i < elements.length; i++) { - // ******** DOM WRITE **************** - elements[i].style[cssTransform] = finalTransform; - } - } - }; - /** - * @private - * DOM WRITE - * NO RECURSION - */ - Animation.prototype._setTrans = function (dur, forcedLinearEasing) { - // Transition is not enabled if there are not effects - if (!this._fx) { - return; - } - // set the TRANSITION properties inline on the element - var elements = this._e; - var easing = (forcedLinearEasing ? 'linear' : this.getEasing()); - var durString = dur + 'ms'; - var Css = this.plt.Css; - var cssTransform = Css.transition; - var cssTransitionDuration = Css.transitionDuration; - var cssTransitionTimingFn = Css.transitionTimingFn; - var eleStyle; - for (var i = 0; i < this._eL; i++) { - eleStyle = elements[i].style; - if (dur > 0) { - // ******** DOM WRITE **************** - eleStyle[cssTransform] = ''; - eleStyle[cssTransitionDuration] = durString; - // each animation can have a different easing - if (easing) { - // ******** DOM WRITE **************** - eleStyle[cssTransitionTimingFn] = easing; - } - } - else { - eleStyle[cssTransform] = 'none'; - } - } - }; - /** - * @private - * DOM READ - * DOM WRITE - * RECURSION - */ - Animation.prototype._beforeAnimation = function () { - // fire off all the "before" function that have DOM READS in them - // elements will be in the DOM, however visibily hidden - // so we can read their dimensions if need be - // ******** DOM READ **************** - this._fireBeforeReadFunc(); - // ******** DOM READS ABOVE / DOM WRITES BELOW **************** - // fire off all the "before" function that have DOM WRITES in them - // ******** DOM WRITE **************** - this._fireBeforeWriteFunc(); - // stage all of the before css classes and inline styles - // ******** DOM WRITE **************** - this._setBeforeStyles(); - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._setBeforeStyles = function () { - var i, j; - var children = this._c; - for (i = 0; i < this._cL; i++) { - children[i]._setBeforeStyles(); - } - // before the animations have started - // only set before styles if animation is not reversed - if (this._rv) { - return; - } - var addClasses = this._bfAdd; - var removeClasses = this._bfRm; - var ele; - var eleClassList; - var prop; - for (i = 0; i < this._eL; i++) { - ele = this._e[i]; - eleClassList = ele.classList; - // css classes to add before the animation - if (addClasses) { - for (j = 0; j < addClasses.length; j++) { - // ******** DOM WRITE **************** - eleClassList.add(addClasses[j]); - } - } - // css classes to remove before the animation - if (removeClasses) { - for (j = 0; j < removeClasses.length; j++) { - // ******** DOM WRITE **************** - eleClassList.remove(removeClasses[j]); - } - } - // inline styles to add before the animation - if (this._bfSty) { - for (prop in this._bfSty) { - // ******** DOM WRITE **************** - ele.style[prop] = this._bfSty[prop]; - } - } - } - }; - /** - * @private - * DOM READ - * RECURSION - */ - Animation.prototype._fireBeforeReadFunc = function () { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM READ **************** - children[i]._fireBeforeReadFunc(); - } - var readFunctions = this._rdFn; - if (readFunctions) { - for (var i = 0; i < readFunctions.length; i++) { - // ******** DOM READ **************** - readFunctions[i](); - } - } - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._fireBeforeWriteFunc = function () { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._fireBeforeWriteFunc(); - } - var writeFunctions = this._wrFn; - if (this._wrFn) { - for (var i = 0; i < writeFunctions.length; i++) { - // ******** DOM WRITE **************** - writeFunctions[i](); - } - } - }; - /** - * @private - * DOM WRITE - */ - Animation.prototype._setAfterStyles = function () { - var i, j; - var ele; - var eleClassList; - var elements = this._e; - for (i = 0; i < this._eL; i++) { - ele = elements[i]; - eleClassList = ele.classList; - // remove the transition duration/easing - // ******** DOM WRITE **************** - ele.style[this.plt.Css.transitionDuration] = ele.style[this.plt.Css.transitionTimingFn] = ''; - if (this._rv) { - // finished in reverse direction - // css classes that were added before the animation should be removed - if (this._bfAdd) { - for (j = 0; j < this._bfAdd.length; j++) { - // ******** DOM WRITE **************** - eleClassList.remove(this._bfAdd[j]); - } - } - // css classes that were removed before the animation should be added - if (this._bfRm) { - for (j = 0; j < this._bfRm.length; j++) { - // ******** DOM WRITE **************** - eleClassList.add(this._bfRm[j]); - } - } - // inline styles that were added before the animation should be removed - if (this._bfSty) { - for (var prop in this._bfSty) { - // ******** DOM WRITE **************** - ele.style[prop] = ''; - } - } - } - else { - // finished in forward direction - // css classes to add after the animation - if (this._afAdd) { - for (j = 0; j < this._afAdd.length; j++) { - // ******** DOM WRITE **************** - eleClassList.add(this._afAdd[j]); - } - } - // css classes to remove after the animation - if (this._afRm) { - for (j = 0; j < this._afRm.length; j++) { - // ******** DOM WRITE **************** - eleClassList.remove(this._afRm[j]); - } - } - // inline styles to add after the animation - if (this._afSty) { - for (var prop in this._afSty) { - // ******** DOM WRITE **************** - ele.style[prop] = this._afSty[prop]; - } - } - } - } - }; - /** - * @private - * DOM WRITE - * NO RECURSION - */ - Animation.prototype._willChg = function (addWillChange) { - var wc; - var effects = this._fx; - var willChange; - if (addWillChange && effects) { - wc = []; - for (var i = 0; i < effects.length; i++) { - var propWC = effects[i].wc; - if (propWC === 'webkitTransform') { - wc.push('transform', '-webkit-transform'); - } - else { - wc.push(propWC); - } - } - willChange = wc.join(','); - } - else { - willChange = ''; - } - for (var i = 0; i < this._eL; i++) { - // ******** DOM WRITE **************** - this._e[i].style.willChange = willChange; - } - }; - /** - * Start the animation with a user controlled progress. - */ - Animation.prototype.progressStart = function () { - // ensure all past transition end events have been cleared - this._clearAsync(); - // ******** DOM READ/WRITE **************** - this._beforeAnimation(); - // ******** DOM WRITE **************** - this._progressStart(); - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._progressStart = function () { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._progressStart(); - } - // force no duration, linear easing - // ******** DOM WRITE **************** - this._setTrans(0, true); - // ******** DOM WRITE **************** - this._willChg(true); - }; - /** - * Set the progress step for this animation. - * progressStep() is not debounced, so it should not be called faster than 60FPS. - */ - Animation.prototype.progressStep = function (stepValue) { - // only update if the last update was more than 16ms ago - stepValue = Math.min(1, Math.max(0, stepValue)); - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i].progressStep(stepValue); - } - if (this._rv) { - // if the animation is going in reverse then - // flip the step value: 0 becomes 1, 1 becomes 0 - stepValue = ((stepValue * -1) + 1); - } - // ******** DOM WRITE **************** - this._progress(stepValue); - }; - /** - * End the progress animation. - */ - Animation.prototype.progressEnd = function (shouldComplete, currentStepValue, dur) { - if (dur === void 0) { dur = -1; } - (void 0) /* console.debug */; - if (this._rv) { - // if the animation is going in reverse then - // flip the step value: 0 becomes 1, 1 becomes 0 - currentStepValue = ((currentStepValue * -1) + 1); - } - var stepValue = shouldComplete ? 1 : 0; - var diff = Math.abs(currentStepValue - stepValue); - if (diff < 0.05) { - dur = 0; - } - else if (dur < 0) { - dur = this._dur; - } - this._isAsync = (dur > 30); - this._progressEnd(shouldComplete, stepValue, dur, this._isAsync); - if (this._isAsync) { - // for the root animation only - // set the async TRANSITION END event - // and run onFinishes when the transition ends - // ******** DOM WRITE **************** - this._asyncEnd(dur, shouldComplete); - // this animation has a duration so we need another RAF - // for the CSS TRANSITION properties to kick in - this.plt && this.plt.raf(this._playToStep.bind(this, stepValue)); - } - }; - /** - * @private - * DOM WRITE - * RECURSION - */ - Animation.prototype._progressEnd = function (shouldComplete, stepValue, dur, isAsync) { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - // ******** DOM WRITE **************** - children[i]._progressEnd(shouldComplete, stepValue, dur, isAsync); - } - if (!isAsync) { - // stop immediately - // set all the animations to their final position - // ******** DOM WRITE **************** - this._progress(stepValue); - this._willChg(false); - this._setAfterStyles(); - this._didFinish(shouldComplete); - } - else { - // animate it back to it's ending position - this.isPlaying = true; - this.hasCompleted = false; - this._hasDur = true; - // ******** DOM WRITE **************** - this._willChg(true); - this._setTrans(dur, false); - } - }; - /** - * Add a callback to fire when the animation has finished. - */ - Animation.prototype.onFinish = function (callback, onceTimeCallback, clearOnFinishCallacks) { - if (onceTimeCallback === void 0) { onceTimeCallback = false; } - if (clearOnFinishCallacks === void 0) { clearOnFinishCallacks = false; } - if (clearOnFinishCallacks) { - this._fFn = this._fOneFn = undefined; - } - if (onceTimeCallback) { - this._fOneFn = this._fOneFn || []; - this._fOneFn.push(callback); - } - else { - this._fFn = this._fFn || []; - this._fFn.push(callback); - } - return this; - }; - /** - * @private - * NO DOM - * RECURSION - */ - Animation.prototype._didFinishAll = function (hasCompleted, finishAsyncAnimations, finishNoDurationAnimations) { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - children[i]._didFinishAll(hasCompleted, finishAsyncAnimations, finishNoDurationAnimations); - } - if (finishAsyncAnimations && this._isAsync || finishNoDurationAnimations && !this._isAsync) { - this._didFinish(hasCompleted); - } - }; - /** - * @private - * NO RECURSION - */ - Animation.prototype._didFinish = function (hasCompleted) { - this.isPlaying = false; - this.hasCompleted = hasCompleted; - if (this._fFn) { - // run all finish callbacks - for (var i = 0; i < this._fFn.length; i++) { - this._fFn[i](this); - } - } - if (this._fOneFn) { - // run all "onetime" finish callbacks - for (var i = 0; i < this._fOneFn.length; i++) { - this._fOneFn[i](this); - } - this._fOneFn.length = 0; - } - }; - /** - * Reverse the animation. - */ - Animation.prototype.reverse = function (shouldReverse) { - if (shouldReverse === void 0) { shouldReverse = true; } - var children = this._c; - for (var i = 0; i < this._cL; i++) { - children[i].reverse(shouldReverse); - } - this._rv = shouldReverse; - return this; - }; - /** - * Recursively destroy this animation and all child animations. - */ - Animation.prototype.destroy = function () { - var children = this._c; - for (var i = 0; i < this._cL; i++) { - children[i].destroy(); - } - this._clearAsync(); - this.parent = this.plt = this._e = this._rdFn = this._wrFn = null; - if (this._c) { - this._c.length = this._cL = 0; - } - if (this._fFn) { - this._fFn.length = 0; - } - if (this._fOneFn) { - this._fOneFn.length = 0; - } - }; - /** - * @private - * NO DOM - */ - Animation.prototype._transEl = function () { - // get the lowest level element that has an Animation - var targetEl; - for (var i = 0; i < this._cL; i++) { - targetEl = this._c[i]._transEl(); - if (targetEl) { - return targetEl; - } - } - return (this._twn && this._hasDur && this._eL ? this._e[0] : null); - }; - return Animation; -}()); -var ANIMATION_TRANSFORMS = { - 'translateX': 1, - 'translateY': 1, - 'translateZ': 1, - 'scale': 1, - 'scaleX': 1, - 'scaleY': 1, - 'scaleZ': 1, - 'rotate': 1, - 'rotateX': 1, - 'rotateY': 1, - 'rotateZ': 1, - 'skewX': 1, - 'skewY': 1, - 'perspective': 1 -}; -var ANIMATION_CSS_VALUE_REGEX = /(^-?\d*\.?\d*)(.*)/; -var ANIMATION_DURATION_MIN = 32; -var ANIMATION_TRANSITION_END_FALLBACK_PADDING_MS = 400; -//# sourceMappingURL=animation.js.map - -/***/ }), -/* 20 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export scheduleMicroTask */ -/* unused harmony export global */ -/* harmony export (immutable) */ __webpack_exports__["f"] = getTypeNameForDebugging; -/* harmony export (immutable) */ __webpack_exports__["e"] = isPresent; -/* harmony export (immutable) */ __webpack_exports__["b"] = isBlank; -/* unused harmony export isStrictStringMap */ -/* harmony export (immutable) */ __webpack_exports__["c"] = isDate; -/* harmony export (immutable) */ __webpack_exports__["a"] = stringify; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return NumberWrapper; }); -/* unused harmony export looseIdentical */ -/* harmony export (immutable) */ __webpack_exports__["g"] = isJsObject; -/* unused harmony export print */ -/* unused harmony export warn */ -/* unused harmony export setValueOnPath */ -/* harmony export (immutable) */ __webpack_exports__["h"] = getSymbolIterator; -/* unused harmony export isPrimitive */ -/* unused harmony export escapeRegExp */ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var globalScope; -if (typeof window === 'undefined') { - if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { - // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492 - globalScope = self; - } - else { - globalScope = global; - } -} -else { - globalScope = window; -} -function scheduleMicroTask(fn) { - Zone.current.scheduleMicroTask('scheduleMicrotask', fn); -} -// Need to declare a new variable for global here since TypeScript -// exports the original value of the symbol. -var _global = globalScope; - -function getTypeNameForDebugging(type) { - return type['name'] || typeof type; -} -// TODO: remove calls to assert in production environment -// Note: Can't just export this and import in in other files -// as `assert` is a reserved keyword in Dart -_global.assert = function assert(condition) { - // TODO: to be fixed properly via #2830, noop for now -}; -function isPresent(obj) { - return obj != null; -} -function isBlank(obj) { - return obj == null; -} -var STRING_MAP_PROTO = Object.getPrototypeOf({}); -function isStrictStringMap(obj) { - return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO; -} -function isDate(obj) { - return obj instanceof Date && !isNaN(obj.valueOf()); -} -function stringify(token) { - if (typeof token === 'string') { - return token; - } - if (token == null) { - return '' + token; - } - if (token.overriddenName) { - return token.overriddenName; - } - if (token.name) { - return token.name; - } - var res = token.toString(); - var newLineIndex = res.indexOf('\n'); - return newLineIndex === -1 ? res : res.substring(0, newLineIndex); -} -var NumberWrapper = (function () { - function NumberWrapper() { - } - NumberWrapper.parseIntAutoRadix = function (text) { - var result = parseInt(text); - if (isNaN(result)) { - throw new Error('Invalid integer literal when parsing ' + text); - } - return result; - }; - NumberWrapper.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); }; - return NumberWrapper; -}()); -// JS has NaN !== NaN -function looseIdentical(a, b) { - return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b); -} -function isJsObject(o) { - return o !== null && (typeof o === 'function' || typeof o === 'object'); -} -function print(obj) { - console.log(obj); -} -function warn(obj) { - console.warn(obj); -} -function setValueOnPath(global, path, value) { - var parts = path.split('.'); - var obj = global; - while (parts.length > 1) { - var name_1 = parts.shift(); - if (obj.hasOwnProperty(name_1) && obj[name_1] != null) { - obj = obj[name_1]; - } - else { - obj = obj[name_1] = {}; - } - } - if (obj === undefined || obj === null) { - obj = {}; - } - obj[parts.shift()] = value; -} -var _symbolIterator = null; -function getSymbolIterator() { - if (!_symbolIterator) { - if (globalScope.Symbol && Symbol.iterator) { - _symbolIterator = Symbol.iterator; - } - else { - // es6-shim specific logic - var keys = Object.getOwnPropertyNames(Map.prototype); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (key !== 'entries' && key !== 'size' && - Map.prototype[key] === Map.prototype['entries']) { - _symbolIterator = key; - } - } - } - } - return _symbolIterator; -} -function isPrimitive(obj) { - return !isJsObject(obj); -} -function escapeRegExp(s) { - return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -} -//# sourceMappingURL=lang.js.map -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(40))) - -/***/ }), -/* 21 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["b"] = unimplemented; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BaseError; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return WrappedError; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -function unimplemented() { - throw new Error('unimplemented'); -} -/** - * @stable - */ -var BaseError = (function (_super) { - __extends(BaseError, _super); - function BaseError(message) { - // Errors don't use current this, instead they create a new instance. - // We have to do forward all of our api to the nativeInstance. - var nativeError = _super.call(this, message); - this._nativeError = nativeError; - } - Object.defineProperty(BaseError.prototype, "message", { - get: function () { return this._nativeError.message; }, - set: function (message) { this._nativeError.message = message; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseError.prototype, "name", { - get: function () { return this._nativeError.name; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseError.prototype, "stack", { - get: function () { return this._nativeError.stack; }, - set: function (value) { this._nativeError.stack = value; }, - enumerable: true, - configurable: true - }); - BaseError.prototype.toString = function () { return this._nativeError.toString(); }; - return BaseError; -}(Error)); -/** - * @stable - */ -var WrappedError = (function (_super) { - __extends(WrappedError, _super); - function WrappedError(message, error) { - _super.call(this, message + " caused by: " + (error instanceof Error ? error.message : error)); - this.originalError = error; - } - Object.defineProperty(WrappedError.prototype, "stack", { - get: function () { - return (this.originalError instanceof Error ? this.originalError : this._nativeError) - .stack; - }, - enumerable: true, - configurable: true - }); - return WrappedError; -}(BaseError)); -//# sourceMappingURL=errors.js.map - -/***/ }), -/* 22 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["d"] = round; -/* harmony export (immutable) */ __webpack_exports__["c"] = inlineStyle; -/* harmony export (immutable) */ __webpack_exports__["i"] = addClass; -/* harmony export (immutable) */ __webpack_exports__["j"] = removeClass; -/* harmony export (immutable) */ __webpack_exports__["o"] = getElementIndex; -/* harmony export (immutable) */ __webpack_exports__["n"] = queryChildren; -/* harmony export (immutable) */ __webpack_exports__["h"] = eachChild; -/* harmony export (immutable) */ __webpack_exports__["k"] = transform; -/* harmony export (immutable) */ __webpack_exports__["l"] = transition; -/* harmony export (immutable) */ __webpack_exports__["q"] = triggerTransitionEnd; -/* harmony export (immutable) */ __webpack_exports__["m"] = offset; -/* harmony export (immutable) */ __webpack_exports__["e"] = updateSlidesOffset; -/* harmony export (immutable) */ __webpack_exports__["b"] = isHorizontal; -/* harmony export (immutable) */ __webpack_exports__["p"] = isFormElement; -/* harmony export (immutable) */ __webpack_exports__["g"] = minTranslate; -/* harmony export (immutable) */ __webpack_exports__["f"] = maxTranslate; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CLS; }); -function round(a) { - return Math.floor(a); -} -function inlineStyle(ele, styles) { - if (ele) { - if (ele.length) { - for (var i = 0; i < ele.length; i++) { - inlineStyle(ele[i], styles); - } - } - else if (ele.nodeType) { - var cssProps = Object.keys(styles); - for (var i = 0; i < cssProps.length; i++) { - ele.style[cssProps[i]] = styles[cssProps[i]]; - } - } - } -} -function addClass(ele, className) { - if (ele) { - if (ele.length) { - for (var i = 0; i < ele.length; i++) { - addClass(ele[i], className); - } - } - else if (ele.nodeType) { - if (Array.isArray(className)) { - className.forEach(function (cls) { - ele.classList.add(cls); - }); - } - else { - ele.classList.add(className); - } - } - } -} -function removeClass(ele, className) { - if (ele) { - if (ele.length) { - for (var i = 0; i < ele.length; i++) { - removeClass(ele[i], className); - } - } - else if (ele.nodeType) { - if (Array.isArray(className)) { - className.forEach(function (cls) { - ele.classList.remove(cls); - }); - } - else { - ele.classList.remove(className); - } - } - } -} -function getElementIndex(ele) { - var i = 0; - if (ele) { - while ((ele = ele.previousSibling) !== null) { - if (ele.nodeType === 1) - i++; - } - } - return i; -} -function queryChildren(parentEle, query) { - if (parentEle) { - return parentEle.querySelectorAll(query); - } - return []; -} -function eachChild(parentEle, query, callback) { - if (parentEle) { - var nodes = parentEle.querySelectorAll(query); - for (var i = 0; i < nodes.length; i++) { - callback(nodes[i]); - } - } -} -function transform(ele, val) { - if (ele) { - var elStyle = ele.style; - elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.transform = val; - } -} -function transition(ele, duration) { - if (ele) { - if (typeof duration !== 'string') { - duration = duration + 'ms'; - } - var elStyle = ele.style; - elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.transitionDuration = duration; - } -} -function triggerTransitionEnd(plt, ele) { - try { - var win = plt.win(); - var evt = new win.CustomEvent('transitionend', { bubbles: true, cancelable: true }); - ele.dispatchEvent(evt); - } - catch (e) { } -} -function offset(ele, plt) { - if (ele) { - var box = plt.getElementBoundingClientRect(ele); - var body = plt.doc().body; - var win = plt.win(); - var clientTop = ele.clientTop || body.clientTop || 0; - var clientLeft = ele.clientLeft || body.clientLeft || 0; - var scrollTop = win.pageYOffset || ele.scrollTop; - var scrollLeft = win.pageXOffset || ele.scrollLeft; - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - }; - } - return null; -} -function updateSlidesOffset(s) { - for (var i = 0; i < s._slides.length; i++) { - s._slides[i].swiperSlideOffset = isHorizontal(s) ? s._slides[i].offsetLeft : s._slides[i].offsetTop; - } -} -function isHorizontal(s) { - return s.direction === 'horizontal'; -} -var formElements = ['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON', 'VIDEO']; -function isFormElement(el) { - return !!el && formElements.indexOf(el.tagName) > -1; -} -/*========================= - Min/Max Translate - ===========================*/ -function minTranslate(s) { - return (-s._snapGrid[0]); -} -function maxTranslate(s) { - return (-s._snapGrid[s._snapGrid.length - 1]); -} -var CLS = { - // Classnames - noSwiping: 'swiper-no-swiping', - containerModifier: 'swiper-container-', - slide: 'swiper-slide', - slideActive: 'swiper-slide-active', - slideDuplicateActive: 'swiper-slide-duplicate-active', - slideVisible: 'swiper-slide-visible', - slideDuplicate: 'swiper-slide-duplicate', - slideNext: 'swiper-slide-next', - slideDuplicateNext: 'swiper-slide-duplicate-next', - slidePrev: 'swiper-slide-prev', - slideDuplicatePrev: 'swiper-slide-duplicate-prev', - wrapper: 'swiper-wrapper', - bullet: 'swiper-pagination-bullet', - bulletActive: 'swiper-pagination-bullet-active', - buttonDisabled: 'swiper-button-disabled', - paginationCurrent: 'swiper-pagination-current', - paginationTotal: 'swiper-pagination-total', - paginationHidden: 'swiper-pagination-hidden', - paginationProgressbar: 'swiper-pagination-progressbar', - paginationClickable: 'swiper-pagination-clickable', - paginationModifier: 'swiper-pagination-', - lazyLoading: 'swiper-lazy', - lazyStatusLoading: 'swiper-lazy-loading', - lazyStatusLoaded: 'swiper-lazy-loaded', - lazyPreloader: 'swiper-lazy-preloader', - notification: 'swiper-notification', - preloader: 'preloader', - zoomContainer: 'swiper-zoom-container', -}; -//# sourceMappingURL=swiper-utils.js.map - -/***/ }), -/* 23 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_common__ = __webpack_require__(127); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__angular_platform_browser__ = __webpack_require__(80); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__angular_forms__ = __webpack_require__(26); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__angular_http__ = __webpack_require__(174); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_action_sheet_action_sheet__ = __webpack_require__(190); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_alert_alert__ = __webpack_require__(192); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_app_app__ = __webpack_require__(10); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__ = __webpack_require__(193); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__config_config__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__navigation_deep_linker__ = __webpack_require__(47); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__platform_dom_controller__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__util_events__ = __webpack_require__(365); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__util_form__ = __webpack_require__(35); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__gestures_gesture_controller__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__tap_click_haptic__ = __webpack_require__(84); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__gestures_gesture_config__ = __webpack_require__(666); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__platform_keyboard__ = __webpack_require__(56); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__components_loading_loading__ = __webpack_require__(323); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__components_menu_menu_controller__ = __webpack_require__(55); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__components_modal_modal__ = __webpack_require__(327); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__components_picker_picker__ = __webpack_require__(206); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__platform_platform__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__platform_platform_registry__ = __webpack_require__(672); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__components_popover_popover__ = __webpack_require__(332); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__tap_click_tap_click__ = __webpack_require__(361); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__components_toast_toast__ = __webpack_require__(349); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__config_mode_registry__ = __webpack_require__(665); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__transitions_transition_registry__ = __webpack_require__(362); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__transitions_transition_controller__ = __webpack_require__(125); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__ = __webpack_require__(357); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__components_action_sheet_action_sheet_component__ = __webpack_require__(189); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__components_alert_alert_component__ = __webpack_require__(191); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__components_loading_loading_component__ = __webpack_require__(202); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__components_modal_modal_component__ = __webpack_require__(203); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__components_picker_picker_component__ = __webpack_require__(118); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__components_popover_popover_component__ = __webpack_require__(207); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__components_toast_toast_component__ = __webpack_require__(216); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__components_avatar_avatar__ = __webpack_require__(308); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__components_backdrop_backdrop__ = __webpack_require__(194); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__components_badge_badge__ = __webpack_require__(309); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__components_button_button__ = __webpack_require__(81); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__components_card_card__ = __webpack_require__(310); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__components_checkbox_checkbox__ = __webpack_require__(311); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__components_chip_chip__ = __webpack_require__(312); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__util_click_block__ = __webpack_require__(363); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__components_content_content__ = __webpack_require__(38); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__components_datetime_datetime__ = __webpack_require__(313); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__ = __webpack_require__(314); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__components_grid_col__ = __webpack_require__(315); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__components_grid_grid__ = __webpack_require__(316); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__components_grid_row__ = __webpack_require__(317); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__components_icon_icon__ = __webpack_require__(195); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__components_img_img__ = __webpack_require__(318); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__components_infinite_scroll_infinite_scroll__ = __webpack_require__(196); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__components_infinite_scroll_infinite_scroll_content__ = __webpack_require__(319); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__components_item_item__ = __webpack_require__(33); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__components_item_item_reorder__ = __webpack_require__(198); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__components_item_item_sliding__ = __webpack_require__(322); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__components_label_label__ = __webpack_require__(199); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__components_list_list__ = __webpack_require__(201); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__components_list_list_header__ = __webpack_require__(200); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__components_menu_menu__ = __webpack_require__(326); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__components_menu_menu_close__ = __webpack_require__(324); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__components_menu_menu_toggle__ = __webpack_require__(325); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__components_input_native_input__ = __webpack_require__(197); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__components_nav_nav__ = __webpack_require__(330); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__components_nav_nav_pop__ = __webpack_require__(328); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__components_nav_nav_push__ = __webpack_require__(329); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__components_navbar_navbar__ = __webpack_require__(82); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__components_note_note__ = __webpack_require__(331); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__components_option_option__ = __webpack_require__(205); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__components_nav_overlay_portal__ = __webpack_require__(204); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__components_radio_radio_button__ = __webpack_require__(333); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__components_radio_radio_group__ = __webpack_require__(208); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__components_range_range__ = __webpack_require__(335); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__components_range_range_knob__ = __webpack_require__(334); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__components_refresher_refresher__ = __webpack_require__(209); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__components_refresher_refresher_content__ = __webpack_require__(336); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__components_scroll_scroll__ = __webpack_require__(337); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__components_searchbar_searchbar__ = __webpack_require__(338); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__components_segment_segment__ = __webpack_require__(339); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__components_select_select__ = __webpack_require__(340); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__components_show_hide_when_show_hide_when__ = __webpack_require__(341); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__components_slides_slide__ = __webpack_require__(342); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__components_slides_slides__ = __webpack_require__(210); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__components_spinner_spinner__ = __webpack_require__(345); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__components_tabs_tab__ = __webpack_require__(347); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__components_tabs_tabs__ = __webpack_require__(122); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__components_tabs_tab_button__ = __webpack_require__(346); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__components_tabs_tab_highlight__ = __webpack_require__(215); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__components_input_input__ = __webpack_require__(320); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__components_thumbnail_thumbnail__ = __webpack_require__(348); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__components_toggle_toggle__ = __webpack_require__(350); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__ = __webpack_require__(83); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__components_toolbar_toolbar_item__ = __webpack_require__(351); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__components_toolbar_toolbar_title__ = __webpack_require__(352); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__components_typography_typography__ = __webpack_require__(353); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__components_virtual_scroll_virtual_scroll__ = __webpack_require__(355); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__ = __webpack_require__(354); -/* unused harmony reexport ActionSheet */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return __WEBPACK_IMPORTED_MODULE_5__components_action_sheet_action_sheet__["a"]; }); -/* unused harmony reexport Alert */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __WEBPACK_IMPORTED_MODULE_6__components_alert_alert__["a"]; }); -/* unused harmony reexport App */ -/* unused harmony reexport Avatar */ -/* unused harmony reexport Backdrop */ -/* unused harmony reexport Badge */ -/* unused harmony reexport Button */ -/* unused harmony reexport Card */ -/* unused harmony reexport CardContent */ -/* unused harmony reexport CardHeader */ -/* unused harmony reexport CardTitle */ -/* unused harmony reexport Checkbox */ -/* unused harmony reexport Chip */ -/* unused harmony reexport ClickBlock */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __WEBPACK_IMPORTED_MODULE_46__components_content_content__["a"]; }); -/* unused harmony reexport DateTime */ -/* unused harmony reexport FabContainer */ -/* unused harmony reexport FabButton */ -/* unused harmony reexport FabList */ -/* unused harmony reexport Col */ -/* unused harmony reexport Grid */ -/* unused harmony reexport Row */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__components_ion__ = __webpack_require__(7); -/* unused harmony reexport Ion */ -/* unused harmony reexport Icon */ -/* unused harmony reexport Img */ -/* unused harmony reexport InfiniteScroll */ -/* unused harmony reexport InfiniteScrollContent */ -/* unused harmony reexport TextInput */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__["a"]; }); -/* unused harmony reexport Item */ -/* unused harmony reexport ItemContent */ -/* unused harmony reexport ItemDivider */ -/* unused harmony reexport ItemGroup */ -/* unused harmony reexport ItemReorder */ -/* unused harmony reexport Reorder */ -/* unused harmony reexport ItemSliding */ -/* unused harmony reexport ItemOptions */ -/* unused harmony reexport Label */ -/* unused harmony reexport List */ -/* unused harmony reexport ListHeader */ -/* unused harmony reexport Loading */ -/* unused harmony reexport LoadingController */ -/* unused harmony reexport Menu */ -/* unused harmony reexport MenuClose */ -/* unused harmony reexport MenuController */ -/* unused harmony reexport MenuToggle */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__components_menu_menu_types__ = __webpack_require__(654); -/* unused harmony reexport MenuType */ -/* unused harmony reexport Modal */ -/* unused harmony reexport ModalController */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return __WEBPACK_IMPORTED_MODULE_66__components_nav_nav__["a"]; }); -/* unused harmony reexport NavPop */ -/* unused harmony reexport NavPopAnchor */ -/* unused harmony reexport NavPush */ -/* unused harmony reexport NavPushAnchor */ -/* unused harmony reexport Navbar */ -/* unused harmony reexport NativeInput */ -/* unused harmony reexport NextInput */ -/* unused harmony reexport Note */ -/* unused harmony reexport Option */ -/* unused harmony reexport OverlayPortal */ -/* unused harmony reexport Picker */ -/* unused harmony reexport PickerController */ -/* unused harmony reexport Popover */ -/* unused harmony reexport PopoverController */ -/* unused harmony reexport RadioButton */ -/* unused harmony reexport RadioGroup */ -/* unused harmony reexport Range */ -/* unused harmony reexport RangeKnob */ -/* unused harmony reexport Refresher */ -/* unused harmony reexport RefresherContent */ -/* unused harmony reexport Scroll */ -/* unused harmony reexport Searchbar */ -/* unused harmony reexport Segment */ -/* unused harmony reexport SegmentButton */ -/* unused harmony reexport Select */ -/* unused harmony reexport ShowWhen */ -/* unused harmony reexport HideWhen */ -/* unused harmony reexport DisplayWhen */ -/* unused harmony reexport Slide */ -/* unused harmony reexport Slides */ -/* unused harmony reexport Spinner */ -/* unused harmony reexport Tab */ -/* unused harmony reexport TabButton */ -/* unused harmony reexport TabHighlight */ -/* unused harmony reexport Tabs */ -/* unused harmony reexport TapClick */ -/* unused harmony reexport setupTapClick */ -/* unused harmony reexport isActivatable */ -/* unused harmony reexport Toast */ -/* unused harmony reexport ToastController */ -/* unused harmony reexport Toggle */ -/* unused harmony reexport Toolbar */ -/* unused harmony reexport ToolbarBase */ -/* unused harmony reexport Header */ -/* unused harmony reexport Footer */ -/* unused harmony reexport ToolbarItem */ -/* unused harmony reexport ToolbarTitle */ -/* unused harmony reexport Thumbnail */ -/* unused harmony reexport Typography */ -/* unused harmony reexport VirtualScroll */ -/* unused harmony reexport Config */ -/* unused harmony reexport setupConfig */ -/* unused harmony reexport ConfigToken */ -/* unused harmony reexport DomController */ -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return __WEBPACK_IMPORTED_MODULE_22__platform_platform__["a"]; }); -/* unused harmony reexport setupPlatform */ -/* unused harmony reexport Haptic */ -/* unused harmony reexport DeepLinker */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__navigation_nav_controller__ = __webpack_require__(39); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __WEBPACK_IMPORTED_MODULE_102__navigation_nav_controller__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__navigation_nav_controller_base__ = __webpack_require__(124); -/* unused harmony reexport NavControllerBase */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__navigation_nav_params__ = __webpack_require__(34); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __WEBPACK_IMPORTED_MODULE_104__navigation_nav_params__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__navigation_nav_util__ = __webpack_require__(65); -/* unused harmony reexport DeepLink */ -/* unused harmony reexport DeepLinkMetadata */ -/* unused harmony reexport UrlSerializer */ -/* unused harmony reexport DeepLinkConfigToken */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__navigation_view_controller__ = __webpack_require__(9); -/* unused harmony reexport ViewController */ -/* unused harmony reexport ActionSheetCmp */ -/* unused harmony reexport AlertCmp */ -/* unused harmony reexport LoadingCmp */ -/* unused harmony reexport ModalCmp */ -/* unused harmony reexport PickerCmp */ -/* unused harmony reexport PickerColumnCmp */ -/* unused harmony reexport PopoverCmp */ -/* unused harmony reexport ToastCmp */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__gestures_drag_gesture__ = __webpack_require__(123); -/* unused harmony reexport PanGesture */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__gestures_gesture__ = __webpack_require__(667); -/* unused harmony reexport Gesture */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__gestures_slide_edge_gesture__ = __webpack_require__(217); -/* unused harmony reexport SlideEdgeGesture */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__gestures_slide_gesture__ = __webpack_require__(356); -/* unused harmony reexport SlideGesture */ -/* unused harmony reexport BLOCK_ALL */ -/* unused harmony reexport GESTURE_GO_BACK_SWIPE */ -/* unused harmony reexport GESTURE_MENU_SWIPE */ -/* unused harmony reexport GESTURE_ITEM_SWIPE */ -/* unused harmony reexport GESTURE_REFRESHER */ -/* unused harmony reexport GESTURE_TOGGLE */ -/* unused harmony reexport GestureController */ -/* unused harmony reexport GestureDelegate */ -/* unused harmony reexport BlockerDelegate */ -/* unused harmony reexport Events */ -/* unused harmony reexport setupEvents */ -/* unused harmony reexport setupProvideEvents */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__util_ionic_error_handler__ = __webpack_require__(679); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_111__util_ionic_error_handler__["a"]; }); -/* unused harmony reexport Keyboard */ -/* unused harmony reexport Form */ -/* unused harmony reexport IonicFormInput */ -/* unused harmony reexport IonicTapInput */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__util_util__ = __webpack_require__(2); -/* unused harmony reexport reorderArray */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__animations_animation__ = __webpack_require__(19); -/* unused harmony reexport Animation */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__transitions_page_transition__ = __webpack_require__(66); -/* unused harmony reexport PageTransition */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__transitions_transition__ = __webpack_require__(57); -/* unused harmony reexport Transition */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IonicModule; }); -/* unused harmony export provideLocationStrategy */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** - * Export Components/Directives - */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** - * Export Providers - */ - - - - - - - - - - - - - - - - - - -/** - * Export Utils - */ - - - - - - - - - - - - - -/** - * @name IonicModule - * @description - * IonicModule is an NgModule that helps bootstrap a whole Ionic App. By passing a root component, IonicModule will make sure that all the components and directives from the framework are provided. This includes components such as Tabs, Menus, and Slides, as well as classes like AlertController. - * - * - * We're also able to pass any configuration to our app as a second argument for `.forRoot`. This is any valid config property from [the Config Class](/docs/v2/api/config/Config/). - * - * The last functionality that IonicModule allows you to configure is optional routes for DeepLinker. For more information on DeepLinker, please see the [DeepLinker Docs](/docs/v2/api/navigation/DeepLinker/) - * - * @usage - * ```ts - * import { NgModule } from '@angular/core'; - * import { IonicApp, IonicModule } from 'ionic-angular'; - * import { MyApp } from './app.component'; - * import { HomePage } from '../pages/home/home'; - * @NgModule({ - * declarations: [ - * MyApp, - * HomePage - * ], - * imports: [ - * IonicModule.forRoot(MyApp) - * ], - * bootstrap: [IonicApp], - * entryComponents: [ - * MyApp, - * HomePage - * ], - * providers: [] - * }) - * export class AppModule {} - * ``` - */ -var IonicModule = (function () { - function IonicModule() { - } - /** - * Set the root app component for you IonicModule - * @param {any} appRoot The root AppComponent for this app. - * @param {any} config Config Options for the app. Accepts any config property. - * @param {any} deepLinkConfig Any configuration needed for the Ionic Deeplinker. - */ - IonicModule.forRoot = function (appRoot, config, deepLinkConfig) { - if (config === void 0) { config = null; } - if (deepLinkConfig === void 0) { deepLinkConfig = null; } - return { - ngModule: IonicModule, - providers: [ - // useValue: bootstrap values - { provide: __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__["b" /* AppRootToken */], useValue: appRoot }, - { provide: __WEBPACK_IMPORTED_MODULE_9__config_config__["a" /* ConfigToken */], useValue: config }, - { provide: __WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__["a" /* DeepLinkConfigToken */], useValue: deepLinkConfig }, - // useFactory: user values - { provide: __WEBPACK_IMPORTED_MODULE_23__platform_platform_registry__["a" /* PlatformConfigToken */], useFactory: __WEBPACK_IMPORTED_MODULE_23__platform_platform_registry__["b" /* providePlatformConfigs */] }, - // useFactory: ionic core providers - { provide: __WEBPACK_IMPORTED_MODULE_22__platform_platform__["a" /* Platform */], useFactory: __WEBPACK_IMPORTED_MODULE_22__platform_platform__["b" /* setupPlatform */], deps: [__WEBPACK_IMPORTED_MODULE_2__angular_platform_browser__["a" /* DOCUMENT */], __WEBPACK_IMPORTED_MODULE_23__platform_platform_registry__["a" /* PlatformConfigToken */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["NgZone"]] }, - { provide: __WEBPACK_IMPORTED_MODULE_9__config_config__["b" /* Config */], useFactory: __WEBPACK_IMPORTED_MODULE_9__config_config__["c" /* setupConfig */], deps: [__WEBPACK_IMPORTED_MODULE_9__config_config__["a" /* ConfigToken */], __WEBPACK_IMPORTED_MODULE_22__platform_platform__["a" /* Platform */]] }, - // useFactory: ionic app initializers - { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["APP_INITIALIZER"], useFactory: __WEBPACK_IMPORTED_MODULE_27__config_mode_registry__["a" /* registerModeConfigs */], deps: [__WEBPACK_IMPORTED_MODULE_9__config_config__["b" /* Config */]], multi: true }, - { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["APP_INITIALIZER"], useFactory: __WEBPACK_IMPORTED_MODULE_28__transitions_transition_registry__["a" /* registerTransitions */], deps: [__WEBPACK_IMPORTED_MODULE_9__config_config__["b" /* Config */]], multi: true }, - { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["APP_INITIALIZER"], useFactory: __WEBPACK_IMPORTED_MODULE_12__util_events__["a" /* setupProvideEvents */], deps: [__WEBPACK_IMPORTED_MODULE_22__platform_platform__["a" /* Platform */], __WEBPACK_IMPORTED_MODULE_11__platform_dom_controller__["a" /* DomController */]], multi: true }, - { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["APP_INITIALIZER"], useFactory: __WEBPACK_IMPORTED_MODULE_25__tap_click_tap_click__["a" /* setupTapClick */], deps: [__WEBPACK_IMPORTED_MODULE_9__config_config__["b" /* Config */], __WEBPACK_IMPORTED_MODULE_22__platform_platform__["a" /* Platform */], __WEBPACK_IMPORTED_MODULE_11__platform_dom_controller__["a" /* DomController */], __WEBPACK_IMPORTED_MODULE_7__components_app_app__["a" /* App */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["NgZone"], __WEBPACK_IMPORTED_MODULE_14__gestures_gesture_controller__["a" /* GestureController */]], multi: true }, - // useClass - { provide: __WEBPACK_IMPORTED_MODULE_2__angular_platform_browser__["b" /* HAMMER_GESTURE_CONFIG */], useClass: __WEBPACK_IMPORTED_MODULE_16__gestures_gesture_config__["a" /* IonicGestureConfig */] }, - // useValue - { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ANALYZE_FOR_ENTRY_COMPONENTS"], useValue: appRoot, multi: true }, - // ionic providers - __WEBPACK_IMPORTED_MODULE_5__components_action_sheet_action_sheet__["a" /* ActionSheetController */], - __WEBPACK_IMPORTED_MODULE_6__components_alert_alert__["a" /* AlertController */], - __WEBPACK_IMPORTED_MODULE_7__components_app_app__["a" /* App */], - __WEBPACK_IMPORTED_MODULE_11__platform_dom_controller__["a" /* DomController */], - __WEBPACK_IMPORTED_MODULE_12__util_events__["b" /* Events */], - __WEBPACK_IMPORTED_MODULE_13__util_form__["a" /* Form */], - __WEBPACK_IMPORTED_MODULE_14__gestures_gesture_controller__["a" /* GestureController */], - __WEBPACK_IMPORTED_MODULE_15__tap_click_haptic__["a" /* Haptic */], - __WEBPACK_IMPORTED_MODULE_17__platform_keyboard__["a" /* Keyboard */], - __WEBPACK_IMPORTED_MODULE_18__components_loading_loading__["a" /* LoadingController */], - __WEBPACK_IMPORTED_MODULE_1__angular_common__["a" /* Location */], - __WEBPACK_IMPORTED_MODULE_19__components_menu_menu_controller__["a" /* MenuController */], - __WEBPACK_IMPORTED_MODULE_20__components_modal_modal__["a" /* ModalController */], - __WEBPACK_IMPORTED_MODULE_21__components_picker_picker__["a" /* PickerController */], - __WEBPACK_IMPORTED_MODULE_24__components_popover_popover__["a" /* PopoverController */], - __WEBPACK_IMPORTED_MODULE_25__tap_click_tap_click__["b" /* TapClick */], - __WEBPACK_IMPORTED_MODULE_26__components_toast_toast__["a" /* ToastController */], - __WEBPACK_IMPORTED_MODULE_29__transitions_transition_controller__["a" /* TransitionController */], - { provide: __WEBPACK_IMPORTED_MODULE_1__angular_common__["b" /* LocationStrategy */], useFactory: provideLocationStrategy, deps: [__WEBPACK_IMPORTED_MODULE_1__angular_common__["c" /* PlatformLocation */], [new __WEBPACK_IMPORTED_MODULE_0__angular_core__["Inject"](__WEBPACK_IMPORTED_MODULE_1__angular_common__["d" /* APP_BASE_HREF */]), new __WEBPACK_IMPORTED_MODULE_0__angular_core__["Optional"]()], __WEBPACK_IMPORTED_MODULE_9__config_config__["b" /* Config */]] }, - { provide: __WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__["b" /* UrlSerializer */], useFactory: __WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__["c" /* setupUrlSerializer */], deps: [__WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__["a" /* DeepLinkConfigToken */]] }, - { provide: __WEBPACK_IMPORTED_MODULE_10__navigation_deep_linker__["a" /* DeepLinker */], useFactory: __WEBPACK_IMPORTED_MODULE_10__navigation_deep_linker__["b" /* setupDeepLinker */], deps: [__WEBPACK_IMPORTED_MODULE_7__components_app_app__["a" /* App */], __WEBPACK_IMPORTED_MODULE_30__navigation_url_serializer__["b" /* UrlSerializer */], __WEBPACK_IMPORTED_MODULE_1__angular_common__["a" /* Location */]] }, - ] - }; - }; - IonicModule.decorators = [ - { type: __WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModule"], args: [{ - imports: [__WEBPACK_IMPORTED_MODULE_2__angular_platform_browser__["c" /* BrowserModule */], __WEBPACK_IMPORTED_MODULE_4__angular_http__["a" /* HttpModule */], __WEBPACK_IMPORTED_MODULE_3__angular_forms__["a" /* FormsModule */], __WEBPACK_IMPORTED_MODULE_3__angular_forms__["b" /* ReactiveFormsModule */]], - exports: [ - __WEBPACK_IMPORTED_MODULE_2__angular_platform_browser__["c" /* BrowserModule */], - __WEBPACK_IMPORTED_MODULE_4__angular_http__["a" /* HttpModule */], - __WEBPACK_IMPORTED_MODULE_3__angular_forms__["a" /* FormsModule */], - __WEBPACK_IMPORTED_MODULE_3__angular_forms__["b" /* ReactiveFormsModule */], - __WEBPACK_IMPORTED_MODULE_38__components_avatar_avatar__["a" /* Avatar */], - __WEBPACK_IMPORTED_MODULE_39__components_backdrop_backdrop__["a" /* Backdrop */], - __WEBPACK_IMPORTED_MODULE_40__components_badge_badge__["a" /* Badge */], - __WEBPACK_IMPORTED_MODULE_41__components_button_button__["a" /* Button */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["a" /* Card */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["b" /* CardContent */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["c" /* CardHeader */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["d" /* CardTitle */], - __WEBPACK_IMPORTED_MODULE_43__components_checkbox_checkbox__["a" /* Checkbox */], - __WEBPACK_IMPORTED_MODULE_44__components_chip_chip__["a" /* Chip */], - __WEBPACK_IMPORTED_MODULE_45__util_click_block__["a" /* ClickBlock */], - __WEBPACK_IMPORTED_MODULE_49__components_grid_col__["a" /* Col */], - __WEBPACK_IMPORTED_MODULE_46__components_content_content__["a" /* Content */], - __WEBPACK_IMPORTED_MODULE_47__components_datetime_datetime__["a" /* DateTime */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["a" /* FabContainer */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["b" /* FabButton */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["c" /* FabList */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["a" /* Footer */], - __WEBPACK_IMPORTED_MODULE_50__components_grid_grid__["a" /* Grid */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["b" /* Header */], - __WEBPACK_IMPORTED_MODULE_83__components_show_hide_when_show_hide_when__["a" /* HideWhen */], - __WEBPACK_IMPORTED_MODULE_52__components_icon_icon__["a" /* Icon */], - __WEBPACK_IMPORTED_MODULE_53__components_img_img__["a" /* Img */], - __WEBPACK_IMPORTED_MODULE_54__components_infinite_scroll_infinite_scroll__["a" /* InfiniteScroll */], - __WEBPACK_IMPORTED_MODULE_55__components_infinite_scroll_infinite_scroll_content__["a" /* InfiniteScrollContent */], - __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__["a" /* IonicApp */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["a" /* Item */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["b" /* ItemContent */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["c" /* ItemDivider */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["d" /* ItemGroup */], - __WEBPACK_IMPORTED_MODULE_58__components_item_item_sliding__["a" /* ItemOptions */], - __WEBPACK_IMPORTED_MODULE_57__components_item_item_reorder__["a" /* ItemReorder */], - __WEBPACK_IMPORTED_MODULE_58__components_item_item_sliding__["b" /* ItemSliding */], - __WEBPACK_IMPORTED_MODULE_59__components_label_label__["a" /* Label */], - __WEBPACK_IMPORTED_MODULE_60__components_list_list__["a" /* List */], - __WEBPACK_IMPORTED_MODULE_61__components_list_list_header__["a" /* ListHeader */], - __WEBPACK_IMPORTED_MODULE_62__components_menu_menu__["a" /* Menu */], - __WEBPACK_IMPORTED_MODULE_63__components_menu_menu_close__["a" /* MenuClose */], - __WEBPACK_IMPORTED_MODULE_64__components_menu_menu_toggle__["a" /* MenuToggle */], - __WEBPACK_IMPORTED_MODULE_65__components_input_native_input__["a" /* NativeInput */], - __WEBPACK_IMPORTED_MODULE_66__components_nav_nav__["a" /* Nav */], - __WEBPACK_IMPORTED_MODULE_69__components_navbar_navbar__["a" /* Navbar */], - __WEBPACK_IMPORTED_MODULE_67__components_nav_nav_pop__["a" /* NavPop */], - __WEBPACK_IMPORTED_MODULE_67__components_nav_nav_pop__["b" /* NavPopAnchor */], - __WEBPACK_IMPORTED_MODULE_68__components_nav_nav_push__["a" /* NavPush */], - __WEBPACK_IMPORTED_MODULE_68__components_nav_nav_push__["b" /* NavPushAnchor */], - __WEBPACK_IMPORTED_MODULE_65__components_input_native_input__["b" /* NextInput */], - __WEBPACK_IMPORTED_MODULE_70__components_note_note__["a" /* Note */], - __WEBPACK_IMPORTED_MODULE_71__components_option_option__["a" /* Option */], - __WEBPACK_IMPORTED_MODULE_72__components_nav_overlay_portal__["a" /* OverlayPortal */], - __WEBPACK_IMPORTED_MODULE_35__components_picker_picker_component__["a" /* PickerColumnCmp */], - __WEBPACK_IMPORTED_MODULE_73__components_radio_radio_button__["a" /* RadioButton */], - __WEBPACK_IMPORTED_MODULE_74__components_radio_radio_group__["a" /* RadioGroup */], - __WEBPACK_IMPORTED_MODULE_75__components_range_range__["a" /* Range */], - __WEBPACK_IMPORTED_MODULE_76__components_range_range_knob__["a" /* RangeKnob */], - __WEBPACK_IMPORTED_MODULE_77__components_refresher_refresher__["a" /* Refresher */], - __WEBPACK_IMPORTED_MODULE_78__components_refresher_refresher_content__["a" /* RefresherContent */], - __WEBPACK_IMPORTED_MODULE_57__components_item_item_reorder__["b" /* Reorder */], - __WEBPACK_IMPORTED_MODULE_51__components_grid_row__["a" /* Row */], - __WEBPACK_IMPORTED_MODULE_79__components_scroll_scroll__["a" /* Scroll */], - __WEBPACK_IMPORTED_MODULE_80__components_searchbar_searchbar__["a" /* Searchbar */], - __WEBPACK_IMPORTED_MODULE_81__components_segment_segment__["a" /* Segment */], - __WEBPACK_IMPORTED_MODULE_81__components_segment_segment__["b" /* SegmentButton */], - __WEBPACK_IMPORTED_MODULE_82__components_select_select__["a" /* Select */], - __WEBPACK_IMPORTED_MODULE_83__components_show_hide_when_show_hide_when__["b" /* ShowWhen */], - __WEBPACK_IMPORTED_MODULE_84__components_slides_slide__["a" /* Slide */], - __WEBPACK_IMPORTED_MODULE_85__components_slides_slides__["a" /* Slides */], - __WEBPACK_IMPORTED_MODULE_86__components_spinner_spinner__["a" /* Spinner */], - __WEBPACK_IMPORTED_MODULE_87__components_tabs_tab__["a" /* Tab */], - __WEBPACK_IMPORTED_MODULE_88__components_tabs_tabs__["a" /* Tabs */], - __WEBPACK_IMPORTED_MODULE_89__components_tabs_tab_button__["a" /* TabButton */], - __WEBPACK_IMPORTED_MODULE_90__components_tabs_tab_highlight__["a" /* TabHighlight */], - __WEBPACK_IMPORTED_MODULE_91__components_input_input__["a" /* TextInput */], - __WEBPACK_IMPORTED_MODULE_92__components_thumbnail_thumbnail__["a" /* Thumbnail */], - __WEBPACK_IMPORTED_MODULE_93__components_toggle_toggle__["a" /* Toggle */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["c" /* Toolbar */], - __WEBPACK_IMPORTED_MODULE_95__components_toolbar_toolbar_item__["a" /* ToolbarItem */], - __WEBPACK_IMPORTED_MODULE_96__components_toolbar_toolbar_title__["a" /* ToolbarTitle */], - __WEBPACK_IMPORTED_MODULE_97__components_typography_typography__["a" /* Typography */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["a" /* VirtualFooter */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["b" /* VirtualHeader */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["c" /* VirtualItem */], - __WEBPACK_IMPORTED_MODULE_98__components_virtual_scroll_virtual_scroll__["a" /* VirtualScroll */], - ], - declarations: [ - __WEBPACK_IMPORTED_MODULE_31__components_action_sheet_action_sheet_component__["a" /* ActionSheetCmp */], - __WEBPACK_IMPORTED_MODULE_32__components_alert_alert_component__["a" /* AlertCmp */], - __WEBPACK_IMPORTED_MODULE_45__util_click_block__["a" /* ClickBlock */], - __WEBPACK_IMPORTED_MODULE_33__components_loading_loading_component__["a" /* LoadingCmp */], - __WEBPACK_IMPORTED_MODULE_34__components_modal_modal_component__["a" /* ModalCmp */], - __WEBPACK_IMPORTED_MODULE_35__components_picker_picker_component__["b" /* PickerCmp */], - __WEBPACK_IMPORTED_MODULE_36__components_popover_popover_component__["a" /* PopoverCmp */], - __WEBPACK_IMPORTED_MODULE_37__components_toast_toast_component__["a" /* ToastCmp */], - __WEBPACK_IMPORTED_MODULE_38__components_avatar_avatar__["a" /* Avatar */], - __WEBPACK_IMPORTED_MODULE_39__components_backdrop_backdrop__["a" /* Backdrop */], - __WEBPACK_IMPORTED_MODULE_40__components_badge_badge__["a" /* Badge */], - __WEBPACK_IMPORTED_MODULE_41__components_button_button__["a" /* Button */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["a" /* Card */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["b" /* CardContent */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["c" /* CardHeader */], - __WEBPACK_IMPORTED_MODULE_42__components_card_card__["d" /* CardTitle */], - __WEBPACK_IMPORTED_MODULE_43__components_checkbox_checkbox__["a" /* Checkbox */], - __WEBPACK_IMPORTED_MODULE_44__components_chip_chip__["a" /* Chip */], - __WEBPACK_IMPORTED_MODULE_45__util_click_block__["a" /* ClickBlock */], - __WEBPACK_IMPORTED_MODULE_49__components_grid_col__["a" /* Col */], - __WEBPACK_IMPORTED_MODULE_46__components_content_content__["a" /* Content */], - __WEBPACK_IMPORTED_MODULE_47__components_datetime_datetime__["a" /* DateTime */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["a" /* FabContainer */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["b" /* FabButton */], - __WEBPACK_IMPORTED_MODULE_48__components_fab_fab__["c" /* FabList */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["a" /* Footer */], - __WEBPACK_IMPORTED_MODULE_50__components_grid_grid__["a" /* Grid */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["b" /* Header */], - __WEBPACK_IMPORTED_MODULE_83__components_show_hide_when_show_hide_when__["a" /* HideWhen */], - __WEBPACK_IMPORTED_MODULE_52__components_icon_icon__["a" /* Icon */], - __WEBPACK_IMPORTED_MODULE_53__components_img_img__["a" /* Img */], - __WEBPACK_IMPORTED_MODULE_54__components_infinite_scroll_infinite_scroll__["a" /* InfiniteScroll */], - __WEBPACK_IMPORTED_MODULE_55__components_infinite_scroll_infinite_scroll_content__["a" /* InfiniteScrollContent */], - __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__["a" /* IonicApp */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["a" /* Item */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["b" /* ItemContent */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["c" /* ItemDivider */], - __WEBPACK_IMPORTED_MODULE_56__components_item_item__["d" /* ItemGroup */], - __WEBPACK_IMPORTED_MODULE_58__components_item_item_sliding__["a" /* ItemOptions */], - __WEBPACK_IMPORTED_MODULE_57__components_item_item_reorder__["a" /* ItemReorder */], - __WEBPACK_IMPORTED_MODULE_58__components_item_item_sliding__["b" /* ItemSliding */], - __WEBPACK_IMPORTED_MODULE_59__components_label_label__["a" /* Label */], - __WEBPACK_IMPORTED_MODULE_60__components_list_list__["a" /* List */], - __WEBPACK_IMPORTED_MODULE_61__components_list_list_header__["a" /* ListHeader */], - __WEBPACK_IMPORTED_MODULE_62__components_menu_menu__["a" /* Menu */], - __WEBPACK_IMPORTED_MODULE_63__components_menu_menu_close__["a" /* MenuClose */], - __WEBPACK_IMPORTED_MODULE_64__components_menu_menu_toggle__["a" /* MenuToggle */], - __WEBPACK_IMPORTED_MODULE_65__components_input_native_input__["a" /* NativeInput */], - __WEBPACK_IMPORTED_MODULE_66__components_nav_nav__["a" /* Nav */], - __WEBPACK_IMPORTED_MODULE_69__components_navbar_navbar__["a" /* Navbar */], - __WEBPACK_IMPORTED_MODULE_67__components_nav_nav_pop__["a" /* NavPop */], - __WEBPACK_IMPORTED_MODULE_67__components_nav_nav_pop__["b" /* NavPopAnchor */], - __WEBPACK_IMPORTED_MODULE_68__components_nav_nav_push__["a" /* NavPush */], - __WEBPACK_IMPORTED_MODULE_68__components_nav_nav_push__["b" /* NavPushAnchor */], - __WEBPACK_IMPORTED_MODULE_65__components_input_native_input__["b" /* NextInput */], - __WEBPACK_IMPORTED_MODULE_70__components_note_note__["a" /* Note */], - __WEBPACK_IMPORTED_MODULE_71__components_option_option__["a" /* Option */], - __WEBPACK_IMPORTED_MODULE_72__components_nav_overlay_portal__["a" /* OverlayPortal */], - __WEBPACK_IMPORTED_MODULE_35__components_picker_picker_component__["a" /* PickerColumnCmp */], - __WEBPACK_IMPORTED_MODULE_73__components_radio_radio_button__["a" /* RadioButton */], - __WEBPACK_IMPORTED_MODULE_74__components_radio_radio_group__["a" /* RadioGroup */], - __WEBPACK_IMPORTED_MODULE_75__components_range_range__["a" /* Range */], - __WEBPACK_IMPORTED_MODULE_76__components_range_range_knob__["a" /* RangeKnob */], - __WEBPACK_IMPORTED_MODULE_77__components_refresher_refresher__["a" /* Refresher */], - __WEBPACK_IMPORTED_MODULE_78__components_refresher_refresher_content__["a" /* RefresherContent */], - __WEBPACK_IMPORTED_MODULE_57__components_item_item_reorder__["b" /* Reorder */], - __WEBPACK_IMPORTED_MODULE_51__components_grid_row__["a" /* Row */], - __WEBPACK_IMPORTED_MODULE_79__components_scroll_scroll__["a" /* Scroll */], - __WEBPACK_IMPORTED_MODULE_80__components_searchbar_searchbar__["a" /* Searchbar */], - __WEBPACK_IMPORTED_MODULE_81__components_segment_segment__["a" /* Segment */], - __WEBPACK_IMPORTED_MODULE_81__components_segment_segment__["b" /* SegmentButton */], - __WEBPACK_IMPORTED_MODULE_82__components_select_select__["a" /* Select */], - __WEBPACK_IMPORTED_MODULE_83__components_show_hide_when_show_hide_when__["b" /* ShowWhen */], - __WEBPACK_IMPORTED_MODULE_84__components_slides_slide__["a" /* Slide */], - __WEBPACK_IMPORTED_MODULE_85__components_slides_slides__["a" /* Slides */], - __WEBPACK_IMPORTED_MODULE_86__components_spinner_spinner__["a" /* Spinner */], - __WEBPACK_IMPORTED_MODULE_87__components_tabs_tab__["a" /* Tab */], - __WEBPACK_IMPORTED_MODULE_88__components_tabs_tabs__["a" /* Tabs */], - __WEBPACK_IMPORTED_MODULE_89__components_tabs_tab_button__["a" /* TabButton */], - __WEBPACK_IMPORTED_MODULE_90__components_tabs_tab_highlight__["a" /* TabHighlight */], - __WEBPACK_IMPORTED_MODULE_91__components_input_input__["a" /* TextInput */], - __WEBPACK_IMPORTED_MODULE_92__components_thumbnail_thumbnail__["a" /* Thumbnail */], - __WEBPACK_IMPORTED_MODULE_93__components_toggle_toggle__["a" /* Toggle */], - __WEBPACK_IMPORTED_MODULE_94__components_toolbar_toolbar__["c" /* Toolbar */], - __WEBPACK_IMPORTED_MODULE_95__components_toolbar_toolbar_item__["a" /* ToolbarItem */], - __WEBPACK_IMPORTED_MODULE_96__components_toolbar_toolbar_title__["a" /* ToolbarTitle */], - __WEBPACK_IMPORTED_MODULE_97__components_typography_typography__["a" /* Typography */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["a" /* VirtualFooter */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["b" /* VirtualHeader */], - __WEBPACK_IMPORTED_MODULE_99__components_virtual_scroll_virtual_item__["c" /* VirtualItem */], - __WEBPACK_IMPORTED_MODULE_98__components_virtual_scroll_virtual_scroll__["a" /* VirtualScroll */], - ], - entryComponents: [ - __WEBPACK_IMPORTED_MODULE_31__components_action_sheet_action_sheet_component__["a" /* ActionSheetCmp */], - __WEBPACK_IMPORTED_MODULE_32__components_alert_alert_component__["a" /* AlertCmp */], - __WEBPACK_IMPORTED_MODULE_8__components_app_app_root__["a" /* IonicApp */], - __WEBPACK_IMPORTED_MODULE_33__components_loading_loading_component__["a" /* LoadingCmp */], - __WEBPACK_IMPORTED_MODULE_34__components_modal_modal_component__["a" /* ModalCmp */], - __WEBPACK_IMPORTED_MODULE_35__components_picker_picker_component__["b" /* PickerCmp */], - __WEBPACK_IMPORTED_MODULE_36__components_popover_popover_component__["a" /* PopoverCmp */], - __WEBPACK_IMPORTED_MODULE_37__components_toast_toast_component__["a" /* ToastCmp */] - ] - },] }, - ]; - /** @nocollapse */ - IonicModule.ctorParameters = []; - return IonicModule; -}()); -/** - * @private - */ -function provideLocationStrategy(platformLocationStrategy, baseHref, config) { - return config.get('locationStrategy') === 'path' ? - new __WEBPACK_IMPORTED_MODULE_1__angular_common__["e" /* PathLocationStrategy */](platformLocationStrategy, baseHref) : - new __WEBPACK_IMPORTED_MODULE_1__angular_common__["f" /* HashLocationStrategy */](platformLocationStrategy, baseHref); -} -//# sourceMappingURL=index.js.map - -/***/ }), -/* 24 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__facade_lang__ = __webpack_require__(4); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return ParseLocation; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ParseSourceFile; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ParseSourceSpan; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return ParseErrorLevel; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ParseError; }); - -var ParseLocation = (function () { - function ParseLocation(file, offset, line, col) { - this.file = file; - this.offset = offset; - this.line = line; - this.col = col; - } - ParseLocation.prototype.toString = function () { - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__facade_lang__["a" /* isPresent */])(this.offset) ? this.file.url + "@" + this.line + ":" + this.col : this.file.url; - }; - return ParseLocation; -}()); -var ParseSourceFile = (function () { - function ParseSourceFile(content, url) { - this.content = content; - this.url = url; - } - return ParseSourceFile; -}()); -var ParseSourceSpan = (function () { - function ParseSourceSpan(start, end, details) { - if (details === void 0) { details = null; } - this.start = start; - this.end = end; - this.details = details; - } - ParseSourceSpan.prototype.toString = function () { - return this.start.file.content.substring(this.start.offset, this.end.offset); - }; - return ParseSourceSpan; -}()); -var ParseErrorLevel; -(function (ParseErrorLevel) { - ParseErrorLevel[ParseErrorLevel["WARNING"] = 0] = "WARNING"; - ParseErrorLevel[ParseErrorLevel["FATAL"] = 1] = "FATAL"; -})(ParseErrorLevel || (ParseErrorLevel = {})); -var ParseError = (function () { - function ParseError(span, msg, level) { - if (level === void 0) { level = ParseErrorLevel.FATAL; } - this.span = span; - this.msg = msg; - this.level = level; - } - ParseError.prototype.toString = function () { - var source = this.span.start.file.content; - var ctxStart = this.span.start.offset; - var contextStr = ''; - var details = ''; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__facade_lang__["a" /* isPresent */])(ctxStart)) { - if (ctxStart > source.length - 1) { - ctxStart = source.length - 1; - } - var ctxEnd = ctxStart; - var ctxLen = 0; - var ctxLines = 0; - while (ctxLen < 100 && ctxStart > 0) { - ctxStart--; - ctxLen++; - if (source[ctxStart] == '\n') { - if (++ctxLines == 3) { - break; - } - } - } - ctxLen = 0; - ctxLines = 0; - while (ctxLen < 100 && ctxEnd < source.length - 1) { - ctxEnd++; - ctxLen++; - if (source[ctxEnd] == '\n') { - if (++ctxLines == 3) { - break; - } - } - } - var context = source.substring(ctxStart, this.span.start.offset) + '[ERROR ->]' + - source.substring(this.span.start.offset, ctxEnd + 1); - contextStr = " (\"" + context + "\")"; - } - if (this.span.details) { - details = ", " + this.span.details; - } - return "" + this.msg + contextStr + ": " + this.span.start + details; - }; - return ParseError; -}()); -//# sourceMappingURL=parse_util.js.map - -/***/ }), -/* 25 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__di_metadata__ = __webpack_require__(100); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["a"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["b"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["c"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["e"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "h", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["f"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "j", function() { return __WEBPACK_IMPORTED_MODULE_0__di_metadata__["d"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__di_forward_ref__ = __webpack_require__(153); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return __WEBPACK_IMPORTED_MODULE_1__di_forward_ref__["b"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return __WEBPACK_IMPORTED_MODULE_1__di_forward_ref__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__di_injector__ = __webpack_require__(70); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __WEBPACK_IMPORTED_MODULE_2__di_injector__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__di_reflective_injector__ = __webpack_require__(557); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __WEBPACK_IMPORTED_MODULE_3__di_reflective_injector__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__di_reflective_provider__ = __webpack_require__(156); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return __WEBPACK_IMPORTED_MODULE_4__di_reflective_provider__["c"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__di_reflective_key__ = __webpack_require__(155); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return __WEBPACK_IMPORTED_MODULE_5__di_reflective_key__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__di_opaque_token__ = __webpack_require__(154); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_6__di_opaque_token__["a"]; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @module - * @description - * The `di` module provides dependency injection container services. - */ - - - - - - - -//# sourceMappingURL=di.js.map - -/***/ }), -/* 26 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_forms__ = __webpack_require__(576); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__src_forms__["a"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_0__src_forms__["b"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_0__src_forms__["c"]; }); -/* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __WEBPACK_IMPORTED_MODULE_0__src_forms__["d"]; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @module - * @description - * Entry point for all public APIs of the forms package. - */ - -//# sourceMappingURL=index.js.map - -/***/ }), -/* 27 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NG_VALUE_ACCESSOR; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -/** - * Used to provide a {@link ControlValueAccessor} for form controls. - * - * See {@link DefaultValueAccessor} for how to implement one. - * @stable - */ -var NG_VALUE_ACCESSOR = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["OpaqueToken"]('NgValueAccessor'); -//# sourceMappingURL=control_value_accessor.js.map - -/***/ }), -/* 28 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__facade_lang__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__identifiers__ = __webpack_require__(13); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__output_output_ast__ = __webpack_require__(8); -/* harmony export (immutable) */ __webpack_exports__["b"] = createDiTokenExpression; -/* harmony export (immutable) */ __webpack_exports__["a"] = createInlineArray; -/* harmony export (immutable) */ __webpack_exports__["c"] = createPureProxy; -/* harmony export (immutable) */ __webpack_exports__["d"] = createEnumExpression; -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - -function createDiTokenExpression(token) { - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__facade_lang__["a" /* isPresent */])(token.value)) { - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["f" /* literal */](token.value); - } - else if (token.identifierIsInstance) { - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](token.identifier) - .instantiate([], __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["d" /* importType */](token.identifier, [], [__WEBPACK_IMPORTED_MODULE_2__output_output_ast__["k" /* TypeModifier */].Const])); - } - else { - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](token.identifier); - } -} -function createInlineArray(values) { - if (values.length === 0) { - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__identifiers__["a" /* resolveIdentifier */])(__WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].EMPTY_INLINE_ARRAY)); - } - var log2 = Math.log(values.length) / Math.log(2); - var index = Math.ceil(log2); - var identifierSpec = index < __WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].inlineArrays.length ? __WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].inlineArrays[index] : - __WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].InlineArrayDynamic; - var identifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__identifiers__["a" /* resolveIdentifier */])(identifierSpec); - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](identifier).instantiate([ - __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["f" /* literal */](values.length) - ].concat(values)); -} -function createPureProxy(fn, argCount, pureProxyProp, builder) { - builder.fields.push(new __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["c" /* ClassField */](pureProxyProp.name, null)); - var pureProxyId = argCount < __WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].pureProxies.length ? __WEBPACK_IMPORTED_MODULE_1__identifiers__["b" /* Identifiers */].pureProxies[argCount] : null; - if (!pureProxyId) { - throw new Error("Unsupported number of argument for pure functions: " + argCount); - } - builder.ctorStmts.push(__WEBPACK_IMPORTED_MODULE_2__output_output_ast__["e" /* THIS_EXPR */].prop(pureProxyProp.name) - .set(__WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__identifiers__["a" /* resolveIdentifier */])(pureProxyId)).callFn([fn])) - .toStmt()); -} -function createEnumExpression(enumType, enumValue) { - var enumName = Object.keys(enumType.runtime).find(function (propName) { return enumType.runtime[propName] === enumValue; }); - if (!enumName) { - throw new Error("Unknown enum value " + enumValue + " in " + enumType.name); - } - return __WEBPACK_IMPORTED_MODULE_2__output_output_ast__["g" /* importExpr */](__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__identifiers__["d" /* resolveEnumIdentifier */])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__identifiers__["a" /* resolveIdentifier */])(enumType), enumName)); -} -//# sourceMappingURL=identifier_util.js.map - -/***/ }), -/* 29 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__assertions__ = __webpack_require__(229); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return InterpolationConfig; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DEFAULT_INTERPOLATION_CONFIG; }); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -var InterpolationConfig = (function () { - function InterpolationConfig(start, end) { - this.start = start; - this.end = end; - } - InterpolationConfig.fromArray = function (markers) { - if (!markers) { - return DEFAULT_INTERPOLATION_CONFIG; - } - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__assertions__["a" /* assertInterpolationSymbols */])('interpolation', markers); - return new InterpolationConfig(markers[0], markers[1]); - }; - ; - return InterpolationConfig; -}()); -var DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}'); -//# sourceMappingURL=interpolation_config.js.map - -/***/ }), -/* 30 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return TextAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return BoundTextAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return AttrAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return BoundElementPropertyAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return BoundEventAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return ReferenceAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return VariableAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return ElementAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return EmbeddedTemplateAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return BoundDirectivePropertyAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return DirectiveAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ProviderAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ProviderAstType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return NgContentAst; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return PropertyBindingType; }); -/* harmony export (immutable) */ __webpack_exports__["a"] = templateVisitAll; -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * A segment of text within the template. - */ -var TextAst = (function () { - function TextAst(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); }; - return TextAst; -}()); -/** - * A bound expression within the text of a template. - */ -var BoundTextAst = (function () { - function BoundTextAst(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - BoundTextAst.prototype.visit = function (visitor, context) { - return visitor.visitBoundText(this, context); - }; - return BoundTextAst; -}()); -/** - * A plain attribute on an element. - */ -var AttrAst = (function () { - function AttrAst(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); }; - return AttrAst; -}()); -/** - * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g. - * `[@trigger]="stateExp"`) - */ -var BoundElementPropertyAst = (function () { - function BoundElementPropertyAst(name, type, securityContext, needsRuntimeSecurityContext, value, unit, sourceSpan) { - this.name = name; - this.type = type; - this.securityContext = securityContext; - this.needsRuntimeSecurityContext = needsRuntimeSecurityContext; - this.value = value; - this.unit = unit; - this.sourceSpan = sourceSpan; - } - BoundElementPropertyAst.prototype.visit = function (visitor, context) { - return visitor.visitElementProperty(this, context); - }; - Object.defineProperty(BoundElementPropertyAst.prototype, "isAnimation", { - get: function () { return this.type === PropertyBindingType.Animation; }, - enumerable: true, - configurable: true - }); - return BoundElementPropertyAst; -}()); -/** - * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g. - * `(@trigger.phase)="callback($event)"`). - */ -var BoundEventAst = (function () { - function BoundEventAst(name, target, phase, handler, sourceSpan) { - this.name = name; - this.target = target; - this.phase = phase; - this.handler = handler; - this.sourceSpan = sourceSpan; - } - BoundEventAst.calcFullName = function (name, target, phase) { - if (target) { - return target + ":" + name; - } - else if (phase) { - return "@" + name + "." + phase; - } - else { - return name; - } - }; - BoundEventAst.prototype.visit = function (visitor, context) { - return visitor.visitEvent(this, context); - }; - Object.defineProperty(BoundEventAst.prototype, "fullName", { - get: function () { return BoundEventAst.calcFullName(this.name, this.target, this.phase); }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BoundEventAst.prototype, "isAnimation", { - get: function () { return !!this.phase; }, - enumerable: true, - configurable: true - }); - return BoundEventAst; -}()); -/** - * A reference declaration on an element (e.g. `let someName="expression"`). - */ -var ReferenceAst = (function () { - function ReferenceAst(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - ReferenceAst.prototype.visit = function (visitor, context) { - return visitor.visitReference(this, context); - }; - return ReferenceAst; -}()); -/** - * A variable declaration on a