From 032d12641ee7c07663ca11379f3d8a1b5aefe34d Mon Sep 17 00:00:00 2001 From: Dmitriy Shekhovtsov Date: Thu, 12 May 2016 16:05:08 +0300 Subject: [PATCH] Updates --- .editorconfig | 11 - .eslintrc | 200 - .gitignore | 20 - angular2-bootstrap-demo.js | 37516 ++++++++++++++++ angular2-bootstrap-demo.js.map | 1 + ...r2-file-upload.js => angular2-bootstrap.js | 1087 +- angular2-bootstrap.js.map | 1 + angular2.js | 24954 ++++++++++ angular2.js.map | 1 + build/angular2-file-upload-demo.js | 12866 ------ build/angular2-file-upload-demo.js.gz | Bin 61515 -> 0 bytes build/angular2-file-upload-demo.js.map | 1 - build/angular2-file-upload-demo.js.map.gz | Bin 760701 -> 0 bytes build/angular2-file-upload.js.gz | Bin 3283 -> 0 bytes build/angular2-file-upload.js.map | 1 - build/angular2-file-upload.js.map.gz | Bin 11296 -> 0 bytes build/angular2.js | 26440 ----------- build/angular2.js.gz | Bin 80990 -> 0 bytes build/angular2.js.map | 1 - build/angular2.js.map.gz | Bin 1603345 -> 0 bytes build/components/file-upload/file-item.d.ts | 40 - build/components/file-upload/file-select.d.ts | 12 - .../demo/components/file-upload-section.d.ts | 5 - .../components/file-upload/simple-demo.d.ts | 8 - build/demo/index.d.ts | 3 - build/ng2-file-upload.d.ts | 4 - .../components/accordion/accordion.d.ts | 38 - .../ng2-bootstrap/components/alert/alert.d.ts | 14 - .../components/buttons/button-checkbox.d.ts | 20 - .../components/buttons/button-radio.d.ts | 18 - .../components/carousel/carousel.d.ts | 43 - .../components/collapse/collapse.d.ts | 12 - .../ng2-bootstrap/components/common.d.ts | 10 - .../components/dropdown/dropdown-menu.d.ts | 9 - .../components/dropdown/dropdown-service.d.ts | 15 - .../components/dropdown/dropdown-toggle.d.ts | 12 - .../components/dropdown/dropdown.d.ts | 24 - .../components/dropdown/index.d.ts | 2 - .../components/ng2-bootstrap-config.d.ts | 8 - .../components/pagination/pagination.d.ts | 71 - .../ng2-bootstrap/components/position.d.ts | 24 - .../components/progressbar/progressbar.d.ts | 32 - .../components/rating/rating.d.ts | 28 - .../ng2-bootstrap/components/tabs/tabs.d.ts | 37 - .../components/timepicker/timepicker.d.ts | 66 - .../components/tooltip/tooltip.d.ts | 18 - .../components/typeahead/latin-map.d.ts | 826 - .../components/typeahead/typeahead-utils.d.ts | 6 - .../components/typeahead/typeahead.d.ts | 76 - .../ng2-bootstrap/ng2-bootstrap.d.ts | 21 - components/file-upload/file-drop.d.ts | 18 - components/file-upload/file-item.d.ts | 40 - components/file-upload/file-like-object.d.ts | 13 - components/file-upload/file-select.d.ts | 12 - components/file-upload/file-uploader.d.ts | 62 - favicon.ico | Bin 5430 -> 0 bytes .../file-upload/file-drop.directive.d.ts | 15 +- .../file-upload/file-item.class.d.ts | 43 + .../file-upload/file-like-object.class.d.ts | 0 .../file-upload/file-select.directive.d.ts | 11 + .../file-upload/file-type.class.d.ts | 9 + .../file-upload/file-uploader.class.d.ts | 71 +- .../demo/components/file-upload-section.d.ts | 4 + .../components/file-upload/simple-demo.d.ts | 8 + .../ng2-file-upload/demo/index.d.ts | 2 + .../ng2-file-upload/ng2-file-upload.d.ts | 8 + index.html | 10 +- ng2-file-upload.d.ts | 4 - ng2-file-upload.js | 10 - ng2-file-upload.js.map | 1 - 70 files changed, 63289 insertions(+), 41654 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc delete mode 100644 .gitignore create mode 100644 angular2-bootstrap-demo.js create mode 100644 angular2-bootstrap-demo.js.map rename build/angular2-file-upload.js => angular2-bootstrap.js (55%) create mode 100644 angular2-bootstrap.js.map create mode 100644 angular2.js create mode 100644 angular2.js.map delete mode 100644 build/angular2-file-upload-demo.js delete mode 100644 build/angular2-file-upload-demo.js.gz delete mode 100644 build/angular2-file-upload-demo.js.map delete mode 100644 build/angular2-file-upload-demo.js.map.gz delete mode 100644 build/angular2-file-upload.js.gz delete mode 100644 build/angular2-file-upload.js.map delete mode 100644 build/angular2-file-upload.js.map.gz delete mode 100644 build/angular2.js delete mode 100644 build/angular2.js.gz delete mode 100644 build/angular2.js.map delete mode 100644 build/angular2.js.map.gz delete mode 100644 build/components/file-upload/file-item.d.ts delete mode 100644 build/components/file-upload/file-select.d.ts delete mode 100644 build/demo/components/file-upload-section.d.ts delete mode 100644 build/demo/components/file-upload/simple-demo.d.ts delete mode 100644 build/demo/index.d.ts delete mode 100644 build/ng2-file-upload.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/accordion/accordion.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/alert/alert.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/buttons/button-checkbox.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/buttons/button-radio.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/carousel/carousel.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/collapse/collapse.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/common.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/dropdown/dropdown-menu.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/dropdown/dropdown-service.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/dropdown/dropdown-toggle.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/dropdown/dropdown.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/dropdown/index.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/ng2-bootstrap-config.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/pagination/pagination.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/position.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/progressbar/progressbar.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/rating/rating.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/tabs/tabs.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/timepicker/timepicker.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/tooltip/tooltip.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/typeahead/latin-map.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/typeahead/typeahead-utils.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/components/typeahead/typeahead.d.ts delete mode 100644 build/node_modules/ng2-bootstrap/ng2-bootstrap.d.ts delete mode 100644 components/file-upload/file-drop.d.ts delete mode 100644 components/file-upload/file-item.d.ts delete mode 100644 components/file-upload/file-like-object.d.ts delete mode 100644 components/file-upload/file-select.d.ts delete mode 100644 components/file-upload/file-uploader.d.ts delete mode 100644 favicon.ico rename build/components/file-upload/file-drop.d.ts => home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-drop.directive.d.ts (55%) create mode 100644 home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-item.class.d.ts rename build/components/file-upload/file-like-object.d.ts => home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-like-object.class.d.ts (100%) create mode 100644 home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-select.directive.d.ts create mode 100644 home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-type.class.d.ts rename build/components/file-upload/file-uploader.d.ts => home/valorkin/work/open-source/ng2-file-upload/components/file-upload/file-uploader.class.d.ts (56%) create mode 100644 home/valorkin/work/open-source/ng2-file-upload/demo/components/file-upload-section.d.ts create mode 100644 home/valorkin/work/open-source/ng2-file-upload/demo/components/file-upload/simple-demo.d.ts create mode 100644 home/valorkin/work/open-source/ng2-file-upload/demo/index.d.ts create mode 100644 home/valorkin/work/open-source/ng2-file-upload/ng2-file-upload.d.ts delete mode 100644 ng2-file-upload.d.ts delete mode 100644 ng2-file-upload.js delete mode 100644 ng2-file-upload.js.map diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index e20a968..0000000 --- a/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -# http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true \ No newline at end of file diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 1025ddc..0000000 --- a/.eslintrc +++ /dev/null @@ -1,200 +0,0 @@ -{ - "env": { - "browser": 2, - "node": 2, - "mocha": 2, - "es6": 2 - }, - "ecmaFeatures": { - "modules": true - }, - "globals": { - "_": 2, - "$": 2, - "angular": 2, - "jQuery": 2 - }, - "rules": { - // Possible Errors - "comma-dangle": 2, - // no-comma-dangle - (deprecated) - "no-cond-assign": [2, "always"], - "no-console": 2, - "no-constant-condition": 2, - "no-control-regex": 2, - "no-debugger": 2, - "no-dupe-keys": 2, - "no-dupe-args": 2, - "no-duplicate-case": 2, - "no-empty-character-class": 2, - // no-empty-class - (deprecated) - "no-empty": 2, - "no-ex-assign": 2, - "no-extra-boolean-cast": 2, - "no-extra-parens": 2, - "no-extra-semi": 2, - "no-func-assign": 2, - "no-inner-declarations": 2, - "no-invalid-regexp": 2, - "no-irregular-whitespace": 2, - "no-negated-in-lhs": 2, - "no-obj-calls": 2, - "no-regex-spaces": 2, - "no-sparse-arrays": 2, - "no-unreachable": 2, - "use-isnan": 2, - "valid-jsdoc": 2, - "valid-typeof": 2, - "no-unexpected-multiline": 2, - - // Best Practices - // not sure - "accessor-pairs": [2, {"getWithoutSet": false, "setWithoutGet": true}], - "block-scoped-var": 2, - "complexity": [2, 6], - "consistent-return": 2, - "curly": 2, - "default-case": 2, - "dot-notation": 2, - // not good for chain calls, but not for properties - "dot-location": [2, "property"], - "eqeqeq": 2, - "guard-for-in": 2, - "no-alert": 2, - "no-caller": 2, - "no-div-regex": 2, - "no-else-return": 2, - "no-empty-label": 2, - "no-eq-null": 2, - "no-eval": 2, - "no-extend-native": 2, - "no-extra-bind": 2, - "no-fallthrough": 2, - "no-floating-decimal": 2, - "no-implied-eval": 2, - "no-iterator": 2, - "no-labels": 2, - "no-lone-blocks": 2, - "no-loop-func": 2, - "no-multi-spaces": 2, - "no-multi-str": 2, - "no-native-reassign": 2, - "no-new": 2, - "no-new-func": 2, - "no-new-wrappers": 2, - "no-octal": 2, - "no-octal-escape": 2, - "no-param-reassign": 2, - "no-process-env": 2, - "no-proto": 2, - "no-redeclare": 2, - "no-return-assign": 2, - "no-script-url": 2, - "no-self-compare": 2, - "no-sequences": 2, - "no-throw-literal": 2, - "no-unused-expressions": 2, - "no-void": 2, - "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "anywhere" }], - "no-with": 2, - "radix": 2, - "vars-on-top": 0, - "wrap-iife": [2, "inside"], - "yoda": [2, "never"], - - // Strict Mode - "strict": [2, "global"], - - // Variables - "no-catch-shadow": 2, - "no-delete-var": 2, - "no-label-var": 2, - "no-shadow": 2, - "no-shadow-restricted-names": 2, - "no-undef": 2, - "no-undef-init": 2, - "no-undefined": 2, - "no-unused-vars": 2, - "no-use-before-define": [2, "nofunc"], - - // Node.js - "handle-callback-err": [2, "^.*(e|E)rr" ], - "no-mixed-requires": [2, true], - "no-new-require": 2, - "no-path-concat": 2, - "no-process-exit": 2, - "no-sync": 2, - - // Stylistic Issues - "array-bracket-spacing": [2, "never"], - "brace-style": [2, "1tbs", { "allowSingleLine": true }], - "camelcase": 2, - "comma-spacing": [2, {"before": false, "after": true}], - "comma-style": [2, "last"], - "computed-property-spacing": [2, "never"], - "consistent-this": [2, "self"], - // not sure - "eol-last": 0, - "func-names": 0, - "func-style": [2, "declaration"], - "indent": [2, 2], - "key-spacing": [2, { "beforeColon": false, "afterColon": true}], - "max-nested-callbacks": [2, 3], - "new-cap": [2, {"newIsCap": true, "capIsNew": true, "capIsNewExceptions":[ - "ObjectId", - "Object", - "Function", - "Number", - "String", - "Boolean", - "Date", - "Array", - "Symbol", - "RegExp" - ]}], - "new-parens": 2, - "newline-after-var": 0, - "no-array-constructor": 2, - "no-inline-comments": 2, - "no-lonely-if": 2, - "no-mixed-spaces-and-tabs": 2, - "no-multiple-empty-lines": [2, {"max": 1}], - "no-nested-ternary": 2, - "no-new-object": 2, - "no-spaced-func": 2, - "no-ternary": 0, - "no-trailing-spaces": 2, - "no-underscore-dangle": 2, - "no-unneeded-ternary": 2, - "object-curly-spacing": [2, "never"], - "one-var": [2, { - "var": "never", // Exactly one var declaration per function - "let": "never", // Exactly one let declaration per block - "const": "never" // Exactly one declarator per const declaration per block - }], - "operator-assignment": [1, "always"], - "operator-linebreak": [2, "after"], - "padded-blocks": [2, "never"], - "quote-props": [2, "as-needed"], - "quotes": [2, "single", "avoid-escape"], - "semi": [2, "always"], - "semi-spacing": 2, - // "sort-vars": [1, { "ignoreCase": true }], - "space-after-keywords": [2, "always" ], - "space-before-blocks": [2, "always"], - "space-in-parens": [2, "never"], - "space-infix-ops": 2, - "space-return-throw-case": 2, - "space-unary-ops": [2, { "words": true, "nonwords": false }], - "spaced-comment": 0, - "wrap-regexp": 0, - - // Legacy - "max-len": [1, 120, 4], - // todo: apply max-params - "max-params": [0, 3], - // todo: apply max-statements - "max-statements": [2, 30], - "no-bitwise": 2 - } -} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 21fa4b6..0000000 --- a/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# Dependency directory -# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git -/node_modules -npm-debug.log - -# type script artifacts -/typings - -# WebStorm -.idea - -# ignore build and dist for now -/dist - -/demo/**/*.js -/demo/**/*.js.map -/components/**/*.js -/components/**/*.js.map - -/logs diff --git a/angular2-bootstrap-demo.js b/angular2-bootstrap-demo.js new file mode 100644 index 0000000..8d6e873 --- /dev/null +++ b/angular2-bootstrap-demo.js @@ -0,0 +1,37516 @@ +webpackJsonp([1],[ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var platform_browser_dynamic_1 = __webpack_require__(401); + var core_1 = __webpack_require__(1); + var common_1 = __webpack_require__(6); + var file_upload_section_1 = __webpack_require__(454); + var gettingStarted = __webpack_require__(426); + var DemoComponent = (function () { + function DemoComponent() { + } + DemoComponent = __decorate([ + core_1.Component({ + selector: 'app', + template: "\n
\n
\n

ng2-file-upload

\n

The Angular2 File Upload directives

\n View on GitHub\n
\n
\n
\n
\n
\n
\n\n
\n
" + gettingStarted + "
\n\n \n
\n\n \n ", + directives: [ + common_1.NgClass, + file_upload_section_1.FileUploadSectionComponent + ] + }), + __metadata('design:paramtypes', []) + ], DemoComponent); + return DemoComponent; + }()); + exports.DemoComponent = DemoComponent; + platform_browser_dynamic_1.bootstrap(DemoComponent); + + +/***/ }, +/* 1 */, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(module) {//! moment.js + //! version : 2.13.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + + ;(function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() + }(this, function () { 'use strict'; + + var hookCallback; + + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + + function valid__isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + m._isValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + m._isValid = m._isValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + function isUndefined(input) { + return input === void 0; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = utils_hooks__hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(null, msg); + } + if (firstTime) { + warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + utils_hooks__hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function isObject(input) { + return Object.prototype.toString.call(input) === '[object Object]'; + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } + } + + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + // internal storage for locale config files + var locales = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + __webpack_require__(427)("./" + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locale_locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = locale_locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, config) { + if (config !== null) { + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale'); + config = mergeConfigs(locales[name]._config, config); + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + config = mergeConfigs(locales[config.parentLocale]._config, config); + } else { + // treat as if there is no base config + deprecateSimple('parentLocaleUndefined', + 'specified parentLocale is not defined yet'); + } + } + locales[name] = new Locale(config); + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + function updateLocale(name, config) { + if (config != null) { + var locale; + if (locales[name] != null) { + config = mergeConfigs(locales[name]._config, config); + } + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + + // returns locale data + function locale_locales__getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function locale_locales__listLocales() { + return keys(locales); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); + } + }; + } + + function get_set__get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } + + function get_set__set (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + // MOMENTS + + function getSet (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + return isArray(this._months) ? this._months[m.month()] : + this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function units_month__handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = create_utc__createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return units_month__handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); + } + } + + utils_hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + //the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; + } + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; + } + + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(utils_hooks__hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // constant that refers to the ISO standard + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (getParsingFlags(config).bigHour === true && + config._a[HOUR] <= 12 && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else if (isDate(input)) { + config._d = input; + } else { + configFromInput(config); + } + + if (!valid__isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(utils_hooks__hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = ((string || '').match(matcher) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + } else if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(matchOffset, this._i)); + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? local__createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + create__createDuration.fn = Duration.prototype; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); + + function moment_calendar__calendar (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function to_type__valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return this._offset ? new Date(this.valueOf()) : this._d; + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function moment_valid__isValid () { + return valid__isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + // FORMATTING + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } + + function day_of_week__handleStrictParse(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = create_utc__createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return day_of_week__handleStrictParse.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = create_utc__createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + } + + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + // FORMATTING + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + // FORMATTING + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + // FORMATTING + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + // FORMATTING + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isSameOrAfter = isSameOrAfter; + momentPrototype__proto.isSameOrBefore = isSameOrBefore; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = toJSON; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + momentPrototype__proto.creationData = creationData; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key]; + return isFunction(output) ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + function preParsePostFormat (string) { + return string; + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } + + var prototype__proto = Locale.prototype; + + prototype__proto._calendar = defaultCalendar; + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto._longDateFormat = defaultLongDateFormat; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto._invalidDate = defaultInvalidDate; + prototype__proto.invalidDate = invalidDate; + prototype__proto._ordinal = defaultOrdinal; + prototype__proto.ordinal = ordinal; + prototype__proto._ordinalParse = defaultOrdinalParse; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto._relativeTime = defaultRelativeTime; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + prototype__proto._monthsRegex = defaultMonthsRegex; + prototype__proto.monthsRegex = monthsRegex; + prototype__proto._monthsShortRegex = defaultMonthsShortRegex; + prototype__proto.monthsShortRegex = monthsShortRegex; + + // Week + prototype__proto.week = localeWeek; + prototype__proto._week = defaultLocaleWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto._weekdays = defaultLocaleWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + prototype__proto._weekdaysRegex = defaultWeekdaysRegex; + prototype__proto.weekdaysRegex = weekdaysRegex; + prototype__proto._weekdaysShortRegex = defaultWeekdaysShortRegex; + prototype__proto.weekdaysShortRegex = weekdaysShortRegex; + prototype__proto._weekdaysMinRegex = defaultWeekdaysMinRegex; + prototype__proto.weekdaysMinRegex = weekdaysMinRegex; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); + } + + function listMonthsImpl (format, index, field) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = lists__get(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = locale_locales__getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return lists__get(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = lists__get(format, (i + shift) % 7, field, 'day'); + } + return out; + } + + function lists__listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } + + function lists__listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } + + function lists__listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } + + function lists__listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } + + function lists__listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } + + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); + + var mathAbs = Math.abs; + + function duration_abs__abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } + + function makeGetter(name) { + return function () { + return this._data[name]; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + var seconds = iso_string__abs(this._milliseconds) / 1000; + var days = iso_string__abs(this._days); + var months = iso_string__abs(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); + } + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + utils_hooks__hooks.version = '2.13.0'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.now = now; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.updateLocale = updateLocale; + utils_hooks__hooks.locales = locale_locales__listLocales; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + utils_hooks__hooks.prototype = momentPrototype; + + var _moment = utils_hooks__hooks; + + return _moment; + + })); + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(141)(module))) + +/***/ }, +/* 3 */ +4, +/* 4 */, +/* 5 */, +/* 6 */, +/* 7 */ +[460, 3], +/* 8 */ +[462, 168, 169, 169], +/* 9 */, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + var lang_1 = __webpack_require__(3); + //// Types + (function (TypeModifier) { + TypeModifier[TypeModifier["Const"] = 0] = "Const"; + })(exports.TypeModifier || (exports.TypeModifier = {})); + var TypeModifier = exports.TypeModifier; + var Type = (function () { + function Type(modifiers) { + if (modifiers === void 0) { modifiers = null; } + this.modifiers = modifiers; + if (lang_1.isBlank(modifiers)) { + this.modifiers = []; + } + } + Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; + return Type; + }()); + exports.Type = Type; + (function (BuiltinTypeName) { + BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic"; + BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool"; + BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String"; + BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int"; + BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number"; + BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function"; + })(exports.BuiltinTypeName || (exports.BuiltinTypeName = {})); + var BuiltinTypeName = exports.BuiltinTypeName; + var BuiltinType = (function (_super) { + __extends(BuiltinType, _super); + function BuiltinType(name, modifiers) { + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.name = name; + } + BuiltinType.prototype.visitType = function (visitor, context) { + return visitor.visitBuiltintType(this, context); + }; + return BuiltinType; + }(Type)); + exports.BuiltinType = BuiltinType; + var ExternalType = (function (_super) { + __extends(ExternalType, _super); + function ExternalType(value, typeParams, modifiers) { + if (typeParams === void 0) { typeParams = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.value = value; + this.typeParams = typeParams; + } + ExternalType.prototype.visitType = function (visitor, context) { + return visitor.visitExternalType(this, context); + }; + return ExternalType; + }(Type)); + exports.ExternalType = ExternalType; + var ArrayType = (function (_super) { + __extends(ArrayType, _super); + function ArrayType(of, modifiers) { + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.of = of; + } + ArrayType.prototype.visitType = function (visitor, context) { + return visitor.visitArrayType(this, context); + }; + return ArrayType; + }(Type)); + exports.ArrayType = ArrayType; + var MapType = (function (_super) { + __extends(MapType, _super); + function MapType(valueType, modifiers) { + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.valueType = valueType; + } + MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); }; + return MapType; + }(Type)); + exports.MapType = MapType; + exports.DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic); + exports.BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool); + exports.INT_TYPE = new BuiltinType(BuiltinTypeName.Int); + exports.NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number); + exports.STRING_TYPE = new BuiltinType(BuiltinTypeName.String); + exports.FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function); + ///// Expressions + (function (BinaryOperator) { + BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals"; + BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals"; + BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical"; + BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical"; + BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus"; + BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus"; + BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide"; + BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply"; + BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo"; + BinaryOperator[BinaryOperator["And"] = 9] = "And"; + BinaryOperator[BinaryOperator["Or"] = 10] = "Or"; + BinaryOperator[BinaryOperator["Lower"] = 11] = "Lower"; + BinaryOperator[BinaryOperator["LowerEquals"] = 12] = "LowerEquals"; + BinaryOperator[BinaryOperator["Bigger"] = 13] = "Bigger"; + BinaryOperator[BinaryOperator["BiggerEquals"] = 14] = "BiggerEquals"; + })(exports.BinaryOperator || (exports.BinaryOperator = {})); + var BinaryOperator = exports.BinaryOperator; + var Expression = (function () { + function Expression(type) { + this.type = type; + } + Expression.prototype.prop = function (name) { return new ReadPropExpr(this, name); }; + Expression.prototype.key = function (index, type) { + if (type === void 0) { type = null; } + return new ReadKeyExpr(this, index, type); + }; + Expression.prototype.callMethod = function (name, params) { + return new InvokeMethodExpr(this, name, params); + }; + Expression.prototype.callFn = function (params) { return new InvokeFunctionExpr(this, params); }; + Expression.prototype.instantiate = function (params, type) { + if (type === void 0) { type = null; } + return new InstantiateExpr(this, params, type); + }; + Expression.prototype.conditional = function (trueCase, falseCase) { + if (falseCase === void 0) { falseCase = null; } + return new ConditionalExpr(this, trueCase, falseCase); + }; + Expression.prototype.equals = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs); + }; + Expression.prototype.notEquals = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs); + }; + Expression.prototype.identical = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs); + }; + Expression.prototype.notIdentical = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs); + }; + Expression.prototype.minus = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs); + }; + Expression.prototype.plus = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs); + }; + Expression.prototype.divide = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs); + }; + Expression.prototype.multiply = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs); + }; + Expression.prototype.modulo = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs); + }; + Expression.prototype.and = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.And, this, rhs); + }; + Expression.prototype.or = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs); + }; + Expression.prototype.lower = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs); + }; + Expression.prototype.lowerEquals = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs); + }; + Expression.prototype.bigger = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs); + }; + Expression.prototype.biggerEquals = function (rhs) { + return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs); + }; + Expression.prototype.isBlank = function () { + // Note: We use equals by purpose here to compare to null and undefined in JS. + return this.equals(exports.NULL_EXPR); + }; + Expression.prototype.cast = function (type) { return new CastExpr(this, type); }; + Expression.prototype.toStmt = function () { return new ExpressionStatement(this); }; + return Expression; + }()); + exports.Expression = Expression; + (function (BuiltinVar) { + BuiltinVar[BuiltinVar["This"] = 0] = "This"; + BuiltinVar[BuiltinVar["Super"] = 1] = "Super"; + BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError"; + BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack"; + })(exports.BuiltinVar || (exports.BuiltinVar = {})); + var BuiltinVar = exports.BuiltinVar; + var ReadVarExpr = (function (_super) { + __extends(ReadVarExpr, _super); + function ReadVarExpr(name, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + if (lang_1.isString(name)) { + this.name = name; + this.builtin = null; + } + else { + this.name = null; + this.builtin = name; + } + } + ReadVarExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitReadVarExpr(this, context); + }; + ReadVarExpr.prototype.set = function (value) { return new WriteVarExpr(this.name, value); }; + return ReadVarExpr; + }(Expression)); + exports.ReadVarExpr = ReadVarExpr; + var WriteVarExpr = (function (_super) { + __extends(WriteVarExpr, _super); + function WriteVarExpr(name, value, type) { + if (type === void 0) { type = null; } + _super.call(this, lang_1.isPresent(type) ? type : value.type); + this.name = name; + this.value = value; + } + WriteVarExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitWriteVarExpr(this, context); + }; + WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + return new DeclareVarStmt(this.name, this.value, type, modifiers); + }; + return WriteVarExpr; + }(Expression)); + exports.WriteVarExpr = WriteVarExpr; + var WriteKeyExpr = (function (_super) { + __extends(WriteKeyExpr, _super); + function WriteKeyExpr(receiver, index, value, type) { + if (type === void 0) { type = null; } + _super.call(this, lang_1.isPresent(type) ? type : value.type); + this.receiver = receiver; + this.index = index; + this.value = value; + } + WriteKeyExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitWriteKeyExpr(this, context); + }; + return WriteKeyExpr; + }(Expression)); + exports.WriteKeyExpr = WriteKeyExpr; + var WritePropExpr = (function (_super) { + __extends(WritePropExpr, _super); + function WritePropExpr(receiver, name, value, type) { + if (type === void 0) { type = null; } + _super.call(this, lang_1.isPresent(type) ? type : value.type); + this.receiver = receiver; + this.name = name; + this.value = value; + } + WritePropExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitWritePropExpr(this, context); + }; + return WritePropExpr; + }(Expression)); + exports.WritePropExpr = WritePropExpr; + (function (BuiltinMethod) { + BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray"; + BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable"; + BuiltinMethod[BuiltinMethod["bind"] = 2] = "bind"; + })(exports.BuiltinMethod || (exports.BuiltinMethod = {})); + var BuiltinMethod = exports.BuiltinMethod; + var InvokeMethodExpr = (function (_super) { + __extends(InvokeMethodExpr, _super); + function InvokeMethodExpr(receiver, method, args, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.receiver = receiver; + this.args = args; + if (lang_1.isString(method)) { + this.name = method; + this.builtin = null; + } + else { + this.name = null; + this.builtin = method; + } + } + InvokeMethodExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitInvokeMethodExpr(this, context); + }; + return InvokeMethodExpr; + }(Expression)); + exports.InvokeMethodExpr = InvokeMethodExpr; + var InvokeFunctionExpr = (function (_super) { + __extends(InvokeFunctionExpr, _super); + function InvokeFunctionExpr(fn, args, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.fn = fn; + this.args = args; + } + InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitInvokeFunctionExpr(this, context); + }; + return InvokeFunctionExpr; + }(Expression)); + exports.InvokeFunctionExpr = InvokeFunctionExpr; + var InstantiateExpr = (function (_super) { + __extends(InstantiateExpr, _super); + function InstantiateExpr(classExpr, args, type) { + _super.call(this, type); + this.classExpr = classExpr; + this.args = args; + } + InstantiateExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitInstantiateExpr(this, context); + }; + return InstantiateExpr; + }(Expression)); + exports.InstantiateExpr = InstantiateExpr; + var LiteralExpr = (function (_super) { + __extends(LiteralExpr, _super); + function LiteralExpr(value, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.value = value; + } + LiteralExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitLiteralExpr(this, context); + }; + return LiteralExpr; + }(Expression)); + exports.LiteralExpr = LiteralExpr; + var ExternalExpr = (function (_super) { + __extends(ExternalExpr, _super); + function ExternalExpr(value, type, typeParams) { + if (type === void 0) { type = null; } + if (typeParams === void 0) { typeParams = null; } + _super.call(this, type); + this.value = value; + this.typeParams = typeParams; + } + ExternalExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitExternalExpr(this, context); + }; + return ExternalExpr; + }(Expression)); + exports.ExternalExpr = ExternalExpr; + var ConditionalExpr = (function (_super) { + __extends(ConditionalExpr, _super); + function ConditionalExpr(condition, trueCase, falseCase, type) { + if (falseCase === void 0) { falseCase = null; } + if (type === void 0) { type = null; } + _super.call(this, lang_1.isPresent(type) ? type : trueCase.type); + this.condition = condition; + this.falseCase = falseCase; + this.trueCase = trueCase; + } + ConditionalExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitConditionalExpr(this, context); + }; + return ConditionalExpr; + }(Expression)); + exports.ConditionalExpr = ConditionalExpr; + var NotExpr = (function (_super) { + __extends(NotExpr, _super); + function NotExpr(condition) { + _super.call(this, exports.BOOL_TYPE); + this.condition = condition; + } + NotExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitNotExpr(this, context); + }; + return NotExpr; + }(Expression)); + exports.NotExpr = NotExpr; + var CastExpr = (function (_super) { + __extends(CastExpr, _super); + function CastExpr(value, type) { + _super.call(this, type); + this.value = value; + } + CastExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitCastExpr(this, context); + }; + return CastExpr; + }(Expression)); + exports.CastExpr = CastExpr; + var FnParam = (function () { + function FnParam(name, type) { + if (type === void 0) { type = null; } + this.name = name; + this.type = type; + } + return FnParam; + }()); + exports.FnParam = FnParam; + var FunctionExpr = (function (_super) { + __extends(FunctionExpr, _super); + function FunctionExpr(params, statements, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.params = params; + this.statements = statements; + } + FunctionExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitFunctionExpr(this, context); + }; + FunctionExpr.prototype.toDeclStmt = function (name, modifiers) { + if (modifiers === void 0) { modifiers = null; } + return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers); + }; + return FunctionExpr; + }(Expression)); + exports.FunctionExpr = FunctionExpr; + var BinaryOperatorExpr = (function (_super) { + __extends(BinaryOperatorExpr, _super); + function BinaryOperatorExpr(operator, lhs, rhs, type) { + if (type === void 0) { type = null; } + _super.call(this, lang_1.isPresent(type) ? type : lhs.type); + this.operator = operator; + this.rhs = rhs; + this.lhs = lhs; + } + BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitBinaryOperatorExpr(this, context); + }; + return BinaryOperatorExpr; + }(Expression)); + exports.BinaryOperatorExpr = BinaryOperatorExpr; + var ReadPropExpr = (function (_super) { + __extends(ReadPropExpr, _super); + function ReadPropExpr(receiver, name, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.receiver = receiver; + this.name = name; + } + ReadPropExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitReadPropExpr(this, context); + }; + ReadPropExpr.prototype.set = function (value) { + return new WritePropExpr(this.receiver, this.name, value); + }; + return ReadPropExpr; + }(Expression)); + exports.ReadPropExpr = ReadPropExpr; + var ReadKeyExpr = (function (_super) { + __extends(ReadKeyExpr, _super); + function ReadKeyExpr(receiver, index, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.receiver = receiver; + this.index = index; + } + ReadKeyExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitReadKeyExpr(this, context); + }; + ReadKeyExpr.prototype.set = function (value) { + return new WriteKeyExpr(this.receiver, this.index, value); + }; + return ReadKeyExpr; + }(Expression)); + exports.ReadKeyExpr = ReadKeyExpr; + var LiteralArrayExpr = (function (_super) { + __extends(LiteralArrayExpr, _super); + function LiteralArrayExpr(entries, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.entries = entries; + } + LiteralArrayExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitLiteralArrayExpr(this, context); + }; + return LiteralArrayExpr; + }(Expression)); + exports.LiteralArrayExpr = LiteralArrayExpr; + var LiteralMapExpr = (function (_super) { + __extends(LiteralMapExpr, _super); + function LiteralMapExpr(entries, type) { + if (type === void 0) { type = null; } + _super.call(this, type); + this.entries = entries; + this.valueType = null; + if (lang_1.isPresent(type)) { + this.valueType = type.valueType; + } + } + LiteralMapExpr.prototype.visitExpression = function (visitor, context) { + return visitor.visitLiteralMapExpr(this, context); + }; + return LiteralMapExpr; + }(Expression)); + exports.LiteralMapExpr = LiteralMapExpr; + exports.THIS_EXPR = new ReadVarExpr(BuiltinVar.This); + exports.SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super); + exports.CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError); + exports.CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack); + exports.NULL_EXPR = new LiteralExpr(null, null); + //// Statements + (function (StmtModifier) { + StmtModifier[StmtModifier["Final"] = 0] = "Final"; + StmtModifier[StmtModifier["Private"] = 1] = "Private"; + })(exports.StmtModifier || (exports.StmtModifier = {})); + var StmtModifier = exports.StmtModifier; + var Statement = (function () { + function Statement(modifiers) { + if (modifiers === void 0) { modifiers = null; } + this.modifiers = modifiers; + if (lang_1.isBlank(modifiers)) { + this.modifiers = []; + } + } + Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; + return Statement; + }()); + exports.Statement = Statement; + var DeclareVarStmt = (function (_super) { + __extends(DeclareVarStmt, _super); + function DeclareVarStmt(name, value, type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.name = name; + this.value = value; + this.type = lang_1.isPresent(type) ? type : value.type; + } + DeclareVarStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitDeclareVarStmt(this, context); + }; + return DeclareVarStmt; + }(Statement)); + exports.DeclareVarStmt = DeclareVarStmt; + var DeclareFunctionStmt = (function (_super) { + __extends(DeclareFunctionStmt, _super); + function DeclareFunctionStmt(name, params, statements, type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.name = name; + this.params = params; + this.statements = statements; + this.type = type; + } + DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitDeclareFunctionStmt(this, context); + }; + return DeclareFunctionStmt; + }(Statement)); + exports.DeclareFunctionStmt = DeclareFunctionStmt; + var ExpressionStatement = (function (_super) { + __extends(ExpressionStatement, _super); + function ExpressionStatement(expr) { + _super.call(this); + this.expr = expr; + } + ExpressionStatement.prototype.visitStatement = function (visitor, context) { + return visitor.visitExpressionStmt(this, context); + }; + return ExpressionStatement; + }(Statement)); + exports.ExpressionStatement = ExpressionStatement; + var ReturnStatement = (function (_super) { + __extends(ReturnStatement, _super); + function ReturnStatement(value) { + _super.call(this); + this.value = value; + } + ReturnStatement.prototype.visitStatement = function (visitor, context) { + return visitor.visitReturnStmt(this, context); + }; + return ReturnStatement; + }(Statement)); + exports.ReturnStatement = ReturnStatement; + var AbstractClassPart = (function () { + function AbstractClassPart(type, modifiers) { + if (type === void 0) { type = null; } + this.type = type; + this.modifiers = modifiers; + if (lang_1.isBlank(modifiers)) { + this.modifiers = []; + } + } + AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; }; + return AbstractClassPart; + }()); + exports.AbstractClassPart = AbstractClassPart; + var ClassField = (function (_super) { + __extends(ClassField, _super); + function ClassField(name, type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, type, modifiers); + this.name = name; + } + return ClassField; + }(AbstractClassPart)); + exports.ClassField = ClassField; + var ClassMethod = (function (_super) { + __extends(ClassMethod, _super); + function ClassMethod(name, params, body, type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, type, modifiers); + this.name = name; + this.params = params; + this.body = body; + } + return ClassMethod; + }(AbstractClassPart)); + exports.ClassMethod = ClassMethod; + var ClassGetter = (function (_super) { + __extends(ClassGetter, _super); + function ClassGetter(name, body, type, modifiers) { + if (type === void 0) { type = null; } + if (modifiers === void 0) { modifiers = null; } + _super.call(this, type, modifiers); + this.name = name; + this.body = body; + } + return ClassGetter; + }(AbstractClassPart)); + exports.ClassGetter = ClassGetter; + var ClassStmt = (function (_super) { + __extends(ClassStmt, _super); + function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers) { + if (modifiers === void 0) { modifiers = null; } + _super.call(this, modifiers); + this.name = name; + this.parent = parent; + this.fields = fields; + this.getters = getters; + this.constructorMethod = constructorMethod; + this.methods = methods; + } + ClassStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitDeclareClassStmt(this, context); + }; + return ClassStmt; + }(Statement)); + exports.ClassStmt = ClassStmt; + var IfStmt = (function (_super) { + __extends(IfStmt, _super); + function IfStmt(condition, trueCase, falseCase) { + if (falseCase === void 0) { falseCase = []; } + _super.call(this); + this.condition = condition; + this.trueCase = trueCase; + this.falseCase = falseCase; + } + IfStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitIfStmt(this, context); + }; + return IfStmt; + }(Statement)); + exports.IfStmt = IfStmt; + var CommentStmt = (function (_super) { + __extends(CommentStmt, _super); + function CommentStmt(comment) { + _super.call(this); + this.comment = comment; + } + CommentStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitCommentStmt(this, context); + }; + return CommentStmt; + }(Statement)); + exports.CommentStmt = CommentStmt; + var TryCatchStmt = (function (_super) { + __extends(TryCatchStmt, _super); + function TryCatchStmt(bodyStmts, catchStmts) { + _super.call(this); + this.bodyStmts = bodyStmts; + this.catchStmts = catchStmts; + } + TryCatchStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitTryCatchStmt(this, context); + }; + return TryCatchStmt; + }(Statement)); + exports.TryCatchStmt = TryCatchStmt; + var ThrowStmt = (function (_super) { + __extends(ThrowStmt, _super); + function ThrowStmt(error) { + _super.call(this); + this.error = error; + } + ThrowStmt.prototype.visitStatement = function (visitor, context) { + return visitor.visitThrowStmt(this, context); + }; + return ThrowStmt; + }(Statement)); + exports.ThrowStmt = ThrowStmt; + var ExpressionTransformer = (function () { + function ExpressionTransformer() { + } + ExpressionTransformer.prototype.visitReadVarExpr = function (ast, context) { return ast; }; + ExpressionTransformer.prototype.visitWriteVarExpr = function (expr, context) { + return new WriteVarExpr(expr.name, expr.value.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitWriteKeyExpr = function (expr, context) { + return new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitWritePropExpr = function (expr, context) { + return new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitInvokeMethodExpr = function (ast, context) { + var method = lang_1.isPresent(ast.builtin) ? ast.builtin : ast.name; + return new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type); + }; + ExpressionTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) { + return new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type); + }; + ExpressionTransformer.prototype.visitInstantiateExpr = function (ast, context) { + return new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type); + }; + ExpressionTransformer.prototype.visitLiteralExpr = function (ast, context) { return ast; }; + ExpressionTransformer.prototype.visitExternalExpr = function (ast, context) { return ast; }; + ExpressionTransformer.prototype.visitConditionalExpr = function (ast, context) { + return new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitNotExpr = function (ast, context) { + return new NotExpr(ast.condition.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitCastExpr = function (ast, context) { + return new CastExpr(ast.value.visitExpression(this, context), context); + }; + ExpressionTransformer.prototype.visitFunctionExpr = function (ast, context) { + // Don't descend into nested functions + return ast; + }; + ExpressionTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) { + return new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type); + }; + ExpressionTransformer.prototype.visitReadPropExpr = function (ast, context) { + return new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type); + }; + ExpressionTransformer.prototype.visitReadKeyExpr = function (ast, context) { + return new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type); + }; + ExpressionTransformer.prototype.visitLiteralArrayExpr = function (ast, context) { + return new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context)); + }; + ExpressionTransformer.prototype.visitLiteralMapExpr = function (ast, context) { + var _this = this; + return new LiteralMapExpr(ast.entries.map(function (entry) { return [entry[0], entry[1].visitExpression(_this, context)]; })); + }; + ExpressionTransformer.prototype.visitAllExpressions = function (exprs, context) { + var _this = this; + return exprs.map(function (expr) { return expr.visitExpression(_this, context); }); + }; + ExpressionTransformer.prototype.visitDeclareVarStmt = function (stmt, context) { + return new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers); + }; + ExpressionTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) { + // Don't descend into nested functions + return stmt; + }; + ExpressionTransformer.prototype.visitExpressionStmt = function (stmt, context) { + return new ExpressionStatement(stmt.expr.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitReturnStmt = function (stmt, context) { + return new ReturnStatement(stmt.value.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitDeclareClassStmt = function (stmt, context) { + // Don't descend into nested functions + return stmt; + }; + ExpressionTransformer.prototype.visitIfStmt = function (stmt, context) { + return new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context)); + }; + ExpressionTransformer.prototype.visitTryCatchStmt = function (stmt, context) { + return new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context)); + }; + ExpressionTransformer.prototype.visitThrowStmt = function (stmt, context) { + return new ThrowStmt(stmt.error.visitExpression(this, context)); + }; + ExpressionTransformer.prototype.visitCommentStmt = function (stmt, context) { return stmt; }; + ExpressionTransformer.prototype.visitAllStatements = function (stmts, context) { + var _this = this; + return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); }); + }; + return ExpressionTransformer; + }()); + exports.ExpressionTransformer = ExpressionTransformer; + var RecursiveExpressionVisitor = (function () { + function RecursiveExpressionVisitor() { + } + RecursiveExpressionVisitor.prototype.visitReadVarExpr = function (ast, context) { return ast; }; + RecursiveExpressionVisitor.prototype.visitWriteVarExpr = function (expr, context) { + expr.value.visitExpression(this, context); + return expr; + }; + RecursiveExpressionVisitor.prototype.visitWriteKeyExpr = function (expr, context) { + expr.receiver.visitExpression(this, context); + expr.index.visitExpression(this, context); + expr.value.visitExpression(this, context); + return expr; + }; + RecursiveExpressionVisitor.prototype.visitWritePropExpr = function (expr, context) { + expr.receiver.visitExpression(this, context); + expr.value.visitExpression(this, context); + return expr; + }; + RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr = function (ast, context) { + ast.receiver.visitExpression(this, context); + this.visitAllExpressions(ast.args, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) { + ast.fn.visitExpression(this, context); + this.visitAllExpressions(ast.args, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitInstantiateExpr = function (ast, context) { + ast.classExpr.visitExpression(this, context); + this.visitAllExpressions(ast.args, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitLiteralExpr = function (ast, context) { return ast; }; + RecursiveExpressionVisitor.prototype.visitExternalExpr = function (ast, context) { return ast; }; + RecursiveExpressionVisitor.prototype.visitConditionalExpr = function (ast, context) { + ast.condition.visitExpression(this, context); + ast.trueCase.visitExpression(this, context); + ast.falseCase.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitNotExpr = function (ast, context) { + ast.condition.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitCastExpr = function (ast, context) { + ast.value.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitFunctionExpr = function (ast, context) { return ast; }; + RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) { + ast.lhs.visitExpression(this, context); + ast.rhs.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitReadPropExpr = function (ast, context) { + ast.receiver.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitReadKeyExpr = function (ast, context) { + ast.receiver.visitExpression(this, context); + ast.index.visitExpression(this, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr = function (ast, context) { + this.visitAllExpressions(ast.entries, context); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitLiteralMapExpr = function (ast, context) { + var _this = this; + ast.entries.forEach(function (entry) { return entry[1].visitExpression(_this, context); }); + return ast; + }; + RecursiveExpressionVisitor.prototype.visitAllExpressions = function (exprs, context) { + var _this = this; + exprs.forEach(function (expr) { return expr.visitExpression(_this, context); }); + }; + RecursiveExpressionVisitor.prototype.visitDeclareVarStmt = function (stmt, context) { + stmt.value.visitExpression(this, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { + // Don't descend into nested functions + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitExpressionStmt = function (stmt, context) { + stmt.expr.visitExpression(this, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitReturnStmt = function (stmt, context) { + stmt.value.visitExpression(this, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitDeclareClassStmt = function (stmt, context) { + // Don't descend into nested functions + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitIfStmt = function (stmt, context) { + stmt.condition.visitExpression(this, context); + this.visitAllStatements(stmt.trueCase, context); + this.visitAllStatements(stmt.falseCase, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitTryCatchStmt = function (stmt, context) { + this.visitAllStatements(stmt.bodyStmts, context); + this.visitAllStatements(stmt.catchStmts, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitThrowStmt = function (stmt, context) { + stmt.error.visitExpression(this, context); + return stmt; + }; + RecursiveExpressionVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; }; + RecursiveExpressionVisitor.prototype.visitAllStatements = function (stmts, context) { + var _this = this; + stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); }); + }; + return RecursiveExpressionVisitor; + }()); + exports.RecursiveExpressionVisitor = RecursiveExpressionVisitor; + function replaceVarInExpression(varName, newValue, expression) { + var transformer = new _ReplaceVariableTransformer(varName, newValue); + return expression.visitExpression(transformer, null); + } + exports.replaceVarInExpression = replaceVarInExpression; + var _ReplaceVariableTransformer = (function (_super) { + __extends(_ReplaceVariableTransformer, _super); + function _ReplaceVariableTransformer(_varName, _newValue) { + _super.call(this); + this._varName = _varName; + this._newValue = _newValue; + } + _ReplaceVariableTransformer.prototype.visitReadVarExpr = function (ast, context) { + return ast.name == this._varName ? this._newValue : ast; + }; + return _ReplaceVariableTransformer; + }(ExpressionTransformer)); + function findReadVarNames(stmts) { + var finder = new _VariableFinder(); + finder.visitAllStatements(stmts, null); + return finder.varNames; + } + exports.findReadVarNames = findReadVarNames; + var _VariableFinder = (function (_super) { + __extends(_VariableFinder, _super); + function _VariableFinder() { + _super.apply(this, arguments); + this.varNames = new Set(); + } + _VariableFinder.prototype.visitReadVarExpr = function (ast, context) { + this.varNames.add(ast.name); + return null; + }; + return _VariableFinder; + }(RecursiveExpressionVisitor)); + function variable(name, type) { + if (type === void 0) { type = null; } + return new ReadVarExpr(name, type); + } + exports.variable = variable; + function importExpr(id, typeParams) { + if (typeParams === void 0) { typeParams = null; } + return new ExternalExpr(id, null, typeParams); + } + exports.importExpr = importExpr; + function importType(id, typeParams, typeModifiers) { + if (typeParams === void 0) { typeParams = null; } + if (typeModifiers === void 0) { typeModifiers = null; } + return lang_1.isPresent(id) ? new ExternalType(id, typeParams, typeModifiers) : null; + } + exports.importType = importType; + function literal(value, type) { + if (type === void 0) { type = null; } + return new LiteralExpr(value, type); + } + exports.literal = literal; + function literalArr(values, type) { + if (type === void 0) { type = null; } + return new LiteralArrayExpr(values, type); + } + exports.literalArr = literalArr; + function literalMap(values, type) { + if (type === void 0) { type = null; } + return new LiteralMapExpr(values, type); + } + exports.literalMap = literalMap; + function not(expr) { + return new NotExpr(expr); + } + exports.not = not; + function fn(params, body, type) { + if (type === void 0) { type = null; } + return new FunctionExpr(params, body, type); + } + exports.fn = fn; + //# sourceMappingURL=output_ast.js.map + +/***/ }, +/* 11 */, +/* 12 */ +4, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var core_1 = __webpack_require__(1); + exports.isDefaultChangeDetectionStrategy = core_1.__core_private__.isDefaultChangeDetectionStrategy; + exports.ChangeDetectorState = core_1.__core_private__.ChangeDetectorState; + exports.CHANGE_DETECTION_STRATEGY_VALUES = core_1.__core_private__.CHANGE_DETECTION_STRATEGY_VALUES; + exports.constructDependencies = core_1.__core_private__.constructDependencies; + exports.LifecycleHooks = core_1.__core_private__.LifecycleHooks; + exports.LIFECYCLE_HOOKS_VALUES = core_1.__core_private__.LIFECYCLE_HOOKS_VALUES; + exports.ReflectorReader = core_1.__core_private__.ReflectorReader; + exports.ReflectorComponentResolver = core_1.__core_private__.ReflectorComponentResolver; + exports.AppElement = core_1.__core_private__.AppElement; + exports.AppView = core_1.__core_private__.AppView; + exports.DebugAppView = core_1.__core_private__.DebugAppView; + exports.ViewType = core_1.__core_private__.ViewType; + exports.MAX_INTERPOLATION_VALUES = core_1.__core_private__.MAX_INTERPOLATION_VALUES; + exports.checkBinding = core_1.__core_private__.checkBinding; + exports.flattenNestedViewRenderNodes = core_1.__core_private__.flattenNestedViewRenderNodes; + exports.interpolate = core_1.__core_private__.interpolate; + exports.ViewUtils = core_1.__core_private__.ViewUtils; + exports.VIEW_ENCAPSULATION_VALUES = core_1.__core_private__.VIEW_ENCAPSULATION_VALUES; + exports.DebugContext = core_1.__core_private__.DebugContext; + exports.StaticNodeDebugInfo = core_1.__core_private__.StaticNodeDebugInfo; + exports.devModeEqual = core_1.__core_private__.devModeEqual; + exports.uninitialized = core_1.__core_private__.uninitialized; + exports.ValueUnwrapper = core_1.__core_private__.ValueUnwrapper; + exports.TemplateRef_ = core_1.__core_private__.TemplateRef_; + exports.RenderDebugInfo = core_1.__core_private__.RenderDebugInfo; + exports.SecurityContext = core_1.__core_private__.SecurityContext; + exports.SanitizationService = core_1.__core_private__.SanitizationService; + exports.createProvider = core_1.__core_private__.createProvider; + exports.isProviderLiteral = core_1.__core_private__.isProviderLiteral; + exports.EMPTY_ARRAY = core_1.__core_private__.EMPTY_ARRAY; + exports.EMPTY_MAP = core_1.__core_private__.EMPTY_MAP; + exports.pureProxy1 = core_1.__core_private__.pureProxy1; + exports.pureProxy2 = core_1.__core_private__.pureProxy2; + exports.pureProxy3 = core_1.__core_private__.pureProxy3; + exports.pureProxy4 = core_1.__core_private__.pureProxy4; + exports.pureProxy5 = core_1.__core_private__.pureProxy5; + exports.pureProxy6 = core_1.__core_private__.pureProxy6; + exports.pureProxy7 = core_1.__core_private__.pureProxy7; + exports.pureProxy8 = core_1.__core_private__.pureProxy8; + exports.pureProxy9 = core_1.__core_private__.pureProxy9; + exports.pureProxy10 = core_1.__core_private__.pureProxy10; + exports.castByValue = core_1.__core_private__.castByValue; + exports.Console = core_1.__core_private__.Console; + //# sourceMappingURL=core_private.js.map + +/***/ }, +/* 14 */, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var lang_1 = __webpack_require__(12); + var _DOM = null; + function getDOM() { + return _DOM; + } + exports.getDOM = getDOM; + function setDOM(adapter) { + _DOM = adapter; + } + exports.setDOM = setDOM; + function setRootDomAdapter(adapter) { + if (lang_1.isBlank(_DOM)) { + _DOM = adapter; + } + } + exports.setRootDomAdapter = setRootDomAdapter; + /* tslint:disable:requireParameterType */ + /** + * Provides DOM operations in an environment-agnostic way. + */ + var DomAdapter = (function () { + function DomAdapter() { + this.xhrType = null; + } + /** @deprecated */ + DomAdapter.prototype.getXHR = function () { return this.xhrType; }; + Object.defineProperty(DomAdapter.prototype, "attrToPropMap", { + /** + * Maps attribute names to their corresponding property names for cases + * where attribute name doesn't match property name. + */ + get: function () { return this._attrToPropMap; }, + set: function (value) { this._attrToPropMap = value; }, + enumerable: true, + configurable: true + }); + ; + ; + return DomAdapter; + }()); + exports.DomAdapter = DomAdapter; + //# sourceMappingURL=dom_adapter.js.map + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + var core_1 = __webpack_require__(1); + var core_private_1 = __webpack_require__(13); + var lang_1 = __webpack_require__(3); + var exceptions_1 = __webpack_require__(8); + var collection_1 = __webpack_require__(7); + var selector_1 = __webpack_require__(93); + var util_1 = __webpack_require__(25); + var url_resolver_1 = __webpack_require__(30); + // group 1: "property" from "[property]" + // group 2: "event" from "(event)" + var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$/g; + var CompileMetadataWithIdentifier = (function () { + function CompileMetadataWithIdentifier() { + } + Object.defineProperty(CompileMetadataWithIdentifier.prototype, "identifier", { + get: function () { return exceptions_1.unimplemented(); }, + enumerable: true, + configurable: true + }); + return CompileMetadataWithIdentifier; + }()); + exports.CompileMetadataWithIdentifier = CompileMetadataWithIdentifier; + var CompileMetadataWithType = (function (_super) { + __extends(CompileMetadataWithType, _super); + function CompileMetadataWithType() { + _super.apply(this, arguments); + } + Object.defineProperty(CompileMetadataWithType.prototype, "type", { + get: function () { return exceptions_1.unimplemented(); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CompileMetadataWithType.prototype, "identifier", { + get: function () { return exceptions_1.unimplemented(); }, + enumerable: true, + configurable: true + }); + return CompileMetadataWithType; + }(CompileMetadataWithIdentifier)); + exports.CompileMetadataWithType = CompileMetadataWithType; + function metadataFromJson(data) { + return _COMPILE_METADATA_FROM_JSON[data['class']](data); + } + exports.metadataFromJson = metadataFromJson; + var CompileIdentifierMetadata = (function () { + function CompileIdentifierMetadata(_a) { + var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, value = _b.value; + this.runtime = runtime; + this.name = name; + this.prefix = prefix; + this.moduleUrl = moduleUrl; + this.value = value; + } + CompileIdentifierMetadata.fromJson = function (data) { + var value = lang_1.isArray(data['value']) ? _arrayFromJson(data['value'], metadataFromJson) : + _objFromJson(data['value'], metadataFromJson); + return new CompileIdentifierMetadata({ name: data['name'], prefix: data['prefix'], moduleUrl: data['moduleUrl'], value: value }); + }; + CompileIdentifierMetadata.prototype.toJson = function () { + var value = lang_1.isArray(this.value) ? _arrayToJson(this.value) : _objToJson(this.value); + return { + // Note: Runtime type can't be serialized... + 'class': 'Identifier', + 'name': this.name, + 'moduleUrl': this.moduleUrl, + 'prefix': this.prefix, + 'value': value + }; + }; + Object.defineProperty(CompileIdentifierMetadata.prototype, "identifier", { + get: function () { return this; }, + enumerable: true, + configurable: true + }); + return CompileIdentifierMetadata; + }()); + exports.CompileIdentifierMetadata = CompileIdentifierMetadata; + var CompileDiDependencyMetadata = (function () { + function CompileDiDependencyMetadata(_a) { + var _b = _a === void 0 ? {} : _a, isAttribute = _b.isAttribute, isSelf = _b.isSelf, isHost = _b.isHost, isSkipSelf = _b.isSkipSelf, isOptional = _b.isOptional, isValue = _b.isValue, query = _b.query, viewQuery = _b.viewQuery, token = _b.token, value = _b.value; + this.isAttribute = lang_1.normalizeBool(isAttribute); + this.isSelf = lang_1.normalizeBool(isSelf); + this.isHost = lang_1.normalizeBool(isHost); + this.isSkipSelf = lang_1.normalizeBool(isSkipSelf); + this.isOptional = lang_1.normalizeBool(isOptional); + this.isValue = lang_1.normalizeBool(isValue); + this.query = query; + this.viewQuery = viewQuery; + this.token = token; + this.value = value; + } + CompileDiDependencyMetadata.fromJson = function (data) { + return new CompileDiDependencyMetadata({ + token: _objFromJson(data['token'], CompileTokenMetadata.fromJson), + query: _objFromJson(data['query'], CompileQueryMetadata.fromJson), + viewQuery: _objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson), + value: data['value'], + isAttribute: data['isAttribute'], + isSelf: data['isSelf'], + isHost: data['isHost'], + isSkipSelf: data['isSkipSelf'], + isOptional: data['isOptional'], + isValue: data['isValue'] + }); + }; + CompileDiDependencyMetadata.prototype.toJson = function () { + return { + 'token': _objToJson(this.token), + 'query': _objToJson(this.query), + 'viewQuery': _objToJson(this.viewQuery), + 'value': this.value, + 'isAttribute': this.isAttribute, + 'isSelf': this.isSelf, + 'isHost': this.isHost, + 'isSkipSelf': this.isSkipSelf, + 'isOptional': this.isOptional, + 'isValue': this.isValue + }; + }; + return CompileDiDependencyMetadata; + }()); + exports.CompileDiDependencyMetadata = CompileDiDependencyMetadata; + var CompileProviderMetadata = (function () { + function CompileProviderMetadata(_a) { + var token = _a.token, useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi; + this.token = token; + this.useClass = useClass; + this.useValue = useValue; + this.useExisting = useExisting; + this.useFactory = useFactory; + this.deps = lang_1.normalizeBlank(deps); + this.multi = lang_1.normalizeBool(multi); + } + CompileProviderMetadata.fromJson = function (data) { + return new CompileProviderMetadata({ + token: _objFromJson(data['token'], CompileTokenMetadata.fromJson), + useClass: _objFromJson(data['useClass'], CompileTypeMetadata.fromJson), + useExisting: _objFromJson(data['useExisting'], CompileTokenMetadata.fromJson), + useValue: _objFromJson(data['useValue'], CompileIdentifierMetadata.fromJson), + useFactory: _objFromJson(data['useFactory'], CompileFactoryMetadata.fromJson), + multi: data['multi'], + deps: _arrayFromJson(data['deps'], CompileDiDependencyMetadata.fromJson) + }); + }; + CompileProviderMetadata.prototype.toJson = function () { + return { + // Note: Runtime type can't be serialized... + 'class': 'Provider', + 'token': _objToJson(this.token), + 'useClass': _objToJson(this.useClass), + 'useExisting': _objToJson(this.useExisting), + 'useValue': _objToJson(this.useValue), + 'useFactory': _objToJson(this.useFactory), + 'multi': this.multi, + 'deps': _arrayToJson(this.deps) + }; + }; + return CompileProviderMetadata; + }()); + exports.CompileProviderMetadata = CompileProviderMetadata; + var CompileFactoryMetadata = (function () { + function CompileFactoryMetadata(_a) { + var runtime = _a.runtime, name = _a.name, moduleUrl = _a.moduleUrl, prefix = _a.prefix, diDeps = _a.diDeps, value = _a.value; + this.runtime = runtime; + this.name = name; + this.prefix = prefix; + this.moduleUrl = moduleUrl; + this.diDeps = _normalizeArray(diDeps); + this.value = value; + } + Object.defineProperty(CompileFactoryMetadata.prototype, "identifier", { + get: function () { return this; }, + enumerable: true, + configurable: true + }); + CompileFactoryMetadata.fromJson = function (data) { + return new CompileFactoryMetadata({ + name: data['name'], + prefix: data['prefix'], + moduleUrl: data['moduleUrl'], + value: data['value'], + diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson) + }); + }; + CompileFactoryMetadata.prototype.toJson = function () { + return { + 'class': 'Factory', + 'name': this.name, + 'prefix': this.prefix, + 'moduleUrl': this.moduleUrl, + 'value': this.value, + 'diDeps': _arrayToJson(this.diDeps) + }; + }; + return CompileFactoryMetadata; + }()); + exports.CompileFactoryMetadata = CompileFactoryMetadata; + var CompileTokenMetadata = (function () { + function CompileTokenMetadata(_a) { + var value = _a.value, identifier = _a.identifier, identifierIsInstance = _a.identifierIsInstance; + this.value = value; + this.identifier = identifier; + this.identifierIsInstance = lang_1.normalizeBool(identifierIsInstance); + } + CompileTokenMetadata.fromJson = function (data) { + return new CompileTokenMetadata({ + value: data['value'], + identifier: _objFromJson(data['identifier'], CompileIdentifierMetadata.fromJson), + identifierIsInstance: data['identifierIsInstance'] + }); + }; + CompileTokenMetadata.prototype.toJson = function () { + return { + 'value': this.value, + 'identifier': _objToJson(this.identifier), + 'identifierIsInstance': this.identifierIsInstance + }; + }; + Object.defineProperty(CompileTokenMetadata.prototype, "runtimeCacheKey", { + get: function () { + if (lang_1.isPresent(this.identifier)) { + return this.identifier.runtime; + } + else { + return this.value; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CompileTokenMetadata.prototype, "assetCacheKey", { + get: function () { + if (lang_1.isPresent(this.identifier)) { + return lang_1.isPresent(this.identifier.moduleUrl) && + lang_1.isPresent(url_resolver_1.getUrlScheme(this.identifier.moduleUrl)) ? + this.identifier.name + "|" + this.identifier.moduleUrl + "|" + this.identifierIsInstance : + null; + } + else { + return this.value; + } + }, + enumerable: true, + configurable: true + }); + CompileTokenMetadata.prototype.equalsTo = function (token2) { + var rk = this.runtimeCacheKey; + var ak = this.assetCacheKey; + return (lang_1.isPresent(rk) && rk == token2.runtimeCacheKey) || + (lang_1.isPresent(ak) && ak == token2.assetCacheKey); + }; + Object.defineProperty(CompileTokenMetadata.prototype, "name", { + get: function () { + return lang_1.isPresent(this.value) ? util_1.sanitizeIdentifier(this.value) : this.identifier.name; + }, + enumerable: true, + configurable: true + }); + return CompileTokenMetadata; + }()); + exports.CompileTokenMetadata = CompileTokenMetadata; + var CompileTokenMap = (function () { + function CompileTokenMap() { + this._valueMap = new Map(); + this._values = []; + } + CompileTokenMap.prototype.add = function (token, value) { + var existing = this.get(token); + if (lang_1.isPresent(existing)) { + throw new exceptions_1.BaseException("Can only add to a TokenMap! Token: " + token.name); + } + this._values.push(value); + var rk = token.runtimeCacheKey; + if (lang_1.isPresent(rk)) { + this._valueMap.set(rk, value); + } + var ak = token.assetCacheKey; + if (lang_1.isPresent(ak)) { + this._valueMap.set(ak, value); + } + }; + CompileTokenMap.prototype.get = function (token) { + var rk = token.runtimeCacheKey; + var ak = token.assetCacheKey; + var result; + if (lang_1.isPresent(rk)) { + result = this._valueMap.get(rk); + } + if (lang_1.isBlank(result) && lang_1.isPresent(ak)) { + result = this._valueMap.get(ak); + } + return result; + }; + CompileTokenMap.prototype.values = function () { return this._values; }; + Object.defineProperty(CompileTokenMap.prototype, "size", { + get: function () { return this._values.length; }, + enumerable: true, + configurable: true + }); + return CompileTokenMap; + }()); + exports.CompileTokenMap = CompileTokenMap; + /** + * Metadata regarding compilation of a type. + */ + var CompileTypeMetadata = (function () { + function CompileTypeMetadata(_a) { + var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, isHost = _b.isHost, value = _b.value, diDeps = _b.diDeps; + this.runtime = runtime; + this.name = name; + this.moduleUrl = moduleUrl; + this.prefix = prefix; + this.isHost = lang_1.normalizeBool(isHost); + this.value = value; + this.diDeps = _normalizeArray(diDeps); + } + CompileTypeMetadata.fromJson = function (data) { + return new CompileTypeMetadata({ + name: data['name'], + moduleUrl: data['moduleUrl'], + prefix: data['prefix'], + isHost: data['isHost'], + value: data['value'], + diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson) + }); + }; + Object.defineProperty(CompileTypeMetadata.prototype, "identifier", { + get: function () { return this; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CompileTypeMetadata.prototype, "type", { + get: function () { return this; }, + enumerable: true, + configurable: true + }); + CompileTypeMetadata.prototype.toJson = function () { + return { + // Note: Runtime type can't be serialized... + 'class': 'Type', + 'name': this.name, + 'moduleUrl': this.moduleUrl, + 'prefix': this.prefix, + 'isHost': this.isHost, + 'value': this.value, + 'diDeps': _arrayToJson(this.diDeps) + }; + }; + return CompileTypeMetadata; + }()); + exports.CompileTypeMetadata = CompileTypeMetadata; + var CompileQueryMetadata = (function () { + function CompileQueryMetadata(_a) { + var _b = _a === void 0 ? {} : _a, selectors = _b.selectors, descendants = _b.descendants, first = _b.first, propertyName = _b.propertyName, read = _b.read; + this.selectors = selectors; + this.descendants = lang_1.normalizeBool(descendants); + this.first = lang_1.normalizeBool(first); + this.propertyName = propertyName; + this.read = read; + } + CompileQueryMetadata.fromJson = function (data) { + return new CompileQueryMetadata({ + selectors: _arrayFromJson(data['selectors'], CompileTokenMetadata.fromJson), + descendants: data['descendants'], + first: data['first'], + propertyName: data['propertyName'], + read: _objFromJson(data['read'], CompileTokenMetadata.fromJson) + }); + }; + CompileQueryMetadata.prototype.toJson = function () { + return { + 'selectors': _arrayToJson(this.selectors), + 'descendants': this.descendants, + 'first': this.first, + 'propertyName': this.propertyName, + 'read': _objToJson(this.read) + }; + }; + return CompileQueryMetadata; + }()); + exports.CompileQueryMetadata = CompileQueryMetadata; + /** + * Metadata regarding compilation of a template. + */ + var CompileTemplateMetadata = (function () { + function CompileTemplateMetadata(_a) { + var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, ngContentSelectors = _b.ngContentSelectors; + this.encapsulation = lang_1.isPresent(encapsulation) ? encapsulation : core_1.ViewEncapsulation.Emulated; + this.template = template; + this.templateUrl = templateUrl; + this.styles = lang_1.isPresent(styles) ? styles : []; + this.styleUrls = lang_1.isPresent(styleUrls) ? styleUrls : []; + this.ngContentSelectors = lang_1.isPresent(ngContentSelectors) ? ngContentSelectors : []; + } + CompileTemplateMetadata.fromJson = function (data) { + return new CompileTemplateMetadata({ + encapsulation: lang_1.isPresent(data['encapsulation']) ? + core_private_1.VIEW_ENCAPSULATION_VALUES[data['encapsulation']] : + data['encapsulation'], + template: data['template'], + templateUrl: data['templateUrl'], + styles: data['styles'], + styleUrls: data['styleUrls'], + ngContentSelectors: data['ngContentSelectors'] + }); + }; + CompileTemplateMetadata.prototype.toJson = function () { + return { + 'encapsulation': lang_1.isPresent(this.encapsulation) ? lang_1.serializeEnum(this.encapsulation) : this.encapsulation, + 'template': this.template, + 'templateUrl': this.templateUrl, + 'styles': this.styles, + 'styleUrls': this.styleUrls, + 'ngContentSelectors': this.ngContentSelectors + }; + }; + return CompileTemplateMetadata; + }()); + exports.CompileTemplateMetadata = CompileTemplateMetadata; + /** + * Metadata regarding compilation of a directive. + */ + var CompileDirectiveMetadata = (function () { + function CompileDirectiveMetadata(_a) { + var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template; + this.type = type; + this.isComponent = isComponent; + this.selector = selector; + this.exportAs = exportAs; + this.changeDetection = changeDetection; + this.inputs = inputs; + this.outputs = outputs; + this.hostListeners = hostListeners; + this.hostProperties = hostProperties; + this.hostAttributes = hostAttributes; + this.lifecycleHooks = _normalizeArray(lifecycleHooks); + this.providers = _normalizeArray(providers); + this.viewProviders = _normalizeArray(viewProviders); + this.queries = _normalizeArray(queries); + this.viewQueries = _normalizeArray(viewQueries); + this.template = template; + } + CompileDirectiveMetadata.create = function (_a) { + var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template; + var hostListeners = {}; + var hostProperties = {}; + var hostAttributes = {}; + if (lang_1.isPresent(host)) { + collection_1.StringMapWrapper.forEach(host, function (value, key) { + var matches = lang_1.RegExpWrapper.firstMatch(HOST_REG_EXP, key); + if (lang_1.isBlank(matches)) { + hostAttributes[key] = value; + } + else if (lang_1.isPresent(matches[1])) { + hostProperties[matches[1]] = value; + } + else if (lang_1.isPresent(matches[2])) { + hostListeners[matches[2]] = value; + } + }); + } + var inputsMap = {}; + if (lang_1.isPresent(inputs)) { + inputs.forEach(function (bindConfig) { + // canonical syntax: `dirProp: elProp` + // if there is no `:`, use dirProp = elProp + var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]); + inputsMap[parts[0]] = parts[1]; + }); + } + var outputsMap = {}; + if (lang_1.isPresent(outputs)) { + outputs.forEach(function (bindConfig) { + // canonical syntax: `dirProp: elProp` + // if there is no `:`, use dirProp = elProp + var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]); + outputsMap[parts[0]] = parts[1]; + }); + } + return new CompileDirectiveMetadata({ + type: type, + isComponent: lang_1.normalizeBool(isComponent), + selector: selector, + exportAs: exportAs, + changeDetection: changeDetection, + inputs: inputsMap, + outputs: outputsMap, + hostListeners: hostListeners, + hostProperties: hostProperties, + hostAttributes: hostAttributes, + lifecycleHooks: lang_1.isPresent(lifecycleHooks) ? lifecycleHooks : [], + providers: providers, + viewProviders: viewProviders, + queries: queries, + viewQueries: viewQueries, + template: template + }); + }; + Object.defineProperty(CompileDirectiveMetadata.prototype, "identifier", { + get: function () { return this.type; }, + enumerable: true, + configurable: true + }); + CompileDirectiveMetadata.fromJson = function (data) { + return new CompileDirectiveMetadata({ + isComponent: data['isComponent'], + selector: data['selector'], + exportAs: data['exportAs'], + type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'], + changeDetection: lang_1.isPresent(data['changeDetection']) ? + core_private_1.CHANGE_DETECTION_STRATEGY_VALUES[data['changeDetection']] : + data['changeDetection'], + inputs: data['inputs'], + outputs: data['outputs'], + hostListeners: data['hostListeners'], + hostProperties: data['hostProperties'], + hostAttributes: data['hostAttributes'], + lifecycleHooks: data['lifecycleHooks'].map(function (hookValue) { return core_private_1.LIFECYCLE_HOOKS_VALUES[hookValue]; }), + template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) : + data['template'], + providers: _arrayFromJson(data['providers'], metadataFromJson), + viewProviders: _arrayFromJson(data['viewProviders'], metadataFromJson), + queries: _arrayFromJson(data['queries'], CompileQueryMetadata.fromJson), + viewQueries: _arrayFromJson(data['viewQueries'], CompileQueryMetadata.fromJson) + }); + }; + CompileDirectiveMetadata.prototype.toJson = function () { + return { + 'class': 'Directive', + 'isComponent': this.isComponent, + 'selector': this.selector, + 'exportAs': this.exportAs, + 'type': lang_1.isPresent(this.type) ? this.type.toJson() : this.type, + 'changeDetection': lang_1.isPresent(this.changeDetection) ? lang_1.serializeEnum(this.changeDetection) : + this.changeDetection, + 'inputs': this.inputs, + 'outputs': this.outputs, + 'hostListeners': this.hostListeners, + 'hostProperties': this.hostProperties, + 'hostAttributes': this.hostAttributes, + 'lifecycleHooks': this.lifecycleHooks.map(function (hook) { return lang_1.serializeEnum(hook); }), + 'template': lang_1.isPresent(this.template) ? this.template.toJson() : this.template, + 'providers': _arrayToJson(this.providers), + 'viewProviders': _arrayToJson(this.viewProviders), + 'queries': _arrayToJson(this.queries), + 'viewQueries': _arrayToJson(this.viewQueries) + }; + }; + return CompileDirectiveMetadata; + }()); + exports.CompileDirectiveMetadata = CompileDirectiveMetadata; + /** + * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector. + */ + function createHostComponentMeta(componentType, componentSelector) { + var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate(); + return CompileDirectiveMetadata.create({ + type: new CompileTypeMetadata({ + runtime: Object, + name: componentType.name + "_Host", + moduleUrl: componentType.moduleUrl, + isHost: true + }), + template: new CompileTemplateMetadata({ template: template, templateUrl: '', styles: [], styleUrls: [], ngContentSelectors: [] }), + changeDetection: core_1.ChangeDetectionStrategy.Default, + inputs: [], + outputs: [], + host: {}, + lifecycleHooks: [], + isComponent: true, + selector: '*', + providers: [], + viewProviders: [], + queries: [], + viewQueries: [] + }); + } + exports.createHostComponentMeta = createHostComponentMeta; + var CompilePipeMetadata = (function () { + function CompilePipeMetadata(_a) { + var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure, lifecycleHooks = _b.lifecycleHooks; + this.type = type; + this.name = name; + this.pure = lang_1.normalizeBool(pure); + this.lifecycleHooks = _normalizeArray(lifecycleHooks); + } + Object.defineProperty(CompilePipeMetadata.prototype, "identifier", { + get: function () { return this.type; }, + enumerable: true, + configurable: true + }); + CompilePipeMetadata.fromJson = function (data) { + return new CompilePipeMetadata({ + type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'], + name: data['name'], + pure: data['pure'] + }); + }; + CompilePipeMetadata.prototype.toJson = function () { + return { + 'class': 'Pipe', + 'type': lang_1.isPresent(this.type) ? this.type.toJson() : null, + 'name': this.name, + 'pure': this.pure + }; + }; + return CompilePipeMetadata; + }()); + exports.CompilePipeMetadata = CompilePipeMetadata; + var _COMPILE_METADATA_FROM_JSON = { + 'Directive': CompileDirectiveMetadata.fromJson, + 'Pipe': CompilePipeMetadata.fromJson, + 'Type': CompileTypeMetadata.fromJson, + 'Provider': CompileProviderMetadata.fromJson, + 'Identifier': CompileIdentifierMetadata.fromJson, + 'Factory': CompileFactoryMetadata.fromJson + }; + function _arrayFromJson(obj, fn) { + return lang_1.isBlank(obj) ? null : obj.map(function (o) { return _objFromJson(o, fn); }); + } + function _arrayToJson(obj) { + return lang_1.isBlank(obj) ? null : obj.map(_objToJson); + } + function _objFromJson(obj, fn) { + if (lang_1.isArray(obj)) + return _arrayFromJson(obj, fn); + if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj)) + return obj; + return fn(obj); + } + function _objToJson(obj) { + if (lang_1.isArray(obj)) + return _arrayToJson(obj); + if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj)) + return obj; + return obj.toJson(); + } + function _normalizeArray(obj) { + return lang_1.isPresent(obj) ? obj : []; + } + //# sourceMappingURL=compile_metadata.js.map + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var core_1 = __webpack_require__(1); + var core_private_1 = __webpack_require__(13); + var core_private_2 = __webpack_require__(13); + var compile_metadata_1 = __webpack_require__(16); + var util_1 = __webpack_require__(25); + var APP_VIEW_MODULE_URL = util_1.assetUrl('core', 'linker/view'); + var VIEW_UTILS_MODULE_URL = util_1.assetUrl('core', 'linker/view_utils'); + var CD_MODULE_URL = util_1.assetUrl('core', 'change_detection/change_detection'); + // Reassign the imports to different variables so we can + // define static variables with the name of the import. + // (only needed for Dart). + var impViewUtils = core_private_2.ViewUtils; + var impAppView = core_private_2.AppView; + var impDebugAppView = core_private_2.DebugAppView; + var impDebugContext = core_private_2.DebugContext; + var impAppElement = core_private_2.AppElement; + var impElementRef = core_1.ElementRef; + var impViewContainerRef = core_1.ViewContainerRef; + var impChangeDetectorRef = core_1.ChangeDetectorRef; + var impRenderComponentType = core_1.RenderComponentType; + var impQueryList = core_1.QueryList; + var impTemplateRef = core_1.TemplateRef; + var impTemplateRef_ = core_private_2.TemplateRef_; + var impValueUnwrapper = core_private_2.ValueUnwrapper; + var impInjector = core_1.Injector; + var impViewEncapsulation = core_1.ViewEncapsulation; + var impViewType = core_private_2.ViewType; + var impChangeDetectionStrategy = core_1.ChangeDetectionStrategy; + var impStaticNodeDebugInfo = core_private_2.StaticNodeDebugInfo; + var impRenderer = core_1.Renderer; + var impSimpleChange = core_1.SimpleChange; + var impUninitialized = core_private_2.uninitialized; + var impChangeDetectorState = core_private_2.ChangeDetectorState; + var impFlattenNestedViewRenderNodes = core_private_2.flattenNestedViewRenderNodes; + var impDevModeEqual = core_private_2.devModeEqual; + var impInterpolate = core_private_2.interpolate; + var impCheckBinding = core_private_2.checkBinding; + var impCastByValue = core_private_2.castByValue; + var impEMPTY_ARRAY = core_private_2.EMPTY_ARRAY; + var impEMPTY_MAP = core_private_2.EMPTY_MAP; + var Identifiers = (function () { + function Identifiers() { + } + Identifiers.ViewUtils = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewUtils', moduleUrl: util_1.assetUrl('core', 'linker/view_utils'), runtime: impViewUtils }); + Identifiers.AppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impAppView }); + Identifiers.DebugAppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'DebugAppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impDebugAppView }); + Identifiers.AppElement = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppElement', moduleUrl: util_1.assetUrl('core', 'linker/element'), runtime: impAppElement }); + Identifiers.ElementRef = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'ElementRef', + moduleUrl: util_1.assetUrl('core', 'linker/element_ref'), + runtime: impElementRef + }); + Identifiers.ViewContainerRef = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'ViewContainerRef', + moduleUrl: util_1.assetUrl('core', 'linker/view_container_ref'), + runtime: impViewContainerRef + }); + Identifiers.ChangeDetectorRef = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'ChangeDetectorRef', + moduleUrl: util_1.assetUrl('core', 'change_detection/change_detector_ref'), + runtime: impChangeDetectorRef + }); + Identifiers.RenderComponentType = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'RenderComponentType', + moduleUrl: util_1.assetUrl('core', 'render/api'), + runtime: impRenderComponentType + }); + Identifiers.QueryList = new compile_metadata_1.CompileIdentifierMetadata({ name: 'QueryList', moduleUrl: util_1.assetUrl('core', 'linker/query_list'), runtime: impQueryList }); + Identifiers.TemplateRef = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'TemplateRef', + moduleUrl: util_1.assetUrl('core', 'linker/template_ref'), + runtime: impTemplateRef + }); + Identifiers.TemplateRef_ = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'TemplateRef_', + moduleUrl: util_1.assetUrl('core', 'linker/template_ref'), + runtime: impTemplateRef_ + }); + Identifiers.ValueUnwrapper = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ValueUnwrapper', moduleUrl: CD_MODULE_URL, runtime: impValueUnwrapper }); + Identifiers.Injector = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Injector', moduleUrl: util_1.assetUrl('core', 'di/injector'), runtime: impInjector }); + Identifiers.ViewEncapsulation = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'ViewEncapsulation', + moduleUrl: util_1.assetUrl('core', 'metadata/view'), + runtime: impViewEncapsulation + }); + Identifiers.ViewType = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewType', moduleUrl: util_1.assetUrl('core', 'linker/view_type'), runtime: impViewType }); + Identifiers.ChangeDetectionStrategy = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'ChangeDetectionStrategy', + moduleUrl: CD_MODULE_URL, + runtime: impChangeDetectionStrategy + }); + Identifiers.StaticNodeDebugInfo = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'StaticNodeDebugInfo', + moduleUrl: util_1.assetUrl('core', 'linker/debug_context'), + runtime: impStaticNodeDebugInfo + }); + Identifiers.DebugContext = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'DebugContext', + moduleUrl: util_1.assetUrl('core', 'linker/debug_context'), + runtime: impDebugContext + }); + Identifiers.Renderer = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Renderer', moduleUrl: util_1.assetUrl('core', 'render/api'), runtime: impRenderer }); + Identifiers.SimpleChange = new compile_metadata_1.CompileIdentifierMetadata({ name: 'SimpleChange', moduleUrl: CD_MODULE_URL, runtime: impSimpleChange }); + Identifiers.uninitialized = new compile_metadata_1.CompileIdentifierMetadata({ name: 'uninitialized', moduleUrl: CD_MODULE_URL, runtime: impUninitialized }); + Identifiers.ChangeDetectorState = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ChangeDetectorState', moduleUrl: CD_MODULE_URL, runtime: impChangeDetectorState }); + Identifiers.checkBinding = new compile_metadata_1.CompileIdentifierMetadata({ name: 'checkBinding', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCheckBinding }); + Identifiers.flattenNestedViewRenderNodes = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'flattenNestedViewRenderNodes', + moduleUrl: VIEW_UTILS_MODULE_URL, + runtime: impFlattenNestedViewRenderNodes + }); + Identifiers.devModeEqual = new compile_metadata_1.CompileIdentifierMetadata({ name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: impDevModeEqual }); + Identifiers.interpolate = new compile_metadata_1.CompileIdentifierMetadata({ name: 'interpolate', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impInterpolate }); + Identifiers.castByValue = new compile_metadata_1.CompileIdentifierMetadata({ name: 'castByValue', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCastByValue }); + Identifiers.EMPTY_ARRAY = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_ARRAY', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_ARRAY }); + Identifiers.EMPTY_MAP = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_MAP', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_MAP }); + Identifiers.pureProxies = [ + null, + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy1', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy1 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy2 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy3', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy3 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy4 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy5', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy5 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy6', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy6 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy7', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy7 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy8 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy9', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy9 }), + new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy10', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy10 }), + ]; + Identifiers.SecurityContext = new compile_metadata_1.CompileIdentifierMetadata({ + name: 'SecurityContext', + moduleUrl: util_1.assetUrl('core', 'security'), + runtime: core_private_1.SecurityContext, + }); + return Identifiers; + }()); + exports.Identifiers = Identifiers; + function identifierToken(identifier) { + return new compile_metadata_1.CompileTokenMetadata({ identifier: identifier }); + } + exports.identifierToken = identifierToken; + //# sourceMappingURL=identifiers.js.map + +/***/ }, +/* 18 */, +/* 19 */, +/* 20 */, +/* 21 */, +/* 22 */ +[460, 12], +/* 23 */, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var lang_1 = __webpack_require__(3); + /** + * A segment of text within the template. + */ + var TextAst = (function () { + function TextAst(value, ngContentIndex, sourceSpan) { + this.value = value; + this.ngContentIndex = ngContentIndex; + this.sourceSpan = sourceSpan; + } + TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); }; + return TextAst; + }()); + exports.TextAst = TextAst; + /** + * A bound expression within the text of a template. + */ + var BoundTextAst = (function () { + function BoundTextAst(value, ngContentIndex, sourceSpan) { + this.value = value; + this.ngContentIndex = ngContentIndex; + this.sourceSpan = sourceSpan; + } + BoundTextAst.prototype.visit = function (visitor, context) { + return visitor.visitBoundText(this, context); + }; + return BoundTextAst; + }()); + exports.BoundTextAst = BoundTextAst; + /** + * A plain attribute on an element. + */ + var AttrAst = (function () { + function AttrAst(name, value, sourceSpan) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + } + AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); }; + return AttrAst; + }()); + exports.AttrAst = AttrAst; + /** + * A binding for an element property (e.g. `[property]="expression"`). + */ + var BoundElementPropertyAst = (function () { + function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) { + this.name = name; + this.type = type; + this.securityContext = securityContext; + this.value = value; + this.unit = unit; + this.sourceSpan = sourceSpan; + } + BoundElementPropertyAst.prototype.visit = function (visitor, context) { + return visitor.visitElementProperty(this, context); + }; + return BoundElementPropertyAst; + }()); + exports.BoundElementPropertyAst = BoundElementPropertyAst; + /** + * A binding for an element event (e.g. `(event)="handler()"`). + */ + var BoundEventAst = (function () { + function BoundEventAst(name, target, handler, sourceSpan) { + this.name = name; + this.target = target; + this.handler = handler; + this.sourceSpan = sourceSpan; + } + BoundEventAst.prototype.visit = function (visitor, context) { + return visitor.visitEvent(this, context); + }; + Object.defineProperty(BoundEventAst.prototype, "fullName", { + get: function () { + if (lang_1.isPresent(this.target)) { + return this.target + ":" + this.name; + } + else { + return this.name; + } + }, + enumerable: true, + configurable: true + }); + return BoundEventAst; + }()); + exports.BoundEventAst = BoundEventAst; + /** + * A reference declaration on an element (e.g. `let someName="expression"`). + */ + var ReferenceAst = (function () { + function ReferenceAst(name, value, sourceSpan) { + this.name = name; + this.value = value; + this.sourceSpan = sourceSpan; + } + ReferenceAst.prototype.visit = function (visitor, context) { + return visitor.visitReference(this, context); + }; + return ReferenceAst; + }()); + exports.ReferenceAst = ReferenceAst; + /** + * A variable declaration on a