From d1039c7fc21feb8ca8c5290cca9c4d1f0c4fa585 Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Tue, 10 Oct 2017 22:07:13 -0700 Subject: [PATCH] got all tests to pass --- .dockerignore | 8 + Dockerfile | 57 +- Dockerfile-production | 71 -- app/controllers/forms.server.controller.js | 8 +- app/libs/timestamp.server.plugin.js | 39 + app/models/form.server.model.js | 105 +-- app/models/form_field.server.model.js | 12 +- app/models/form_submission.server.model.js | 4 +- app/models/user.server.model.js | 5 +- app/tests/form.server.model.test.js | 2 + app/tests/form.server.routes.test.js | 12 +- app/tests/form_submission.model.test.js | 2 +- app/tests/form_submission.routes.test.js | 50 +- .../libs/timestamp.server.plugin.test.js | 70 ++ config/env/all.js | 8 +- config/env/development.js | 27 +- config/env/production.js | 27 +- config/env/secure.js | 27 +- config/env/test.js | 25 - config/express.js | 17 +- config/strategies/facebook.js | 41 - config/strategies/github.js | 46 -- config/strategies/google.js | 41 - config/strategies/linkedin.js | 42 - config/strategies/twitter.js | 45 -- docker-compose.yml | 22 - docs/example_formfields.json | 96 --- docs/example_submission_data.json | 758 ------------------ docs/form_update_process.md | 22 - docs/readme_logos/do_logo.png | Bin 6943 -> 0 bytes docs/readme_logos/roost_logo.png | Bin 2526 -> 0 bytes docs/readme_logos/sentry_logo.png | Bin 9726 -> 0 bytes docs/readme_logos/sparkpost_logo.png | Bin 35335 -> 0 bytes docs/readme_logos/statuspage_logo.png | Bin 90362 -> 0 bytes docs/readme_logos/stickermule_logo.png | Bin 14801 -> 0 bytes docs/setup_sentry_server.md | 249 ------ docs/ux_flows.md | 29 - gruntfile.js | 38 +- package.json | 42 +- public/dist/vendor.min.js | 16 +- server.js | 9 +- start.sh | 4 + tellform_installation_blog_post.mdown | 170 ++++ 43 files changed, 463 insertions(+), 1783 deletions(-) create mode 100644 .dockerignore delete mode 100644 Dockerfile-production create mode 100644 app/libs/timestamp.server.plugin.js create mode 100644 app/tests/libs/timestamp.server.plugin.test.js delete mode 100755 config/strategies/facebook.js delete mode 100755 config/strategies/github.js delete mode 100755 config/strategies/google.js delete mode 100755 config/strategies/linkedin.js delete mode 100755 config/strategies/twitter.js delete mode 100644 docker-compose.yml delete mode 100644 docs/example_formfields.json delete mode 100644 docs/example_submission_data.json delete mode 100644 docs/form_update_process.md delete mode 100755 docs/readme_logos/do_logo.png delete mode 100644 docs/readme_logos/roost_logo.png delete mode 100644 docs/readme_logos/sentry_logo.png delete mode 100644 docs/readme_logos/sparkpost_logo.png delete mode 100644 docs/readme_logos/statuspage_logo.png delete mode 100644 docs/readme_logos/stickermule_logo.png delete mode 100644 docs/setup_sentry_server.md delete mode 100644 docs/ux_flows.md create mode 100755 start.sh create mode 100644 tellform_installation_blog_post.mdown diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..0bbf9fa8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.idea +.vagrant +coverage +design +e2e_coverage +Vagrantfile +Procfile diff --git a/Dockerfile b/Dockerfile index 25f20cb9..65e27847 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,19 @@ # Build: -# docker build -t tellform -f ./Dockerfile . +# docker build -t tellform-prod -f ./Dockerfile-production . # # Run: -# docker run -it tellform +# docker run -it tellform-prod + FROM phusion/baseimage:0.9.19 MAINTAINER David Baldwynn -# 3000 = TellForm server, 35729 = livereload, 8080 = node-inspector -EXPOSE 3000 35729 8080 - -# Set development environment as default -ENV NODE_ENV development -ENV BASE_URL tellform.dev -ENV PORT 3000 +#FROM node:6.11.4-alpine # Install Utilities -RUN apt-get update -q \ +RUN apt-get update -q \ && apt-get install -yqq \ curl \ ant \ - default-jdk \ git \ gcc \ make \ @@ -37,34 +31,33 @@ RUN sudo apt-get install -yq nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# Install MEAN.JS Prerequisites -RUN npm install --quiet -g grunt bower && npm cache clean +# Install NPM Global Libraries +RUN npm install --quiet -g grunt bower pm2 && npm cache clean -RUN mkdir -p /opt/tellform/public/lib WORKDIR /opt/tellform +RUN mkdir -p /opt/tellform/public/lib + +# Add bower.json +COPY bower.json /opt/tellform/bower.json +COPY .bowerrc /opt/tellform/.bowerrc + +COPY ./process.yml /opt/tellform/process.yml +COPY ./app /opt/tellform/app +COPY ./public /opt/tellform/public +COPY ./config /opt/tellform/config +COPY ./gruntfile.js /opt/tellform/gruntfile.js +COPY ./server.js /opt/tellform/server.js +COPY ./scripts/create_admin.js /opt/tellform/scripts/create_admin.js # Copies the local package.json file to the container # and utilities docker container cache to not needing to rebuild # and install node_modules/ everytime we build the docker, but only # when the local package.json file changes. # Add npm package.json -COPY package.json /opt/tellform/package.json -RUN npm install +COPY ./package.json /opt/tellform/package.json +RUN npm install --quiet -# Add bower.json -COPY bower.json /opt/tellform/bower.json -COPY .bowerrc /opt/tellform/.bowerrc +COPY ./start.sh /start.sh -COPY ./app /opt/tellform/app -COPY ./public /opt/tellform/public -COPY ./config /opt/tellform/config -COPY ./gruntfile.js /opt/tellform/gruntfile.js -COPY ./server.js /opt/tellform/server.js -COPY ./.env /opt/tellform/.env -COPY ./scripts/create_admin.js /opt/tellform/scripts/create_admin.js - -# Run Development TellForm server -COPY ./dev_entrypoint.sh /dev_entrypoint.sh -RUN chmod +x /dev_entrypoint.sh - -ENTRYPOINT ["/dev_entrypoint.sh"] \ No newline at end of file +# Run TellForm server +CMD ["/start.sh"] \ No newline at end of file diff --git a/Dockerfile-production b/Dockerfile-production deleted file mode 100644 index 9876021d..00000000 --- a/Dockerfile-production +++ /dev/null @@ -1,71 +0,0 @@ -# Build: -# docker build -t tellform-prod -f ./Dockerfile-production . -# -# Run: -# docker run -it tellform-prod - -FROM phusion/baseimage:0.9.19 -MAINTAINER David Baldwynn - -# 4545 = TellForm server -EXPOSE 4545 - -# Set development environment as default -ENV NODE_ENV production -ENV PORT 4545 -ENV BASE_URL tellform.com - -# Install Utilities -RUN apt-get update -q \ - && apt-get install -yqq \ - curl \ - ant \ - default-jdk \ - git \ - gcc \ - make \ - build-essential \ - libkrb5-dev \ - python \ - sudo \ - apt-utils \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -# Install nodejs -RUN curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - -RUN sudo apt-get install -yq nodejs \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -# Install MEAN.JS Prerequisites -RUN npm install --quiet -g grunt bower pm2 && npm cache clean - -RUN mkdir -p /opt/tellform/public/lib -WORKDIR /opt/tellform - -# Copies the local package.json file to the container -# and utilities docker container cache to not needing to rebuild -# and install node_modules/ everytime we build the docker, but only -# when the local package.json file changes. -# Add npm package.json -COPY package.json /opt/tellform/package.json -RUN npm install --production -RUN mv ./node_modules ./node_modules.tmp && mv ./node_modules.tmp ./node_modules && npm install - -# Add bower.json -COPY bower.json /opt/tellform/bower.json -COPY .bowerrc /opt/tellform/.bowerrc - -COPY ./app /opt/tellform/app -COPY ./public /opt/tellform/public -COPY ./config /opt/tellform/config -COPY ./gruntfile.js /opt/tellform/gruntfile.js -COPY ./server.js /opt/tellform/server.js -COPY ./.env /opt/tellform/.env -COPY ./scripts/create_admin.js /opt/tellform/scripts/create_admin.js - -RUN grunt build - -# Run TellForm server -CMD ["pm2-docker","process.yml"] diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index 960a682e..44b6df95 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -49,7 +49,6 @@ exports.createSubmission = function(req, res) { var timeElapsed = 0; - console.log(req.body); if(typeof req.body.timeElapsed === 'number'){ timeElapsed = req.body.timeElapsed; } @@ -64,7 +63,6 @@ exports.createSubmission = function(req, res) { device: req.body.device }); - submission.save(function(err, submission){ if (err) { console.error(err.message); @@ -100,7 +98,7 @@ exports.listSubmissions = function(req, res) { exports.create = function(req, res) { if(!req.body.form){ - return res.status(400).send({ + return res.status(401).send({ message: 'Invalid Input' }); } @@ -110,7 +108,7 @@ exports.create = function(req, res) { form.save(function(err) { if (err) { - return res.status(405).send({ + return res.status(500).send({ message: errorHandler.getErrorMessage(err) }); } @@ -222,7 +220,7 @@ exports.update = function(req, res) { form.save(function(err, savedForm) { if (err) { - res.status(405).send({ + res.status(500).send({ message: errorHandler.getErrorMessage(err) }); } else { diff --git a/app/libs/timestamp.server.plugin.js b/app/libs/timestamp.server.plugin.js new file mode 100644 index 00000000..084e2c1b --- /dev/null +++ b/app/libs/timestamp.server.plugin.js @@ -0,0 +1,39 @@ +'use strict'; + +// Plugin +module.exports = function timestamp (schema, options) { + options || (options = {}) + + // Options + var fields = {} + , createdPath = options.createdPath || 'created' + , modifiedPath = options.modifiedPath || 'modified' + , useVirtual = (options.useVirtual !== undefined) + ? options.useVirtual + : true + + // Add paths to schema if not present + if (!schema.paths[createdPath]) { + fields[modifiedPath] = { type: Date } + } + if (useVirtual) { + // Use the ObjectID for extracting the created time + schema.virtual(createdPath).get(function () { + return new Date(this._id.generationTime * 1000) + }) + } else { + if (!schema.paths[createdPath]) { + fields[createdPath] = { + type: Date + , default: Date.now + } + } + } + schema.add(fields) + + // Update the modified timestamp on save + schema.pre('save', function (next) { + this[modifiedPath] = new Date + next() + }) +} \ No newline at end of file diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index ab6a9b2f..b20d1a9e 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -6,7 +6,7 @@ var mongoose = require('mongoose'), Schema = mongoose.Schema, _ = require('lodash'), - mUtilities = require('mongoose-utilities'), + timeStampPlugin = require('../libs/timestamp.server.plugin'), async = require('async'), Random = require('random-js'), mt = Random.engines.mt19937(); @@ -283,7 +283,7 @@ FormSchema.virtual('analytics.fields').get(function () { return fieldDropoffs; }); -FormSchema.plugin(mUtilities.timestamp, { +FormSchema.plugin(timeStampPlugin, { createdPath: 'created', modifiedPath: 'lastModified', useVirtual: false @@ -304,7 +304,6 @@ FormSchema.pre('save', function (next) { this.language = 'de'; break; default: - this.language = 'en'; break; } next(); @@ -336,54 +335,55 @@ FormSchema.pre('save', function (next) { var that = this; var _original; - async.series([function(cb) { - that.constructor - .findOne({_id: that._id}).exec(function (err, original) { - if (err) { - return cb(err); - } else if (!original){ - return next(); - } else { - _original = original; - return cb(null); - } - }); - }, - function(cb) { - if(that.form_fields && that.isModified('form_fields') && formFieldsAllHaveIds(that.toObject().form_fields)){ + async.series([ + function(cb) { + that.constructor + .findOne({_id: that._id}).exec(function (err, original) { + if (err) { + return cb(err); + } else if (!original){ + return next(); + } else { + _original = original; + return cb(null); + } + }); + }, + function(cb) { + if(that.form_fields && that.isModified('form_fields') && formFieldsAllHaveIds(that.toObject().form_fields)){ - var current_form = that.toObject(), - old_form_fields = _original.toObject().form_fields, - new_ids = _.map(_.map(current_form.form_fields, 'globalId'), function(id){ return ''+id;}), - old_ids = _.map(_.map(old_form_fields, 'globalId'), function(id){ return ''+id;}), - deletedIds = getDeletedIndexes(old_ids, new_ids); + var current_form = that.toObject(), + old_form_fields = _original.toObject().form_fields, + new_ids = _.map(_.map(current_form.form_fields, 'globalId'), function(id){ return ''+id;}), + old_ids = _.map(_.map(old_form_fields, 'globalId'), function(id){ return ''+id;}), + deletedIds = getDeletedIndexes(old_ids, new_ids); - //Check if any form_fileds were deleted - if( deletedIds.length > 0 ){ + //Check if any form_fileds were deleted + if( deletedIds.length > 0 ){ - var modifiedSubmissions = []; + var modifiedSubmissions = []; - async.forEachOfSeries(deletedIds, - function (deletedIdIndex, key, cb_id) { + async.forEachOfSeries(deletedIds, + function (deletedIdIndex, key, cb_id) { - var deleted_id = old_ids[deletedIdIndex]; - //Find FormSubmissions that contain field with _id equal to 'deleted_id' - FormSubmission. - find({ form: that, form_fields: {$elemMatch: {globalId: deleted_id} } }). - exec(function(err, submissions){ - if(err) { - return cb_id(err); - } + var deleted_id = old_ids[deletedIdIndex]; + //Find FormSubmissions that contain field with _id equal to 'deleted_id' + FormSubmission. + find({ form: that, form_fields: {$elemMatch: {globalId: deleted_id} } }). + exec(function(err, submissions){ + if(err) { + return cb_id(err); + } - //Preserve fields that have at least one submission - if (submissions.length) { - //Add submissions - modifiedSubmissions.push.apply(modifiedSubmissions, submissions); - } + //Preserve fields that have at least one submission + if (submissions.length) { + //Add submissions + modifiedSubmissions.push.apply(modifiedSubmissions, submissions); + } - return cb_id(null); - }); - }, + return cb_id(null); + }); + }, function (err) { if(err){ console.error(err.message); @@ -425,17 +425,20 @@ FormSchema.pre('save', function (next) { }, function (err) { return cb(err); }); - } - ); + }); + } else { + return cb(null); + } } else { return cb(null); } - } else { - return cb(null); } - }], - function(err, results){ - next(err); + ], + function(err){ + if(err){ + return next(err); + } + next(); }); }); diff --git a/app/models/form_field.server.model.js b/app/models/form_field.server.model.js index 9a86b74b..9aae7749 100644 --- a/app/models/form_field.server.model.js +++ b/app/models/form_field.server.model.js @@ -5,13 +5,11 @@ */ var mongoose = require('mongoose'), util = require('util'), - mUtilities = require('mongoose-utilities'), + timeStampPlugin = require('../libs/timestamp.server.plugin'), _ = require('lodash'), Schema = mongoose.Schema, - LogicJumpSchema = require('./logic_jump.server.model'); - -const UIDGenerator = require('uid-generator'); -const uidgen3 = new UIDGenerator(256, UIDGenerator.BASE62); + LogicJumpSchema = require('./logic_jump.server.model'), + tokgen = require('../libs/tokenGenerator'); var FieldOptionSchema = new Schema({ option_id: { @@ -132,7 +130,7 @@ function BaseFieldSchema(){ fieldValue: Schema.Types.Mixed }); - this.plugin(mUtilities.timestamp, { + this.plugin(timeStampPlugin, { createdPath: 'created', modifiedPath: 'lastModified', useVirtual: false @@ -198,7 +196,7 @@ FormFieldSchema.pre('save', function(next) { if(this.logicJump.jumpTo === '') delete this.logicJump.jumpTo; } if(!this.globalId){ - this.globalId = uidgen3.generateSync(); + this.globalId = tokgen(); } next(); }); diff --git a/app/models/form_submission.server.model.js b/app/models/form_submission.server.model.js index e2029e4e..de4765b5 100644 --- a/app/models/form_submission.server.model.js +++ b/app/models/form_submission.server.model.js @@ -5,7 +5,7 @@ */ var mongoose = require('mongoose'), Schema = mongoose.Schema, - mUtilities = require('mongoose-utilities'), + timeStampPlugin = require('../libs/timestamp.server.plugin'), FieldSchema = require('./form_field.server.model.js'); /** @@ -75,7 +75,7 @@ FormSubmissionSchema.path('form_fields', { } }); -FormSubmissionSchema.plugin(mUtilities.timestamp, { +FormSubmissionSchema.plugin(timeStampPlugin, { createdPath: 'created', modifiedPath: 'lastModified', useVirtual: false diff --git a/app/models/user.server.model.js b/app/models/user.server.model.js index a22f53d4..98e2d613 100755 --- a/app/models/user.server.model.js +++ b/app/models/user.server.model.js @@ -7,8 +7,7 @@ var mongoose = require('mongoose'), Schema = mongoose.Schema, crypto = require('crypto'), config = require('../../config/config'), - fs = require('fs-extra'), - mUtilities = require('mongoose-utilities'), + timeStampPlugin = require('../libs/timestamp.server.plugin'), path = require('path'), querystring = require('querystring'), nodemailer = require('nodemailer'); @@ -143,7 +142,7 @@ UserSchema.virtual('displayName').get(function () { return this.firstName + ' ' + this.lastName; }); -UserSchema.plugin(mUtilities.timestamp, { +UserSchema.plugin(timeStampPlugin, { createdPath: 'created', modifiedPath: 'lastModified', useVirtual: false diff --git a/app/tests/form.server.model.test.js b/app/tests/form.server.model.test.js index 697fe87e..573e631b 100644 --- a/app/tests/form.server.model.test.js +++ b/app/tests/form.server.model.test.js @@ -1,5 +1,7 @@ 'use strict'; +require('../../server.js'); + /** * Module dependencies. */ diff --git a/app/tests/form.server.routes.test.js b/app/tests/form.server.routes.test.js index c2f7cb4e..e1aa2654 100644 --- a/app/tests/form.server.routes.test.js +++ b/app/tests/form.server.routes.test.js @@ -1,5 +1,4 @@ 'use strict'; -process.env.NODE_ENV = 'test'; var should = require('should'), lodash = require('lodash'), @@ -19,8 +18,8 @@ var user, myForm, userSession; // Create user credentials var credentials = { - username: 'test1234', - email: 'test1234@test.com', + username: 'aeokjqjqkqaeoaoe', + email: 'aeoaekjqjqqjkoeoa@test.com', password: 'password' }; @@ -30,18 +29,17 @@ var credentials = { describe('Form Routes Unit tests', function() { beforeEach(function(done) { - // Create a new user user = new User({ firstName: 'Full', lastName: 'Name', - displayName: 'Full Name', email: credentials.email, username: credentials.username, password: credentials.password, provider: 'local' }); + // Save a user to the test db and create new Form user.save(function(err) { should.not.exist(err); @@ -65,10 +63,12 @@ describe('Form Routes Unit tests', function() { }); it(' > should not be able to create a Form if not logged in', function(done) { + userSession.post('/forms') .send({form: myForm}) .expect(401) .end(function(FormSaveErr, FormSaveRes) { + // Call the assertion callback done(FormSaveErr); }); @@ -153,7 +153,7 @@ describe('Form Routes Unit tests', function() { // Save a new Form authenticatedSession.post('/forms') .send({form: myForm}) - .expect(405) + .expect(500) .end(function(FormSaveErr, FormSaveRes) { // Handle Form save error if (FormSaveErr) { diff --git a/app/tests/form_submission.model.test.js b/app/tests/form_submission.model.test.js index de87d09f..f60e599e 100644 --- a/app/tests/form_submission.model.test.js +++ b/app/tests/form_submission.model.test.js @@ -168,7 +168,7 @@ describe('FormSubmission Model Unit Tests:', function() { }); it('should be able to find FormSubmission by $elemMatch on form_fields id', function(done){ - FormSubmission.findOne({ form: myForm._id, admin: user, form_fields: {$elemMatch: {_id: myForm.form_fields[0]._id} } }) + FormSubmission.findOne({ form: myForm._id, form_fields: {$elemMatch: {globalId: myForm.form_fields[0].globalId} } }) .exec(function(err, submission){ should.not.exist(err); should.exist(submission); diff --git a/app/tests/form_submission.routes.test.js b/app/tests/form_submission.routes.test.js index 9cde8744..13d5e780 100644 --- a/app/tests/form_submission.routes.test.js +++ b/app/tests/form_submission.routes.test.js @@ -21,7 +21,8 @@ var credentials, user; * Form routes tests */ describe('Form Submission Routes Unit tests', function() { - var FormObj, _Submission, submissionSession; + var FormObj, _Submission, submissionSession, _SubmissionBody + beforeEach(function(done) { @@ -60,15 +61,43 @@ describe('Form Submission Routes Unit tests', function() { if (formSaveErr) done(formSaveErr); _Submission = { - form_fields: [ - {'fieldType':'textfield', 'title':'First Name', 'fieldValue': 'David'}, - {'fieldType':'checkbox', 'title':'nascar', 'fieldValue': true}, - {'fieldType':'checkbox', 'title':'hockey', 'fieldValue': false} - ], form: form._id, - admin: user._id, + form_fields: [ + {'fieldType':'textfield', 'title':'First Name', 'fieldValue': 'David', _id: '', isSubmission: false, deletePreserved: false}, + {'fieldType':'checkbox', 'title':'nascar', 'fieldValue': true, _id: '', isSubmission: false, deletePreserved: true}, + {'fieldType':'checkbox', 'title':'hockey', 'fieldValue': false, _id: '', isSubmission: false, deletePreserved: false} + ], percentageComplete: 100, - timeElapsed: 11.55 + timeElapsed: 11.55, + ipAddr: '123.233.232.232', + geoLocation: { + Country: 'Canada', + City: 'Vancouver' + }, + device:{ + type: 'Mobile', + name: 'iPhone' + } + }; + + _SubmissionBody ={ + _id: form._id, + form_fields: [ + {'fieldType':'textfield', 'title':'First Name', 'fieldValue': 'David', _id: '', isSubmission: false, deletePreserved: false}, + {'fieldType':'checkbox', 'title':'nascar', 'fieldValue': true, _id: '', isSubmission: false, deletePreserved: true}, + {'fieldType':'checkbox', 'title':'hockey', 'fieldValue': false, _id: '', isSubmission: false, deletePreserved: false} + ], + percentageComplete: 100, + timeElapsed: 11.55, + ipAddr: '123.233.232.232', + geoLocation: { + Country: 'Canada', + City: 'Vancouver' + }, + device:{ + type: 'Mobile', + name: 'iPhone' + } }; FormObj = form; @@ -86,12 +115,11 @@ describe('Form Submission Routes Unit tests', function() { //Create Submission submissionSession.post('/forms/' + FormObj._id) - .send(_Submission) + .send(_SubmissionBody) .expect(200) .end(function(err, res) { should.not.exist(err); - done(); }); }); @@ -99,7 +127,7 @@ describe('Form Submission Routes Unit tests', function() { it(' > should be able to get Form Submissions if signed in', function(done) { //Create Submission submissionSession.post('/forms/' + FormObj._id) - .send(_Submission) + .send(_SubmissionBody) .expect(200) .end(function(err, res) { diff --git a/app/tests/libs/timestamp.server.plugin.test.js b/app/tests/libs/timestamp.server.plugin.test.js new file mode 100644 index 00000000..2901fe72 --- /dev/null +++ b/app/tests/libs/timestamp.server.plugin.test.js @@ -0,0 +1,70 @@ +// Dependencies +var util = require('util') + , assert = require('assert') + , mongoose = require('mongoose') + , timestamp = require('../../libs/timestamp.server.plugin') + , Schema = mongoose.Schema + , ObjectId = Schema.ObjectId + +// Run tests +describe('Timestamp', function () { + describe('#default()', function () { + var FooSchema = new Schema() + FooSchema.plugin(timestamp) + var FooModel = mongoose.model('timeFoo', FooSchema) + , bar = new FooModel() + + before(function () { + FooModel.remove(function (err) { + assert.strictEqual(err, null) + }) + }) + + it('should have custom properties', function (done) { + assert.strictEqual(typeof FooSchema.virtuals.created, 'object') + assert.strictEqual(typeof FooSchema.paths.modified, 'object') + done() + }) + + it('should create the default attributes', function (done) { + bar.save(function (err, doc) { + assert.strictEqual(err, null) + assert.strictEqual(util.isDate(doc.created), true) + assert.strictEqual(util.isDate(doc.modified), true) + done() + }) + }) + }) + + describe('#custom()', function () { + var FooSchema = new Schema() + FooSchema.plugin(timestamp, { + createdPath: 'oh' + , modifiedPath: 'hai' + , useVirtual: false + }) + var BarModel = mongoose.model('timeBar', FooSchema) + , bar = new BarModel() + + before(function () { + BarModel.remove(function (err) { + assert.strictEqual(err, null) + }) + }) + + it('should have custom properties', function (done) { + assert.strictEqual(typeof FooSchema.paths.oh, 'object') + assert.strictEqual(typeof FooSchema.paths.hai, 'object') + done() + }) + + it('should create custom attributes', function (done) { + bar.save(function (err, doc) { + assert.strictEqual(err, null) + assert.strictEqual(util.isDate(doc.oh), true) + assert.strictEqual(util.isDate(doc.hai), true) + done() + }) + }) + }) +}) \ No newline at end of file diff --git a/config/env/all.js b/config/env/all.js index 2651bae1..54bc72ed 100755 --- a/config/env/all.js +++ b/config/env/all.js @@ -8,20 +8,18 @@ module.exports = { keywords: process.env.APP_KEYWORDS || 'typeform, pdfs, forms, opensource, formbuilder, google forms, nodejs' }, db: { - uri: 'mongodb://'+ (process.env.DB_PORT_27017_TCP_ADDR || process.env.DB_HOST || 'localhost')+'/mean', + uri: process.env.MONGODB_URI || 'mongodb://'+ (process.env.DB_PORT_27017_TCP_ADDR || '127.0.0.1') + '/mean', options: { user: '', pass: '' } }, - port: process.env.PORT || 3000, - socketPort: process.env.SOCKET_PORT || 20523, + port: 3000, + socketPort: 20523, templateEngine: 'swig', - reCAPTCHA_Key: process.env.reCAPTCHA_KEY || '', - signupDisabled: (process.env.SIGNUP_DISABLED === 'TRUE'), enableClusterMode: (process.env.ENABLE_CLUSTER_MODE === 'TRUE'), baseUrl: '', diff --git a/config/env/development.js b/config/env/development.js index 7771b6e0..a44816a7 100755 --- a/config/env/development.js +++ b/config/env/development.js @@ -4,7 +4,7 @@ module.exports = { baseUrl: process.env.BASE_URL || 'http://localhost:5000', port: process.env.PORT || 5000, db: { - uri: 'mongodb://'+( process.env.DB_PORT_27017_TCP_ADDR || process.env.DB_HOST || '0.0.0.0') +'/mean', + uri: process.env.MONGODB_URI || 'mongodb://'+( process.env.DB_PORT_27017_TCP_ADDR || '127.0.0.1') +'/mean', options: { user: '', pass: '' @@ -16,31 +16,6 @@ module.exports = { // Stream defaults to process.stdout // Uncomment to enable logging to a log on the file system }, - facebook: { - clientID: process.env.FACEBOOK_ID || 'APP_ID', - clientSecret: process.env.FACEBOOK_SECRET || 'APP_SECRET', - callbackURL: '/auth/facebook/callback' - }, - twitter: { - clientID: process.env.TWITTER_KEY || 'CONSUMER_KEY', - clientSecret: process.env.TWITTER_SECRET || 'CONSUMER_SECRET', - callbackURL: '/auth/twitter/callback' - }, - google: { - clientID: process.env.GOOGLE_ID || 'APP_ID', - clientSecret: process.env.GOOGLE_SECRET || 'APP_SECRET', - callbackURL: '/auth/google/callback' - }, - linkedin: { - clientID: process.env.LINKEDIN_ID || 'APP_ID', - clientSecret: process.env.LINKEDIN_SECRET || 'APP_SECRET', - callbackURL: '/auth/linkedin/callback' - }, - github: { - clientID: process.env.GITHUB_ID || 'APP_ID', - clientSecret: process.env.GITHUB_SECRET || 'APP_SECRET', - callbackURL: '/auth/github/callback' - }, mailer: { from: process.env.MAILER_FROM || 'no-reply@tellform.com', options: process.env.MAILER_SMTP_HOST ? { //Uses custom SMTP if MAILER_SMTP_HOST is set diff --git a/config/env/production.js b/config/env/production.js index 110fd1f4..b80b5d01 100755 --- a/config/env/production.js +++ b/config/env/production.js @@ -3,7 +3,7 @@ module.exports = { baseUrl: process.env.BASE_URL || process.env.HEROKU_APP_NAME + '.herokuapp.com' || 'tellform.com', db: { - uri: process.env.MONGODB_URI || process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://' + (process.env.DB_1_PORT_27017_TCP_ADDR || '0.0.0.0') + '/mean', + uri: process.env.MONGODB_URI || process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://' + (process.env.DB_PORT_27017_TCP_ADDR || '127.0.0.1') + '/mean', }, port: process.env.PORT || 5000, socketUrl: process.env.SOCKET_URL || 'ws.tellform.com', @@ -32,31 +32,6 @@ module.exports = { js: 'public/dist/application.min.js', form_js: 'public/dist/form-application.min.js' }, - facebook: { - clientID: process.env.FACEBOOK_ID || 'APP_ID', - clientSecret: process.env.FACEBOOK_SECRET || 'APP_SECRET', - callbackURL: '/auth/facebook/callback' - }, - twitter: { - clientID: process.env.TWITTER_KEY || 'CONSUMER_KEY', - clientSecret: process.env.TWITTER_SECRET || 'CONSUMER_SECRET', - callbackURL: '/auth/twitter/callback' - }, - google: { - clientID: process.env.GOOGLE_ID || 'APP_ID', - clientSecret: process.env.GOOGLE_SECRET || 'APP_SECRET', - callbackURL: '/auth/google/callback' - }, - linkedin: { - clientID: process.env.LINKEDIN_ID || 'APP_ID', - clientSecret: process.env.LINKEDIN_SECRET || 'APP_SECRET', - callbackURL: '/auth/linkedin/callback' - }, - github: { - clientID: process.env.GITHUB_ID || 'APP_ID', - clientSecret: process.env.GITHUB_SECRET || 'APP_SECRET', - callbackURL: '/auth/github/callback' - }, mailer: { from: process.env.MAILER_FROM || 'testing@'+process.env.SPARKPOST_SANDBOX_DOMAIN || 'no-reply@tellform.com', options: process.env.MAILER_SMTP_HOST ? { //Uses custom SMTP if MAILER_SMTP_HOST is set diff --git a/config/env/secure.js b/config/env/secure.js index 4c6a584f..77c508a5 100755 --- a/config/env/secure.js +++ b/config/env/secure.js @@ -4,7 +4,7 @@ module.exports = { baseUrl: 'https://forms.polydaic.com', port: 8443, db: { - uri: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || 'mongodb://localhost/mean', + uri: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI || process.env.MONGODB_URI || 'mongodb://127.0.0.1/mean', options: { user: '', pass: '' @@ -39,31 +39,6 @@ module.exports = { css: 'public/dist/application.min.css', js: 'public/dist/application.min.js' }, - facebook: { - clientID: process.env.FACEBOOK_ID || 'APP_ID', - clientSecret: process.env.FACEBOOK_SECRET || 'APP_SECRET', - callbackURL: 'https://localhost:443/auth/facebook/callback' - }, - twitter: { - clientID: process.env.TWITTER_KEY || 'CONSUMER_KEY', - clientSecret: process.env.TWITTER_SECRET || 'CONSUMER_SECRET', - callbackURL: 'https://localhost:443/auth/twitter/callback' - }, - google: { - clientID: process.env.GOOGLE_ID || 'APP_ID', - clientSecret: process.env.GOOGLE_SECRET || 'APP_SECRET', - callbackURL: 'https://localhost:443/auth/google/callback' - }, - linkedin: { - clientID: process.env.LINKEDIN_ID || 'APP_ID', - clientSecret: process.env.LINKEDIN_SECRET || 'APP_SECRET', - callbackURL: 'https://localhost:443/auth/linkedin/callback' - }, - github: { - clientID: process.env.GITHUB_ID || 'APP_ID', - clientSecret: process.env.GITHUB_SECRET || 'APP_SECRET', - callbackURL: 'https://localhost:443/auth/github/callback' - }, mailer: { from: process.env.MAILER_FROM || '', options: process.env.MAILER_SMTP_HOST ? { //Uses custom SMTP if MAILER_SMTP_HOST is set diff --git a/config/env/test.js b/config/env/test.js index 29e4e821..c6731236 100755 --- a/config/env/test.js +++ b/config/env/test.js @@ -25,31 +25,6 @@ module.exports = { sessionCookie: { maxAge: 24 * 60 * 60 * 1000 // 24 hours }, - facebook: { - clientID: process.env.FACEBOOK_ID || 'APP_ID', - clientSecret: process.env.FACEBOOK_SECRET || 'APP_SECRET', - callbackURL: '/auth/facebook/callback' - }, - twitter: { - clientID: process.env.TWITTER_KEY || 'CONSUMER_KEY', - clientSecret: process.env.TWITTER_SECRET || 'CONSUMER_SECRET', - callbackURL: '/auth/twitter/callback' - }, - google: { - clientID: process.env.GOOGLE_ID || 'APP_ID', - clientSecret: process.env.GOOGLE_SECRET || 'APP_SECRET', - callbackURL: '/auth/google/callback' - }, - linkedin: { - clientID: process.env.LINKEDIN_ID || 'APP_ID', - clientSecret: process.env.LINKEDIN_SECRET || 'APP_SECRET', - callbackURL: '/auth/linkedin/callback' - }, - github: { - clientID: process.env.GITHUB_ID || 'APP_ID', - clientSecret: process.env.GITHUB_SECRET || 'APP_SECRET', - callbackURL: '/auth/github/callback' - }, mailer: { from: process.env.MAILER_FROM || 'MAILER_FROM', options: process.env.MAILER_SMTP_HOST ? { //Uses custom SMTP if MAILER_SMTP_HOST is set diff --git a/config/express.js b/config/express.js index 1569a012..64f25ba2 100755 --- a/config/express.js +++ b/config/express.js @@ -3,7 +3,7 @@ /** * Module dependencies. */ -var fs = require('fs-extra'), +var fs = require('fs'), https = require('https'), express = require('express'), morgan = require('morgan'), @@ -17,22 +17,13 @@ var fs = require('fs-extra'), passport = require('passport'), raven = require('raven'), MongoStore = require('connect-mongo')(session), - flash = require('connect-flash'), config = require('./config'), consolidate = require('consolidate'), path = require('path'), - device = require('express-device'), client = new raven.Client(config.DSN); var mongoose = require('mongoose'); -var cacheOpts = { - max:100000, - maxAge:1000*60 -}; - -require('mongoose-cache').install(mongoose, cacheOpts); - /** * Configure Socket.io */ @@ -246,12 +237,6 @@ module.exports = function(db) { app.use(passport.initialize()); app.use(passport.session()); - // setup express-device - app.use(device.capture({ parseUserAgent: true })); - - // connect flash for flash messages - app.use(flash()); - // Globbing routing files config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) { require(path.resolve(routePath))(app); diff --git a/config/strategies/facebook.js b/config/strategies/facebook.js deleted file mode 100755 index 34ddc68f..00000000 --- a/config/strategies/facebook.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ -var passport = require('passport'), - FacebookStrategy = require('passport-facebook').Strategy, - config = require('../config'), - users = require('../../app/controllers/users.server.controller'); - -module.exports = function() { - // Use facebook strategy - passport.use(new FacebookStrategy({ - clientID: config.facebook.clientID, - clientSecret: config.facebook.clientSecret, - callbackURL: config.facebook.callbackURL, - passReqToCallback: true - }, - function(req, accessToken, refreshToken, profile, done) { - // Set the provider data and include tokens - var providerData = profile._json; - providerData.accessToken = accessToken; - providerData.refreshToken = refreshToken; - - // Create the user OAuth profile - var providerUserProfile = { - firstName: profile.name.givenName, - lastName: profile.name.familyName, - displayName: profile.displayName, - email: profile.emails[0].value, - username: profile.username, - provider: 'facebook', - providerIdentifierField: 'id', - providerData: providerData - }; - - // Save the user OAuth profile - users.saveOAuthUserProfile(req, providerUserProfile, done); - } - )); -}; diff --git a/config/strategies/github.js b/config/strategies/github.js deleted file mode 100755 index f10a413e..00000000 --- a/config/strategies/github.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ -var passport = require('passport'), - GithubStrategy = require('passport-github').Strategy, - config = require('../config'), - users = require('../../app/controllers/users.server.controller'); - -module.exports = function() { - // Use github strategy - passport.use(new GithubStrategy({ - clientID: config.github.clientID, - clientSecret: config.github.clientSecret, - callbackURL: config.github.callbackURL, - passReqToCallback: true - }, - function(req, accessToken, refreshToken, profile, done) { - // Set the provider data and include tokens - var providerData = profile._json; - providerData.accessToken = accessToken; - providerData.refreshToken = refreshToken; - - // Create the user OAuth profile - var displayName = profile.displayName.trim(); - var iSpace = displayName.indexOf(' '); // index of the whitespace following the firstName - var firstName = iSpace !== -1 ? displayName.substring(0, iSpace) : displayName; - var lastName = iSpace !== -1 ? displayName.substring(iSpace + 1) : ''; - - var providerUserProfile = { - firstName: firstName, - lastName: lastName, - displayName: displayName, - email: profile.emails[0].value, - username: profile.username, - provider: 'github', - providerIdentifierField: 'id', - providerData: providerData - }; - - // Save the user OAuth profile - users.saveOAuthUserProfile(req, providerUserProfile, done); - } - )); -}; diff --git a/config/strategies/google.js b/config/strategies/google.js deleted file mode 100755 index 8044ed4e..00000000 --- a/config/strategies/google.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ -var passport = require('passport'), - GoogleStrategy = require('passport-google-oauth').OAuth2Strategy, - config = require('../config'), - users = require('../../app/controllers/users.server.controller'); - -module.exports = function() { - // Use google strategy - passport.use(new GoogleStrategy({ - clientID: config.google.clientID, - clientSecret: config.google.clientSecret, - callbackURL: config.google.callbackURL, - passReqToCallback: true - }, - function(req, accessToken, refreshToken, profile, done) { - // Set the provider data and include tokens - var providerData = profile._json; - providerData.accessToken = accessToken; - providerData.refreshToken = refreshToken; - - // Create the user OAuth profile - var providerUserProfile = { - firstName: profile.name.givenName, - lastName: profile.name.familyName, - displayName: profile.displayName, - email: profile.emails[0].value, - username: profile.username, - provider: 'google', - providerIdentifierField: 'id', - providerData: providerData - }; - - // Save the user OAuth profile - users.saveOAuthUserProfile(req, providerUserProfile, done); - } - )); -}; diff --git a/config/strategies/linkedin.js b/config/strategies/linkedin.js deleted file mode 100755 index 1ee5b3f5..00000000 --- a/config/strategies/linkedin.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ -var passport = require('passport'), - LinkedInStrategy = require('passport-linkedin').Strategy, - config = require('../config'), - users = require('../../app/controllers/users.server.controller'); - -module.exports = function() { - // Use linkedin strategy - passport.use(new LinkedInStrategy({ - consumerKey: config.linkedin.clientID, - consumerSecret: config.linkedin.clientSecret, - callbackURL: config.linkedin.callbackURL, - passReqToCallback: true, - profileFields: ['id', 'first-name', 'last-name', 'email-address'] - }, - function(req, accessToken, refreshToken, profile, done) { - // Set the provider data and include tokens - var providerData = profile._json; - providerData.accessToken = accessToken; - providerData.refreshToken = refreshToken; - - // Create the user OAuth profile - var providerUserProfile = { - firstName: profile.name.givenName, - lastName: profile.name.familyName, - displayName: profile.displayName, - email: profile.emails[0].value, - username: profile.username, - provider: 'linkedin', - providerIdentifierField: 'id', - providerData: providerData - }; - - // Save the user OAuth profile - users.saveOAuthUserProfile(req, providerUserProfile, done); - } - )); -}; diff --git a/config/strategies/twitter.js b/config/strategies/twitter.js deleted file mode 100755 index 5dcc93f4..00000000 --- a/config/strategies/twitter.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -/** - * Module dependencies. - */ -var passport = require('passport'), - TwitterStrategy = require('passport-twitter').Strategy, - config = require('../config'), - users = require('../../app/controllers/users.server.controller'); - -module.exports = function() { - // Use twitter strategy - passport.use(new TwitterStrategy({ - consumerKey: config.twitter.clientID, - consumerSecret: config.twitter.clientSecret, - callbackURL: config.twitter.callbackURL, - passReqToCallback: true - }, - function(req, token, tokenSecret, profile, done) { - // Set the provider data and include tokens - var providerData = profile._json; - providerData.token = token; - providerData.tokenSecret = tokenSecret; - - // Create the user OAuth profile - var displayName = profile.displayName.trim(); - var iSpace = displayName.indexOf(' '); // index of the whitespace following the firstName - var firstName = iSpace !== -1 ? displayName.substring(0, iSpace) : displayName; - var lastName = iSpace !== -1 ? displayName.substring(iSpace + 1) : ''; - - var providerUserProfile = { - firstName: firstName, - lastName: lastName, - displayName: displayName, - username: profile.username, - provider: 'twitter', - providerIdentifierField: 'id_str', - providerData: providerData - }; - - // Save the user OAuth profile - users.saveOAuthUserProfile(req, providerUserProfile, done); - } - )); -}; diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 7e016e4d..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: "3" -services: - tellform: - build: - context: ./ - dockerfile: dockerfile - image: tellform - ports: - - 3000:3000 - links: - - tellform-redis:redis-db - - tellform-mongo:db - env_file: - - .env - tellform-redis: - image: redis - ports: - - 6379 - tellform-mongo: - image: mongo - ports: - - 27017 diff --git a/docs/example_formfields.json b/docs/example_formfields.json deleted file mode 100644 index 2cb6b475..00000000 --- a/docs/example_formfields.json +++ /dev/null @@ -1,96 +0,0 @@ - [ - [{ - "fieldType": "textfield", - "fieldValue": "snthsnth", - "_id": "55aec5d284bae1a1996210bd", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Short Text2", - "lastModified": "2015-07-21T22:21:06.653Z", - "created": "2015-07-21T22:21:06.653Z", - "$$hashKey": "02J" - }, { - "fieldType": "textfield", - "fieldValue": "duieedi", - "_id": "55aec5b084bae1a1996210b4", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Last Name", - "lastModified": "2015-07-21T22:20:32.053Z", - "created": "2015-07-21T22:20:32.053Z", - "$$hashKey": "02K" - }], - - [{ - "fieldType": "textfield", - "fieldValue": "snthsnth", - "_id": "55aec5d284bae1a1996210bd", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Short Text2", - "lastModified": "2015-07-21T22:21:06.653Z", - "created": "2015-07-21T22:21:06.653Z", - "$$hashKey": "02J" - }, { - "fieldType": "textfield", - "fieldValue": "duieedi", - "_id": "55aec5b084bae1a1996210b4", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Last Name", - "lastModified": "2015-07-21T22:20:32.053Z", - "created": "2015-07-21T22:20:32.053Z", - "$$hashKey": "02K" - }], - [{ - "fieldType": "textfield", - "fieldValue": "snthsnth", - "_id": "55aec5d284bae1a1996210bd", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Short Text2", - "lastModified": "2015-07-21T22:21:06.653Z", - "created": "2015-07-21T22:21:06.653Z", - "$$hashKey": "02J" - }, { - "fieldType": "textfield", - "fieldValue": "duieedi", - "_id": "55aec5b084bae1a1996210b4", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Last Name", - "lastModified": "2015-07-21T22:20:32.053Z", - "created": "2015-07-21T22:20:32.053Z", - "$$hashKey": "02K" - }], - [{ - "fieldType": "textfield", - "fieldValue": "snthsnth", - "_id": "55aec5d284bae1a1996210bd", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Short Text2", - "lastModified": "2015-07-21T22:21:06.653Z", - "created": "2015-07-21T22:21:06.653Z", - "$$hashKey": "02J" - }, { - "fieldType": "textfield", - "fieldValue": "duieedi", - "_id": "55aec5b084bae1a1996210b4", - "disabled": false, - "fieldOptions": [], - "description": "", - "title": "Last Name", - "lastModified": "2015-07-21T22:20:32.053Z", - "created": "2015-07-21T22:20:32.053Z", - "$$hashKey": "02K" - }] - - ] \ No newline at end of file diff --git a/docs/example_submission_data.json b/docs/example_submission_data.json deleted file mode 100644 index 9e2f9a0c..00000000 --- a/docs/example_submission_data.json +++ /dev/null @@ -1,758 +0,0 @@ -[ - { - "_id": "56450d120761e9d7d68d3543", - "lastModified": "2015-11-12T22:05:06.380Z", - "fdfData": null, - "admin": "55d270df2749c1ceb47c0f8b", - "form": "5644dde5507b2572635dcd50", - "title": "Sample Form", - "timeElapsed": 11.925, - "percentageComplete": 75, - "__v": 0, - "created": "2015-11-12T22:05:06.378Z", - "form_fields": [ - { - "_id": "5644e0d5507b2572635dcd56", - "fieldValue": "", - "fieldType": "statement", - "title": "Statement2", - "lastModified": "2015-11-12T18:56:21.730Z", - "created": "2015-11-12T18:56:21.660Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": true, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.769Z", - "title": "Short Text2", - "fieldType": "textfield", - "fieldValue": "first", - "_id": "5644dde7507b2572635dcd51", - "created": "2015-11-12T18:43:51.290Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.770Z", - "title": "Short Text3", - "fieldType": "textfield", - "fieldValue": "first", - "_id": "5644dde7507b2572635dcd52", - "created": "2015-11-12T18:43:51.977Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Paragraph Text2", - "fieldType": "textarea", - "fieldValue": "first", - "_id": "5644ddea507b2572635dcd54", - "created": "2015-11-12T18:43:54.594Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Rating2", - "fieldType": "rating", - "fieldValue": 1, - "_id": "5644e0d4507b2572635dcd55", - "created": "2015-11-12T18:56:20.324Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - } - ] - }, - { - "_id": "56450d1d0761e9d7d68d3544", - "lastModified": "2015-11-12T22:05:17.806Z", - "fdfData": null, - "admin": "55d270df2749c1ceb47c0f8b", - "form": "5644dde5507b2572635dcd50", - "title": "Sample Form", - "timeElapsed": 10.301, - "percentageComplete": 75, - "__v": 0, - "created": "2015-11-12T22:05:17.805Z", - "form_fields": [ - { - "_id": "5644e0d5507b2572635dcd56", - "fieldValue": "", - "fieldType": "statement", - "title": "Statement2", - "lastModified": "2015-11-12T18:56:21.730Z", - "created": "2015-11-12T18:56:21.660Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": true, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.769Z", - "title": "Short Text2", - "fieldType": "textfield", - "fieldValue": "second", - "_id": "5644dde7507b2572635dcd51", - "created": "2015-11-12T18:43:51.290Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.770Z", - "title": "Short Text3", - "fieldType": "textfield", - "fieldValue": "second", - "_id": "5644dde7507b2572635dcd52", - "created": "2015-11-12T18:43:51.977Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Paragraph Text2", - "fieldType": "textarea", - "fieldValue": "second", - "_id": "5644ddea507b2572635dcd54", - "created": "2015-11-12T18:43:54.594Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Rating2", - "fieldType": "rating", - "fieldValue": 3, - "_id": "5644e0d4507b2572635dcd55", - "created": "2015-11-12T18:56:20.324Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - } - ] - }, - { - "_id": "56450d260761e9d7d68d3545", - "lastModified": "2015-11-12T22:05:26.874Z", - "fdfData": null, - "admin": "55d270df2749c1ceb47c0f8b", - "form": "5644dde5507b2572635dcd50", - "title": "Sample Form", - "timeElapsed": 7.975, - "percentageComplete": 75, - "__v": 0, - "created": "2015-11-12T22:05:26.874Z", - "form_fields": [ - { - "_id": "5644e0d5507b2572635dcd56", - "fieldValue": "", - "fieldType": "statement", - "title": "Statement2", - "lastModified": "2015-11-12T18:56:21.730Z", - "created": "2015-11-12T18:56:21.660Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": true, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.769Z", - "title": "Short Text2", - "fieldType": "textfield", - "fieldValue": "third", - "_id": "5644dde7507b2572635dcd51", - "created": "2015-11-12T18:43:51.290Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.770Z", - "title": "Short Text3", - "fieldType": "textfield", - "fieldValue": "third", - "_id": "5644dde7507b2572635dcd52", - "created": "2015-11-12T18:43:51.977Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Paragraph Text2", - "fieldType": "textarea", - "fieldValue": "third", - "_id": "5644ddea507b2572635dcd54", - "created": "2015-11-12T18:43:54.594Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Rating2", - "fieldType": "rating", - "fieldValue": 2, - "_id": "5644e0d4507b2572635dcd55", - "created": "2015-11-12T18:56:20.324Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - } - ] - }, - { - "_id": "56450d320761e9d7d68d3546", - "lastModified": "2015-11-12T22:05:38.717Z", - "fdfData": null, - "admin": "55d270df2749c1ceb47c0f8b", - "form": "5644dde5507b2572635dcd50", - "title": "Sample Form", - "timeElapsed": 10.47, - "percentageComplete": 75, - "__v": 0, - "created": "2015-11-12T22:05:38.716Z", - "form_fields": [ - { - "_id": "5644e0d5507b2572635dcd56", - "fieldValue": "", - "fieldType": "statement", - "title": "Statement2", - "lastModified": "2015-11-12T18:56:21.730Z", - "created": "2015-11-12T18:56:21.660Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": true, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.769Z", - "title": "Short Text2", - "fieldType": "textfield", - "fieldValue": "fourth", - "_id": "5644dde7507b2572635dcd51", - "created": "2015-11-12T18:43:51.290Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.770Z", - "title": "Short Text3", - "fieldType": "textfield", - "fieldValue": "fourth", - "_id": "5644dde7507b2572635dcd52", - "created": "2015-11-12T18:43:51.977Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Paragraph Text2", - "fieldType": "textarea", - "fieldValue": "fourth", - "_id": "5644ddea507b2572635dcd54", - "created": "2015-11-12T18:43:54.594Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - }, - { - "lastModified": "2015-11-12T21:30:20.771Z", - "title": "Rating2", - "fieldType": "rating", - "fieldValue": 2, - "_id": "5644e0d4507b2572635dcd55", - "created": "2015-11-12T18:56:20.324Z", - "validFieldTypes": [ - "textfield", - "date", - "email", - "link", - "legal", - "url", - "textarea", - "statement", - "welcome", - "thankyou", - "file", - "dropdown", - "scale", - "rating", - "radio", - "checkbox", - "hidden", - "yes_no", - "natural", - "number" - ], - "deletePreserved": false, - "disabled": false, - "required": true, - "fieldOptions": [], - "description": "" - } - ] - } -] \ No newline at end of file diff --git a/docs/form_update_process.md b/docs/form_update_process.md deleted file mode 100644 index 37132b36..00000000 --- a/docs/form_update_process.md +++ /dev/null @@ -1,22 +0,0 @@ -##First Form Auto-Update - -1. Added field CLIENT -time: 2553 - -2. Finding form SERVER -time: 2841 - -3. Update form CLIENT -time: 2870 - -4.Updated form SERVER -time: 2863 - - -##Second Form Auto-Update - -1. Added field CLIENT -time: 2755 - -2. Finding form SERVER -time: 2898 \ No newline at end of file diff --git a/docs/readme_logos/do_logo.png b/docs/readme_logos/do_logo.png deleted file mode 100755 index ee98b493e025cb7cc805158e1b69dfd83bfcd202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6943 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 Zz~=yVOt|#aoK5Q^qN?-`RIO+p{(ph>O8o!; diff --git a/docs/readme_logos/roost_logo.png b/docs/readme_logos/roost_logo.png deleted file mode 100644 index ee4a5ac3af22355557e7ee9a7600fea6e4d5852b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 zcmV<42_g20P)A677;`axkZb}QB+V7 zk%GwCBBf9_Gg~L_3hfI`4A zz+6Crt~M+z2?;I{%UBF9buY8W9o2u=iK zJCK{=FyIkDIlD*}8c05j@GD6x$w6Q>z*O9&i#=i+`wHzsS@Z;a#O5xGY45%_$E2qO#%G?2TGCLJT3sH18UjDw9rm+DA)$DzKqCC!EB#t zfC^#07*_)B2aE)a2TTNv0`vtmD#d8|0saurjyaq=Y&r{S*JyI zdN$F3Cjo0QEP-!-gRBz^cj$u(V`LM;^DRUGGI4r=FqJk6N;)fn#z4N)ZV2kaeq|pPU_Ozz9dNlzy|+l6xIoy+HIbZM1{R_nHj?W| zJleVs2bkn5*^#Cwb0v{AO2guHA(yLzZg&xk=jZ#uRE}ys`@zhhIYjP5E_GfbkyS`i)Jz{Bjar8;@K=B{7Cm> z6$=8%-}TtBmM*$+X_9=g&q>}!LJ%ryUc`-@`~oNW7-!_!65^pB4-okyT*_xSm_*av zd<{V*d4fXcvI9c$jy_~XqN%Y&)=~pI)i~1MRu1JR`&|%7{feC%5de~(@e}yPE>zTYY=Go_NgG`q%4HH$UpWJP`GafYOUVyoxyxFfN6+Y; zK_>ZX#m;pP0LeG|T=ZsMJ#~s15L|VBaxxw@bjjm0F>IBr6M<{JQX=q=jp6Dbl6-?E z9j`1%{;|(RZ$$bv#sIOpkv4idl*{7EoHRso-V3^3G1PV#lG*7I4)YJ(7BrF{Q#l$L zA%fu6_qpiNq+c^j!Ftfvq1=02JP=|;|=jBh(D7%$_4@-hZ@^xNzbDye8&`7?J^sR-) z#jlKJ$$uYKxHxS1e$3EJa_SH0qFH_{29fa=n7TnCIm1gHE^B{YLL~2Pid=&1P!n9@ zOb!s6dTmYph$d@x!YzFWnh+yAw(|lRZ|@++uDk=d!o^aM7a+I34w6?QrZp!222DHL z5hAyV#~AKenn*r{$bHkL{CpL?9m@A0?Tid+6e0`4dKqvxdNywaJj(2&=J(f@iFE&c@BAfufI2-OH=PU&I zf~RKfJjiHDVpU2mU_CuruCfFh6+#U4(KD(KnV(?^W?N)Gws`DibEeNshrn#6mn=Xm8Fx%)05BSP}?no*4q-Dm~Ds{ttHw%s`3U?@G&jMcZg92U#yhF z(`mPd1wMpnI zY|e5Ett2OxhnzC9g%@D9)hN3_7RE?Uejn&aDH1%>ukLMOq4IMo)iFy{p+R!z=&&kS zSSXR4L=i62Ozu29Eh6n=Sd=-*N#IVdPja8b)1jJO1dG6toQrWtQ_O*#9gZeJi!dfR zx^;g7{DA4ko4Hg^T2ZOiRpHn2f zTWcK1eH?fF@^->4f<*F6{B4$9c-c&mRAYMLX~05FzXQBtGJUUwg&&fqq2(hRBi2&v oWLaElBp-_5pd&5GEy5lD0M*=Co$#YRL;wH)07*qoM6N<$f*|^fl>h($ diff --git a/docs/readme_logos/sentry_logo.png b/docs/readme_logos/sentry_logo.png deleted file mode 100644 index 89ef4f1d3c3ae09dadc1405c6da0812e6a988fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9726 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 Ux{bm}omv2MV=JTTYtTpk2ZQN?2mk;8 diff --git a/docs/readme_logos/sparkpost_logo.png b/docs/readme_logos/sparkpost_logo.png deleted file mode 100644 index d1732c0e8f46ced37cf17dc24548d5cb1f46dfcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35335 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 diff --git a/docs/readme_logos/statuspage_logo.png b/docs/readme_logos/statuspage_logo.png deleted file mode 100644 index 5da28109599272294b510fc86b9a4626cf8b7207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90362 zcmbTccUV)|7cP7d1q)yS5s+r1NDCc8ABuF8A{{~}bVw+IK$H=sT0p?iyL1?8Kp;x9 z5K2N(kfKNl5fJJ9J3*Z9j{Khc$2~sJj3@5B_A2js_u6Zph?}}MXiu`71OR|mLtRB5 z0M20n;K-ZfRNyZmXETMs|1l#~O^^njj!1tS9|u6m-qY5BQ^VcH$wA-2#{Q1?I|o?+ zpmc^CnjlSdw4rvM?t(VtF@gc^Uf^s1kW~oqvaxe@KyunTIKe&SE-y4RU*?3{%Uw1W z*MaDGDLXjB)dPJT3<7lx?E+oxr0p*&$aBgDKtTcS4oDl$0CzVJ1T;YI^1fUs_;>Qp zLYF!Bhag?$F8@->MCT@_vZs#&r??Z_<7tOdTwU3Nwyy`Vxu{{H@g{-T1OK2Acy($dmG5D_5} z5dm<70OF1Z(k4K_199cI1QiE_oe$g#3HS8iBulih_4Gx`T?RG%WrDkxj?TY=JrD;DcPHDmKN^A5cliI+_@AQ@hIhOig!CN{p1wYIU_2bJ{GJT@?*G0J zc_63_RL=(v2F1or#naB$-N6H?p(1w~{1-ucxIO41DTuJJq!>g}1R^0NEG#7=q9m;< zA|Vcuf{2QUi~W}IzvhZVL`0?kl2B5SP!$mtRuz#_m6ZHTL`6wVOi5W;MD(xUb2U5= zNE;73hu`bM!F3PjO8;NyLX~|SY>=KlhMt~ozY%cL*%RrBaQ5`#R5lP76z0^iv4eY% ze<26xm%S?Vcg}qeL*f5JgF}`}3akC~m$<69l7zUFu$uDagSqzqFJ2P@ zl@TJt(E-xIV#^wJpoBg@v^MEWMDW z`$p3)5<~KD4B4A#-rH(EwV&kw`A_tFXR(C4xG3=x3}tGxo@#Utu{kFp5LJ zLiDX02b#a6TMx~+0DxSD|AbcTpM#KH#;HIOL=-+LzP-YcN9ZCm*?%606jeE@v>~9} zMZ@fK)2r(``N!ZJ=XW=6)gd`a6Uf5gjX9)XFk08*OBwZlCW0?XIFo1XrS0jUqKWcHvRecqKdBVNe+ z3H~`c;}q!pM6_nnupoPb**CF9pWPL|3c}u*hk$8p3!K_?G99{&?k$3bh?A}&v5`psVGKSR)-PO~PYCLwJfvDD zz__f;)-Ys<{!(uiLQg0d_&SMPHn^*B;ITow`ry5S;M-{7;<0!~8dAz3I}{a|vG-q_r}*Vr!e1b; z*v=excWy1wzgN_uU&Q{a3jp*8S$iL0N)jNxSmq!$*>0ZOeV@K7`2)jx;#xKovn5B1+Gawn?8!^>6^9FLz$ zvOYzaU-k%;o6{EUI>db=cEG7Ak3023J5JCP37HeffqLZ2;Lu>667O?=N}r*lH2E

CBf2|u(tRT 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
rN;Nu=>$%_L0PcZrL(NHRpnYXJ?@$ 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 diff --git a/docs/setup_sentry_server.md b/docs/setup_sentry_server.md deleted file mode 100644 index 5b30903d..00000000 --- a/docs/setup_sentry_server.md +++ /dev/null @@ -1,249 +0,0 @@ -#Installing Sentry Server - -### Before You Begin -Make sure you understand what sentry server does. You can view documentation for sentry server [here](https://sentry.readthedocs.org/). This document was written for a server running *Ubuntu 14.04 LTS server* (we used Azure). - - -### Prerequisites -Make sure you have these installed: -* apt-get -* python2.7 -* vim - - - -### Installation Steps -1. Add non-root user. - ``` - sudo adduser sentry - sudo adduser sentry sudo - ``` - -2. Update all apt-get packages - ``` - sudo apt-get update - sudo apt-get dist-upgrade - sudo apt-get autoremove - sudo apt-get install libxml2-dev libxslt1-dev libffi-dev libpq-dev python-dev - sudo reboot - ``` - -3. Install easy_install and pip - ``` - wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python - sudo easy_install pip - ``` - -4. Install virtualenv and lmxl - ``` - sudo pip install virtualenv - sudo pip install lxml - ``` - -5. Install Sentry and Setup - ``` - # make server directory - mkdir ~/SentryServer; cd ~/SentryServer; - # make virtualenv - virtualenv ./ - #activate virtualenv - source ./bin/activate - - # install sentry and its postgresql dependencies - pip install -U sentry[postgres] - ``` - -6. Install postgresql - ``` - # install postgres - sudo apt-get install postgresql postgresql-contrib libpq-dev - - # install postgres adminpack - sudo -u postgres psql - CREATE EXTENSION "adminpack"; - \q - ``` - -7. Setup postgresql DB - ``` - # change postgres password & create database - sudo passwd postgres - sudo su - postgres - psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'changeme';" - createdb sentry - createuser sentry_user --pwprompt - psql -d template1 -U postgres - GRANT ALL PRIVILEGES ON DATABASE sentry to sentry_user; - \q - exit - ``` - -8. Setup Sentry Configuration - ``` - # initialize conf file - sentry init - - #edit sentry configuration - vim ~/.sentry/sentry.conf.py - ``` - - The following are the contents of my sentry.conf.py file (replace name, user and password with your that of your DB) - - ``` - DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'sentry', - 'USER': 'sentry_user', - 'PASSWORD': 'your_password', - 'HOST': 'localhost', - } - } - # No trailing slash! - SENTRY_URL_PREFIX = 'http://sentry.example.com' - - SENTRY_WEB_HOST = '0.0.0.0' - SENTRY_WEB_PORT = 9000 - SENTRY_WEB_OPTIONS = { - 'workers': 3, # the number of gunicorn workers - 'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'}, # detect HTTPS mode from X-Forwarded-Proto header - } - - #CONFIGURE REDIS - SENTRY_REDIS_OPTIONS = { - 'hosts': { - 0: { - 'host': '127.0.0.1', - 'port': 6379, - 'timeout': 3, - #'password': 'redis auth password' - } - } - } - - #CONFIGURE OUTGOING MAIL - EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - EMAIL_USE_TLS = True - EMAIL_HOST = 'smtp.gmail.com' - EMAIL_PORT = 587 - EMAIL_HOST_USER = 'your_gmail_username@gmail.com' - EMAIL_HOST_PASSWORD = 'your_gmail_password' - DEFAULT_FROM_EMAIL = 'testing@testing.com - ``` - -9. Setup Database and Start Sentry - ``` - #install and run redis-server - wget http://download.redis.io/releases/redis-stable.tar.gz - tar xzf redis-stable.tar.gz - cd redis-stable - make - make test - sudo make install - cd utils - sudo ./install_server.sh - - #Go back to app directory - cd ~/SentryServer - sudo service redis_6379 start - - # set up databse - sentry upgrade - - # let's try it out! - sentry start - ``` - -10. Install nginx - - ``` - # install nginx - sudo apt-get install nginx - - # remove the default symbolic link - sudo rm /etc/nginx/sites-enabled/default - - # create a new blank config, and make a symlink to it - sudo touch /etc/nginx/sites-available/sentry - cd /etc/nginx/sites-enabled - sudo ln -s ../sites-available/sentry - - # edit the nginx configuration file - sudo vim /etc/nginx/sites-available/sentry - ``` - *Here are the contents of my nginx file:* - ``` - server { - # listen on port 80 - listen 80; - - # for requests to these domains - server_name yourdomain.com www.yourdomain.com; - - # keep logs in these files - access_log /var/log/nginx/sentry.access.log; - error_log /var/log/nginx/sentry.error.log; - - # You need this to allow users to upload large files - # See http://wiki.nginx.org/HttpCoreModule#client_max_body_size - # I'm not sure where it goes, so I put it in twice. It works. - client_max_body_size 0; - - location / { - proxy_pass http://localhost:9000; - proxy_redirect off; - - proxy_read_timeout 5m; - - # make sure these HTTP headers are set properly - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - ``` - -11. Start the worker processes - ``` - # restart nginx - sudo nginx -t - sudo service nginx reload - - #start sentry - sentry celery worker -B - ``` - -12. Install and Configure supervisord - ``` - pip install supervisord - sudo echo_supervisord_conf > ~/SentryServer/etc/supervisord.conf - - #Edit yuour supervisord Config - vim /etc/supervisord.conf - ``` - - Configuration file should look like this - ``` - [program:sentry-web] - directory=~/SentryServer/ - command=~/SentryServer/bin/sentry start - autostart=true - autorestart=true - redirect_stderr=true - stdout_logfile=syslog - stderr_logfile=syslog - - [program:sentry-worker] - directory=~/SentryServer/ - command=~/SentryServer/bin/sentry celery worker -B - autostart=true - autorestart=true - redirect_stderr=true - stdout_logfile=syslog - stderr_logfile=syslog - ``` - -13. Run Server (with supervisord) - ``` - supervisord - ``` diff --git a/docs/ux_flows.md b/docs/ux_flows.md deleted file mode 100644 index 847b2853..00000000 --- a/docs/ux_flows.md +++ /dev/null @@ -1,29 +0,0 @@ -UX of Updating Forms -==================== - -##Form Updating - - Action: Update Configuration - 1. User clicks on Form from FormList page (visits form admin page) - 2. User clicks on "Configure Form" Tab - 3. User changes inputs in form page - 4. Save Button is Pressed - 5. Loading/Busy Indicator fills the screen - 6. Loading/Busy Indicator exits the screen - 7. Configuration page is shown with updated settings - - - Action: Add Form Field - 1. User clicks on Form from FormList page - 2. User clicks on a Tab in "AddField" column - 3. Loading/Busy Indicator fills the screen - 4. Loading/Busy Indicator exits the screen - - - Action: Edit Form Field Title - 1. User clicks on Form from FormList page (visits form admin page) - 2. User clicks on a current Form Input accordion (must be either the name or the caret) - 3. The clicked accordion (the one interacted with in Step#2) expands - 4. User clicks on 'Question Title' text input (aka focuses on said text input) - 5. User starts typing in text input - 6. User defocuses/clicks off of text input - 7. Loading/Busy Indicator fills the screen - 8. Loading/Busy Indicator exits the screen - 9. Field Accordion heading is updated diff --git a/gruntfile.js b/gruntfile.js index 7fb0d3bc..1407195a 100755 --- a/gruntfile.js +++ b/gruntfile.js @@ -28,10 +28,10 @@ module.exports = function(grunt) { clientViews: ['public/modules/**/*.html', 'public/form_modules/forms/base/**/*.html', '!public/modules/forms/base/**/*.html',], clientJS: ['public/js/*.js', 'public/form_modules/**/*.js', 'public/modules/**/*.js'], - clientCSS: ['public/modules/**/*.css', 'public/form_modules/**/*.css', '!public/modules/**/demo/**/*.css', '!public/modules/**/dist/**/*.css'], + clientCSS: ['public/modules/**/*.css'], serverTests: ['app/tests/**/*.js'], - clientTests: ['public/modules/**/tests/*.js', '!public/modules/**/demo/**/*.js', '!public/modules/**/dist/**/*.js', '!public/modules/**/node_modules/**/*.js'] + clientTests: ['public/modules/**/tests/*.js'] }; watchFiles.allTests = watchFiles.serverTests.concat(watchFiles.clientTests); @@ -127,19 +127,6 @@ module.exports = function(grunt) { } } }, - 'closure-compiler': { - vendor_file: { - closurePath: './scripts', - js: 'public/dist/vendor_forms_uglified.js', - jsOutputFile: 'public/dist/vendor.min.js', - maxBuffer: 10000000000, - options: { - warning_level: 'QUIET', - compilation_level: 'SIMPLE_OPTIMIZATIONS', - language_in: 'ECMASCRIPT5' - } - } - }, cssmin: { combine: { files: { @@ -157,19 +144,6 @@ module.exports = function(grunt) { } } }, - 'node-inspector': { - custom: { - options: { - 'web-port': 1337, - 'web-host': 'localhost', - 'debug-port': 5858, - 'save-live-edit': true, - 'no-preload': true, - 'stack-trace-limit': 50, - 'hidden': [] - } - } - }, ngAnnotate: { production: { files: { @@ -180,7 +154,7 @@ module.exports = function(grunt) { }, concurrent: { default: ['nodemon', 'watch'], - debug: ['nodemon', 'watch', 'node-inspector'], + debug: ['nodemon', 'watch'], options: { logConcurrentOutput: true, limit: 10 @@ -189,19 +163,15 @@ module.exports = function(grunt) { env: { test: { NODE_ENV: 'test', - src: '.env' }, secure: { NODE_ENV: 'secure', - src: '/opt/deploy/.env' }, production: { NODE_ENV: 'production', - src: '/opt/deploy/.env' }, dev: { NODE_ENV: 'development', - src: '.env' } }, mochaTest: { @@ -211,7 +181,7 @@ module.exports = function(grunt) { quiet: false, require: 'server.js', ui: 'bdd', - debug: true + debug: false } }, karma: { diff --git a/package.json b/package.json index 15d77751..ff9c9acf 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "url": "https://github.com/whitef0x0/tellform.git" }, "engines": { - "node": "6.11.2", - "npm": "3.10.10" + "node": "6.x.x", + "npm": "3.x.x" }, "scripts": { "addcontrib": "all-contributors add", @@ -22,74 +22,47 @@ "start": "npm run version && grunt", "test": "npm run version && grunt test", "postinstall": "bower install --config.interactive=false; grunt build;", - "init": "node scripts/setup.js", - "version": "check-node-version --package" + "init": "node scripts/setup.js" }, "dependencies": { "async": "^1.4.2", - "async-boolean-expression-evaluator": "^1.1.1", "bcrypt": "^0.8.7", - "bcrypt-nodejs": "0.0.3", "body-parser": "~1.14.1", "bower": "~1.6.5", "chalk": "^1.1.3", - "check-node-version": "^2.1.0", "compression": "~1.6.0", "connect": "^3.4.1", - "connect-flash": "~0.1.1", "connect-mongo": "~0.8.2", "consolidate": "~0.13.1", "cookie-parser": "~1.4.0", "deep-diff": "^0.3.4", "dotenv": "^2.0.0", "email-verification": "~0.4.1", - "envfile": "^2.0.1", "express": "~4.13.3", - "express-device": "~0.4.2", "express-session": "~1.12.1", - "forever": "~0.15.1", - "fs-extra": "~0.26.2", "glob": "^7.0.3", - "google-cdn": "^1.1.0", "grunt": "~0.4.1", - "grunt-cli": "~0.1.13", "grunt-concurrent": "~2.3.0", "grunt-contrib-csslint": "~1.0.0", "grunt-contrib-cssmin": "~1.0.1", "grunt-contrib-jshint": "~1.0.0", "grunt-contrib-uglify": "~0.11.0", - "grunt-contrib-watch": "~0.6.1", "grunt-env": "~0.4.1", "grunt-html2js": "~0.3.5", - "grunt-karma": "~0.12.1", - "grunt-newer": "~1.1.1", "grunt-ng-annotate": "~1.0.1", - "grunt-node-inspector": "~0.4.1", - "grunt-nodemon": "~0.4.0", "helmet": "3.5.0", - "inquirer": "^1.0.2", "jit-grunt": "^0.9.1", "lodash": "^4.17.4", "main-bower-files": "~2.9.0", "method-override": "~2.3.0", "mkdirp": "^0.5.1", "mongoose": "~4.4.19", - "mongoose-cache": "^0.1.5", - "mongoose-utilities": "~0.1.1", "morgan": "~1.8.1", - "multer": "^1.3.0", "nodemailer": "~4.0.0", - "nodemailer-sendgrid-transport": "^0.2.0", - "nodemailer-sparkpost-transport": "^1.0.0", "passport": "~0.3.0", "passport-anonymous": "^1.0.1", - "passport-facebook": "~2.0.0", - "passport-github": "~1.0.0", - "passport-google-oauth": "~0.2.0", - "passport-linkedin": "~1.0.0", "passport-local": "~1.0.0", "passport-localapikey-update": "^0.5.0", - "passport-twitter": "~1.0.2", "path-exists": "^2.1.0", "prerender-node": "^2.2.1", "random-js": "^1.0.8", @@ -98,7 +71,6 @@ "socket.io": "^1.4.6", "socket.io-redis": "^1.0.0", "swig": "~1.4.1", - "uid-generator": "^0.1.1", "uuid-token-generator": "^0.5.0", "wildcard-subdomains": "github:tellform/wildcard-subdomains", "winston": "^2.3.1", @@ -110,7 +82,7 @@ "coveralls": "^2.11.4", "cross-spawn": "^5.0.0", "del": "^2.2.2", - "email-verification": "github:tellform/node-email-verification", + "grunt-cli": "~0.1.13", "grunt-closure-compiler": "0.0.21", "grunt-contrib-concat": "^1.0.1", "grunt-contrib-copy": "^1.0.0", @@ -118,7 +90,11 @@ "grunt-execute": "^0.2.2", "grunt-mocha-istanbul": "^3.0.1", "grunt-mocha-test": "~0.12.1", + "grunt-contrib-watch": "~0.6.1", + "grunt-newer": "~1.1.1", "grunt-usemin": "^3.1.1", + "grunt-karma": "~0.12.1", + "grunt-nodemon": "~0.4.0", "grunt-wiredep": "^3.0.1", "istanbul": "^0.4.0", "jasmine-core": "^2.4.1", @@ -131,11 +107,9 @@ "karma-mocha-reporter": "^1.1.1", "karma-ng-html2js-preprocessor": "^0.2.0", "karma-phantomjs-launcher": "^1.0.4", - "mailosaur": "^1.0.1", "mocha": "^3.1.2", "mocha-lcov-reporter": "^1.0.0", "nightwatch": "^0.9.8", - "node-mandrill": "^1.0.1", "phantomjs": "^1.9.18", "selenium-server": "^3.0.1", "should": "~7.1.1", diff --git a/public/dist/vendor.min.js b/public/dist/vendor.min.js index a7a47ac7..0e01a1b0 100644 --- a/public/dist/vendor.min.js +++ b/public/dist/vendor.min.js @@ -9,11 +9,11 @@ a.put("bootstrap/no-choice.tpl.html",'

',require:"ngModel",scope:!0,link:e};return f}]),!function(a){var b="Compound",c="Identifier",d="MemberExpression",e="Literal",f="ThisExpression",g="CallExpression",h="UnaryExpression",i="BinaryExpression",j="LogicalExpression",k="ConditionalExpression",l="ArrayExpression",m=46,n=44,o=39,p=34,q=40,r=41,s=91,t=93,u=63,v=59,w=58,x=function(a,b){var c=new Error(a+" at character "+b);throw c.index=b,c.description=a,c},y=!0,z={"-":y,"!":y,"~":y,"+":y},A={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},B=function(a){var b,c=0;for(var d in a)(b=d.length)>c&&a.hasOwnProperty(d)&&(c=b);return c},C=B(z),D=B(A),E={"true":!0,"false":!1,"null":null},F="this",G=function(a){return A[a]||0},H=function(a,b,c){var d="||"===a||"&&"===a?j:i;return{type:d,operator:a,left:b,right:c}},I=function(a){return a>=48&&a<=57},J=function(a){return 36===a||95===a||a>=65&&a<=90||a>=97&&a<=122||a>=128&&!A[String.fromCharCode(a)]},K=function(a){return 36===a||95===a||a>=65&&a<=90||a>=97&&a<=122||a>=48&&a<=57||a>=128&&!A[String.fromCharCode(a)]},L=function(a){for(var i,j,y=0,B=a.charAt,L=a.charCodeAt,M=function(b){return B.call(a,b)},N=function(b){return L.call(a,b)},O=a.length,P=function(){for(var a=N(y);32===a||9===a;)a=N(++y)},Q=function(){var a,b,c=S();return P(),N(y)!==u?c:(y++,a=Q(),a||x("Expected expression",y),P(),N(y)===w?(y++,b=Q(),b||x("Expected expression",y),{type:k,test:c,consequent:a,alternate:b}):void x("Expected :",y))},R=function(){P();for(var b=a.substr(y,D),c=b.length;c>0;){if(A.hasOwnProperty(b))return y+=c,b;b=b.substr(0,--c)}return!1},S=function(){var a,b,c,d,e,f,g,h;if(f=T(),b=R(),!b)return f;for(e={value:b,prec:G(b)},g=T(),g||x("Expected expression after "+b,y),d=[f,e,g];(b=R())&&(c=G(b),0!==c);){for(e={value:b,prec:c};d.length>2&&c<=d[d.length-2].prec;)g=d.pop(),b=d.pop().value,f=d.pop(),a=H(b,f,g),d.push(a);a=T(),a||x("Expected expression after "+b,y),d.push(e,a)}for(h=d.length-1,a=d[h];h>1;)a=H(d[h-1].value,d[h-2],a),h-=2;return a},T=function(){var b,c,d;if(P(),b=N(y),I(b)||b===m)return U();if(b===o||b===p)return V();if(J(b)||b===q)return Y();if(b===s)return $();for(c=a.substr(y,C),d=c.length;d>0;){if(z.hasOwnProperty(c))return y+=d,{type:h,operator:c,argument:T(),prefix:!0};c=c.substr(0,--d)}return!1},U=function(){for(var a,b,c="";I(N(y));)c+=M(y++);if(N(y)===m)for(c+=M(y++);I(N(y));)c+=M(y++);if(a=M(y),"e"===a||"E"===a){for(c+=M(y++),a=M(y),"+"!==a&&"-"!==a||(c+=M(y++));I(N(y));)c+=M(y++);I(N(y-1))||x("Expected exponent ("+c+M(y)+")",y)}return b=N(y),J(b)?x("Variable names cannot start with a number ("+c+M(y)+")",y):b===m&&x("Unexpected period",y),{type:e,value:parseFloat(c),raw:c}},V=function(){for(var a,b="",c=M(y++),d=!1;yg;g++)e(d[g]);return e}({1:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],2:[function(a,b,c){function d(){return+new Date}function e(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b="undefined"!=typeof document,this.c=null,this.d=null,this.e=null,this.f=null,this.g=null,this.h={},this.i={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:0,stackTraceLimit:50},this.j=0,this.k=!1,this.l=Error.stackTraceLimit,this.m=window.console||{},this.n={},this.o=[],this.p=d(),this.q=[];for(var a in this.m)this.n[a]=this.m[a]}var f=a(5),g=a(1),h=a(4),i=h.isFunction,j=h.isUndefined,k=h.isError,l=h.isEmptyObject,m=h.hasKey,n=h.joinRegExp,o=h.each,p=h.objectMerge,q=h.truncate,r=h.urlencode,s=h.uuid4,t="source protocol user pass host port path".split(" "),u=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;e.prototype={VERSION:"2.3.0",debug:!1,TraceKit:f,config:function(a,b){var c=this;if(this.e)return this.r("error","Error: Raven has already been configured"),this;if(!a)return this;b&&o(b,function(a,b){"tags"===a||"extra"===a?c.h[a]=b:c.i[a]=b});var d=this.s(a),e=d.path.lastIndexOf("/"),g=d.path.substr(1,e);return this.t=a,this.i.ignoreErrors.push(/^Script error\.?$/),this.i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),this.i.ignoreErrors=n(this.i.ignoreErrors),this.i.ignoreUrls=!!this.i.ignoreUrls.length&&n(this.i.ignoreUrls),this.i.whitelistUrls=!!this.i.whitelistUrls.length&&n(this.i.whitelistUrls),this.i.includePaths=n(this.i.includePaths),this.f=d.user,this.u=d.pass&&d.pass.substr(1),this.g=d.path.substr(e+1),this.e=this.v(d),this.w=this.e+"/"+g+"api/"+this.g+"/store/",this.i.fetchContext&&(f.remoteFetching=!0),this.i.linesOfContext&&(f.linesOfContext=this.i.linesOfContext),f.collectWindowErrors=!!this.i.collectWindowErrors,this},install:function(){var a=this;return this.isSetup()&&!this.k&&(f.report.subscribe(function(){a.x.apply(a,arguments)}),this.y(),this.z(),this.k=!0),Error.stackTraceLimit=this.i.stackTraceLimit,this},context:function(a,b,c){return i(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b){function c(){for(var c=[],e=arguments.length,f=!a||a&&a.deep!==!1;e--;)c[e]=f?d.wrap(a,arguments[e]):arguments[e];try{return b.apply(this,c)}catch(g){throw d.A(),d.captureException(g,a),g}}var d=this;if(j(b)&&!i(a))return a;if(i(a)&&(b=a,a=void 0),!i(b))return b;try{if(b.B)return b}catch(e){return b}if(b.C)return b.C;for(var f in b)m(b,f)&&(c[f]=b[f]);return b.C=c,c.prototype=b.prototype,c.B=!0,c.D=b,c},uninstall:function(){return f.report.uninstall(),this.E(),Error.stackTraceLimit=this.l,this.k=!1,this},captureException:function(a,b){if(!k(a))return this.captureMessage(a,b);this.c=a;try{var c=f.computeStackTrace(a); -this.F(c,b)}catch(d){if(a!==d)throw d}return this},captureMessage:function(a,b){return this.i.ignoreErrors.test&&this.i.ignoreErrors.test(a)?void 0:(this.G(p({message:a+""},b)),this)},addPlugin:function(a){var b=Array.prototype.slice.call(arguments,1);return this.o.push([a,b]),this.k&&this.z(),this},setUserContext:function(a){return this.h.user=a,this},setExtraContext:function(a){return this.H("extra",a),this},setTagsContext:function(a){return this.H("tags",a),this},clearContext:function(){return this.h={},this},getContext:function(){return JSON.parse(JSON.stringify(this.h))},setRelease:function(a){return this.i.release=a,this},setDataCallback:function(a){return this.i.dataCallback=a,this},setShouldSendCallback:function(a){return this.i.shouldSendCallback=a,this},setTransport:function(a){return this.i.transport=a,this},lastException:function(){return this.c},lastEventId:function(){return this.d},isSetup:function(){return!!this.a&&(!!this.e||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.r("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=window.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(window.document){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new g("Missing eventId");var c=a.dsn||this.t;if(!c)throw new g("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.h.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var h=this.v(this.s(c)),i=document.createElement("script");i.async=!0,i.src=h+"/api/embed/error-page/"+e,(document.head||document.body).appendChild(i)}},A:function(){var a=this;this.j+=1,setTimeout(function(){a.j-=1})},I:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)m(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},y:function(){function a(a,b,d,e){var f=a[b];a[b]=d(f),e||c.q.push([a,b,f])}function b(a){return function(b,d){var e=[].slice.call(arguments),f=e[0];return i(f)&&(e[0]=c.wrap(f)),a.apply?a.apply(this,e):a(e[0],e[1])}}var c=this;a(window,"setTimeout",b),a(window,"setInterval",b),window.requestAnimationFrame&&a(window,"requestAnimationFrame",function(a){return function(b){return a(c.wrap(b))}}),"EventTarget Window Node ApplicationCache AudioTrackList ChannelMergerNode CryptoOperation EventSource FileReader HTMLUnknownElement IDBDatabase IDBRequest IDBTransaction KeyOperation MediaController MessagePort ModalWindow Notification SVGElementInstance Screen TextTrack TextTrackCue TextTrackList WebSocket WebSocketWorker Worker XMLHttpRequest XMLHttpRequestEventTarget XMLHttpRequestUpload".replace(/\w+/g,function(b){var d=window[b]&&window[b].prototype;d&&d.hasOwnProperty&&d.hasOwnProperty("addEventListener")&&(a(d,"addEventListener",function(a){return function(b,d,e,f){try{d&&d.handleEvent&&(d.handleEvent=c.wrap(d.handleEvent))}catch(g){}return a.call(this,b,c.wrap(d),e,f)}}),a(d,"removeEventListener",function(a){return function(b,c,d,e){return c=c&&(c.C?c.C:c),a.call(this,b,c,d,e)}}))}),"XMLHttpRequest"in window&&a(XMLHttpRequest.prototype,"send",function(b){return function(d){var e=this;return"onreadystatechange onload onerror onprogress".replace(/\w+/g,function(b){b in e&&"[object Function]"===Object.prototype.toString.call(e[b])&&a(e,b,function(a){return c.wrap(a)},!0)}),b.apply(this,arguments)}});var d=window.jQuery||window.$;d&&d.fn&&d.fn.ready&&a(d.fn,"ready",function(a){return function(b){return a.call(this,c.wrap(b))}})},E:function(){for(var a;this.q.length;){a=this.q.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},z:function(){var a=this;o(this.o,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},s:function(a){var b=u.exec(a),c={},d=7;try{for(;d--;)c[t[d]]=b[d]||""}catch(e){throw new g("Invalid DSN: "+a)}if(c.pass&&!this.i.allowSecretKey)throw new g("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},v:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},x:function(){this.j||this.F.apply(this,arguments)},F:function(a,b){var c=this,d=[];a.stack&&a.stack.length&&o(a.stack,function(a,b){var e=c.J(b);e&&d.push(e)}),this.I("handle",{stackInfo:a,options:b}),this.K(a.name,a.message,a.url,a.lineno,d.slice(0,this.i.stackTraceLimit),b)},J:function(a){if(a.url){var b,c={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"},d=this.L(a);if(d){var e=["pre_context","context_line","post_context"];for(b=3;b--;)c[e[b]]=d[b]}return c.in_app=!(this.i.includePaths.test&&!this.i.includePaths.test(c.filename)||/(Raven|TraceKit)\./.test(c["function"])||/raven\.(min\.)?js$/.test(c.filename)),c}},L:function(a){if(a.context&&this.i.fetchContext){for(var b=a.context,c=~~(b.length/2),d=b.length,e=!1;d--;)if(b[d].length>300){e=!0;break}if(e){if(j(a.column))return;return[[],b[c].substr(a.column,50),[]]}return[b.slice(0,c),b[c],b.slice(c+1)]}},K:function(a,b,c,d,e,f){var g,h;if((!this.i.ignoreErrors.test||!this.i.ignoreErrors.test(b))&&(b+="",b=q(b,this.i.maxMessageLength),h=(a?a+": ":"")+b,h=q(h,this.i.maxMessageLength),e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),(!this.i.ignoreUrls.test||!this.i.ignoreUrls.test(c))&&(!this.i.whitelistUrls.test||this.i.whitelistUrls.test(c)))){var i=p({exception:{values:[{type:a,value:b,stacktrace:g}]},culprit:c,message:h},f);this.G(i)}},M:function(a){var b=this.i.maxMessageLength;if(a.message=q(a.message,b),a.exception){var c=a.exception.values[0];c.value=q(c.value,b)}return a},N:function(){if(this.b&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}},G:function(a){var b=this,c=this.i,e={project:this.g,logger:c.logger,platform:"javascript"},f=this.N();if(f&&(e.request=f),a=p(e,a),a.tags=p(p({},this.h.tags),a.tags),a.extra=p(p({},this.h.extra),a.extra),a.extra["session:duration"]=d()-this.p,l(a.tags)&&delete a.tags,this.h.user&&(a.user=this.h.user),c.release&&(a.release=c.release),c.serverName&&(a.server_name=c.serverName),i(c.dataCallback)&&(a=c.dataCallback(a)||a),a&&!l(a)&&(!i(c.shouldSendCallback)||c.shouldSendCallback(a))&&(this.d=a.event_id||(a.event_id=s()),a=this.M(a),this.r("debug","Raven about to send:",a),this.isSetup())){var g={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this.f};this.u&&(g.sentry_secret=this.u);var h=this.w;(c.transport||this.O).call(this,{url:h,auth:g,data:a,options:c,onSuccess:function(){b.I("success",{data:a,src:h})},onError:function(){b.I("failure",{data:a,src:h})}})}},P:function(a){a.auth.sentry_data=JSON.stringify(a.data);var b=this.Q(),c=a.url+"?"+r(a.auth),d=a.options.crossOrigin;(d||""===d)&&(b.crossOrigin=d),b.onload=a.onSuccess,b.onerror=b.onabort=a.onError,b.src=c},R:function(a){function b(){200===c.status?a.onSuccess&&a.onSuccess():a.onError&&a.onError()}var c,d=a.url;c=new XMLHttpRequest,"withCredentials"in c?c.onreadystatechange=function(){4===c.readyState&&b()}:(c=new XDomainRequest,d=d.replace(/^https?:/,""),c.onload=b),c.open("POST",d+"?"+r(a.auth)),c.send(JSON.stringify(a.data))},O:function(a){var b="withCredentials"in new XMLHttpRequest||"undefined"!=typeof XDomainRequest;return(b?this.R:this.P)(a)},Q:function(){return document.createElement("img")},r:function(a){this.n[a]&&this.debug&&Function.prototype.apply.call(this.n[a],this.m,[].slice.call(arguments,1))},H:function(a,b){j(b)?delete this.h[a]:this.h[a]=p(this.h[a]||{},b)}},e.prototype.setUser=e.prototype.setUserContext,e.prototype.setReleaseContext=e.prototype.setRelease,b.exports=e},{1:1,4:4,5:5}],3:[function(a,b,c){var d=a(2),e=window.Raven,f=new d;f.noConflict=function(){return window.Raven=e,f},f.afterLoad(),b.exports=f},{2:2}],4:[function(a,b,c){function d(a){return void 0===a}function e(a){return"function"==typeof a}function f(a){return"[object String]"===q.toString.call(a)}function g(a){return"object"==typeof a&&null!==a}function h(a){for(var b in a)return!1;return!0}function i(a){var b=q.toString.call(a);return g(a)&&"[object Error]"===b||"[object Exception]"===b||a instanceof Error}function j(a,b){var c,e;if(d(a.length))for(c in a)m(a,c)&&b.call(null,c,a[c]);else if(e=a.length)for(c=0;e>c;c++)b.call(null,c,a[c])}function k(a,b){return b?(j(b,function(b,c){a[b]=c}),a):a}function l(a,b){return!b||b>=a.length?a:a.substr(0,b)+"…"}function m(a,b){return q.hasOwnProperty.call(a,b)}function n(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],f(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function o(a){var b=[];return j(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function p(){var a=window.crypto||window.msCrypto;if(!d(a)&&a.getRandomValues){var b=new Uint16Array(8);a.getRandomValues(b),b[3]=4095&b[3]|16384,b[4]=16383&b[4]|32768;var c=function(a){for(var b=a.toString(16);4>b.length;)b="0"+b;return b};return c(b[0])+c(b[1])+c(b[2])+c(b[3])+c(b[4])+c(b[5])+c(b[6])+c(b[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}var q=Object.prototype;b.exports={isUndefined:d,isFunction:e,isString:f,isObject:g,isEmptyObject:h,isError:i,each:j,objectMerge:k,truncate:l,hasKey:m,joinRegExp:n,urlencode:o,uuid4:p}},{}],5:[function(a,b,c){function d(){return"undefined"==typeof document?"":document.location.href}var e=a(4),f=e.hasKey,g=e.isString,h=e.isUndefined,i={remoteFetching:!1,collectWindowErrors:!0,linesOfContext:7,debug:!1},j=[].slice,k="?",l=/^(?:Uncaught )?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error)\: ?(.*)$/;i.report=function(){function a(a){k(),r.push(a)}function b(a){for(var b=r.length-1;b>=0;--b)r[b]===a&&r.splice(b,1)}function c(){m(),r=[]}function e(a,b){var c=null;if(!b||i.collectWindowErrors){for(var d in r)if(f(r,d))try{r[d].apply(null,[a].concat(j.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function h(a,b,c,f,h){var j=null;if(u)i.computeStackTrace.augmentStackTraceWithInitialElement(u,b,c,a),n();else if(h)j=i.computeStackTrace(h),e(j,!0);else{var k={url:b,line:c,column:f};k.func=i.computeStackTrace.guessFunctionName(k.url,k.line),k.context=i.computeStackTrace.gatherContext(k.url,k.line);var m,o=void 0,q=a;if(g(a)){var m=a.match(l);m&&(o=m[1],q=m[2])}j={name:o,message:q,url:d(),stack:[k]},e(j,!0)}return!!p&&p.apply(this,arguments)}function k(){q||(p=window.onerror,window.onerror=h,q=!0)}function m(){q&&(window.onerror=p,q=!1,p=void 0)}function n(){var a=u,b=s;s=null,u=null,t=null,e.apply(null,[a,!1].concat(b))}function o(a,b){var c=j.call(arguments,1);if(u){if(t===a)return;n()}var d=i.computeStackTrace(a);if(u=d,t=a,s=c,window.setTimeout(function(){t===a&&n()},d.incomplete?2e3:0),b!==!1)throw a}var p,q,r=[],s=null,t=null,u=null;return o.subscribe=a,o.unsubscribe=b,o.uninstall=c,o}(),i.computeStackTrace=function(){function a(a){if(!i.remoteFetching)return"";try{var b=function(){try{return new window.XMLHttpRequest}catch(a){return new window.ActiveXObject("Microsoft.XMLHTTP")}},c=b();return c.open("GET",a,!1),c.send(""),c.responseText}catch(d){return""}}function b(b){if(!g(b))return[];if(!f(v,b)){var c="",d="";try{d=document.domain}catch(e){}-1!==b.indexOf(d)&&(c=a(b)),v[b]=c?c.split("\n"):[]}return v[b]}function c(a,c){var d,e=/function ([^(]*)\(([^)]*)\)/,f=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,g="",i=10,j=b(a);if(!j.length)return k;for(var l=0;i>l;++l)if(g=j[c-l]+g,!h(g)){if(d=f.exec(g))return d[1];if(d=e.exec(g))return d[1]}return k}function e(a,c){var d=b(a);if(!d.length)return null;var e=[],f=Math.floor(i.linesOfContext/2),g=f+i.linesOfContext%2,j=Math.max(0,c-f-1),k=Math.min(d.length,c+g-1);c-=1;for(var l=j;k>l;++l)h(d[l])||e.push(d[l]);return e.length>0?e:null}function j(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function l(a){return j(a).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function m(a,c){for(var d,e,f=0,g=c.length;g>f;++f)if((d=b(c[f])).length&&(d=d.join("\n"),e=a.exec(d)))return{url:c[f],line:d.substring(0,e.index).split("\n").length,column:e.index-d.lastIndexOf("\n",e.index)-1};return null}function n(a,c,d){var e,f=b(c),g=new RegExp("\\b"+j(a)+"\\b");return d-=1,f&&f.length>d&&(e=g.exec(f[d]))?e.index:null}function o(a){if("undefined"!=typeof document){for(var b,c,d,e,f=[window.location.href],g=document.getElementsByTagName("script"),h=""+a,i=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,k=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,n=0;g.length>n;++n){var o=g[n];o.src&&f.push(o.src)}if(d=i.exec(h)){var p=d[1]?"\\s+"+d[1]:"",q=d[2].split(",").join("\\s*,\\s*");b=j(d[3]).replace(/;$/,";?"),c=new RegExp("function"+p+"\\s*\\(\\s*"+q+"\\s*\\)\\s*{\\s*"+b+"\\s*}")}else c=new RegExp(j(h).replace(/\s+/g,"\\s+"));if(e=m(c,f))return e;if(d=k.exec(h)){var r=d[1];if(b=l(d[2]),c=new RegExp("on"+r+"=[\\'\"]\\s*"+b+"\\s*[\\'\"]","i"),e=m(c,f[0]))return e;if(c=new RegExp(b),e=m(c,f))return e}return null}}function p(a){if(!h(a.stack)&&a.stack){for(var b,f,g=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,l=a.stack.split("\n"),m=[],o=/^(.*) is undefined$/.exec(a.message),p=0,q=l.length;q>p;++p){if(b=g.exec(l[p])){var r=b[2]&&-1!==b[2].indexOf("native");f={url:r?null:b[2],func:b[1]||k,args:r?[b[2]]:[],line:b[3]?+b[3]:null,column:b[4]?+b[4]:null}}else if(b=j.exec(l[p]))f={url:b[2],func:b[1]||k,args:[],line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=i.exec(l[p])))continue;f={url:b[3],func:b[1]||k,args:b[2]?b[2].split(","):[],line:b[4]?+b[4]:null,column:b[5]?+b[5]:null}}!f.func&&f.line&&(f.func=c(f.url,f.line)),f.line&&(f.context=e(f.url,f.line)),m.push(f)}return m.length?(m[0].line&&!m[0].column&&o?m[0].column=n(o[1],m[0].url,m[0].line):m[0].column||h(a.columnNumber)||(m[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:d(),stack:m}):null}}function q(a){var b=a.stacktrace;if(!h(a.stacktrace)&&a.stacktrace){for(var f,g=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,i=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,j=b.split("\n"),k=[],l=0;j.length>l;l+=2){var m=null;if((f=g.exec(j[l]))?m={url:f[2],line:+f[1],column:null,func:f[3],args:[]}:(f=i.exec(j[l]))&&(m={url:f[6],line:+f[1],column:+f[2],func:f[3]||f[4],args:f[5]?f[5].split(","):[]}),m){if(!m.func&&m.line&&(m.func=c(m.url,m.line)),m.line)try{m.context=e(m.url,m.line)}catch(n){}m.context||(m.context=[j[l+1]]),k.push(m)}}return k.length?{name:a.name,message:a.message,url:d(),stack:k}:null}}function r(a){var g=a.message.split("\n");if(4>g.length)return null;var h,i=/^\s*Line (\d+) of linked script ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,j=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?|blob)\S+)(?:: in function (\S+))?\s*$/i,k=/^\s*Line (\d+) of function script\s*$/i,n=[],o=document.getElementsByTagName("script"),p=[];for(var q in o)f(o,q)&&!o[q].src&&p.push(o[q]);for(var r=2;g.length>r;r+=2){var s=null;if(h=i.exec(g[r]))s={url:h[2],func:h[3],args:[],line:+h[1],column:null};else if(h=j.exec(g[r])){s={url:h[3],func:h[4],args:[],line:+h[1],column:null};var t=+h[1],u=p[h[2]-1];if(u){var v=b(s.url);if(v){v=v.join("\n");var w=v.indexOf(u.innerText);w>=0&&(s.line=t+v.substring(0,w).split("\n").length)}}}else if(h=k.exec(g[r])){var x=window.location.href.replace(/#.*$/,""),y=new RegExp(l(g[r+1])),z=m(y,[x]);s={url:x,func:"",args:[],line:z?z.line:h[1],column:null}}if(s){s.func||(s.func=c(s.url,s.line));var A=e(s.url,s.line),B=A?A[Math.floor(A.length/2)]:null;s.context=A&&B.replace(/^\s*/,"")===g[r+1].replace(/^\s*/,"")?A:[g[r+1]],n.push(s)}}return n.length?{name:a.name,message:g[0],url:d(),stack:n}:null}function s(a,b,d,f){var g={url:b,line:d};if(g.url&&g.line){a.incomplete=!1,g.func||(g.func=c(g.url,g.line)),g.context||(g.context=e(g.url,g.line));var h=/ '([^']+)' /.exec(f);if(h&&(g.column=n(h[1],g.url,g.line)),a.stack.length>0&&a.stack[0].url===g.url){if(a.stack[0].line===g.line)return!1;if(!a.stack[0].line&&a.stack[0].func===g.func)return a.stack[0].line=g.line,a.stack[0].context=g.context,!1}return a.stack.unshift(g),a.partial=!0,!0}return a.incomplete=!0,!1}function t(a,b){for(var e,f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,j=[],l={},m=!1,p=t.caller;p&&!m;p=p.caller)if(p!==u&&p!==i.report){if(f={url:null,func:k,line:null,column:null},p.name?f.func=p.name:(e=h.exec(p.toString()))&&(f.func=e[1]),"undefined"==typeof f.func)try{f.func=e.input.substring(0,e.input.indexOf("{"))}catch(q){}if(g=o(p)){f.url=g.url,f.line=g.line,f.func===k&&(f.func=c(f.url,f.line));var r=/ '([^']+)' /.exec(a.message||a.description);r&&(f.column=n(r[1],g.url,g.line))}l[""+p]?m=!0:l[""+p]=!0,j.push(f)}b&&j.splice(0,b);var v={name:a.name,message:a.message,url:d(),stack:j};return s(v,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),v}function u(a,b){var c=null;b=null==b?0:+b;try{if(c=q(a))return c}catch(e){if(i.debug)throw e}try{if(c=p(a))return c}catch(e){if(i.debug)throw e}try{if(c=r(a))return c}catch(e){if(i.debug)throw e}try{if(c=t(a,b+1))return c}catch(e){if(i.debug)throw e}return{name:a.name,message:a.message,url:d()}}var v={};return u.augmentStackTraceWithInitialElement=s,u.computeStackTraceFromStackProp=p,u.guessFunctionName=c,u.gatherContext=e,u}(),b.exports=i},{4:4}]},{},[3])(3)}),function(){function a(a,b){if(a!==b){var c=null===a,d=a===u,e=a===a,f=null===b,g=b===u,h=b===b;if(a>b&&!f||!e||c&&!g&&h||d&&h)return 1;if(a=a&&9<=a&&13>=a||32==a||160==a||5760==a||6158==a||8192<=a&&(8202>=a||8232==a||8233==a||8239==a||8287==a||12288==a||65279==a)}function p(a,b){for(var c=-1,d=a.length,e=-1,f=[];++c=J&&pe&&je?new Oa(b):null,j=b.length;i&&(g=Pa,h=!1,b=i);a:for(;++fg(b,i,0)&&e.push(i);return e}function hb(a,b){var c=!0;return He(a,function(a,d,e){return c=!!b(a,d,e)}),c}function ib(a,b,c,d){var e=d,f=e;return He(a,function(a,g,h){g=+b(a,g,h),(c(g,e)||g===d&&g===f)&&(e=g,f=a)}),f}function jb(a,b){var c=[];return He(a,function(a,d,e){b(a,d,e)&&c.push(a)}),c}function kb(a,b,c,d){var e;return c(a,function(a,c,f){return b(a,c,f)?(e=d?c:a,!1):void 0}),e}function lb(a,b,c,d){d||(d=[]);for(var e=-1,f=a.length;++eb&&(b=-b>e?0:e+b),c=c===u||c>e?e:+c||0,0>c&&(c+=e),e=b>c?0:c-b>>>0,b>>>=0,c=Nd(e);++d=j)break a;f=d[f],e*="asc"===f||!0===f?1:-1;break a}e=b.b-c.b}return e})}function Gb(a,b){var c=0;return He(a,function(a,d,e){c+=+b(a,d,e)||0}),c}function Hb(a,b){var d=-1,e=vc(),f=a.length,g=e===c,h=g&&f>=J,i=h&&pe&&je?new Oa((void 0)):null,j=[];i?(e=Pa,g=!1):(h=!1,i=b?[]:j);a:for(;++de(i,l,0)&&((b||h)&&i.push(l),j.push(k))}return j}function Ib(a,b){for(var c=-1,d=b.length,e=Nd(d);++c>>1,g=a[f];(c?g<=b:ge?u:f,e=1);++d=J)return b.plant(d).value();for(var e=0,a=c?f[e].apply(this,a):d;++earguments.length;return"function"==typeof d&&f===u&&Bf(c)?a(c,d,e,g):Bb(c,tc(d,f,4),e,g,b)}}function kc(a,b,c,d,e,f,g,h,i,j){function k(){for(var t=arguments.length,v=t,y=Nd(t);v--;)y[v]=arguments[v];if(d&&(y=Pb(y,d,e)),f&&(y=Qb(y,f,g)),o||r){var v=k.placeholder,z=p(y,v),t=t-z.length;if(tb?0:b)):[]}function Rc(a,b,c){var d=a?a.length:0;return d?((c?Ec(a,b,c):null==b)&&(b=1),b=d-(+b||0),Cb(a,0,0>b?0:b)):[]}function Sc(a){return a?a[0]:u}function Tc(a,b,d){var e=a?a.length:0;if(!e)return-1;if("number"==typeof d)d=0>d?ue(e+d,0):d;else if(d)return d=Lb(a,b),dc?ue(e+c,0):c||0,"string"==typeof a||!Bf(a)&&ud(a)?c<=e&&-1b?0:+b||0,d);++c=a&&(b=u),c}}function hd(a,b,c){function d(b,c){c&&fe(c),i=m=n=u,b&&(o=nf(),j=a.apply(l,h),m||i||(h=l=u))}function e(){var a=b-(nf()-k);0>=a||a>b?d(n,i):m=ke(e,a)}function f(){d(q,m)}function g(){if(h=arguments,k=nf(),l=this,n=q&&(m||!r),!1===p)var c=r&&!m;else{i||r||(o=k);var d=p-(k-o),g=0>=d||d>p;g?(i&&(i=fe(i)),o=k,j=a.apply(l,h)):i||(i=ke(f,d))}return g&&m?m=fe(m):m||b===p||(m=ke(e,b)),c&&(g=!0,j=a.apply(l,h)),!g||m||i||(h=l=u),j}var h,i,j,k,l,m,n,o=0,p=!1,q=!0;if("function"!=typeof a)throw new Wd(M);if(b=0>b?0:+b||0,!0===c)var r=!0,q=!1;else pd(c)&&(r=!!c.leading,p="maxWait"in c&&ue(+c.maxWait||0,b),q="trailing"in c?!!c.trailing:q);return g.cancel=function(){m&&fe(m),i&&fe(i),o=0,i=m=n=u},g}function id(a,b){function c(){var d=arguments,e=b?b.apply(this,d):d[0],f=c.cache;return f.has(e)?f.get(e):(d=a.apply(this,d),c.cache=f.set(e,d),d)}if("function"!=typeof a||b&&"function"!=typeof b)throw new Wd(M);return c.cache=new id.Cache,c}function jd(a,b){if("function"!=typeof a)throw new Wd(M);return b=ue(b===u?a.length-1:+b||0,0),function(){for(var c=arguments,d=-1,e=ue(c.length-b,0),f=Nd(e);++db}function ld(a){return n(a)&&Cc(a)&&_d.call(a,"callee")&&!ie.call(a,"callee")}function md(a,b,c,d){return d=(c="function"==typeof c?Nb(c,d,3):u)?c(a,b):u,d===u?rb(a,b,c):!!d}function nd(a){return n(a)&&"string"==typeof a.message&&be.call(a)==S}function od(a){return pd(a)&&be.call(a)==T}function pd(a){var b=typeof a;return!!a&&("object"==b||"function"==b)}function qd(a){return null!=a&&(od(a)?de.test($d.call(a)):n(a)&&Aa.test(a))}function rd(a){return"number"==typeof a||n(a)&&be.call(a)==U}function sd(a){var b;if(!n(a)||be.call(a)!=V||ld(a)||!(_d.call(a,"constructor")||(b=a.constructor,"function"!=typeof b||b instanceof b)))return!1;var c;return mb(a,function(a,b){c=b}),c===u||_d.call(a,c)}function td(a){return pd(a)&&be.call(a)==W}function ud(a){return"string"==typeof a||n(a)&&be.call(a)==X}function vd(a){return n(a)&&Hc(a.length)&&!!Ha[be.call(a)]}function wd(a,b){return ab||!a||!se(b))return c;do b%2&&(c+=a),b=qe(b/2),a+=a;while(b);return c}function Fd(a,b,c){var d=a;return(a=e(a))?(c?Ec(d,b,c):null==b)?a.slice(q(a),r(a)+1):(b+="",a.slice(f(a,b),g(a,b)+1)):a}function Gd(a,b,c){return c&&Ec(a,b,c)&&(b=u),a=e(a),a.match(b||Fa)||[]}function Hd(a,b,c){return c&&Ec(a,b,c)&&(b=u),n(a)?Jd(a):db(a,b)}function Id(a){return a}function Jd(a){return ub(eb(a,!0))}function Kd(a,b,c){if(null==c){var d=pd(b),e=d?Mf(b):u;((e=e&&e.length?pb(b,e):u)?e.length:d)||(e=!1,c=b,b=a,a=this)}e||(e=pb(b,Mf(b)));var f=!0,d=-1,g=od(a),h=e.length;!1===c?f=!1:pd(c)&&"chain"in c&&(f=c.chain);for(;++d=H)return c}else a=0;return Le(c,d)}}(),Pe=jd(function(a,b){return n(a)&&Cc(a)?gb(a,lb(b,!1,!0)):[]}),Qe=ac(),Re=ac(!0),Se=jd(function(a){for(var b=a.length,d=b,e=Nd(k),f=vc(),g=f===c,h=[];d--;){var i=a[d]=Cc(i=a[d])?i:[];e[d]=g&&120<=i.length&&pe&&je?new Oa(d&&i):null}var g=a[0],j=-1,k=g?g.length:0,l=e[0];a:for(;++j(l?Pa(l,i):f(h,i,0))){for(d=b;--d;){var m=e[d];if(0>(m?Pa(m,i):f(a[d],i,0)))continue a}l&&l.push(i),h.push(i)}return h}),Te=jd(function(b,c){c=lb(c);var d=bb(b,c);return zb(b,c.sort(a)),d}),Ue=oc(),Ve=oc(!0),We=jd(function(a){return Hb(lb(a,!1,!0))}),Xe=jd(function(a,b){return Cc(a)?gb(a,b):[]}),Ye=jd(Xc),Ze=jd(function(a){var b=a.length,c=2--a?b.apply(this,arguments):void 0}},Ja.ary=function(a,b,c){return c&&Ec(a,b,c)&&(b=u),b=a&&null==b?a.length:ue(+b||0,0),pc(a,D,u,u,u,u,b)},Ja.assign=Df,Ja.at=_e,Ja.before=gd,Ja.bind=of,Ja.bindAll=pf,Ja.bindKey=qf,Ja.callback=Hd,Ja.chain=$c,Ja.chunk=function(a,b,c){b=(c?Ec(a,b,c):null==b)?1:ue(qe(b)||1,1),c=0;for(var d=a?a.length:0,e=-1,f=Nd(oe(d/b));cc&&(c=-c>e?0:e+c),d=d===u||d>e?e:+d||0,0>d&&(d+=e),e=c>d?0:d>>>0,c>>>=0;cb?0:b)):[]},Ja.takeRight=function(a,b,c){var d=a?a.length:0;return d?((c?Ec(a,b,c):null==b)&&(b=1),b=d-(+b||0),Cb(a,0>b?0:b)):[]},Ja.takeRightWhile=function(a,b,c){return a&&a.length?Jb(a,tc(b,c,3),!1,!0):[]},Ja.takeWhile=function(a,b,c){return a&&a.length?Jb(a,tc(b,c,3)):[]},Ja.tap=function(a,b,c){return b.call(c,a),a},Ja.throttle=function(a,b,c){var d=!0,e=!0;if("function"!=typeof a)throw new Wd(M);return!1===c?d=!1:pd(c)&&(d="leading"in c?!!c.leading:d,e="trailing"in c?!!c.trailing:e),hd(a,b,{leading:d,maxWait:+b,trailing:e})},Ja.thru=_c,Ja.times=function(a,b,c){if(a=qe(a),1>a||!se(a))return[];var d=-1,e=Nd(ve(a,4294967295));for(b=Nb(b,c,1);++dd?e[d]=b(d):b(d);return e},Ja.toArray=xd,Ja.toPlainObject=yd,Ja.transform=function(a,b,c,d){var e=Bf(a)||vd(a);return b=tc(b,d,4),null==c&&(e||pd(a)?(d=a.constructor,c=e?Bf(a)?new d:[]:Ge(od(d)?d.prototype:u)):c={}),(e?Ra:nb)(a,function(a,d,e){return b(c,a,d,e)}),c},Ja.union=We,Ja.uniq=Wc,Ja.unzip=Xc,Ja.unzipWith=Yc,Ja.values=Cd,Ja.valuesIn=function(a){return Ib(a,Ad(a))},Ja.where=function(a,b){return bd(a,ub(b))},Ja.without=Xe,Ja.wrap=function(a,b){return b=null==b?Id:b,pc(b,B,u,[a],[])},Ja.xor=function(){for(var a=-1,b=arguments.length;++ac?0:+c||0,d),c-=b.length,0<=c&&a.indexOf(b,c)==c},Ja.escape=function(a){return(a=e(a))&&ma.test(a)?a.replace(ka,j):a},Ja.escapeRegExp=function(a){return(a=e(a))&&ua.test(a)?a.replace(ta,k):a||"(?:)"},Ja.every=ad,Ja.find=bf,Ja.findIndex=Qe,Ja.findKey=Gf,Ja.findLast=cf,Ja.findLastIndex=Re,Ja.findLastKey=Hf,Ja.findWhere=function(a,b){return bf(a,ub(b))},Ja.first=Sc,Ja.floor=_f,Ja.get=function(a,b,c){return a=null==a?u:qb(a,Oc(b),b+""),a===u?c:a},Ja.gt=kd,Ja.gte=function(a,b){return a>=b},Ja.has=function(a,b){if(null==a)return!1;var c=_d.call(a,b);if(!c&&!Fc(b)){if(b=Oc(b),a=1==b.length?a:qb(a,Cb(b,0,-1)),null==a)return!1;b=Uc(b),c=_d.call(a,b)}return c||Hc(a.length)&&Dc(b,a.length)&&(Bf(a)||ld(a))},Ja.identity=Id,Ja.includes=cd,Ja.indexOf=Tc,Ja.inRange=function(a,b,c){return b=+b||0,c===u?(c=b,b=0):c=+c||0,a>=ve(b,c)&&ac?ue(d+c,0):ve(c||0,d-1))+1;else if(c)return e=Lb(a,b,!0)-1,a=a[e],(b===b?b===a:a!==a)?e:-1;if(b!==b)return m(a,e,!0);for(;e--;)if(a[e]===b)return e;return-1},Ja.lt=wd,Ja.lte=function(a,b){return a<=b},Ja.max=ag,Ja.min=bg,Ja.noConflict=function(){return Ua._=ce,this},Ja.noop=Ld,Ja.now=nf,Ja.pad=function(a,b,c){a=e(a),b=+b;var d=a.length;return dc?0:+c||0,a.length),a.lastIndexOf(b,c)==c},Ja.sum=function(a,b,c){if(c&&Ec(a,b,c)&&(b=u),b=tc(b,c,3),1==b.length){a=Bf(a)?a:Mc(a),c=a.length;for(var d=0;c--;)d+=+b(a[c])||0;a=d}else a=Gb(a,b);return a},Ja.template=function(a,b,c){var d=Ja.templateSettings;c&&Ec(a,b,c)&&(b=c=u),a=e(a),b=_a(ab({},c||b),d,$a),c=_a(ab({},b.imports),d.imports,$a);var f,g,h=Mf(c),i=Ib(c,h),j=0;c=b.interpolate||Da;var k="__p+='";c=Ud((b.escape||Da).source+"|"+c.source+"|"+(c===pa?xa:Da).source+"|"+(b.evaluate||Da).source+"|$","g");var m="sourceURL"in b?"//# sourceURL="+b.sourceURL+"\n":"";if(a.replace(c,function(b,c,d,e,h,i){return d||(d=e),k+=a.slice(j,i).replace(Ea,l),c&&(f=!0,k+="'+__e("+c+")+'"),h&&(g=!0,k+="';"+h+";\n__p+='"),d&&(k+="'+((__t=("+d+"))==null?'':__t)+'"),j=i+b.length,b}),k+="';",(b=b.variable)||(k="with(obj){"+k+"}"),k=(g?k.replace(ga,""):k).replace(ha,"$1").replace(ia,"$1;"),k="function("+(b||"obj")+"){"+(b?"":"obj||(obj={});")+"var __t,__p=''"+(f?",__e=_.escape":"")+(g?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+k+"return __p}",b=Xf(function(){return Qd(h,m+"return "+k).apply(u,i)}),b.source=k,nd(b))throw b;return b},Ja.trim=Fd,Ja.trimLeft=function(a,b,c){var d=a;return(a=e(a))?a.slice((c?Ec(d,b,c):null==b)?q(a):f(a,b+"")):a},Ja.trimRight=function(a,b,c){var d=a;return(a=e(a))?(c?Ec(d,b,c):null==b)?a.slice(0,r(a)+1):a.slice(0,g(a,b+"")+1):a},Ja.trunc=function(a,b,c){c&&Ec(a,b,c)&&(b=u);var d=F;if(c=G,null!=b)if(pd(b)){var f="separator"in b?b.separator:f,d="length"in b?+b.length||0:d;c="omission"in b?e(b.omission):c}else d=+b||0;if(a=e(a),d>=a.length)return a;if(d-=c.length,1>d)return c;if(b=a.slice(0,d),null==f)return b+c;if(td(f)){if(a.slice(d).search(f)){var g,h=a.slice(0,d);for(f.global||(f=Ud(f.source,(ya.exec(f)||"")+"g")),f.lastIndex=0;a=f.exec(h);)g=a.index;b=b.slice(0,null==g?d:g)}}else a.indexOf(f,d)!=d&&(f=b.lastIndexOf(f),-1e.__dir__?"Right":"")}),e},Ma.prototype[a+"Right"]=function(b){return this.reverse()[a](b).reverse()}}),Ra(["filter","map","takeWhile"],function(a,b){var c=b+1,d=c!=L;Ma.prototype[a]=function(a,b){var e=this.clone();return e.__iteratees__.push({iteratee:tc(a,b,1),type:c}),e.__filtered__=e.__filtered__||d,e}}),Ra(["first","last"],function(a,b){var c="take"+(b?"Right":"");Ma.prototype[a]=function(){return this[c](1).value()[0]}}),Ra(["initial","rest"],function(a,b){var c="drop"+(b?"":"Right");Ma.prototype[a]=function(){return this.__filtered__?new Ma(this):this[c](1)}}),Ra(["pluck","where"],function(a,b){var c=b?"filter":"map",d=b?ub:Md;Ma.prototype[a]=function(a){return this[c](d(a))}}),Ma.prototype.compact=function(){return this.filter(Id)},Ma.prototype.reject=function(a,b){return a=tc(a,b,1),this.filter(function(b){return!a(b)})},Ma.prototype.slice=function(a,b){a=null==a?0:+a||0;var c=this;return c.__filtered__&&(0b)?new Ma(c):(0>a?c=c.takeRight(-a):a&&(c=c.drop(a)),b!==u&&(b=+b||0,c=0>b?c.dropRight(-b):c.take(b-a)),c)},Ma.prototype.takeRightWhile=function(a,b){return this.reverse().takeWhile(a,b).reverse()},Ma.prototype.toArray=function(){return this.take(Ae)},nb(Ma.prototype,function(a,b){var c=/^(?:filter|map|reject)|While$/.test(b),d=/^(?:first|last)$/.test(b),e=Ja[d?"take"+("last"==b?"Right":""):b];e&&(Ja.prototype[b]=function(){function b(a){return d&&g?e(a,1)[0]:e.apply(u,Xa([a],f))}var f=d?[1]:arguments,g=this.__chain__,h=this.__wrapped__,i=!!this.__actions__.length,j=h instanceof Ma,k=f[0],l=j||Bf(h);return l&&c&&"function"==typeof k&&1!=k.length&&(j=l=!1),k={func:_c,args:[b],thisArg:u},i=j&&!i,d&&!g?i?(h=h.clone(),h.__actions__.push(k),a.call(h)):e.call(u,this.value())[0]:!d&&l?(h=i?h:new Ma(this),h=a.apply(h,f),h.__actions__.push(k),new La(h,g)):this.thru(b)})}),Ra("join pop push replace shift sort splice split unshift".split(" "),function(a){var b=(/^(?:replace|split)$/.test(a)?Zd:Xd)[a],c=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",d=/^(?:join|pop|replace|shift)$/.test(a);Ja.prototype[a]=function(){var a=arguments;return d&&!this.__chain__?b.apply(this.value(),a):this[c](function(c){return b.apply(c,a)})}}),nb(Ma.prototype,function(a,b){var c=Ja[b];if(c){var d=c.name+"";(Fe[d]||(Fe[d]=[])).push({name:b,func:c})}}),Fe[kc(u,x).name]=[{name:"wrapper",func:u}],Ma.prototype.clone=function(){var a=new Ma(this.__wrapped__);return a.__actions__=Qa(this.__actions__),a.__dir__=this.__dir__,a.__filtered__=this.__filtered__,a.__iteratees__=Qa(this.__iteratees__),a.__takeCount__=this.__takeCount__,a.__views__=Qa(this.__views__),a},Ma.prototype.reverse=function(){if(this.__filtered__){var a=new Ma(this);a.__dir__=-1,a.__filtered__=!0}else a=this.clone(),a.__dir__*=-1;return a},Ma.prototype.value=function(){var a,b=this.__wrapped__.value(),c=this.__dir__,d=Bf(b),e=0>c,f=d?b.length:0;a=f;for(var g=this.__views__,h=0,i=-1,j=g.length;++i"'`]/g,la=RegExp(ja.source),ma=RegExp(ka.source),na=/<%-([\s\S]+?)%>/g,oa=/<%([\s\S]+?)%>/g,pa=/<%=([\s\S]+?)%>/g,qa=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,ra=/^\w*$/,sa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,ta=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,ua=RegExp(ta.source),va=/[\u0300-\u036f\ufe20-\ufe23]/g,wa=/\\(\\)?/g,xa=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ya=/\w*$/,za=/^0[xX]/,Aa=/^\[object .+?Constructor\]$/,Ba=/^\d+$/,Ca=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Da=/($^)/,Ea=/['\n\r\u2028\u2029\\]/g,Fa=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Ga="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap".split(" "),Ha={};Ha[Z]=Ha[$]=Ha[_]=Ha[aa]=Ha[ba]=Ha[ca]=Ha[da]=Ha[ea]=Ha[fa]=!0,Ha[O]=Ha[P]=Ha[Y]=Ha[Q]=Ha[R]=Ha[S]=Ha[T]=Ha["[object Map]"]=Ha[U]=Ha[V]=Ha[W]=Ha["[object Set]"]=Ha[X]=Ha["[object WeakMap]"]=!1;var Ia={};Ia[O]=Ia[P]=Ia[Y]=Ia[Q]=Ia[R]=Ia[Z]=Ia[$]=Ia[_]=Ia[aa]=Ia[ba]=Ia[U]=Ia[V]=Ia[W]=Ia[X]=Ia[ca]=Ia[da]=Ia[ea]=Ia[fa]=!0,Ia[S]=Ia[T]=Ia["[object Map]"]=Ia["[object Set]"]=Ia["[object WeakMap]"]=!1;var Ja={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},Ka={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},La={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Ma={"function":!0,object:!0},Na={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},Oa={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Pa=Ma[typeof exports]&&exports&&!exports.nodeType&&exports,Qa=Ma[typeof module]&&module&&!module.nodeType&&module,Ra=Ma[typeof self]&&self&&self.Object&&self,Sa=Ma[typeof window]&&window&&window.Object&&window,Ta=Qa&&Qa.exports===Pa&&Pa,Ua=Pa&&Qa&&"object"==typeof global&&global&&global.Object&&global||Sa!==(this&&this.window)&&Sa||Ra||this,Va=t();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ua._=Va,define(function(){return Va})):Pa&&Qa?Ta?(Qa.exports=Va)._=Va:Pa._=Va:Ua._=Va}.call(this),function(a,b){a(function(){function a(a,b){return null!=a&&null!=b&&a.toLowerCase()===b.toLowerCase()}function c(a,b){var c,d,e=a.length;if(!e||!b)return!1;for(c=b.toLowerCase(),d=0;d=0&&(c=c.substring(0,j)+"([\\w._\\+]+)"+c.substring(j+5)),b[e]=new RegExp(c,"i");k.props[a]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),f.findMatch=function(a,b){for(var c in a)if(h.call(a,c)&&a[c].test(b))return c;return null},f.findMatches=function(a,b){var c=[];for(var d in a)h.call(a,d)&&a[d].test(b)&&c.push(d);return c},f.getVersionStr=function(a,b){var c,d,e,g,i=f.mobileDetectRules.props;if(h.call(i,a))for(c=i[a],e=c.length,d=0;d1&&(a=b[0]+".",b.shift(),a+=b.join("")),Number(a)},f.isMobileFallback=function(a){return f.detectMobileBrowsers.fullPattern.test(a)||f.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},f.isTabletFallback=function(a){return f.detectMobileBrowsers.tabletPattern.test(a)},f.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var g,h,i;return(h=f.findMatch(f.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(g=f.findMatch(f.mobileDetectRules.phones,c))?(a.mobile=a.phone=g,void(a.tablet=null)):void(f.isMobileFallback(c)?(i=e.isPhoneSized(d),i===b?(a.mobile=f.FALLBACK_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=f.FALLBACK_PHONE,a.tablet=null):(a.mobile=a.tablet=f.FALLBACK_TABLET,a.phone=null)):f.isTabletFallback(c)?(a.mobile=a.tablet=f.FALLBACK_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},f.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.*Mobile")||a.version("Windows Mobile")<=5.2,"C")},f.detectOS=function(a){return f.findMatch(f.mobileDetectRules.oss0,a)||f.findMatch(f.mobileDetectRules.oss,a)},f.getDeviceSmallerSide=function(){return window.screen.widthd&&" "!==a[o+1],o=f);else if(!k(g))return ka;p=p&&l(g)}i=i||n&&f-o-1>d&&" "!==a[o+1]}return h||i?" "===a[0]&&c>9?ka:i?ja:ia:p&&!e(a)?ga:ha}function o(a,b,c,d){a.dump=function(){function e(b){return i(a,b)}if(0===b.length)return"''";if(!a.noCompatMode&&fa.indexOf(b)!==-1)return"'"+b+"'";var f=a.indent*Math.max(1,c),h=a.lineWidth===-1?-1:Math.max(Math.min(a.lineWidth,40),a.lineWidth-f),j=d||a.flowLevel>-1&&c>=a.flowLevel;switch(n(b,j,a.indent,h,e)){case ga:return b;case ha:return"'"+b.replace(/'/g,"''")+"'";case ia:return"|"+p(b,a.indent)+q(g(b,f));case ja:return">"+p(b,a.indent)+q(g(r(b,h),f));case ka:return'"'+t(b,h)+'"';default:throw new F("impossible error: invalid scalar style")}}()}function p(a,b){var c=" "===a[0]?String(b):"",d="\n"===a[a.length-1],e=d&&("\n"===a[a.length-2]||"\n"===a),f=e?"+":d?"":"-";return c+f+"\n"}function q(a){return"\n"===a[a.length-1]?a.slice(0,-1):a}function r(a,b){for(var c,d,e=/(\n+)([^\n]*)/g,f=function(){var c=a.indexOf("\n");return c=c!==-1?c:a.length,e.lastIndex=c,s(a.slice(0,c),b)}(),g="\n"===a[0]||" "===a[0];d=e.exec(a);){var h=d[1],i=d[2];c=" "===i[0],f+=h+(g||c||""===i?"":"\n")+s(i,b),g=c}return f}function s(a,b){if(""===a||" "===a[0])return a;for(var c,d,e=/ [^ ]/g,f=0,g=0,h=0,i="";c=e.exec(a);)h=c.index,h-f>b&&(d=g>f?g:h,i+="\n"+a.slice(f,d),f=d+1),g=h;return i+="\n",i+=a.length-f>b&&g>f?a.slice(f,g)+"\n"+a.slice(g+1):a.slice(f),i.slice(1)}function t(a){for(var b,c,d="",f=0;f1024&&(h+="? "),h+=a.dump+": ",z(a,b,g,!1,!1)&&(h+=a.dump,i+=h));a.tag=j,a.dump="{"+i+"}"}function x(a,b,c,d){var e,f,g,i,j,k,l="",m=a.tag,n=Object.keys(c);if(a.sortKeys===!0)n.sort();else if("function"==typeof a.sortKeys)n.sort(a.sortKeys);else if(a.sortKeys)throw new F("sortKeys must be a boolean or a function");for(e=0,f=n.length;e1024,j&&(k+=a.dump&&L===a.dump.charCodeAt(0)?"?":"? "),k+=a.dump,j&&(k+=h(a,b)),z(a,b+1,i,!0,j)&&(k+=a.dump&&L===a.dump.charCodeAt(0)?":":": ",k+=a.dump,l+=k));a.tag=m,a.dump=l||"{}"}function y(a,b,c){var d,e,f,g,h,i;for(e=c?a.explicitTypes:a.implicitTypes,f=0,g=e.length;f tag resolver accepts not "'+i+'" style');d=h.represent[i](b,i)}a.dump=d}return!0}return!1}function z(a,b,c,d,e,f){a.tag=null,a.dump=c,y(a,c,!1)||y(a,c,!0);var g=I.call(a.dump);d&&(d=a.flowLevel<0||a.flowLevel>b);var h,i,j="[object Object]"===g||"[object Array]"===g;if(j&&(h=a.duplicates.indexOf(c),i=h!==-1),(null!==a.tag&&"?"!==a.tag||i||2!==a.indent&&b>0)&&(e=!1),i&&a.usedDuplicates[h])a.dump="*ref_"+h;else{if(j&&i&&!a.usedDuplicates[h]&&(a.usedDuplicates[h]=!0),"[object Object]"===g)d&&0!==Object.keys(a.dump).length?(x(a,b,a.dump,e),i&&(a.dump="&ref_"+h+a.dump)):(w(a,b,a.dump),i&&(a.dump="&ref_"+h+" "+a.dump));else if("[object Array]"===g)d&&0!==a.dump.length?(v(a,b,a.dump,e),i&&(a.dump="&ref_"+h+a.dump)):(u(a,b,a.dump),i&&(a.dump="&ref_"+h+" "+a.dump));else{if("[object String]"!==g){if(a.skipInvalid)return!1;throw new F("unacceptable kind of an object to dump "+g)}"?"!==a.tag&&o(a,a.dump,b,f)}null!==a.tag&&"?"!==a.tag&&(a.dump="!<"+a.tag+"> "+a.dump)}return!0}function A(a,b){var c,d,e=[],f=[];for(B(a,e,f),c=0,d=f.length;c>10)+55296,(a-65536&1023)+56320)}function m(a,b){this.input=a,this.filename=b.filename||null,this.schema=b.schema||S,this.onWarning=b.onWarning||null,this.legacy=b.legacy||!1,this.json=b.json||!1,this.listener=b.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=a.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function n(a,b){return new P(b,new Q(a.filename,a.input,a.position,a.line,a.position-a.lineStart))}function o(a,b){throw n(a,b)}function p(a,b){a.onWarning&&a.onWarning.call(null,n(a,b))}function q(a,b,c,d){var e,f,g,h;if(b1&&(a.result+=O.repeat("\n",b-1))}function x(a,b,c){var h,i,j,k,l,m,n,o,p,r=a.kind,s=a.result;if(p=a.input.charCodeAt(a.position),f(p)||g(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(i=a.input.charCodeAt(a.position+1),f(i)||c&&g(i)))return!1;for(a.kind="scalar",a.result="",j=k=a.position,l=!1;0!==p;){if(58===p){if(i=a.input.charCodeAt(a.position+1),f(i)||c&&g(i))break}else if(35===p){if(h=a.input.charCodeAt(a.position-1),f(h))break}else{if(a.position===a.lineStart&&v(a)||c&&g(p))break;if(d(p)){if(m=a.line,n=a.lineStart,o=a.lineIndent,u(a,!1,-1),a.lineIndent>=b){l=!0,p=a.input.charCodeAt(a.position);continue}a.position=k,a.line=m,a.lineStart=n,a.lineIndent=o;break}}l&&(q(a,j,k,!1),w(a,a.line-m),j=k=a.position,l=!1),e(p)||(k=a.position+1),p=a.input.charCodeAt(++a.position)}return q(a,j,k,!1),!!a.result||(a.kind=r,a.result=s,!1)}function y(a,b){var c,e,f;if(c=a.input.charCodeAt(a.position),39!==c)return!1;for(a.kind="scalar",a.result="",a.position++,e=f=a.position;0!==(c=a.input.charCodeAt(a.position));)if(39===c){if(q(a,e,a.position,!0),c=a.input.charCodeAt(++a.position),39!==c)return!0;e=f=a.position,a.position++}else d(c)?(q(a,e,f,!0),w(a,u(a,!1,b)),e=f=a.position):a.position===a.lineStart&&v(a)?o(a,"unexpected end of the document within a single quoted scalar"):(a.position++,f=a.position);o(a,"unexpected end of the stream within a single quoted scalar")}function z(a,b){var c,e,f,g,j,k;if(k=a.input.charCodeAt(a.position),34!==k)return!1;for(a.kind="scalar",a.result="",a.position++,c=e=a.position;0!==(k=a.input.charCodeAt(a.position));){if(34===k)return q(a,c,a.position,!0),a.position++,!0;if(92===k){if(q(a,c,a.position,!0),k=a.input.charCodeAt(++a.position),d(k))u(a,!1,b);else if(k<256&&ea[k])a.result+=fa[k],a.position++;else if((j=i(k))>0){for(f=j,g=0;f>0;f--)k=a.input.charCodeAt(++a.position),(j=h(k))>=0?g=(g<<4)+j:o(a,"expected hexadecimal character");a.result+=l(g),a.position++}else o(a,"unknown escape sequence");c=e=a.position}else d(k)?(q(a,c,e,!0),w(a,u(a,!1,b)),c=e=a.position):a.position===a.lineStart&&v(a)?o(a,"unexpected end of the document within a double quoted scalar"):(a.position++,e=a.position)}o(a,"unexpected end of the stream within a double quoted scalar")}function A(a,b){var c,d,e,g,h,i,j,k,l,m,n,p=!0,q=a.tag,r=a.anchor,t={};if(n=a.input.charCodeAt(a.position),91===n)g=93,j=!1,d=[];else{if(123!==n)return!1;g=125,j=!0,d={}}for(null!==a.anchor&&(a.anchorMap[a.anchor]=d),n=a.input.charCodeAt(++a.position);0!==n;){if(u(a,!0,b),n=a.input.charCodeAt(a.position),n===g)return a.position++,a.tag=q,a.anchor=r,a.kind=j?"mapping":"sequence",a.result=d,!0;p||o(a,"missed comma between flow collection entries"),l=k=m=null,h=i=!1,63===n&&(e=a.input.charCodeAt(a.position+1),f(e)&&(h=i=!0,a.position++,u(a,!0,b))),c=a.line,H(a,b,U,!1,!0),l=a.tag,k=a.result,u(a,!0,b),n=a.input.charCodeAt(a.position),!i&&a.line!==c||58!==n||(h=!0,n=a.input.charCodeAt(++a.position),u(a,!0,b),H(a,b,U,!1,!0),m=a.result),j?s(a,d,t,l,k,m):h?d.push(s(a,null,t,l,k,m)):d.push(k),u(a,!0,b),n=a.input.charCodeAt(a.position),44===n?(p=!0,n=a.input.charCodeAt(++a.position)):p=!1}o(a,"unexpected end of the stream within a flow collection")}function B(a,b){var c,f,g,h,i=Y,k=!1,l=!1,m=b,n=0,p=!1;if(h=a.input.charCodeAt(a.position),124===h)f=!1;else{if(62!==h)return!1;f=!0}for(a.kind="scalar",a.result="";0!==h;)if(h=a.input.charCodeAt(++a.position),43===h||45===h)Y===i?i=43===h?$:Z:o(a,"repeat of a chomping mode identifier");else{if(!((g=j(h))>=0))break;0===g?o(a,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?o(a,"repeat of an indentation width identifier"):(m=b+g-1,l=!0)}if(e(h)){do h=a.input.charCodeAt(++a.position);while(e(h));if(35===h)do h=a.input.charCodeAt(++a.position);while(!d(h)&&0!==h)}for(;0!==h;){for(t(a),a.lineIndent=0,h=a.input.charCodeAt(a.position);(!l||a.lineIndentm&&(m=a.lineIndent),d(h))n++;else{if(a.lineIndentb)&&0!==e)o(a,"bad indentation of a sequence entry");else if(a.lineIndentb)&&(H(a,b,X,!0,g)&&(r?p=a.result:q=a.result),r||(s(a,l,m,n,p,q),n=p=q=null),u(a,!0,-1),i=a.input.charCodeAt(a.position)),a.lineIndent>b&&0!==i)o(a,"bad indentation of a mapping entry");else if(a.lineIndentb?n=1:a.lineIndent===b?n=0:a.lineIndentb?n=1:a.lineIndent===b?n=0:a.lineIndent tag; it should be "'+k.kind+'", not "'+a.kind+'"'),k.resolve(a.result)?(a.result=k.construct(a.result),null!==a.anchor&&(a.anchorMap[a.anchor]=a.result)):o(a,"cannot resolve a node with !<"+a.tag+"> explicit tag")):o(a,"unknown tag !<"+a.tag+">");return null!==a.listener&&a.listener("close",a),null!==a.tag||null!==a.anchor||q}function I(a){var b,c,g,h,i=a.position,j=!1;for(a.version=null,a.checkLineBreaks=a.legacy,a.tagMap={}, -a.anchorMap={};0!==(h=a.input.charCodeAt(a.position))&&(u(a,!0,-1),h=a.input.charCodeAt(a.position),!(a.lineIndent>0||37!==h));){for(j=!0,h=a.input.charCodeAt(++a.position),b=a.position;0!==h&&!f(h);)h=a.input.charCodeAt(++a.position);for(c=a.input.slice(b,a.position),g=[],c.length<1&&o(a,"directive name must not be less than one character in length");0!==h;){for(;e(h);)h=a.input.charCodeAt(++a.position);if(35===h){do h=a.input.charCodeAt(++a.position);while(0!==h&&!d(h));break}if(d(h))break;for(b=a.position;0!==h&&!f(h);)h=a.input.charCodeAt(++a.position);g.push(a.input.slice(b,a.position))}0!==h&&t(a),T.call(ha,c)?ha[c](a,c,g):p(a,'unknown document directive "'+c+'"')}return u(a,!0,-1),0===a.lineIndent&&45===a.input.charCodeAt(a.position)&&45===a.input.charCodeAt(a.position+1)&&45===a.input.charCodeAt(a.position+2)?(a.position+=3,u(a,!0,-1)):j&&o(a,"directives end mark is expected"),H(a,a.lineIndent-1,X,!1,!0),u(a,!0,-1),a.checkLineBreaks&&aa.test(a.input.slice(i,a.position))&&p(a,"non-ASCII line breaks are interpreted as content"),a.documents.push(a.result),a.position===a.lineStart&&v(a)?void(46===a.input.charCodeAt(a.position)&&(a.position+=3,u(a,!0,-1))):void(a.position0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(d-1))===-1;)if(d-=1,this.position-d>b/2-1){c=" ... ",d+=5;break}for(f="",g=this.position;gb/2-1){f=" ... ",g-=5;break}return h=this.buffer.slice(d,g),e.repeat(" ",a)+c+h+f+"\n"+e.repeat(" ",a+this.position-d+c.length)+"^"},d.prototype.toString=function(a){var b,c="";return this.name&&(c+='in "'+this.name+'" '),c+="at line "+(this.line+1)+", column "+(this.column+1),a||(b=this.getSnippet(),b&&(c+=":\n"+b)),c},b.exports=d},{"./common":2}],7:[function(a,b,c){function d(a,b,c){var e=[];return a.include.forEach(function(a){c=d(a,b,c)}),a[b].forEach(function(a){c.forEach(function(b,c){b.tag===a.tag&&e.push(c)}),c.push(a)}),c.filter(function(a,b){return e.indexOf(b)===-1})}function e(){function a(a){d[a.tag]=a}var b,c,d={};for(b=0,c=arguments.length;b64)){if(b<0)return!1;d+=6}return d%8===0}function e(a){var b,c,d=a.replace(/[\r\n=]/g,""),e=d.length,f=l,g=0,i=[];for(b=0;b>16&255),i.push(g>>8&255),i.push(255&g)),g=g<<6|f.indexOf(d.charAt(b));return c=e%4*6,0===c?(i.push(g>>16&255),i.push(g>>8&255),i.push(255&g)):18===c?(i.push(g>>10&255),i.push(g>>2&255)):12===c&&i.push(g>>4&255),h?new h(i):i}function f(a){var b,c,d="",e=0,f=a.length,g=l;for(b=0;b>18&63],d+=g[e>>12&63],d+=g[e>>6&63],d+=g[63&e]),e=(e<<8)+a[b];return c=f%3,0===c?(d+=g[e>>18&63],d+=g[e>>12&63],d+=g[e>>6&63],d+=g[63&e]):2===c?(d+=g[e>>10&63],d+=g[e>>4&63],d+=g[e<<2&63],d+=g[64]):1===c&&(d+=g[e>>2&63],d+=g[e<<4&63],d+=g[64],d+=g[64]),d}function g(a){return h&&h.isBuffer(a)}var h;try{var i=a;h=i("buffer").Buffer}catch(j){}var k=a("../type"),l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";b.exports=new k("tag:yaml.org,2002:binary",{kind:"scalar",resolve:d,construct:e,predicate:g,represent:f})},{"../type":13}],15:[function(a,b,c){function d(a){if(null===a)return!1;var b=a.length;return 4===b&&("true"===a||"True"===a||"TRUE"===a)||5===b&&("false"===a||"False"===a||"FALSE"===a)}function e(a){return"true"===a||"True"===a||"TRUE"===a}function f(a){return"[object Boolean]"===Object.prototype.toString.call(a)}var g=a("../type");b.exports=new g("tag:yaml.org,2002:bool",{kind:"scalar",resolve:d,construct:e,predicate:f,represent:{lowercase:function(a){return a?"true":"false"},uppercase:function(a){return a?"TRUE":"FALSE"},camelcase:function(a){return a?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(a,b,c){function d(a){return null!==a&&!!j.test(a)}function e(a){var b,c,d,e;return b=a.replace(/_/g,"").toLowerCase(),c="-"===b[0]?-1:1,e=[],"+-".indexOf(b[0])>=0&&(b=b.slice(1)),".inf"===b?1===c?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===b?NaN:b.indexOf(":")>=0?(b.split(":").forEach(function(a){e.unshift(parseFloat(a,10))}),b=0,d=1,e.forEach(function(a){b+=a*d,d*=60}),c*b):c*parseFloat(b,10)}function f(a,b){var c;if(isNaN(a))switch(b){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===a)switch(b){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===a)switch(b){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h.isNegativeZero(a))return"-0.0";return c=a.toString(10),k.test(c)?c.replace("e",".e"):c}function g(a){return"[object Number]"===Object.prototype.toString.call(a)&&(a%1!==0||h.isNegativeZero(a))}var h=a("../common"),i=a("../type"),j=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),k=/^[-+]?[0-9]+e/;b.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:d,construct:e,predicate:g,represent:f,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(a,b,c){function d(a){return 48<=a&&a<=57||65<=a&&a<=70||97<=a&&a<=102}function e(a){return 48<=a&&a<=55}function f(a){return 48<=a&&a<=57}function g(a){if(null===a)return!1;var b,c=a.length,g=0,h=!1;if(!c)return!1;if(b=a[g],"-"!==b&&"+"!==b||(b=a[++g]),"0"===b){if(g+1===c)return!0;if(b=a[++g],"b"===b){for(g++;g3)return!1;if("/"!==b[b.length-d.length-1])return!1}return!0}function e(a){var b=a,c=/\/([gim]*)$/.exec(a),d="";return"/"===b[0]&&(c&&(d=c[1]),b=b.slice(1,b.length-d.length-1)),new RegExp(b,d)}function f(a){var b="/"+a.source+"/";return a.global&&(b+="g"),a.multiline&&(b+="m"),a.ignoreCase&&(b+="i"),b}function g(a){return"[object RegExp]"===Object.prototype.toString.call(a)}var h=a("../../type");b.exports=new h("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:d,construct:e,predicate:g,represent:f})},{"../../type":13}],20:[function(a,b,c){function d(){return!0}function e(){}function f(){return""}function g(a){return"undefined"==typeof a}var h=a("../../type");b.exports=new h("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:d,construct:e,predicate:g,represent:f})},{"../../type":13}],21:[function(a,b,c){var d=a("../type");b.exports=new d("tag:yaml.org,2002:map",{kind:"mapping",construct:function(a){return null!==a?a:{}}})},{"../type":13}],22:[function(a,b,c){function d(a){return"<<"===a||null===a}var e=a("../type");b.exports=new e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:d})},{"../type":13}],23:[function(a,b,c){function d(a){if(null===a)return!0;var b=a.length;return 1===b&&"~"===a||4===b&&("null"===a||"Null"===a||"NULL"===a)}function e(){return null}function f(a){return null===a}var g=a("../type");b.exports=new g("tag:yaml.org,2002:null",{kind:"scalar",resolve:d,construct:e,predicate:f,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(a,b,c){function d(a){if(null===a)return!0;var b,c,d,e,f,i=[],j=a;for(b=0,c=j.length;b=f;e--)c.end&&c.end(s[e]);s.length=f}}"string"!=typeof a&&(a=null===a||"undefined"==typeof a?"":""+a);var f,h,i,s=[],t=a;for(s.last=function(){return s[s.length-1]};a;){if(i="",h=!0,s.last()&&y[s.last()]?(a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+s.last()+"[^>]*>","i"),function(a,b){return b=b.replace(p,"$1").replace(r,"$1"),c.chars&&c.chars(g(b)),""}),e("",s.last())):(0===a.indexOf("",f)===f&&(c.comment&&c.comment(a.substring(4,f)),a=a.substring(f+3),h=!1)):q.test(a)?(f=a.match(q))&&(a=a.replace(f[0],""),h=!1):o.test(a)?(f=a.match(l))&&(a=a.substring(f[0].length),f[0].replace(l,e),h=!1):n.test(a)&&((f=a.match(k))?(f[4]&&(a=a.substring(f[0].length),f[0].replace(k,d)),h=!1):(i+="<",a=a.substring(1))),h&&(f=a.indexOf("<"),i+=0>f?a:a.substring(0,f),a=0>f?"":a.substring(f),c.chars&&c.chars(g(i)))),a==t)throw j("badparse",a);t=a}e()}function g(a){return a?(C.innerHTML=a.replace(//g,">")}function i(a,c){var d=!1,e=b.bind(a,a.push);return{start:function(a,f,g){a=b.lowercase(a),!d&&y[a]&&(d=a),d||!0!==z[a]||(e("<"),e(a),b.forEach(f,function(d,f){var g=b.lowercase(f),i="img"===a&&"src"===g||"background"===g;!0!==B[g]||!0===A[g]&&!c(d,i)||(e(" "),e(f),e('="'),e(h(d)),e('"'))}),e(g?"/>":">"))},end:function(a){a=b.lowercase(a),d||!0!==z[a]||(e("")),a==d&&(d=!1)},chars:function(a){d||e(h(a))}}}var j=b.$$minErr("$sanitize"),k=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,l=/^<\/\s*([\w:-]+)[^>]*>/,m=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,n=/^]*?)>/i,r=/"\u201d\u2019]/i,e=/^mailto:/i;return function(f,g){function h(a){a&&n.push(d(a))}function i(a,c){n.push("'),h(c),n.push("")}if(!f)return f;for(var j,k,l,m=f,n=[];j=m.match(c);)k=j[0],j[2]||j[4]||(k=(j[3]?"http://":"mailto:")+k),l=j.index,h(m.substr(0,l)),i(k,j[0].replace(e,"")),m=m.substring(l+j[0].length);return h(m),a(n.join(""))}}])}(window,window.angular); \ No newline at end of file +}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html",'
\n')}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'
\n \n \n \n
')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{::label.abbr}}
{{ weekNumbers[$index] }}\n \n
\n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'
\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'\n')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'\n')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'\n')}]),angular.module("template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-popup.html",'\n
\n
\n\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'\n
\n
\n\n')}]),angular.module("template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-template-popup.html",'\n
\n
\n\n')}]),angular.module("template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-html.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-template.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'
\n')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'
')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'
\n
\n
\n')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'\n ({{ $index < value ? \'*\' : \' \' }})\n \n\n')}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'
  • \n {{heading}}\n
  • \n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'
    \n \n
    \n
    \n
    \n
    \n
    \n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
     
    \n \n :\n \n
     
    \n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'\n')}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'\n')}]),!angular.$$csp()&&angular.element(document).find("head").prepend(''),!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a){var b=a.storageKey(),c=a.storage(),d=function(){var d=a.preferredLanguage();angular.isString(d)?a.use(d):c.put(b,a.use())};d.displayName="fallbackFromIncorrectStorageValue",c?c.get(b)?a.use(c.get(b))["catch"](d):d():angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}function b(){var a,b,c=null,d=!1,e=!1;b={sanitize:function(a,b){return"text"===b&&(a=g(a)),a},escape:function(a,b){return"text"===b&&(a=f(a)),a},sanitizeParameters:function(a,b){return"params"===b&&(a=h(a,g)),a},escapeParameters:function(a,b){return"params"===b&&(a=h(a,f)),a}},b.escaped=b.escapeParameters,this.addStrategy=function(a,c){return b[a]=c,this},this.removeStrategy=function(a){return delete b[a],this},this.useStrategy=function(a){return d=!0,c=a,this},this.$get=["$injector","$log",function(f,g){var h={},i=function(a,c,d){return angular.forEach(d,function(d){if(angular.isFunction(d))a=d(a,c);else if(angular.isFunction(b[d]))a=b[d](a,c);else{if(!angular.isString(b[d]))throw new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+d+"'");if(!h[b[d]])try{h[b[d]]=f.get(b[d])}catch(e){throw h[b[d]]=function(){},new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+d+"'")}a=h[b[d]](a,c)}}),a},j=function(){d||e||(g.warn("pascalprecht.translate.$translateSanitization: No sanitization strategy has been configured. This can have serious security implications. See http://angular-translate.github.io/docs/#/guide/19_security for details."),e=!0)};return f.has("$sanitize")&&(a=f.get("$sanitize")),{useStrategy:function(a){return function(b){a.useStrategy(b)}}(this),sanitize:function(a,b,d){if(c||j(),arguments.length<3&&(d=c),!d)return a;var e=angular.isArray(d)?d:[d];return i(a,b,e)}}}];var f=function(a){var b=angular.element("
    ");return b.text(a),b.html()},g=function(b){if(!a)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot find $sanitize service. Either include the ngSanitize module (https://docs.angularjs.org/api/ngSanitize) or use a sanitization strategy which does not depend on $sanitize, such as 'escape'.");return a(b)},h=function(a,b,c){if(angular.isObject(a)){var d=angular.isArray(a)?[]:{};if(c){if(c.indexOf(a)>-1)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot interpolate parameter due recursive object")}else c=[];return c.push(a),angular.forEach(a,function(a,e){angular.isFunction(a)||(d[e]=h(a,b,c))}),c.splice(-1,1),d}return angular.isNumber(a)?a:b(a)}}function c(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u={},v=[],w=a,x=[],y="translate-cloak",z=!1,A=!1,B=".",C=!1,D=!1,E=0,F=!0,G="default",H={"default":function(a){return(a||"").split("-").join("_")},java:function(a){var b=(a||"").split("-").join("_"),c=b.split("_");return c.length>1?c[0].toLowerCase()+"_"+c[1].toUpperCase():b},bcp47:function(a){var b=(a||"").split("_").join("-"),c=b.split("-");return c.length>1?c[0].toLowerCase()+"-"+c[1].toUpperCase():b},"iso639-1":function(a){var b=(a||"").split("_").join("-"),c=b.split("-");return c[0].toLowerCase()}},I="2.11.1",J=function(){if(angular.isFunction(d.getLocale))return d.getLocale();var a,c,e=b.$get().navigator,f=["language","browserLanguage","systemLanguage","userLanguage"];if(angular.isArray(e.languages))for(a=0;a-1)return a;if(f){var g;for(var h in f)if(f.hasOwnProperty(h)){var i=!1,j=Object.prototype.hasOwnProperty.call(f,h)&&angular.lowercase(h)===angular.lowercase(a);if("*"===h.slice(-1)&&(i=h.slice(0,-1)===a.slice(0,h.length-1)),(j||i)&&(g=f[h],L(b,angular.lowercase(g))>-1))return g}}var k=a.split("_");return k.length>1&&L(b,angular.lowercase(k[0]))>-1?k[0]:void 0}},O=function(a,b){if(!a&&!b)return u;if(a&&!b){if(angular.isString(a))return u[a]}else angular.isObject(u[a])||(u[a]={}),angular.extend(u[a],P(b));return this};this.translations=O,this.cloakClassName=function(a){return a?(y=a,this):y},this.nestedObjectDelimeter=function(a){return a?(B=a,this):B};var P=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(h=a[e],angular.isObject(h)?P(h,b.concat(e),c,e):(f=b.length?""+b.join(B)+B+e:e,b.length&&e===d&&(g=""+b.join(B),c[g]="@:"+f),c[f]=h));return c};P.displayName="flatObject",this.addInterpolation=function(a){return x.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return n=a,this},this.useSanitizeValueStrategy=function(a){return c.useStrategy(a),this},this.preferredLanguage=function(a){return a?(Q(a),this):e};var Q=function(a){return a&&(e=a),e};this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(q=a,this):q},this.translationNotFoundIndicatorRight=function(a){return a?(r=a,this):r},this.fallbackLanguage=function(a){return R(a),this};var R=function(a){return a?(angular.isString(a)?(h=!0,g=[a]):angular.isArray(a)&&(h=!1,g=a),angular.isString(e)&&L(g,e)<0&&g.push(e),this):h?g[0]:g};this.use=function(a){if(a){if(!u[a]&&!o)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return i=a,this}return i},this.resolveClientLocale=function(){return K()};var S=function(a){return a?(w=a,this):l?l+w:w};this.storageKey=S,this.useUrlLoader=function(a,b){return this.useLoader("$translateUrlLoader",angular.extend({url:a},b))},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return o=a,p=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return k=a,this},this.storagePrefix=function(a){return a?(l=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return m=a,this},this.usePostCompiling=function(a){return z=!!a,this},this.forceAsyncReload=function(a){return A=!!a,this},this.uniformLanguageTag=function(a){return a?angular.isString(a)&&(a={standard:a}):a={},G=a.standard,this},this.determinePreferredLanguage=function(a){var b=a&&angular.isFunction(a)?a():K();return e=v.length?N(b)||b:b,this},this.registerAvailableLanguageKeys=function(a,b){return a?(v=a,b&&(f=b),this):v},this.useLoaderCache=function(a){return a===!1?s=void 0:a===!0?s=!0:"undefined"==typeof a?s="$translationCache":a&&(s=a),this},this.directivePriority=function(a){return void 0===a?E:(E=a,this)},this.statefulFilter=function(a){return void 0===a?F:(F=a,this)},this.postProcess=function(a){return t=a?a:void 0,this},this.keepContent=function(a){return D=!!a,this},this.$get=["$log","$injector","$rootScope","$q",function(a,b,c,d){var f,l,G,H=b.get(n||"$translateDefaultInterpolation"),J=!1,T={},U={},V=function(a,b,c,h,j){!i&&e&&(i=e);var m=j&&j!==i?N(j)||j:i;if(j&&ka(j),angular.isArray(a)){var n=function(a){for(var e={},f=[],g=function(a){var f=d.defer(),g=function(b){e[a]=b,f.resolve([a,b])};return V(a,b,c,h,j).then(g,g),f.promise},i=0,k=a.length;i0?G:l,a,b,c,d)},fa=function(a,b,c){return da(G>0?G:l,a,b,c)},ga=function(a,b,c,e,f){var h=d.defer(),i=f?u[f]:u,j=c?T[c]:H;if(i&&Object.prototype.hasOwnProperty.call(i,a)){var k=i[a];if("@:"===k.substr(0,2))V(k.substr(2),b,c,e,f).then(h.resolve,h.reject);else{var l=j.interpolate(k,b);l=ja(a,k,l,b,f),h.resolve(l)}}else{var n;m&&!J&&(n=ba(a,b,e)),f&&g&&g.length?ea(a,b,j,e).then(function(a){h.resolve(a)},function(a){h.reject(W(a))}):m&&!J&&n?e?h.resolve(e):h.resolve(n):e?h.resolve(e):h.reject(W(a))}return h.promise},ha=function(a,b,c,d){var e,f=d?u[d]:u,h=H;if(T&&Object.prototype.hasOwnProperty.call(T,c)&&(h=T[c]),f&&Object.prototype.hasOwnProperty.call(f,a)){var i=f[a];"@:"===i.substr(0,2)?e=ha(i.substr(2),b,c,d):(e=h.interpolate(i,b),e=ja(a,i,e,b,d))}else{var j;m&&!J&&(j=ba(a,b)),d&&g&&g.length?(l=0,e=fa(a,b,h)):e=m&&!J&&j?j:W(a)}return e},ia=function(a){j===a&&(j=void 0),U[a]=void 0},ja=function(a,c,d,e,f){var g=t;return g&&("string"==typeof g&&(g=b.get(g)),g)?g(a,c,d,e,f):d},ka=function(a){u[a]||!o||U[a]||(U[a]=Y(a).then(function(a){return O(a.key,a.table),a}))};V.preferredLanguage=function(a){return a&&Q(a),e},V.cloakClassName=function(){return y},V.nestedObjectDelimeter=function(){return B},V.fallbackLanguage=function(a){if(void 0!==a&&null!==a){if(R(a),o&&g&&g.length)for(var b=0,c=g.length;b-1&&(G=b)}else G=0},V.proposedLanguage=function(){return j},V.storage=function(){return f},V.negotiateLocale=N,V.use=function(a){if(!a)return i;var b=d.defer();c.$emit("$translateChangeStart",{language:a});var e=N(a);return v.length>0&&!e?d.reject(a):(e&&(a=e),j=a,!A&&u[a]||!o||U[a]?U[a]?U[a].then(function(a){return j===a.key&&X(a.key),b.resolve(a.key),a},function(a){return!i&&g&&g.length>0?V.use(g[0]).then(b.resolve,b.reject):b.reject(a)}):(b.resolve(a),X(a)):(U[a]=Y(a).then(function(c){return O(c.key,c.table),b.resolve(c.key),j===a&&X(c.key),c},function(a){return c.$emit("$translateChangeError",{language:a}),b.reject(a),c.$emit("$translateChangeEnd",{language:a}),d.reject(a)}),U[a]["finally"](function(){ia(a)})),b.promise)},V.resolveClientLocale=function(){return K()},V.storageKey=function(){return S()},V.isPostCompilingEnabled=function(){return z},V.isForceAsyncReloadEnabled=function(){return A},V.isKeepContent=function(){return D},V.refresh=function(a){function b(){f.resolve(),c.$emit("$translateRefreshEnd",{language:a})}function e(){f.reject(),c.$emit("$translateRefreshEnd",{language:a})}if(!o)throw new Error("Couldn't refresh translation table, no loader registered!");var f=d.defer();if(c.$emit("$translateRefreshStart",{language:a}),a)if(u[a]){var h=function(c){return O(c.key,c.table),a===i&&X(i),b(),c};h.displayName="refreshPostProcessor",Y(a).then(h,e)}else e();else{var j=[],k={};if(g&&g.length)for(var l=0,m=g.length;l0?v:null};var ma=c.$on("$translateReady",function(){la.resolve(),ma(),ma=null}),na=c.$on("$translateChangeEnd",function(){la.resolve(),na(),na=null});if(o){if(angular.equals(u,{})&&V.use()&&V.use(V.use()),g&&g.length)for(var oa=function(a){return O(a.key,a.table),c.$emit("$translateChangeEnd",{language:a.key}),a},pa=0,qa=g.length;pa-1&&(this.__origError=f,a.apply(this,[b,"_fix_for_ie_crossdomain__",e]))}}}),a("getResponseHeader",function(a){return function(b){return this.__fileApiXHR&&this.__fileApiXHR.getResponseHeader?this.__fileApiXHR.getResponseHeader(b):null==a?null:a.apply(this,[b])}}),a("getAllResponseHeaders",function(a){return function(){return this.__fileApiXHR&&this.__fileApiXHR.getAllResponseHeaders?this.__fileApiXHR.getAllResponseHeaders():null==a?null:a.apply(this)}}),a("abort",function(a){return function(){return this.__fileApiXHR&&this.__fileApiXHR.abort?this.__fileApiXHR.abort():null==a?null:a.apply(this)}}),a("setRequestHeader",function(a){return function(b,d){if("__setXHR_"===b){c(this);var e=d(this);e instanceof Function&&e(this)}else this.__requestHeaders=this.__requestHeaders||{},this.__requestHeaders[b]=d,a.apply(this,arguments)}}),a("send",function(a){return function(){var c=this;if(arguments[0]&&arguments[0].__isFileAPIShim){var d=arguments[0],e={url:c.__url,jsonp:!1,cache:!0,complete:function(a,d){a&&angular.isString(a)&&-1!==a.indexOf("#2174")&&(a=null),c.__completed=!0,!a&&c.__listeners.load&&c.__listeners.load({type:"load",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),!a&&c.__listeners.loadend&&c.__listeners.loadend({type:"loadend",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),"abort"===a&&c.__listeners.abort&&c.__listeners.abort({type:"abort",loaded:c.__loaded,total:c.__total,target:c,lengthComputable:!0}),void 0!==d.status&&b(c,"status",function(){return 0===d.status&&a&&"abort"!==a?500:d.status}),void 0!==d.statusText&&b(c,"statusText",function(){return d.statusText}),b(c,"readyState",function(){return 4}),void 0!==d.response&&b(c,"response",function(){return d.response});var e=d.responseText||(a&&0===d.status&&"abort"!==a?a:void 0);b(c,"responseText",function(){return e}),b(c,"response",function(){return e}),a&&b(c,"err",function(){return a}),c.__fileApiXHR=d,c.onreadystatechange&&c.onreadystatechange(),c.onload&&c.onload()},progress:function(a){if(a.target=c,c.__listeners.progress&&c.__listeners.progress(a),c.__total=a.total,c.__loaded=a.loaded,a.total===a.loaded){var b=this;setTimeout(function(){c.__completed||(c.getAllResponseHeaders=function(){},b.complete(null,{status:204,statusText:"No Content"}))},FileAPI.noContentTimeout||1e4)}},headers:c.__requestHeaders};e.data={},e.files={};for(var f=0;f-1){e=h.substring(0,g+1);break}null==FileAPI.staticPath&&(FileAPI.staticPath=e),i.setAttribute("src",d||e+"FileAPI.min.js"),document.getElementsByTagName("head")[0].appendChild(i)}FileAPI.ngfFixIE=function(d,e,f){if(!b())throw'Adode Flash Player need to be installed. To check ahead use "FileAPI.hasFlash"';var g=function(){var b=e.parent();d.attr("disabled")?b&&b.removeClass("js-fileapi-wrapper"):(e.attr("__ngf_flash_")||(e.unbind("change"),e.unbind("click"),e.bind("change",function(a){h.apply(this,[a]),f.apply(this,[a])}),e.attr("__ngf_flash_","true")),b.addClass("js-fileapi-wrapper"),a(d)||(b.css("position","absolute").css("top",c(d[0]).top+"px").css("left",c(d[0]).left+"px").css("width",d[0].offsetWidth+"px").css("height",d[0].offsetHeight+"px").css("filter","alpha(opacity=0)").css("display",d.css("display")).css("overflow","hidden").css("z-index","900000").css("visibility","visible"),e.css("width",d[0].offsetWidth+"px").css("height",d[0].offsetHeight+"px").css("position","absolute").css("top","0px").css("left","0px")))};d.bind("mouseenter",g);var h=function(a){for(var b=FileAPI.getFiles(a),c=0;c0},this.rename=function(a,b){return a.ngfName=b,a},this.jsonBlob=function(a){null==a||angular.isString(a)||(a=JSON.stringify(a));var b=new window.Blob([a],{type:"application/json"});return b._ngfBlob=!0,b},this.json=function(a){return angular.toJson(a)},this.isFile=function(a){return null!=a&&(a instanceof window.Blob||a.flashId&&a.name&&a.size)},this.upload=function(a,b){function c(b,c){if(b._ngfBlob)return b;if(a._file=a._file||b,null!=a._start&&g){a._end&&a._end>=b.size&&(a._finished=!0,a._end=b.size);var d=b.slice(a._start,a._end||b.size);return d.name=b.name,d.ngfName=b.ngfName,a._chunkSize&&(c.append("_chunkSize",a._chunkSize),c.append("_currentChunkSize",a._end-a._start),c.append("_chunkNumber",Math.floor(a._start/a._chunkSize)),c.append("_totalSize",a._file.size)),d}return b}function h(b,d,e){if(void 0!==d)if(angular.isDate(d)&&(d=d.toISOString()),angular.isString(d))b.append(e,d);else if(f.isFile(d)){var g=c(d,b),i=e.split(",");i[1]&&(g.ngfName=i[1].replace(/^\s+|\s+$/g,""),e=i[0]),a._fileKey=a._fileKey||e,b.append(e,g,g.ngfName||g.name)}else if(angular.isObject(d)){if(d.$$ngfCircularDetection)throw"ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: "+e;d.$$ngfCircularDetection=!0;try{for(var j in d)if(d.hasOwnProperty(j)&&"$$ngfCircularDetection"!==j){var k=null==a.objectKey?"[i]":a.objectKey;d.length&&parseInt(j)>-1&&(k=null==a.arrayKey?k:a.arrayKey),h(b,d[j],e+k.replace(/[ik]/g,j))}}finally{delete d.$$ngfCircularDetection}}else b.append(e,d)}function i(){a._chunkSize=f.translateScalars(a.resumeChunkSize),a._chunkSize=a._chunkSize?parseInt(a._chunkSize.toString()):null,a.headers=a.headers||{},a.headers["Content-Type"]=void 0,a.transformRequest=a.transformRequest?angular.isArray(a.transformRequest)?a.transformRequest:[a.transformRequest]:[],a.transformRequest.push(function(b){var c,d=new window.FormData;b=b||a.fields||{},a.file&&(b.file=a.file);for(c in b)if(b.hasOwnProperty(c)){var e=b[c];a.formDataAppender?a.formDataAppender(d,c,e):h(d,e,c)}return d})}return b||(a=e(a)),a._isDigested||(a._isDigested=!0,i()),d(a)},this.http=function(b){return b=e(b),b.transformRequest=b.transformRequest||function(b){return window.ArrayBuffer&&b instanceof window.ArrayBuffer||b instanceof window.Blob?b:a.defaults.transformRequest[0].apply(this,arguments)},b._chunkSize=f.translateScalars(b.resumeChunkSize),b._chunkSize=b._chunkSize?parseInt(b._chunkSize.toString()):null,d(b)},this.translateScalars=function(a){if(angular.isString(a)){if(a.search(/kb/i)===a.length-2)return parseFloat(1024*a.substring(0,a.length-2));if(a.search(/mb/i)===a.length-2)return parseFloat(1048576*a.substring(0,a.length-2));if(a.search(/gb/i)===a.length-2)return parseFloat(1073741824*a.substring(0,a.length-2));if(a.search(/b/i)===a.length-1)return parseFloat(a.substring(0,a.length-1));if(a.search(/s/i)===a.length-1)return parseFloat(a.substring(0,a.length-1));if(a.search(/m/i)===a.length-1)return parseFloat(60*a.substring(0,a.length-1));if(a.search(/h/i)===a.length-1)return parseFloat(3600*a.substring(0,a.length-1))}return a},this.urlToBlob=function(c){var d=b.defer();return a({url:c,method:"get",responseType:"arraybuffer"}).then(function(a){var b=new Uint8Array(a.data),e=a.headers("content-type")||"image/WebP",f=new window.Blob([b],{type:e}),g=c.match(/.*\/(.+?)(\?.*)?$/);g.length>1&&(f.name=g[1]),d.resolve(f)},function(a){d.reject(a)}),d.promise},this.setDefaults=function(a){this.defaults=a||{}},this.defaults={},this.version=ngFileUpload.version}]),ngFileUpload.service("Upload",["$parse","$timeout","$compile","$q","UploadExif",function(a,b,c,d,e){function f(a,b,c){var e=[i.emptyPromise()];return angular.forEach(a,function(d,f){0===d.type.indexOf("image/jpeg")&&i.attrGetter("ngfFixOrientation",b,c,{$file:d})&&e.push(i.happyPromise(i.applyExifRotation(d),d).then(function(b){a.splice(f,1,b)}))}),d.all(e)}function g(a,b,c,e){var f=i.attrGetter("ngfResize",b,c);if(!f||!i.isResizeSupported()||!a.length)return i.emptyPromise();if(f instanceof Function){var g=d.defer();return f(a).then(function(d){h(d,a,b,c,e).then(function(a){g.resolve(a)},function(a){g.reject(a)})},function(a){g.reject(a)})}return h(f,a,b,c,e)}function h(a,b,c,e,f){function g(d,g){if(0===d.type.indexOf("image")){if(a.pattern&&!i.validatePattern(d,a.pattern))return;a.resizeIf=function(a,b){return i.attrGetter("ngfResizeIf",c,e,{$width:a,$height:b,$file:d})};var j=i.resize(d,a);h.push(j),j.then(function(a){b.splice(g,1,a)},function(a){d.$error="resize",(d.$errorMessages=d.$errorMessages||{}).resize=!0,d.$errorParam=(a?(a.message?a.message:a)+": ":"")+(d&&d.name),f.$ngfValidations.push({name:"resize",valid:!1}),i.applyModelValidation(f,b)})}}for(var h=[i.emptyPromise()],j=0;j-1},i.emptyPromise=function(){var a=d.defer(),c=arguments;return b(function(){a.resolve.apply(a,c)}),a.promise},i.rejectPromise=function(){var a=d.defer(),c=arguments;return b(function(){a.reject.apply(a,c)}),a.promise},i.happyPromise=function(a,c){var e=d.defer();return a.then(function(a){e.resolve(a)},function(a){b(function(){throw a}),e.resolve(c)}),e.promise},i.updateModel=function(c,d,e,h,j,k,l){function m(f,g,j,l,m){d.$$ngfPrevValidFiles=f,d.$$ngfPrevInvalidFiles=g;var n=f&&f.length?f[0]:null,o=g&&g.length?g[0]:null;c&&(i.applyModelValidation(c,f),c.$setViewValue(m?n:f)),h&&a(h)(e,{$files:f,$file:n,$newFiles:j,$duplicateFiles:l,$invalidFiles:g,$invalidFile:o,$event:k});var p=i.attrGetter("ngfModelInvalid",d);p&&b(function(){a(p).assign(e,m?o:g)}),b(function(){})}function n(){function a(a,b){return a.name===b.name&&(a.$ngfOrigSize||a.size)===(b.$ngfOrigSize||b.size)&&a.type===b.type}function b(b){var c;for(c=0;c-1&&(v.splice(d,1),u.push(c)),a()}}})}var q,r,s,t=[],u=[],v=[];r=d.$$ngfPrevValidFiles||[],s=d.$$ngfPrevInvalidFiles||[],c&&c.$modelValue&&(r=o(c.$modelValue));var w=i.attrGetter("ngfKeep",d,e);q=(j||[]).slice(0),("distinct"===w||i.attrGetter("ngfKeepDistinct",d,e)===!0)&&n(d,e);var x=!w&&!i.attrGetter("ngfMultiple",d,e)&&!i.attrGetter("multiple",d);if(!w||q.length){i.attrGetter("ngfBeforeModelChange",d,e,{$files:j,$file:j&&j.length?j[0]:null,$newFiles:q,$duplicateFiles:t,$event:k});var y=i.attrGetter("ngfValidateAfterResize",d,e),z=i.attrGetter("ngfModelOptions",d,e);i.validate(q,w?r.length:0,c,d,e).then(function(a){l?m(q,[],j,t,x):(z&&z.allowInvalid||y?v=q:(v=a.validFiles,u=a.invalidFiles),i.attrGetter("ngfFixOrientation",d,e)&&i.isExifSupported()?f(v,d,e).then(function(){p()}):p())})}},i}]),ngFileUpload.directive("ngfSelect",["$parse","$timeout","$compile","Upload",function(a,b,c,d){function e(a){var b=a.match(/Android[^\d]*(\d+)\.(\d+)/);if(b&&b.length>2){var c=d.defaults.androidFixMinorVersion||4;return parseInt(b[1])<4||parseInt(b[1])===c&&parseInt(b[2])'),c=angular.element("");return c.css("visibility","hidden").css("position","absolute").css("overflow","hidden").css("width","0px").css("height","0px").css("border","none").css("margin","0px").css("padding","0px").attr("tabindex","-1"),n(a,c),g.push({el:b,ref:c}),document.body.appendChild(c.append(a)[0]),a}function p(c){if(b.attr("disabled"))return!1;if(!t("ngfSelectDisabled",a)){var d=q(c);if(null!=d)return d;r(c);try{k()||document.body.contains(x[0])||(g.push({el:b,ref:x.parent()}),document.body.appendChild(x.parent()[0]),x.bind("change",m))}catch(f){}return e(navigator.userAgent)?setTimeout(function(){x[0].click()},0):x[0].click(),!1}}function q(a){var b=a.changedTouches||a.originalEvent&&a.originalEvent.changedTouches;if(b){if("touchstart"===a.type)return w=b[0].clientX,v=b[0].clientY,!0;if("touchend"===a.type){var c=b[0].clientX,d=b[0].clientY;if(Math.abs(c-w)>20||Math.abs(d-v)>20)return a.stopPropagation(),a.preventDefault(),!1}return!0}}function r(b){j.shouldUpdateOn("click",c,a)&&x.val()&&(x.val(null),j.updateModel(d,c,a,l(),null,b,!0))}function s(a){if(x&&!x.attr("__ngf_ie10_Fix_")){if(!x[0].parentNode)return void(x=null);a.preventDefault(),a.stopPropagation(),x.unbind("click");var b=x.clone();return x.replaceWith(b),x=b,x.attr("__ngf_ie10_Fix_","true"),x.bind("change",m),x.bind("click",s),x[0].click(),!1}x.removeAttr("__ngf_ie10_Fix_")}var t=function(a,b){return j.attrGetter(a,c,b)};j.registerModelChangeValidator(d,c,a);var u=[];t("ngfMultiple")&&u.push(a.$watch(t("ngfMultiple"),function(){x.attr("multiple",t("ngfMultiple",a))})),t("ngfCapture")&&u.push(a.$watch(t("ngfCapture"),function(){x.attr("capture",t("ngfCapture",a))})),t("ngfAccept")&&u.push(a.$watch(t("ngfAccept"),function(){x.attr("accept",t("ngfAccept",a))})),u.push(c.$observe("accept",function(){x.attr("accept",t("accept"))}));var v=0,w=0,x=b;k()||(x=o()),x.bind("change",m),k()?b.bind("click",r):b.bind("click touchstart touchend",p),-1!==navigator.appVersion.indexOf("MSIE 10")&&x.bind("click",s),d&&d.$formatters.push(function(a){return(null==a||0===a.length)&&x.val()&&x.val(null),a}),a.$on("$destroy",function(){k()||x.parent().remove(),angular.forEach(u,function(a){a()})}),h(function(){for(var a=0;a-1&&l.height&&l.height.indexOf("px")>-1&&(k={width:parseInt(l.width.slice(0,-2)),height:parseInt(l.height.slice(0,-2))})}return angular.isString(c)?(e.removeClass("ng-hide"),i?e.css("background-image","url('"+c+"')"):e.attr("src",c)):void(!c||!c.type||0!==c.type.search(a(e[0]))||i&&0!==c.type.indexOf("image")?e.addClass("ng-hide"):k&&b.isResizeSupported()?(k.resizeIf=function(a,e){return b.attrGetter("ngfResizeIf",f,d,{$width:a,$height:e,$file:c})},b.resize(c,k).then(function(a){j(a)},function(a){throw a})):j(c))});d.$on("$destroy",function(){c()})})}ngFileUpload.service("UploadDataUrl",["UploadBase","$timeout","$q",function(a,b,c){var d=a;return d.base64DataUrl=function(a){if(angular.isArray(a)){var b=c.defer(),e=0;return angular.forEach(a,function(c){d.dataUrl(c,!0)["finally"](function(){if(e++,e===a.length){var c=[];angular.forEach(a,function(a){c.push(a.$ngfDataUrl)}),b.resolve(c,a)}})}),b.promise}return d.dataUrl(a,!0)},d.dataUrl=function(a,e){if(!a)return d.emptyPromise(a,a);if(e&&null!=a.$ngfDataUrl||!e&&null!=a.$ngfBlobUrl)return d.emptyPromise(e?a.$ngfDataUrl:a.$ngfBlobUrl,a);var f=e?a.$$ngfDataUrlPromise:a.$$ngfBlobUrlPromise;if(f)return f;var g=c.defer();return b(function(){if(window.FileReader&&a&&(!window.FileAPI||-1===navigator.userAgent.indexOf("MSIE 8")||a.size<2e4)&&(!window.FileAPI||-1===navigator.userAgent.indexOf("MSIE 9")||a.size<4e6)){var c=window.URL||window.webkitURL;if(c&&c.createObjectURL&&!e){var f;try{f=c.createObjectURL(a)}catch(h){return void b(function(){a.$ngfBlobUrl="",g.reject()})}b(function(){if(a.$ngfBlobUrl=f,f){g.resolve(f,a),d.blobUrls=d.blobUrls||[],d.blobUrlsTotalSize=d.blobUrlsTotalSize||0,d.blobUrls.push({url:f,size:a.size}),d.blobUrlsTotalSize+=a.size||0;for(var b=d.defaults.blobUrlsMaxMemory||268435456,e=d.defaults.blobUrlsMaxQueueSize||200;(d.blobUrlsTotalSize>b||d.blobUrls.length>e)&&d.blobUrls.length>1;){var h=d.blobUrls.splice(0,1)[0];c.revokeObjectURL(h.url),d.blobUrlsTotalSize-=h.size}}})}else{var i=new FileReader;i.onload=function(c){b(function(){a.$ngfDataUrl=c.target.result,g.resolve(c.target.result,a),b(function(){delete a.$ngfDataUrl},1e3)})},i.onerror=function(){b(function(){a.$ngfDataUrl="",g.reject()})},i.readAsDataURL(a)}}else b(function(){a[e?"$ngfDataUrl":"$ngfBlobUrl"]="",g.reject()})}),f=e?a.$$ngfDataUrlPromise=g.promise:a.$$ngfBlobUrlPromise=g.promise,f["finally"](function(){delete a[e?"$$ngfDataUrlPromise":"$$ngfBlobUrlPromise"]}),f},d}]),ngFileUpload.directive("ngfSrc",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){b(a,c,d,e,f,"ngfSrc",a.attrGetter("ngfResize",f,d),!1)}}}]),ngFileUpload.directive("ngfBackground",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){b(a,c,d,e,f,"ngfBackground",a.attrGetter("ngfResize",f,d),!0)}}}]),ngFileUpload.directive("ngfThumbnail",["Upload","$timeout",function(a,c){return{restrict:"AE",link:function(d,e,f){var g=a.attrGetter("ngfSize",f,d);b(a,c,d,e,f,"ngfThumbnail",g,a.attrGetter("ngfAsBackground",f,d))}}}]),ngFileUpload.config(["$compileProvider",function(a){a.imgSrcSanitizationWhitelist&&a.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/),a.aHrefSanitizationWhitelist&&a.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/); +}]),ngFileUpload.filter("ngfDataUrl",["UploadDataUrl","$sce",function(a,b){return function(c,d,e){if(angular.isString(c))return b.trustAsResourceUrl(c);var f=c&&((d?c.$ngfDataUrl:c.$ngfBlobUrl)||c.$ngfDataUrl);return c&&!f?(!c.$ngfDataUrlFilterInProgress&&angular.isObject(c)&&(c.$ngfDataUrlFilterInProgress=!0,a.dataUrl(c,d)),""):(c&&delete c.$ngfDataUrlFilterInProgress,(c&&f?e?b.trustAsResourceUrl(f):f:c)||"")}}])}(),ngFileUpload.service("UploadValidate",["UploadDataUrl","$q","$timeout",function(a,b,c){function d(a){var b="",c=[];if(a.length>2&&"/"===a[0]&&"/"===a[a.length-1])b=a.substring(1,a.length-1);else{var e=a.split(",");if(e.length>1)for(var f=0;f|:\\-]","g"),"\\$&")+"$",b=b.replace(/\\\*/g,".*").replace(/\\\?/g,"."))}return{regexp:b,excludes:c}}function e(a,b){null==b||a.$dirty||(a.$setDirty?a.$setDirty():a.$dirty=!0)}var f=a;return f.validatePattern=function(a,b){if(!b)return!0;var c=d(b),e=!0;if(c.regexp&&c.regexp.length){var f=new RegExp(c.regexp,"i");e=null!=a.type&&f.test(a.type)||null!=a.name&&f.test(a.name)}for(var g=c.excludes.length;g--;){var h=new RegExp(c.excludes[g],"i");e=e&&(null==a.type||h.test(a.type))&&(null==a.name||h.test(a.name))}return e},f.ratioToFloat=function(a){var b=a.toString(),c=b.search(/[x:]/i);return b=c>-1?parseFloat(b.substring(0,c))/parseFloat(b.substring(c+1)):parseFloat(b)},f.registerModelChangeValidator=function(a,b,c){a&&a.$formatters.push(function(d){if(a.$dirty){var e=d;d&&!angular.isArray(d)&&(e=[d]),f.validate(e,0,a,b,c).then(function(){f.applyModelValidation(a,e)})}return d})},f.applyModelValidation=function(a,b){e(a,b),angular.forEach(a.$ngfValidations,function(b){a.$setValidity(b.name,b.valid)})},f.getValidationAttr=function(a,b,c,d,e){var g="ngf"+c[0].toUpperCase()+c.substr(1),h=f.attrGetter(g,a,b,{$file:e});if(null==h&&(h=f.attrGetter("ngfValidate",a,b,{$file:e}))){var i=(d||c).split(".");h=h[i[0]],i.length>1&&(h=h&&h[i[1]])}return h},f.validate=function(a,c,d,e,g){function h(b,c,h){if(a){for(var i=a.length,j=null;i--;){var n=a[i];if(n){var o=f.getValidationAttr(e,g,b,c,n);null!=o&&(h(n,o,i)||(-1===k.indexOf(b)?(n.$error=b,(n.$errorMessages=n.$errorMessages||{})[b]=!0,n.$errorParam=o,-1===m.indexOf(n)&&m.push(n),l||a.splice(i,1),j=!1):a.splice(i,1)))}}null!==j&&d.$ngfValidations.push({name:b,valid:j})}}function i(c,h,i,n,o){function p(b,d,e){function f(f){if(f())if(-1===k.indexOf(c)){if(d.$error=c,(d.$errorMessages=d.$errorMessages||{})[c]=!0,d.$errorParam=e,-1===m.indexOf(d)&&m.push(d),!l){var g=a.indexOf(d);g>-1&&a.splice(g,1)}b.resolve(!1)}else{var h=a.indexOf(d);h>-1&&a.splice(h,1),b.resolve(!0)}else b.resolve(!0)}null!=e?n(d,e).then(function(a){f(function(){return!o(a,e)})},function(){f(function(){return j("ngfValidateForce",{$file:d})})}):b.resolve(!0)}var q=[f.emptyPromise(!0)];a&&(a=void 0===a.length?[a]:a,angular.forEach(a,function(a){var d=b.defer();return q.push(d.promise),!i||null!=a.type&&0===a.type.search(i)?void("dimensions"===c&&null!=f.attrGetter("ngfDimensions",e)?f.imageDimensions(a).then(function(b){p(d,a,j("ngfDimensions",{$file:a,$width:b.width,$height:b.height}))},function(){d.resolve(!1)}):"duration"===c&&null!=f.attrGetter("ngfDuration",e)?f.mediaDuration(a).then(function(b){p(d,a,j("ngfDuration",{$file:a,$duration:b}))},function(){d.resolve(!1)}):p(d,a,f.getValidationAttr(e,g,c,h,a))):void d.resolve(!0)}));var r=b.defer();return b.all(q).then(function(a){for(var b=!0,e=0;e=f.translateScalars(b)}),h("maxSize","size.max",function(a,b){return a.size-.1<=f.translateScalars(b)});var n=0;if(h("maxTotalSize",null,function(b,c){return n+=b.size,!(n>f.translateScalars(c))||(a.splice(0,a.length),!1)}),h("validateFn",null,function(a,b){return b===!0||null===b||""===b}),!a.length)return f.emptyPromise({validFiles:[],invalidFiles:m});var o=b.defer(),p=[];return p.push(i("maxHeight","height.max",/image/,this.imageDimensions,function(a,b){return a.height<=b})),p.push(i("minHeight","height.min",/image/,this.imageDimensions,function(a,b){return a.height>=b})),p.push(i("maxWidth","width.max",/image/,this.imageDimensions,function(a,b){return a.width<=b})),p.push(i("minWidth","width.min",/image/,this.imageDimensions,function(a,b){return a.width>=b})),p.push(i("dimensions",null,/image/,function(a,b){return f.emptyPromise(b)},function(a){return a})),p.push(i("ratio",null,/image/,this.imageDimensions,function(a,b){for(var c=b.toString().split(","),d=!1,e=0;e-1e-4})),p.push(i("maxDuration","duration.max",/audio|video/,this.mediaDuration,function(a,b){return a<=f.translateScalars(b)})),p.push(i("minDuration","duration.min",/audio|video/,this.mediaDuration,function(a,b){return a>=f.translateScalars(b)})),p.push(i("duration",null,/audio|video/,function(a,b){return f.emptyPromise(b)},function(a){return a})),p.push(i("validateAsyncFn",null,null,function(a,b){return b},function(a){return a===!0||null===a||""===a})),b.all(p).then(function(){if(l)for(var b=0;bc+d}),o.resolve({validFiles:a,invalidFiles:m})}),o.promise},f.imageDimensions=function(a){if(a.$ngfWidth&&a.$ngfHeight){var d=b.defer();return c(function(){d.resolve({width:a.$ngfWidth,height:a.$ngfHeight})}),d.promise}if(a.$ngfDimensionPromise)return a.$ngfDimensionPromise;var e=b.defer();return c(function(){return 0!==a.type.indexOf("image")?void e.reject("not image"):void f.dataUrl(a).then(function(b){function d(){var b=h[0].naturalWidth||h[0].clientWidth,c=h[0].naturalHeight||h[0].clientHeight;h.remove(),a.$ngfWidth=b,a.$ngfHeight=c,e.resolve({width:b,height:c})}function f(){h.remove(),e.reject("load error")}function g(){c(function(){h[0].parentNode&&(h[0].clientWidth?d():i++>10?f():g())},1e3)}var h=angular.element("").attr("src",b).css("visibility","hidden").css("position","fixed").css("max-width","none !important").css("max-height","none !important");h.on("load",d),h.on("error",f);var i=0;g(),angular.element(document.getElementsByTagName("body")[0]).append(h)},function(){e.reject("load error")})}),a.$ngfDimensionPromise=e.promise,a.$ngfDimensionPromise["finally"](function(){delete a.$ngfDimensionPromise}),a.$ngfDimensionPromise},f.mediaDuration=function(a){if(a.$ngfDuration){var d=b.defer();return c(function(){d.resolve(a.$ngfDuration)}),d.promise}if(a.$ngfDurationPromise)return a.$ngfDurationPromise;var e=b.defer();return c(function(){return 0!==a.type.indexOf("audio")&&0!==a.type.indexOf("video")?void e.reject("not media"):void f.dataUrl(a).then(function(b){function d(){var b=h[0].duration;a.$ngfDuration=b,h.remove(),e.resolve(b)}function f(){h.remove(),e.reject("load error")}function g(){c(function(){h[0].parentNode&&(h[0].duration?d():i>10?f():g())},1e3)}var h=angular.element(0===a.type.indexOf("audio")?"