http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js
----------------------------------------------------------------------
diff --git 
a/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js 
b/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js
new file mode 100644
index 0000000..a130af9
--- /dev/null
+++ 
b/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js
@@ -0,0 +1,187 @@
+import * as tslib_1 from "tslib";
+/**
+ * @license Angular v4.4.6
+ * (c) 2010-2017 Google, Inc. https://angular.io/
+ * License: MIT
+ */
+import { AUTO_STYLE, NoopAnimationPlayer } from '@angular/animations';
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var _contains = function (elm1, elm2) { return false; };
+var _matches = function (element, selector) { return false; };
+var _query = function (element, selector, multi) {
+    return [];
+};
+if (typeof Element != 'undefined') {
+    // this is well supported in all browsers
+    _contains = function (elm1, elm2) { return elm1.contains(elm2); };
+    if (Element.prototype.matches) {
+        _matches = function (element, selector) { return 
element.matches(selector); };
+    }
+    else {
+        var proto = Element.prototype;
+        var fn_1 = proto.matchesSelector || proto.mozMatchesSelector || 
proto.msMatchesSelector ||
+            proto.oMatchesSelector || proto.webkitMatchesSelector;
+        if (fn_1) {
+            _matches = function (element, selector) { return 
fn_1.apply(element, [selector]); };
+        }
+    }
+    _query = function (element, selector, multi) {
+        var results = [];
+        if (multi) {
+            results.push.apply(results, element.querySelectorAll(selector));
+        }
+        else {
+            var elm = element.querySelector(selector);
+            if (elm) {
+                results.push(elm);
+            }
+        }
+        return results;
+    };
+}
+var matchesElement = _matches;
+var containsElement = _contains;
+var invokeQuery = _query;
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function allowPreviousPlayerStylesMerge(duration, delay) {
+    return duration === 0 || delay === 0;
+}
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @experimental Animation support is experimental.
+ */
+var MockAnimationDriver = (function () {
+    function MockAnimationDriver() {
+    }
+    MockAnimationDriver.prototype.matchesElement = function (element, 
selector) {
+        return matchesElement(element, selector);
+    };
+    MockAnimationDriver.prototype.containsElement = function (elm1, elm2) { 
return containsElement(elm1, elm2); };
+    MockAnimationDriver.prototype.query = function (element, selector, multi) {
+        return invokeQuery(element, selector, multi);
+    };
+    MockAnimationDriver.prototype.computeStyle = function (element, prop, 
defaultValue) {
+        return defaultValue || '';
+    };
+    MockAnimationDriver.prototype.animate = function (element, keyframes, 
duration, delay, easing, previousPlayers) {
+        if (previousPlayers === void 0) { previousPlayers = []; }
+        var player = new MockAnimationPlayer(element, keyframes, duration, 
delay, easing, previousPlayers);
+        MockAnimationDriver.log.push(player);
+        return player;
+    };
+    return MockAnimationDriver;
+}());
+MockAnimationDriver.log = [];
+/**
+ * @experimental Animation support is experimental.
+ */
+var MockAnimationPlayer = (function (_super) {
+    tslib_1.__extends(MockAnimationPlayer, _super);
+    function MockAnimationPlayer(element, keyframes, duration, delay, easing, 
previousPlayers) {
+        var _this = _super.call(this) || this;
+        _this.element = element;
+        _this.keyframes = keyframes;
+        _this.duration = duration;
+        _this.delay = delay;
+        _this.easing = easing;
+        _this.previousPlayers = previousPlayers;
+        _this.__finished = false;
+        _this.__started = false;
+        _this.previousStyles = {};
+        _this._onInitFns = [];
+        _this.currentSnapshot = {};
+        if (allowPreviousPlayerStylesMerge(duration, delay)) {
+            previousPlayers.forEach(function (player) {
+                if (player instanceof MockAnimationPlayer) {
+                    var styles_1 = player.currentSnapshot;
+                    Object.keys(styles_1).forEach(function (prop) { return 
_this.previousStyles[prop] = styles_1[prop]; });
+                }
+            });
+        }
+        _this.totalTime = delay + duration;
+        return _this;
+    }
+    /* @internal */
+    MockAnimationPlayer.prototype.onInit = function (fn) { 
this._onInitFns.push(fn); };
+    /* @internal */
+    MockAnimationPlayer.prototype.init = function () {
+        _super.prototype.init.call(this);
+        this._onInitFns.forEach(function (fn) { return fn(); });
+        this._onInitFns = [];
+    };
+    MockAnimationPlayer.prototype.finish = function () {
+        _super.prototype.finish.call(this);
+        this.__finished = true;
+    };
+    MockAnimationPlayer.prototype.destroy = function () {
+        _super.prototype.destroy.call(this);
+        this.__finished = true;
+    };
+    /* @internal */
+    MockAnimationPlayer.prototype.triggerMicrotask = function () { };
+    MockAnimationPlayer.prototype.play = function () {
+        _super.prototype.play.call(this);
+        this.__started = true;
+    };
+    MockAnimationPlayer.prototype.hasStarted = function () { return 
this.__started; };
+    MockAnimationPlayer.prototype.beforeDestroy = function () {
+        var _this = this;
+        var captures = {};
+        Object.keys(this.previousStyles).forEach(function (prop) {
+            captures[prop] = _this.previousStyles[prop];
+        });
+        if (this.hasStarted()) {
+            // when assembling the captured styles, it's important that
+            // we build the keyframe styles in the following order:
+            // {other styles within keyframes, ... previousStyles }
+            this.keyframes.forEach(function (kf) {
+                Object.keys(kf).forEach(function (prop) {
+                    if (prop != 'offset') {
+                        captures[prop] = _this.__finished ? kf[prop] : 
AUTO_STYLE;
+                    }
+                });
+            });
+        }
+        this.currentSnapshot = captures;
+    };
+    return MockAnimationPlayer;
+}(NoopAnimationPlayer));
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @module
+ * @description
+ * Entry point for all public APIs of the platform-browser/animations/testing 
package.
+ */
+export { MockAnimationDriver, MockAnimationPlayer };
+//# sourceMappingURL=testing.es5.js.map

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js.map
----------------------------------------------------------------------
diff --git 
a/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js.map
 
b/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js.map
new file mode 100644
index 0000000..11208a9
--- /dev/null
+++ 
b/node_modules/@angular/animations/@angular/animations/browser/testing.es5.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"testing.es5.js","sources":["../../../../../../packages/animations/browser/testing/index.ts","../../../../../../packages/animations/browser/testing/src/mock_animation_driver.ts","../../../../../../packages/animations/browser/testing/src/testing.ts","../../../../../../packages/animations/browser/src/util.ts","../../../../../../packages/animations/browser/src/render/shared.ts"],"sourcesContent":["/**\n
 * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 
source code is governed by an MIT-style license that can be\n * found in the 
LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * 
@description\n * Entry point for all public APIs of the 
platform-browser/animations/testing package.\n */\n\nexport * from 
'./src/testing';\n","/**\n * @license\n * Copyright Google Inc. All Rights 
Reserved.\n *\n * Use of this source code is governed by an MIT-style license 
that can be\n * found in the LICENSE file at https://angular.io/license
 \n */\nimport {AUTO_STYLE, AnimationPlayer, NoopAnimationPlayer, ɵStyleData} 
from '@angular/animations';\n\nimport {AnimationDriver} from 
'../../src/render/animation_driver';\nimport {containsElement, invokeQuery, 
matchesElement} from '../../src/render/shared';\nimport 
{allowPreviousPlayerStylesMerge} from '../../src/util';\n\n/**\n * 
@experimental Animation support is experimental.\n */\nexport class 
MockAnimationDriver implements AnimationDriver {\n  static log: 
AnimationPlayer[] = [];\n\n  matchesElement(element: any, selector: string): 
boolean {\n    return matchesElement(element, selector);\n  }\n\n  
containsElement(elm1: any, elm2: any): boolean { return containsElement(elm1, 
elm2); }\n\n  query(element: any, selector: string, multi: boolean): any[] {\n  
  return invokeQuery(element, selector, multi);\n  }\n\n  computeStyle(element: 
any, prop: string, defaultValue?: string): string {\n    return defaultValue || 
'';\n  }\n\n  animate(\n      element: any, keyframes: {[key: str
 ing]: string | number}[], duration: number, delay: number,\n      easing: 
string, previousPlayers: any[] = []): MockAnimationPlayer {\n    const player 
=\n        new MockAnimationPlayer(element, keyframes, duration, delay, easing, 
previousPlayers);\n    MockAnimationDriver.log.push(<AnimationPlayer>player);\n 
   return player;\n  }\n}\n\n/**\n * @experimental Animation support is 
experimental.\n */\nexport class MockAnimationPlayer extends 
NoopAnimationPlayer {\n  private __finished = false;\n  private __started = 
false;\n  public previousStyles: {[key: string]: string | number} = {};\n  
private _onInitFns: (() => any)[] = [];\n  public currentSnapshot: ɵStyleData 
= {};\n\n  constructor(\n      public element: any, public keyframes: {[key: 
string]: string | number}[],\n      public duration: number, public delay: 
number, public easing: string,\n      public previousPlayers: any[]) {\n    
super();\n\n    if (allowPreviousPlayerStylesMerge(duration, delay)) {\n      
previousPlayers.
 forEach(player => {\n        if (player instanceof MockAnimationPlayer) {\n    
      const styles = player.currentSnapshot;\n          
Object.keys(styles).forEach(prop => this.previousStyles[prop] = 
styles[prop]);\n        }\n      });\n    }\n\n    this.totalTime = delay + 
duration;\n  }\n\n  /* @internal */\n  onInit(fn: () => any) { 
this._onInitFns.push(fn); }\n\n  /* @internal */\n  init() {\n    
super.init();\n    this._onInitFns.forEach(fn => fn());\n    this._onInitFns = 
[];\n  }\n\n  finish(): void {\n    super.finish();\n    this.__finished = 
true;\n  }\n\n  destroy(): void {\n    super.destroy();\n    this.__finished = 
true;\n  }\n\n  /* @internal */\n  triggerMicrotask() {}\n\n  play(): void {\n  
  super.play();\n    this.__started = true;\n  }\n\n  hasStarted() { return 
this.__started; }\n\n  beforeDestroy() {\n    const captures: ɵStyleData = 
{};\n\n    Object.keys(this.previousStyles).forEach(prop => {\n      
captures[prop] = this.previousStyles[prop];\n    });\n\n   
  if (this.hasStarted()) {\n      // when assembling the captured styles, it's 
important that\n      // we build the keyframe styles in the following order:\n 
     // {other styles within keyframes, ... previousStyles }\n      
this.keyframes.forEach(kf => {\n        Object.keys(kf).forEach(prop => {\n     
     if (prop != 'offset') {\n            captures[prop] = this.__finished ? 
kf[prop] : AUTO_STYLE;\n          }\n        });\n      });\n    }\n\n    
this.currentSnapshot = captures;\n  }\n}\n","/**\n * @license\n * Copyright 
Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by 
an MIT-style license that can be\n * found in the LICENSE file at 
https://angular.io/license\n */\nexport {MockAnimationDriver, 
MockAnimationPlayer} from './mock_animation_driver';\n","/**\n * @license\n * 
Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is 
governed by an MIT-style license that can be\n * found in the LICENSE file at 
https://angular.io/lic
 ense\n */\nimport {AnimateTimings, AnimationMetadata, AnimationMetadataType, 
AnimationOptions, sequence, ɵStyleData} from '@angular/animations';\nimport 
{Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from 
'./dsl/animation_ast';\nimport {AnimationDslVisitor} from 
'./dsl/animation_dsl_visitor';\n\nexport const ONE_SECOND = 1000;\n\nexport 
const SUBSTITUTION_EXPR_START = '{{';\nexport const SUBSTITUTION_EXPR_END = 
'}}';\nexport const ENTER_CLASSNAME = 'ng-enter';\nexport const LEAVE_CLASSNAME 
= 'ng-leave';\nexport const ENTER_SELECTOR = '.ng-enter';\nexport const 
LEAVE_SELECTOR = '.ng-leave';\nexport const NG_TRIGGER_CLASSNAME = 
'ng-trigger';\nexport const NG_TRIGGER_SELECTOR = '.ng-trigger';\nexport const 
NG_ANIMATING_CLASSNAME = 'ng-animating';\nexport const NG_ANIMATING_SELECTOR = 
'.ng-animating';\n\nexport function resolveTimingValue(value: string | number) 
{\n  if (typeof value == 'number') return value;\n\n  const matches = (value as 
string).match(/^(-?[\\.\\d]+)(m?s)/
 );\n  if (!matches || matches.length < 2) return 0;\n\n  return 
_convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\n\nfunction 
_convertTimeValueToMS(value: number, unit: string): number {\n  switch (unit) 
{\n    case 's':\n      return value * ONE_SECOND;\n    default:  // ms or 
something else\n      return value;\n  }\n}\n\nexport function resolveTiming(\n 
   timings: string | number | AnimateTimings, errors: any[], 
allowNegativeValues?: boolean) {\n  return timings.hasOwnProperty('duration') 
?\n      <AnimateTimings>timings :\n      
parseTimeExpression(<string|number>timings, errors, 
allowNegativeValues);\n}\n\nfunction parseTimeExpression(\n    exp: string | 
number, errors: string[], allowNegativeValues?: boolean): AnimateTimings {\n  
const regex = 
/^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n
  let duration: number;\n  let delay: number = 0;\n  let easing: string = '';\n 
 if (typeof exp === 'string') {\n    const matches = exp.ma
 tch(regex);\n    if (matches === null) {\n      errors.push(`The provided 
timing value \"${exp}\" is invalid.`);\n      return {duration: 0, delay: 0, 
easing: ''};\n    }\n\n    duration = 
_convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n\n    const 
delayMatch = matches[3];\n    if (delayMatch != null) {\n      delay = 
_convertTimeValueToMS(Math.floor(parseFloat(delayMatch)), matches[4]);\n    
}\n\n    const easingVal = matches[5];\n    if (easingVal) {\n      easing = 
easingVal;\n    }\n  } else {\n    duration = <number>exp;\n  }\n\n  if 
(!allowNegativeValues) {\n    let containsErrors = false;\n    let startIndex = 
errors.length;\n    if (duration < 0) {\n      errors.push(`Duration values 
below 0 are not allowed for this animation step.`);\n      containsErrors = 
true;\n    }\n    if (delay < 0) {\n      errors.push(`Delay values below 0 are 
not allowed for this animation step.`);\n      containsErrors = true;\n    }\n  
  if (containsErrors) {\n      errors.splice(sta
 rtIndex, 0, `The provided timing value \"${exp}\" is invalid.`);\n    }\n  
}\n\n  return {duration, delay, easing};\n}\n\nexport function copyObj(\n    
obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: 
string]: any} {\n  Object.keys(obj).forEach(prop => { destination[prop] = 
obj[prop]; });\n  return destination;\n}\n\nexport function 
normalizeStyles(styles: ɵStyleData | ɵStyleData[]): ɵStyleData {\n  const 
normalizedStyles: ɵStyleData = {};\n  if (Array.isArray(styles)) {\n    
styles.forEach(data => copyStyles(data, false, normalizedStyles));\n  } else 
{\n    copyStyles(styles, false, normalizedStyles);\n  }\n  return 
normalizedStyles;\n}\n\nexport function copyStyles(\n    styles: ɵStyleData, 
readPrototype: boolean, destination: ɵStyleData = {}): ɵStyleData {\n  if 
(readPrototype) {\n    // we make use of a for-in loop so that the\n    // 
prototypically inherited properties are\n    // revealed from the backFill 
map\n    for (let prop in styles) {\n 
      destination[prop] = styles[prop];\n    }\n  } else {\n    copyObj(styles, 
destination);\n  }\n  return destination;\n}\n\nexport function 
setStyles(element: any, styles: ɵStyleData) {\n  if (element['style']) {\n    
Object.keys(styles).forEach(prop => {\n      const camelProp = 
dashCaseToCamelCase(prop);\n      element.style[camelProp] = styles[prop];\n    
});\n  }\n}\n\nexport function eraseStyles(element: any, styles: ɵStyleData) 
{\n  if (element['style']) {\n    Object.keys(styles).forEach(prop => {\n      
const camelProp = dashCaseToCamelCase(prop);\n      element.style[camelProp] = 
'';\n    });\n  }\n}\n\nexport function normalizeAnimationEntry(steps: 
AnimationMetadata | AnimationMetadata[]):\n    AnimationMetadata {\n  if 
(Array.isArray(steps)) {\n    if (steps.length == 1) return steps[0];\n    
return sequence(steps);\n  }\n  return steps as AnimationMetadata;\n}\n\nexport 
function validateStyleParams(\n    value: string | number, options: 
AnimationOptions, errors: any
 []) {\n  const params = options.params || {};\n  const matches = 
extractStyleParams(value);\n  if (matches.length) {\n    
matches.forEach(varName => {\n      if (!params.hasOwnProperty(varName)) {\n    
    errors.push(\n            `Unable to resolve the local animation param 
${varName} in the given list of values`);\n      }\n    });\n  }\n}\n\nconst 
PARAM_REGEX =\n    new 
RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 
'g');\nexport function extractStyleParams(value: string | number): string[] {\n 
 let params: string[] = [];\n  if (typeof value === 'string') {\n    const val 
= value.toString();\n\n    let match: any;\n    while (match = 
PARAM_REGEX.exec(val)) {\n      params.push(match[1] as string);\n    }\n    
PARAM_REGEX.lastIndex = 0;\n  }\n  return params;\n}\n\nexport function 
interpolateParams(\n    value: string | number, params: {[name: string]: any}, 
errors: any[]): string|number {\n  const original = value.toString();\n  const 
str = origina
 l.replace(PARAM_REGEX, (_, varName) => {\n    let localVal = 
params[varName];\n    // this means that the value was never overidden by the 
data passed in by the user\n    if (!params.hasOwnProperty(varName)) {\n      
errors.push(`Please provide a value for the animation param ${varName}`);\n     
 localVal = '';\n    }\n    return localVal.toString();\n  });\n\n  // we do 
this to assert that numeric values stay as they are\n  return str == original ? 
value : str;\n}\n\nexport function iteratorToArray(iterator: any): any[] {\n  
const arr: any[] = [];\n  let item = iterator.next();\n  while (!item.done) {\n 
   arr.push(item.value);\n    item = iterator.next();\n  }\n  return 
arr;\n}\n\nexport function mergeAnimationOptions(\n    source: 
AnimationOptions, destination: AnimationOptions): AnimationOptions {\n  if 
(source.params) {\n    const p0 = source.params;\n    if (!destination.params) 
{\n      destination.params = {};\n    }\n    const p1 = destination.params;\n  
  Object.keys(p0).f
 orEach(param => {\n      if (!p1.hasOwnProperty(param)) {\n        p1[param] = 
p0[param];\n      }\n    });\n  }\n  return destination;\n}\n\nconst 
DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nexport function dashCaseToCamelCase(input: 
string): string {\n  return input.replace(DASH_CASE_REGEXP, (...m: any[]) => 
m[1].toUpperCase());\n}\n\nexport function 
allowPreviousPlayerStylesMerge(duration: number, delay: number) {\n  return 
duration === 0 || delay === 0;\n}\n\nexport function visitDslNode(\n    
visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): 
any;\nexport function visitDslNode(\n    visitor: AnimationAstVisitor, node: 
AnimationAst<AnimationMetadataType>, context: any): any;\nexport function 
visitDslNode(visitor: any, node: any, context: any): any {\n  switch 
(node.type) {\n    case AnimationMetadataType.Trigger:\n      return 
visitor.visitTrigger(node, context);\n    case AnimationMetadataType.State:\n   
   return visitor.visitState(node, context);\n    case Animati
 onMetadataType.Transition:\n      return visitor.visitTransition(node, 
context);\n    case AnimationMetadataType.Sequence:\n      return 
visitor.visitSequence(node, context);\n    case AnimationMetadataType.Group:\n  
    return visitor.visitGroup(node, context);\n    case 
AnimationMetadataType.Animate:\n      return visitor.visitAnimate(node, 
context);\n    case AnimationMetadataType.Keyframes:\n      return 
visitor.visitKeyframes(node, context);\n    case AnimationMetadataType.Style:\n 
     return visitor.visitStyle(node, context);\n    case 
AnimationMetadataType.Reference:\n      return visitor.visitReference(node, 
context);\n    case AnimationMetadataType.AnimateChild:\n      return 
visitor.visitAnimateChild(node, context);\n    case 
AnimationMetadataType.AnimateRef:\n      return visitor.visitAnimateRef(node, 
context);\n    case AnimationMetadataType.Query:\n      return 
visitor.visitQuery(node, context);\n    case AnimationMetadataType.Stagger:\n   
   return visitor.visitStagge
 r(node, context);\n    default:\n      throw new Error(`Unable to resolve 
animation metadata node #${node.type}`);\n  }\n}\n","/**\n * @license\n * 
Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is 
governed by an MIT-style license that can be\n * found in the LICENSE file at 
https://angular.io/license\n */\nimport {AUTO_STYLE, AnimationEvent, 
AnimationPlayer, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as 
PRE_STYLE, ɵStyleData} from '@angular/animations';\n\nimport 
{AnimationStyleNormalizer} from 
'../../src/dsl/style_normalization/animation_style_normalizer';\nimport 
{AnimationDriver} from '../../src/render/animation_driver';\n\nexport function 
optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {\n  switch 
(players.length) {\n    case 0:\n      return new NoopAnimationPlayer();\n    
case 1:\n      return players[0];\n    default:\n      return new 
ɵAnimationGroupPlayer(players);\n  }\n}\n\nexport function 
normalizeKeyframes(\n
     driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: 
any,\n    keyframes: ɵStyleData[], preStyles: ɵStyleData = {},\n    
postStyles: ɵStyleData = {}): ɵStyleData[] {\n  const errors: string[] = 
[];\n  const normalizedKeyframes: ɵStyleData[] = [];\n  let previousOffset = 
-1;\n  let previousKeyframe: ɵStyleData|null = null;\n  keyframes.forEach(kf 
=> {\n    const offset = kf['offset'] as number;\n    const isSameOffset = 
offset == previousOffset;\n    const normalizedKeyframe: ɵStyleData = 
(isSameOffset && previousKeyframe) || {};\n    Object.keys(kf).forEach(prop => 
{\n      let normalizedProp = prop;\n      let normalizedValue = kf[prop];\n    
  if (prop !== 'offset') {\n        normalizedProp = 
normalizer.normalizePropertyName(normalizedProp, errors);\n        switch 
(normalizedValue) {\n          case PRE_STYLE:\n            normalizedValue = 
preStyles[prop];\n            break;\n\n          case AUTO_STYLE:\n            
normalizedValue = postStyles[p
 rop];\n            break;\n\n          default:\n            normalizedValue 
=\n                normalizer.normalizeStyleValue(prop, normalizedProp, 
normalizedValue, errors);\n            break;\n        }\n      }\n      
normalizedKeyframe[normalizedProp] = normalizedValue;\n    });\n    if 
(!isSameOffset) {\n      normalizedKeyframes.push(normalizedKeyframe);\n    }\n 
   previousKeyframe = normalizedKeyframe;\n    previousOffset = offset;\n  
});\n  if (errors.length) {\n    const LINE_START = '\\n - ';\n    throw new 
Error(\n        `Unable to animate due to the following 
errors:${LINE_START}${errors.join(LINE_START)}`);\n  }\n\n  return 
normalizedKeyframes;\n}\n\nexport function listenOnPlayer(\n    player: 
AnimationPlayer, eventName: string, event: AnimationEvent | undefined,\n    
callback: (event: any) => any) {\n  switch (eventName) {\n    case 'start':\n   
   player.onStart(() => callback(event && copyAnimationEvent(event, 'start', 
player.totalTime)));\n      break;\n    case
  'done':\n      player.onDone(() => callback(event && 
copyAnimationEvent(event, 'done', player.totalTime)));\n      break;\n    case 
'destroy':\n      player.onDestroy(\n          () => callback(event && 
copyAnimationEvent(event, 'destroy', player.totalTime)));\n      break;\n  
}\n}\n\nexport function copyAnimationEvent(\n    e: AnimationEvent, phaseName?: 
string, totalTime?: number): AnimationEvent {\n  const event = 
makeAnimationEvent(\n      e.element, e.triggerName, e.fromState, e.toState, 
phaseName || e.phaseName,\n      totalTime == undefined ? e.totalTime : 
totalTime);\n  const data = (e as any)['_data'];\n  if (data != null) {\n    
(event as any)['_data'] = data;\n  }\n  return event;\n}\n\nexport function 
makeAnimationEvent(\n    element: any, triggerName: string, fromState: string, 
toState: string, phaseName: string = '',\n    totalTime: number = 0): 
AnimationEvent {\n  return {element, triggerName, fromState, toState, 
phaseName, totalTime};\n}\n\nexport function getOrSetA
 sInMap(\n    map: Map<any, any>| {[key: string]: any}, key: any, defaultValue: 
any) {\n  let value: any;\n  if (map instanceof Map) {\n    value = 
map.get(key);\n    if (!value) {\n      map.set(key, value = defaultValue);\n   
 }\n  } else {\n    value = map[key];\n    if (!value) {\n      value = 
map[key] = defaultValue;\n    }\n  }\n  return value;\n}\n\nexport function 
parseTimelineCommand(command: string): [string, string] {\n  const separatorPos 
= command.indexOf(':');\n  const id = command.substring(1, separatorPos);\n  
const action = command.substr(separatorPos + 1);\n  return [id, 
action];\n}\n\nlet _contains: (elm1: any, elm2: any) => boolean = (elm1: any, 
elm2: any) => false;\nlet _matches: (element: any, selector: string) => boolean 
= (element: any, selector: string) =>\n    false;\nlet _query: (element: any, 
selector: string, multi: boolean) => any[] =\n    (element: any, selector: 
string, multi: boolean) => {\n      return [];\n    };\n\nif (typeof Element != 
'undefined
 ') {\n  // this is well supported in all browsers\n  _contains = (elm1: any, 
elm2: any) => { return elm1.contains(elm2) as boolean; };\n\n  if 
(Element.prototype.matches) {\n    _matches = (element: any, selector: string) 
=> element.matches(selector);\n  } else {\n    const proto = Element.prototype 
as any;\n    const fn = proto.matchesSelector || proto.mozMatchesSelector || 
proto.msMatchesSelector ||\n        proto.oMatchesSelector || 
proto.webkitMatchesSelector;\n    if (fn) {\n      _matches = (element: any, 
selector: string) => fn.apply(element, [selector]);\n    }\n  }\n\n  _query = 
(element: any, selector: string, multi: boolean): any[] => {\n    let results: 
any[] = [];\n    if (multi) {\n      
results.push(...element.querySelectorAll(selector));\n    } else {\n      const 
elm = element.querySelector(selector);\n      if (elm) {\n        
results.push(elm);\n      }\n    }\n    return results;\n  };\n}\n\nexport 
const matchesElement = _matches;\nexport const containsElement = 
 _contains;\nexport const invokeQuery = 
_query;\n"],"names":[],"mappings":"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"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/@angular/animations/browser/testing.js
----------------------------------------------------------------------
diff --git 
a/node_modules/@angular/animations/@angular/animations/browser/testing.js 
b/node_modules/@angular/animations/@angular/animations/browser/testing.js
new file mode 100644
index 0000000..5d60b4d
--- /dev/null
+++ b/node_modules/@angular/animations/@angular/animations/browser/testing.js
@@ -0,0 +1,216 @@
+/**
+ * @license Angular v4.4.6
+ * (c) 2010-2017 Google, Inc. https://angular.io/
+ * License: MIT
+ */
+import { AUTO_STYLE, NoopAnimationPlayer } from '@angular/animations';
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+
+
+
+
+
+
+let _contains = (elm1, elm2) => false;
+let _matches = (element, selector) => false;
+let _query = (element, selector, multi) => {
+    return [];
+};
+if (typeof Element != 'undefined') {
+    // this is well supported in all browsers
+    _contains = (elm1, elm2) => { return elm1.contains(elm2); };
+    if (Element.prototype.matches) {
+        _matches = (element, selector) => element.matches(selector);
+    }
+    else {
+        const proto = Element.prototype;
+        const fn = proto.matchesSelector || proto.mozMatchesSelector || 
proto.msMatchesSelector ||
+            proto.oMatchesSelector || proto.webkitMatchesSelector;
+        if (fn) {
+            _matches = (element, selector) => fn.apply(element, [selector]);
+        }
+    }
+    _query = (element, selector, multi) => {
+        let results = [];
+        if (multi) {
+            results.push(...element.querySelectorAll(selector));
+        }
+        else {
+            const elm = element.querySelector(selector);
+            if (elm) {
+                results.push(elm);
+            }
+        }
+        return results;
+    };
+}
+const matchesElement = _matches;
+const containsElement = _contains;
+const invokeQuery = _query;
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function allowPreviousPlayerStylesMerge(duration, delay) {
+    return duration === 0 || delay === 0;
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @experimental Animation support is experimental.
+ */
+class MockAnimationDriver {
+    matchesElement(element, selector) {
+        return matchesElement(element, selector);
+    }
+    containsElement(elm1, elm2) { return containsElement(elm1, elm2); }
+    query(element, selector, multi) {
+        return invokeQuery(element, selector, multi);
+    }
+    computeStyle(element, prop, defaultValue) {
+        return defaultValue || '';
+    }
+    animate(element, keyframes, duration, delay, easing, previousPlayers = []) 
{
+        const player = new MockAnimationPlayer(element, keyframes, duration, 
delay, easing, previousPlayers);
+        MockAnimationDriver.log.push(player);
+        return player;
+    }
+}
+MockAnimationDriver.log = [];
+/**
+ * @experimental Animation support is experimental.
+ */
+class MockAnimationPlayer extends NoopAnimationPlayer {
+    constructor(element, keyframes, duration, delay, easing, previousPlayers) {
+        super();
+        this.element = element;
+        this.keyframes = keyframes;
+        this.duration = duration;
+        this.delay = delay;
+        this.easing = easing;
+        this.previousPlayers = previousPlayers;
+        this.__finished = false;
+        this.__started = false;
+        this.previousStyles = {};
+        this._onInitFns = [];
+        this.currentSnapshot = {};
+        if (allowPreviousPlayerStylesMerge(duration, delay)) {
+            previousPlayers.forEach(player => {
+                if (player instanceof MockAnimationPlayer) {
+                    const styles = player.currentSnapshot;
+                    Object.keys(styles).forEach(prop => 
this.previousStyles[prop] = styles[prop]);
+                }
+            });
+        }
+        this.totalTime = delay + duration;
+    }
+    /* @internal */
+    onInit(fn) { this._onInitFns.push(fn); }
+    /* @internal */
+    init() {
+        super.init();
+        this._onInitFns.forEach(fn => fn());
+        this._onInitFns = [];
+    }
+    finish() {
+        super.finish();
+        this.__finished = true;
+    }
+    destroy() {
+        super.destroy();
+        this.__finished = true;
+    }
+    /* @internal */
+    triggerMicrotask() { }
+    play() {
+        super.play();
+        this.__started = true;
+    }
+    hasStarted() { return this.__started; }
+    beforeDestroy() {
+        const captures = {};
+        Object.keys(this.previousStyles).forEach(prop => {
+            captures[prop] = this.previousStyles[prop];
+        });
+        if (this.hasStarted()) {
+            // when assembling the captured styles, it's important that
+            // we build the keyframe styles in the following order:
+            // {other styles within keyframes, ... previousStyles }
+            this.keyframes.forEach(kf => {
+                Object.keys(kf).forEach(prop => {
+                    if (prop != 'offset') {
+                        captures[prop] = this.__finished ? kf[prop] : 
AUTO_STYLE;
+                    }
+                });
+            });
+        }
+        this.currentSnapshot = captures;
+    }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @module
+ * @description
+ * Entry point for all public APIs of the platform-browser/animations/testing 
package.
+ */
+
+export { MockAnimationDriver, MockAnimationPlayer };
+//# sourceMappingURL=testing.js.map

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/@angular/animations/browser/testing.js.map
----------------------------------------------------------------------
diff --git 
a/node_modules/@angular/animations/@angular/animations/browser/testing.js.map 
b/node_modules/@angular/animations/@angular/animations/browser/testing.js.map
new file mode 100644
index 0000000..3e6b6b5
--- /dev/null
+++ 
b/node_modules/@angular/animations/@angular/animations/browser/testing.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"testing.js","sources":["../../../../../../packages/animations/browser/testing/index.ts","../../../../../../packages/animations/browser/testing/src/testing.ts","../../../../../../packages/animations/browser/testing/src/mock_animation_driver.ts","../../../../../../packages/animations/browser/src/util.ts","../../../../../../packages/animations/browser/src/render/shared.ts"],"sourcesContent":["/**\n
 * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 
source code is governed by an MIT-style license that can be\n * found in the 
LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * 
@description\n * Entry point for all public APIs of the 
platform-browser/animations/testing package.\n */\n\nexport * from 
'./src/testing';\n","/**\n * @license\n * Copyright Google Inc. All Rights 
Reserved.\n *\n * Use of this source code is governed by an MIT-style license 
that can be\n * found in the LICENSE file at https://angular.io/license\n *
 /\nexport {MockAnimationDriver, MockAnimationPlayer} from 
'./mock_animation_driver';\n","/**\n * @license\n * Copyright Google Inc. All 
Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style 
license that can be\n * found in the LICENSE file at 
https://angular.io/license\n */\nimport {AUTO_STYLE, AnimationPlayer, 
NoopAnimationPlayer, ɵStyleData} from '@angular/animations';\n\nimport 
{AnimationDriver} from '../../src/render/animation_driver';\nimport 
{containsElement, invokeQuery, matchesElement} from 
'../../src/render/shared';\nimport {allowPreviousPlayerStylesMerge} from 
'../../src/util';\n\n/**\n * @experimental Animation support is experimental.\n 
*/\nexport class MockAnimationDriver implements AnimationDriver {\n  static 
log: AnimationPlayer[] = [];\n\n  matchesElement(element: any, selector: 
string): boolean {\n    return matchesElement(element, selector);\n  }\n\n  
containsElement(elm1: any, elm2: any): boolean { return containsElement(elm1, 
elm2); }\n\n 
  query(element: any, selector: string, multi: boolean): any[] {\n    return 
invokeQuery(element, selector, multi);\n  }\n\n  computeStyle(element: any, 
prop: string, defaultValue?: string): string {\n    return defaultValue || 
'';\n  }\n\n  animate(\n      element: any, keyframes: {[key: string]: string | 
number}[], duration: number, delay: number,\n      easing: string, 
previousPlayers: any[] = []): MockAnimationPlayer {\n    const player =\n       
 new MockAnimationPlayer(element, keyframes, duration, delay, easing, 
previousPlayers);\n    MockAnimationDriver.log.push(<AnimationPlayer>player);\n 
   return player;\n  }\n}\n\n/**\n * @experimental Animation support is 
experimental.\n */\nexport class MockAnimationPlayer extends 
NoopAnimationPlayer {\n  private __finished = false;\n  private __started = 
false;\n  public previousStyles: {[key: string]: string | number} = {};\n  
private _onInitFns: (() => any)[] = [];\n  public currentSnapshot: ɵStyleData 
= {};\n\n  constructor(\n     
  public element: any, public keyframes: {[key: string]: string | number}[],\n  
    public duration: number, public delay: number, public easing: string,\n     
 public previousPlayers: any[]) {\n    super();\n\n    if 
(allowPreviousPlayerStylesMerge(duration, delay)) {\n      
previousPlayers.forEach(player => {\n        if (player instanceof 
MockAnimationPlayer) {\n          const styles = player.currentSnapshot;\n      
    Object.keys(styles).forEach(prop => this.previousStyles[prop] = 
styles[prop]);\n        }\n      });\n    }\n\n    this.totalTime = delay + 
duration;\n  }\n\n  /* @internal */\n  onInit(fn: () => any) { 
this._onInitFns.push(fn); }\n\n  /* @internal */\n  init() {\n    
super.init();\n    this._onInitFns.forEach(fn => fn());\n    this._onInitFns = 
[];\n  }\n\n  finish(): void {\n    super.finish();\n    this.__finished = 
true;\n  }\n\n  destroy(): void {\n    super.destroy();\n    this.__finished = 
true;\n  }\n\n  /* @internal */\n  triggerMicrotask() {}\n\n  play()
 : void {\n    super.play();\n    this.__started = true;\n  }\n\n  hasStarted() 
{ return this.__started; }\n\n  beforeDestroy() {\n    const captures: 
ɵStyleData = {};\n\n    Object.keys(this.previousStyles).forEach(prop => {\n   
   captures[prop] = this.previousStyles[prop];\n    });\n\n    if 
(this.hasStarted()) {\n      // when assembling the captured styles, it's 
important that\n      // we build the keyframe styles in the following order:\n 
     // {other styles within keyframes, ... previousStyles }\n      
this.keyframes.forEach(kf => {\n        Object.keys(kf).forEach(prop => {\n     
     if (prop != 'offset') {\n            captures[prop] = this.__finished ? 
kf[prop] : AUTO_STYLE;\n          }\n        });\n      });\n    }\n\n    
this.currentSnapshot = captures;\n  }\n}\n","/**\n * @license\n * Copyright 
Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by 
an MIT-style license that can be\n * found in the LICENSE file at 
https://angular.io/license
 \n */\nimport {AnimateTimings, AnimationMetadata, AnimationMetadataType, 
AnimationOptions, sequence, ɵStyleData} from '@angular/animations';\nimport 
{Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from 
'./dsl/animation_ast';\nimport {AnimationDslVisitor} from 
'./dsl/animation_dsl_visitor';\n\nexport const ONE_SECOND = 1000;\n\nexport 
const SUBSTITUTION_EXPR_START = '{{';\nexport const SUBSTITUTION_EXPR_END = 
'}}';\nexport const ENTER_CLASSNAME = 'ng-enter';\nexport const LEAVE_CLASSNAME 
= 'ng-leave';\nexport const ENTER_SELECTOR = '.ng-enter';\nexport const 
LEAVE_SELECTOR = '.ng-leave';\nexport const NG_TRIGGER_CLASSNAME = 
'ng-trigger';\nexport const NG_TRIGGER_SELECTOR = '.ng-trigger';\nexport const 
NG_ANIMATING_CLASSNAME = 'ng-animating';\nexport const NG_ANIMATING_SELECTOR = 
'.ng-animating';\n\nexport function resolveTimingValue(value: string | number) 
{\n  if (typeof value == 'number') return value;\n\n  const matches = (value as 
string).match(/^(-?[\\.\\d]+)(m?s)/);\n
   if (!matches || matches.length < 2) return 0;\n\n  return 
_convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\n\nfunction 
_convertTimeValueToMS(value: number, unit: string): number {\n  switch (unit) 
{\n    case 's':\n      return value * ONE_SECOND;\n    default:  // ms or 
something else\n      return value;\n  }\n}\n\nexport function resolveTiming(\n 
   timings: string | number | AnimateTimings, errors: any[], 
allowNegativeValues?: boolean) {\n  return timings.hasOwnProperty('duration') 
?\n      <AnimateTimings>timings :\n      
parseTimeExpression(<string|number>timings, errors, 
allowNegativeValues);\n}\n\nfunction parseTimeExpression(\n    exp: string | 
number, errors: string[], allowNegativeValues?: boolean): AnimateTimings {\n  
const regex = 
/^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n
  let duration: number;\n  let delay: number = 0;\n  let easing: string = '';\n 
 if (typeof exp === 'string') {\n    const matches = exp.match(
 regex);\n    if (matches === null) {\n      errors.push(`The provided timing 
value \"${exp}\" is invalid.`);\n      return {duration: 0, delay: 0, easing: 
''};\n    }\n\n    duration = _convertTimeValueToMS(parseFloat(matches[1]), 
matches[2]);\n\n    const delayMatch = matches[3];\n    if (delayMatch != null) 
{\n      delay = _convertTimeValueToMS(Math.floor(parseFloat(delayMatch)), 
matches[4]);\n    }\n\n    const easingVal = matches[5];\n    if (easingVal) 
{\n      easing = easingVal;\n    }\n  } else {\n    duration = <number>exp;\n  
}\n\n  if (!allowNegativeValues) {\n    let containsErrors = false;\n    let 
startIndex = errors.length;\n    if (duration < 0) {\n      
errors.push(`Duration values below 0 are not allowed for this animation 
step.`);\n      containsErrors = true;\n    }\n    if (delay < 0) {\n      
errors.push(`Delay values below 0 are not allowed for this animation step.`);\n 
     containsErrors = true;\n    }\n    if (containsErrors) {\n      
errors.splice(startIn
 dex, 0, `The provided timing value \"${exp}\" is invalid.`);\n    }\n  }\n\n  
return {duration, delay, easing};\n}\n\nexport function copyObj(\n    obj: 
{[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: 
any} {\n  Object.keys(obj).forEach(prop => { destination[prop] = obj[prop]; 
});\n  return destination;\n}\n\nexport function normalizeStyles(styles: 
ɵStyleData | ɵStyleData[]): ɵStyleData {\n  const normalizedStyles: 
ɵStyleData = {};\n  if (Array.isArray(styles)) {\n    styles.forEach(data => 
copyStyles(data, false, normalizedStyles));\n  } else {\n    copyStyles(styles, 
false, normalizedStyles);\n  }\n  return normalizedStyles;\n}\n\nexport 
function copyStyles(\n    styles: ɵStyleData, readPrototype: boolean, 
destination: ɵStyleData = {}): ɵStyleData {\n  if (readPrototype) {\n    // 
we make use of a for-in loop so that the\n    // prototypically inherited 
properties are\n    // revealed from the backFill map\n    for (let prop in 
styles) {\n     
  destination[prop] = styles[prop];\n    }\n  } else {\n    copyObj(styles, 
destination);\n  }\n  return destination;\n}\n\nexport function 
setStyles(element: any, styles: ɵStyleData) {\n  if (element['style']) {\n    
Object.keys(styles).forEach(prop => {\n      const camelProp = 
dashCaseToCamelCase(prop);\n      element.style[camelProp] = styles[prop];\n    
});\n  }\n}\n\nexport function eraseStyles(element: any, styles: ɵStyleData) 
{\n  if (element['style']) {\n    Object.keys(styles).forEach(prop => {\n      
const camelProp = dashCaseToCamelCase(prop);\n      element.style[camelProp] = 
'';\n    });\n  }\n}\n\nexport function normalizeAnimationEntry(steps: 
AnimationMetadata | AnimationMetadata[]):\n    AnimationMetadata {\n  if 
(Array.isArray(steps)) {\n    if (steps.length == 1) return steps[0];\n    
return sequence(steps);\n  }\n  return steps as AnimationMetadata;\n}\n\nexport 
function validateStyleParams(\n    value: string | number, options: 
AnimationOptions, errors: any[]) 
 {\n  const params = options.params || {};\n  const matches = 
extractStyleParams(value);\n  if (matches.length) {\n    
matches.forEach(varName => {\n      if (!params.hasOwnProperty(varName)) {\n    
    errors.push(\n            `Unable to resolve the local animation param 
${varName} in the given list of values`);\n      }\n    });\n  }\n}\n\nconst 
PARAM_REGEX =\n    new 
RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 
'g');\nexport function extractStyleParams(value: string | number): string[] {\n 
 let params: string[] = [];\n  if (typeof value === 'string') {\n    const val 
= value.toString();\n\n    let match: any;\n    while (match = 
PARAM_REGEX.exec(val)) {\n      params.push(match[1] as string);\n    }\n    
PARAM_REGEX.lastIndex = 0;\n  }\n  return params;\n}\n\nexport function 
interpolateParams(\n    value: string | number, params: {[name: string]: any}, 
errors: any[]): string|number {\n  const original = value.toString();\n  const 
str = original.re
 place(PARAM_REGEX, (_, varName) => {\n    let localVal = params[varName];\n    
// this means that the value was never overidden by the data passed in by the 
user\n    if (!params.hasOwnProperty(varName)) {\n      errors.push(`Please 
provide a value for the animation param ${varName}`);\n      localVal = '';\n   
 }\n    return localVal.toString();\n  });\n\n  // we do this to assert that 
numeric values stay as they are\n  return str == original ? value : 
str;\n}\n\nexport function iteratorToArray(iterator: any): any[] {\n  const 
arr: any[] = [];\n  let item = iterator.next();\n  while (!item.done) {\n    
arr.push(item.value);\n    item = iterator.next();\n  }\n  return 
arr;\n}\n\nexport function mergeAnimationOptions(\n    source: 
AnimationOptions, destination: AnimationOptions): AnimationOptions {\n  if 
(source.params) {\n    const p0 = source.params;\n    if (!destination.params) 
{\n      destination.params = {};\n    }\n    const p1 = destination.params;\n  
  Object.keys(p0).forEa
 ch(param => {\n      if (!p1.hasOwnProperty(param)) {\n        p1[param] = 
p0[param];\n      }\n    });\n  }\n  return destination;\n}\n\nconst 
DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nexport function dashCaseToCamelCase(input: 
string): string {\n  return input.replace(DASH_CASE_REGEXP, (...m: any[]) => 
m[1].toUpperCase());\n}\n\nexport function 
allowPreviousPlayerStylesMerge(duration: number, delay: number) {\n  return 
duration === 0 || delay === 0;\n}\n\nexport function visitDslNode(\n    
visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): 
any;\nexport function visitDslNode(\n    visitor: AnimationAstVisitor, node: 
AnimationAst<AnimationMetadataType>, context: any): any;\nexport function 
visitDslNode(visitor: any, node: any, context: any): any {\n  switch 
(node.type) {\n    case AnimationMetadataType.Trigger:\n      return 
visitor.visitTrigger(node, context);\n    case AnimationMetadataType.State:\n   
   return visitor.visitState(node, context);\n    case AnimationMe
 tadataType.Transition:\n      return visitor.visitTransition(node, context);\n 
   case AnimationMetadataType.Sequence:\n      return 
visitor.visitSequence(node, context);\n    case AnimationMetadataType.Group:\n  
    return visitor.visitGroup(node, context);\n    case 
AnimationMetadataType.Animate:\n      return visitor.visitAnimate(node, 
context);\n    case AnimationMetadataType.Keyframes:\n      return 
visitor.visitKeyframes(node, context);\n    case AnimationMetadataType.Style:\n 
     return visitor.visitStyle(node, context);\n    case 
AnimationMetadataType.Reference:\n      return visitor.visitReference(node, 
context);\n    case AnimationMetadataType.AnimateChild:\n      return 
visitor.visitAnimateChild(node, context);\n    case 
AnimationMetadataType.AnimateRef:\n      return visitor.visitAnimateRef(node, 
context);\n    case AnimationMetadataType.Query:\n      return 
visitor.visitQuery(node, context);\n    case AnimationMetadataType.Stagger:\n   
   return visitor.visitStagger(no
 de, context);\n    default:\n      throw new Error(`Unable to resolve 
animation metadata node #${node.type}`);\n  }\n}\n","/**\n * @license\n * 
Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is 
governed by an MIT-style license that can be\n * found in the LICENSE file at 
https://angular.io/license\n */\nimport {AUTO_STYLE, AnimationEvent, 
AnimationPlayer, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as 
PRE_STYLE, ɵStyleData} from '@angular/animations';\n\nimport 
{AnimationStyleNormalizer} from 
'../../src/dsl/style_normalization/animation_style_normalizer';\nimport 
{AnimationDriver} from '../../src/render/animation_driver';\n\nexport function 
optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {\n  switch 
(players.length) {\n    case 0:\n      return new NoopAnimationPlayer();\n    
case 1:\n      return players[0];\n    default:\n      return new 
ɵAnimationGroupPlayer(players);\n  }\n}\n\nexport function 
normalizeKeyframes(\n    
 driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: any,\n 
   keyframes: ɵStyleData[], preStyles: ɵStyleData = {},\n    postStyles: 
ɵStyleData = {}): ɵStyleData[] {\n  const errors: string[] = [];\n  const 
normalizedKeyframes: ɵStyleData[] = [];\n  let previousOffset = -1;\n  let 
previousKeyframe: ɵStyleData|null = null;\n  keyframes.forEach(kf => {\n    
const offset = kf['offset'] as number;\n    const isSameOffset = offset == 
previousOffset;\n    const normalizedKeyframe: ɵStyleData = (isSameOffset && 
previousKeyframe) || {};\n    Object.keys(kf).forEach(prop => {\n      let 
normalizedProp = prop;\n      let normalizedValue = kf[prop];\n      if (prop 
!== 'offset') {\n        normalizedProp = 
normalizer.normalizePropertyName(normalizedProp, errors);\n        switch 
(normalizedValue) {\n          case PRE_STYLE:\n            normalizedValue = 
preStyles[prop];\n            break;\n\n          case AUTO_STYLE:\n            
normalizedValue = postStyles[prop]
 ;\n            break;\n\n          default:\n            normalizedValue =\n   
             normalizer.normalizeStyleValue(prop, normalizedProp, 
normalizedValue, errors);\n            break;\n        }\n      }\n      
normalizedKeyframe[normalizedProp] = normalizedValue;\n    });\n    if 
(!isSameOffset) {\n      normalizedKeyframes.push(normalizedKeyframe);\n    }\n 
   previousKeyframe = normalizedKeyframe;\n    previousOffset = offset;\n  
});\n  if (errors.length) {\n    const LINE_START = '\\n - ';\n    throw new 
Error(\n        `Unable to animate due to the following 
errors:${LINE_START}${errors.join(LINE_START)}`);\n  }\n\n  return 
normalizedKeyframes;\n}\n\nexport function listenOnPlayer(\n    player: 
AnimationPlayer, eventName: string, event: AnimationEvent | undefined,\n    
callback: (event: any) => any) {\n  switch (eventName) {\n    case 'start':\n   
   player.onStart(() => callback(event && copyAnimationEvent(event, 'start', 
player.totalTime)));\n      break;\n    case 'do
 ne':\n      player.onDone(() => callback(event && copyAnimationEvent(event, 
'done', player.totalTime)));\n      break;\n    case 'destroy':\n      
player.onDestroy(\n          () => callback(event && copyAnimationEvent(event, 
'destroy', player.totalTime)));\n      break;\n  }\n}\n\nexport function 
copyAnimationEvent(\n    e: AnimationEvent, phaseName?: string, totalTime?: 
number): AnimationEvent {\n  const event = makeAnimationEvent(\n      
e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,\n   
   totalTime == undefined ? e.totalTime : totalTime);\n  const data = (e as 
any)['_data'];\n  if (data != null) {\n    (event as any)['_data'] = data;\n  
}\n  return event;\n}\n\nexport function makeAnimationEvent(\n    element: any, 
triggerName: string, fromState: string, toState: string, phaseName: string = 
'',\n    totalTime: number = 0): AnimationEvent {\n  return {element, 
triggerName, fromState, toState, phaseName, totalTime};\n}\n\nexport function 
getOrSetAsInM
 ap(\n    map: Map<any, any>| {[key: string]: any}, key: any, defaultValue: 
any) {\n  let value: any;\n  if (map instanceof Map) {\n    value = 
map.get(key);\n    if (!value) {\n      map.set(key, value = defaultValue);\n   
 }\n  } else {\n    value = map[key];\n    if (!value) {\n      value = 
map[key] = defaultValue;\n    }\n  }\n  return value;\n}\n\nexport function 
parseTimelineCommand(command: string): [string, string] {\n  const separatorPos 
= command.indexOf(':');\n  const id = command.substring(1, separatorPos);\n  
const action = command.substr(separatorPos + 1);\n  return [id, 
action];\n}\n\nlet _contains: (elm1: any, elm2: any) => boolean = (elm1: any, 
elm2: any) => false;\nlet _matches: (element: any, selector: string) => boolean 
= (element: any, selector: string) =>\n    false;\nlet _query: (element: any, 
selector: string, multi: boolean) => any[] =\n    (element: any, selector: 
string, multi: boolean) => {\n      return [];\n    };\n\nif (typeof Element != 
'undefined') {
 \n  // this is well supported in all browsers\n  _contains = (elm1: any, elm2: 
any) => { return elm1.contains(elm2) as boolean; };\n\n  if 
(Element.prototype.matches) {\n    _matches = (element: any, selector: string) 
=> element.matches(selector);\n  } else {\n    const proto = Element.prototype 
as any;\n    const fn = proto.matchesSelector || proto.mozMatchesSelector || 
proto.msMatchesSelector ||\n        proto.oMatchesSelector || 
proto.webkitMatchesSelector;\n    if (fn) {\n      _matches = (element: any, 
selector: string) => fn.apply(element, [selector]);\n    }\n  }\n\n  _query = 
(element: any, selector: string, multi: boolean): any[] => {\n    let results: 
any[] = [];\n    if (multi) {\n      
results.push(...element.querySelectorAll(selector));\n    } else {\n      const 
elm = element.querySelector(selector);\n      if (elm) {\n        
results.push(elm);\n      }\n    }\n    return results;\n  };\n}\n\nexport 
const matchesElement = _matches;\nexport const containsElement = _con
 tains;\nexport const invokeQuery = 
_query;\n"],"names":[],"mappings":"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"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/animations.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/animations.d.ts 
b/node_modules/@angular/animations/animations.d.ts
new file mode 100644
index 0000000..7417cc8
--- /dev/null
+++ b/node_modules/@angular/animations/animations.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/animations.metadata.json
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/animations.metadata.json 
b/node_modules/@angular/animations/animations.metadata.json
new file mode 100644
index 0000000..2b5c2e0
--- /dev/null
+++ b/node_modules/@angular/animations/animations.metadata.json
@@ -0,0 +1 @@
+{"__symbolic":"module","version":3,"metadata":{"AnimationBuilder":{"__symbolic":"class","members":{"build":[{"__symbolic":"method"}]}},"AnimationFactory":{"__symbolic":"class","members":{"create":[{"__symbolic":"method"}]}},"AnimationEvent":{"__symbolic":"interface"},"AUTO_STYLE":"*","AnimateChildOptions":{"__symbolic":"interface"},"AnimateTimings":{"__symbolic":"interface"},"AnimationAnimateChildMetadata":{"__symbolic":"interface"},"AnimationAnimateMetadata":{"__symbolic":"interface"},"AnimationAnimateRefMetadata":{"__symbolic":"interface"},"AnimationGroupMetadata":{"__symbolic":"interface"},"AnimationKeyframesSequenceMetadata":{"__symbolic":"interface"},"AnimationMetadata":{"__symbolic":"interface"},"AnimationMetadataType":{"State":0,"Transition":1,"Sequence":2,"Group":3,"Animate":4,"Keyframes":5,"Style":6,"Trigger":7,"Reference":8,"AnimateChild":9,"AnimateRef":10,"Query":11,"Stagger":12},"AnimationOptions":{"__symbolic":"interface"},"AnimationQueryMetadata":{"__symbolic":"interfa
 
ce"},"AnimationQueryOptions":{"__symbolic":"interface"},"AnimationReferenceMetadata":{"__symbolic":"interface"},"AnimationSequenceMetadata":{"__symbolic":"interface"},"AnimationStaggerMetadata":{"__symbolic":"interface"},"AnimationStateMetadata":{"__symbolic":"interface"},"AnimationStyleMetadata":{"__symbolic":"interface"},"AnimationTransitionMetadata":{"__symbolic":"interface"},"AnimationTriggerMetadata":{"__symbolic":"interface"},"animate":{"__symbolic":"function","parameters":["timings","styles"],"defaults":[null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Animate"},"styles":{"__symbolic":"reference","name":"styles"},"timings":{"__symbolic":"reference","name":"timings"}}},"animateChild":{"__symbolic":"function","parameters":["options"],"defaults":[null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"AnimateChild"},"options":{"_
 
_symbolic":"reference","name":"options"}}},"animation":{"__symbolic":"function","parameters":["steps","options"],"defaults":[null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Reference"},"animation":{"__symbolic":"reference","name":"steps"},"options":{"__symbolic":"reference","name":"options"}}},"group":{"__symbolic":"function","parameters":["steps","options"],"defaults":[null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Group"},"steps":{"__symbolic":"reference","name":"steps"},"options":{"__symbolic":"reference","name":"options"}}},"keyframes":{"__symbolic":"function","parameters":["steps"],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Keyframes"},"steps":{"__symbolic":"reference","name":"steps"}}},"query":{"__symbolic":"function","parameters":["sele
 
ctor","animation","options"],"defaults":[null,null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Query"},"selector":{"__symbolic":"reference","name":"selector"},"animation":{"__symbolic":"reference","name":"animation"},"options":{"__symbolic":"reference","name":"options"}}},"sequence":{"__symbolic":"function","parameters":["steps","options"],"defaults":[null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Sequence"},"steps":{"__symbolic":"reference","name":"steps"},"options":{"__symbolic":"reference","name":"options"}}},"stagger":{"__symbolic":"function","parameters":["timings","animation"],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Stagger"},"timings":{"__symbolic":"reference","name":"timings"},"animation":{"__symbolic":"reference","name":"animation"}
 
}},"state":{"__symbolic":"function","parameters":["name","styles","options"],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"State"},"name":{"__symbolic":"reference","name":"name"},"styles":{"__symbolic":"reference","name":"styles"},"options":{"__symbolic":"reference","name":"options"}}},"style":{"__symbolic":"function","parameters":["tokens"],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Style"},"styles":{"__symbolic":"reference","name":"tokens"},"offset":null}},"transition":{"__symbolic":"function","parameters":["stateChangeExpr","steps","options"],"defaults":[null,null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Transition"},"expr":{"__symbolic":"reference","name":"stateChangeExpr"},"animation":{"__symbolic":"reference","name":"steps"},"options":{"__symbol
 
ic":"reference","name":"options"}}},"trigger":{"__symbolic":"function","parameters":["name","definitions"],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"Trigger"},"name":{"__symbolic":"reference","name":"name"},"definitions":{"__symbolic":"reference","name":"definitions"},"options":{}}},"useAnimation":{"__symbolic":"function","parameters":["animation","options"],"defaults":[null,null],"value":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"AnimationMetadataType"},"member":"AnimateRef"},"animation":{"__symbolic":"reference","name":"animation"},"options":{"__symbolic":"reference","name":"options"}}},"ɵStyleData":{"__symbolic":"interface"},"AnimationPlayer":{"__symbolic":"interface"},"NoopAnimationPlayer":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"_onFinish":[{"__symbolic":"method"}],"onStart":[{"__symbolic":"method"}],"onDone":[{"__symbolic":"method
 
"}],"onDestroy":[{"__symbolic":"method"}],"hasStarted":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"triggerMicrotask":[{"__symbolic":"method"}],"_onStart":[{"__symbolic":"method"}],"pause":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"finish":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setPosition":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}]}},"ɵPRE_STYLE":"!","ɵAnimationGroupPlayer":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"AnimationPlayer"}]}]}],"_onFinish":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"onStart":[{"__symbolic":"method"}],"_onStart":[{"__symbolic":"method"}],"onDone":[{"__symbolic":"method"}],"onDestroy":[{"__symbolic":"method"}],"hasStarted":[{"__symbolic":"method"}],"play":[{"__sy
 
mbolic":"method"}],"pause":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"finish":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_onDestroy":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setPosition":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"beforeDestroy":[{"__symbolic":"method"}]}}},"origins":{"AnimationBuilder":"./src/animation_builder","AnimationFactory":"./src/animation_builder","AnimationEvent":"./src/animation_event","AUTO_STYLE":"./src/animation_metadata","AnimateChildOptions":"./src/animation_metadata","AnimateTimings":"./src/animation_metadata","AnimationAnimateChildMetadata":"./src/animation_metadata","AnimationAnimateMetadata":"./src/animation_metadata","AnimationAnimateRefMetadata":"./src/animation_metadata","AnimationGroupMetadata":"./src/animation_metadata","AnimationKeyframesSequenceMetadata":"./src/animation_metadata","AnimationMetadata":"./src/animation_metadata","AnimationMetadataType":"./src/
 
animation_metadata","AnimationOptions":"./src/animation_metadata","AnimationQueryMetadata":"./src/animation_metadata","AnimationQueryOptions":"./src/animation_metadata","AnimationReferenceMetadata":"./src/animation_metadata","AnimationSequenceMetadata":"./src/animation_metadata","AnimationStaggerMetadata":"./src/animation_metadata","AnimationStateMetadata":"./src/animation_metadata","AnimationStyleMetadata":"./src/animation_metadata","AnimationTransitionMetadata":"./src/animation_metadata","AnimationTriggerMetadata":"./src/animation_metadata","animate":"./src/animation_metadata","animateChild":"./src/animation_metadata","animation":"./src/animation_metadata","group":"./src/animation_metadata","keyframes":"./src/animation_metadata","query":"./src/animation_metadata","sequence":"./src/animation_metadata","stagger":"./src/animation_metadata","state":"./src/animation_metadata","style":"./src/animation_metadata","transition":"./src/animation_metadata","trigger":"./src/animation_metadata"
 
,"useAnimation":"./src/animation_metadata","ɵStyleData":"./src/animation_metadata","AnimationPlayer":"./src/players/animation_player","NoopAnimationPlayer":"./src/players/animation_player","ɵPRE_STYLE":"./src/private_export","ɵAnimationGroupPlayer":"./src/players/animation_group_player"},"importAs":"@angular/animations"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser.d.ts 
b/node_modules/@angular/animations/browser.d.ts
new file mode 100644
index 0000000..16a14fb
--- /dev/null
+++ b/node_modules/@angular/animations/browser.d.ts
@@ -0,0 +1,6 @@
+/**
+ * @license Angular v4.4.6
+ * (c) 2010-2017 Google, Inc. https://angular.io/
+ * License: MIT
+ */ 
+ export * from './browser/index'

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser.metadata.json
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser.metadata.json 
b/node_modules/@angular/animations/browser.metadata.json
new file mode 100644
index 0000000..69ecc18
--- /dev/null
+++ b/node_modules/@angular/animations/browser.metadata.json
@@ -0,0 +1 @@
+{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./browser/index"}],"flatModuleIndexRedirect":true}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/index.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/index.d.ts 
b/node_modules/@angular/animations/browser/index.d.ts
new file mode 100644
index 0000000..7417cc8
--- /dev/null
+++ b/node_modules/@angular/animations/browser/index.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/index.metadata.json
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/index.metadata.json 
b/node_modules/@angular/animations/browser/index.metadata.json
new file mode 100644
index 0000000..fcc916a
--- /dev/null
+++ b/node_modules/@angular/animations/browser/index.metadata.json
@@ -0,0 +1 @@
+{"__symbolic":"module","version":3,"metadata":{"AnimationDriver":{"__symbolic":"class","members":{"matchesElement":[{"__symbolic":"method"}],"containsElement":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"computeStyle":[{"__symbolic":"method"}],"animate":[{"__symbolic":"method"}]},"statics":{"NOOP":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NoopAnimationDriver"}}}},"ɵAnimation":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AnimationDriver"},{"__symbolic":"reference","module":"@angular/animations","name":"AnimationMetadata"}]}],"buildTimelines":[{"__symbolic":"method"}]}},"ɵAnimationStyleNormalizer":{"__symbolic":"class","members":{"normalizePropertyName":[{"__symbolic":"method"}],"normalizeStyleValue":[{"__symbolic":"method"}]}},"ɵNoopAnimationStyleNormalizer":{"__symbolic":"class","members":{"normalizePropertyName":[{"__symbolic":"method"}],"normalizeStyleValue":[{"_
 
_symbolic":"method"}]}},"ɵWebAnimationsStyleNormalizer":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵAnimationStyleNormalizer"},"members":{"normalizePropertyName":[{"__symbolic":"method"}],"normalizeStyleValue":[{"__symbolic":"method"}]}},"ɵNoopAnimationDriver":{"__symbolic":"class","members":{"matchesElement":[{"__symbolic":"method"}],"containsElement":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"computeStyle":[{"__symbolic":"method"}],"animate":[{"__symbolic":"method"}]}},"ɵAnimationEngine":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AnimationDriver"},{"__symbolic":"reference","name":"ɵAnimationStyleNormalizer"}]}],"registerTrigger":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"onInsert":[{"__symbolic":"method"}],"onRemove":[{"__symbolic":"method"}],"disableAnimations":[{"__symbolic":"method"}],"process":[{"__
 
symbolic":"method"}],"listen":[{"__symbolic":"method"}],"flush":[{"__symbolic":"method"}],"whenRenderingDone":[{"__symbolic":"method"}]}},"ɵWebAnimationsDriver":{"__symbolic":"class","members":{"matchesElement":[{"__symbolic":"method"}],"containsElement":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"computeStyle":[{"__symbolic":"method"}],"animate":[{"__symbolic":"method"}]}},"ɵsupportsWebAnimations":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"error","message":"Expression
 form not 
supported","line":48,"character":9,"module":"./src/render/web_animations/web_animations_driver"},"right":"undefined"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression
 form not 
supported","line":48,"character":43,"module":"./src/render/web_animations/web_animations_driver"},"right":"function"}}},"ɵWebAnimationsPlayer":{"__symbolic":
 
"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"error","message":"Expression
 form not 
supported","line":32,"character":45,"module":"./src/render/web_animations/web_animations_player"}]},{"__symbolic":"error","message":"Expression
 form not 
supported","line":33,"character":22,"module":"./src/render/web_animations/web_animations_player"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"ɵWebAnimationsPlayer"}]}]}],"_onFinish":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"_buildPlayer":[{"__symbolic":"method"}],"_preparePlayerBeforeStart":[{"__symbolic":"method"}],"_triggerWebAnimation":[{"__symbolic":"method"}],"onStart":[{"__symbolic":"method"}],"onDone":[{"__symbolic":"method"}],"onDestroy":[{"__symbolic":"method"}],"play":[{"__symbolic":"method"}],"pause":[{"__symbolic":"method"}],"finish":[{"__symb
 
olic":"method"}],"reset":[{"__symbolic":"method"}],"_resetDomPlayerState":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"hasStarted":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"setPosition":[{"__symbolic":"method"}],"getPosition":[{"__symbolic":"method"}],"beforeDestroy":[{"__symbolic":"method"}]}}},"origins":{"AnimationDriver":"./src/render/animation_driver","ɵAnimation":"./src/dsl/animation","ɵAnimationStyleNormalizer":"./src/dsl/style_normalization/animation_style_normalizer","ɵNoopAnimationStyleNormalizer":"./src/dsl/style_normalization/animation_style_normalizer","ɵWebAnimationsStyleNormalizer":"./src/dsl/style_normalization/web_animations_style_normalizer","ɵNoopAnimationDriver":"./src/render/animation_driver","ɵAnimationEngine":"./src/render/animation_engine_next","ɵWebAnimationsDriver":"./src/render/web_animations/web_animations_driver","ɵsupportsWebAnimations":"./src/render/web_animations/web_animations_driver","ɵWebAnimationsPlay
 
er":"./src/render/web_animations/web_animations_player"},"importAs":"@angular/animations/browser"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/package.json
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/package.json 
b/node_modules/@angular/animations/browser/package.json
new file mode 100644
index 0000000..b9d1595
--- /dev/null
+++ b/node_modules/@angular/animations/browser/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "@angular/animations/browser",
+  "typings": "../browser.d.ts",
+  "main": "../bundles/animations-browser.umd.js",
+  "module": "../@angular/animations/browser.es5.js",
+  "es2015": "../@angular/animations/browser.js"
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/public_api.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/public_api.d.ts 
b/node_modules/@angular/animations/browser/public_api.d.ts
new file mode 100644
index 0000000..2af4ec6
--- /dev/null
+++ b/node_modules/@angular/animations/browser/public_api.d.ts
@@ -0,0 +1,13 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @module
+ * @description
+ * Entry point for all public APIs of the animation package.
+ */
+export * from './src/browser';

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/src/browser.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/src/browser.d.ts 
b/node_modules/@angular/animations/browser/src/browser.d.ts
new file mode 100644
index 0000000..bdbe837
--- /dev/null
+++ b/node_modules/@angular/animations/browser/src/browser.d.ts
@@ -0,0 +1,14 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @module
+ * @description
+ * Entry point for all animation APIs of the animation browser package.
+ */
+export { AnimationDriver } from './render/animation_driver';
+export * from './private_export';

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/src/dsl/animation.d.ts
----------------------------------------------------------------------
diff --git a/node_modules/@angular/animations/browser/src/dsl/animation.d.ts 
b/node_modules/@angular/animations/browser/src/dsl/animation.d.ts
new file mode 100644
index 0000000..395228f
--- /dev/null
+++ b/node_modules/@angular/animations/browser/src/dsl/animation.d.ts
@@ -0,0 +1,17 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+import { AnimationMetadata, AnimationOptions, ɵStyleData } from 
'@angular/animations';
+import { AnimationDriver } from '../render/animation_driver';
+import { AnimationTimelineInstruction } from 
'./animation_timeline_instruction';
+import { ElementInstructionMap } from './element_instruction_map';
+export declare class Animation {
+    private _driver;
+    private _animationAst;
+    constructor(_driver: AnimationDriver, input: AnimationMetadata | 
AnimationMetadata[]);
+    buildTimelines(element: any, startingStyles: ɵStyleData | ɵStyleData[], 
destinationStyles: ɵStyleData | ɵStyleData[], options: AnimationOptions, 
subInstructions?: ElementInstructionMap): AnimationTimelineInstruction[];
+}

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/animations/browser/src/dsl/animation_ast.d.ts
----------------------------------------------------------------------
diff --git 
a/node_modules/@angular/animations/browser/src/dsl/animation_ast.d.ts 
b/node_modules/@angular/animations/browser/src/dsl/animation_ast.d.ts
new file mode 100644
index 0000000..83080f4
--- /dev/null
+++ b/node_modules/@angular/animations/browser/src/dsl/animation_ast.d.ts
@@ -0,0 +1,96 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+import { AnimateTimings, AnimationMetadataType, AnimationOptions, ɵStyleData 
} from '@angular/animations';
+export interface AstVisitor {
+    visitTrigger(ast: TriggerAst, context: any): any;
+    visitState(ast: StateAst, context: any): any;
+    visitTransition(ast: TransitionAst, context: any): any;
+    visitSequence(ast: SequenceAst, context: any): any;
+    visitGroup(ast: GroupAst, context: any): any;
+    visitAnimate(ast: AnimateAst, context: any): any;
+    visitStyle(ast: StyleAst, context: any): any;
+    visitKeyframes(ast: KeyframesAst, context: any): any;
+    visitReference(ast: ReferenceAst, context: any): any;
+    visitAnimateChild(ast: AnimateChildAst, context: any): any;
+    visitAnimateRef(ast: AnimateRefAst, context: any): any;
+    visitQuery(ast: QueryAst, context: any): any;
+    visitStagger(ast: StaggerAst, context: any): any;
+}
+export interface Ast<T extends AnimationMetadataType> {
+    type: T;
+    options: AnimationOptions | null;
+}
+export interface TriggerAst extends Ast<AnimationMetadataType.Trigger> {
+    type: AnimationMetadataType.Trigger;
+    name: string;
+    states: StateAst[];
+    transitions: TransitionAst[];
+    queryCount: number;
+    depCount: number;
+}
+export interface StateAst extends Ast<AnimationMetadataType.State> {
+    type: AnimationMetadataType.State;
+    name: string;
+    style: StyleAst;
+}
+export interface TransitionAst extends Ast<AnimationMetadataType.Transition> {
+    matchers: ((fromState: string, toState: string) => boolean)[];
+    animation: Ast<AnimationMetadataType>;
+    queryCount: number;
+    depCount: number;
+}
+export interface SequenceAst extends Ast<AnimationMetadataType.Sequence> {
+    steps: Ast<AnimationMetadataType>[];
+}
+export interface GroupAst extends Ast<AnimationMetadataType.Group> {
+    steps: Ast<AnimationMetadataType>[];
+}
+export interface AnimateAst extends Ast<AnimationMetadataType.Animate> {
+    timings: TimingAst;
+    style: StyleAst | KeyframesAst;
+}
+export interface StyleAst extends Ast<AnimationMetadataType.Style> {
+    styles: (ɵStyleData | string)[];
+    easing: string | null;
+    offset: number | null;
+    containsDynamicStyles: boolean;
+    isEmptyStep?: boolean;
+}
+export interface KeyframesAst extends Ast<AnimationMetadataType.Keyframes> {
+    styles: StyleAst[];
+}
+export interface ReferenceAst extends Ast<AnimationMetadataType.Reference> {
+    animation: Ast<AnimationMetadataType>;
+}
+export interface AnimateChildAst extends 
Ast<AnimationMetadataType.AnimateChild> {
+}
+export interface AnimateRefAst extends Ast<AnimationMetadataType.AnimateRef> {
+    animation: ReferenceAst;
+}
+export interface QueryAst extends Ast<AnimationMetadataType.Query> {
+    selector: string;
+    limit: number;
+    optional: boolean;
+    includeSelf: boolean;
+    animation: Ast<AnimationMetadataType>;
+    originalSelector: string;
+}
+export interface StaggerAst extends Ast<AnimationMetadataType.Stagger> {
+    timings: AnimateTimings;
+    animation: Ast<AnimationMetadataType>;
+}
+export interface TimingAst {
+    duration: number;
+    delay: number;
+    easing: string | null;
+    dynamic?: boolean;
+}
+export interface DynamicTimingAst extends TimingAst {
+    strValue: string;
+    dynamic: true;
+}

Reply via email to