diff --git a/ecomp-portal-FE-os/.bowerrc b/ecomp-portal-FE-os/.bowerrc
new file mode 100644
index 0000000..dd348af
--- /dev/null
+++ b/ecomp-portal-FE-os/.bowerrc
@@ -0,0 +1,3 @@
+{
+  "directory": "client/bower_components/"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/.gitignore b/ecomp-portal-FE-os/.gitignore
new file mode 100644
index 0000000..8f3fb88
--- /dev/null
+++ b/ecomp-portal-FE-os/.gitignore
@@ -0,0 +1,11 @@
+/target/
+.classpath
+.project
+.settings/
+dist/
+bin
+node
+node_modules
+app
+.tmp
+client/bower_components
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/Gruntfile.js b/ecomp-portal-FE-os/Gruntfile.js
new file mode 100644
index 0000000..812fc80
--- /dev/null
+++ b/ecomp-portal-FE-os/Gruntfile.js
@@ -0,0 +1,778 @@
+// Generated on 2015-09-27 using generator-angular-fullstack 2.1.1
+'use strict';
+
+module.exports = function (grunt) {
+    var localConfig;
+    try {
+        localConfig = require('./server/config/local.env');
+    } catch (e) {
+        localConfig = {};
+    }
+
+    // Load grunt tasks automatically, when needed
+    require('jit-grunt')(grunt, {
+        express: 'grunt-express-server',
+        useminPrepare: 'grunt-usemin',
+        ngtemplates: 'grunt-angular-templates',
+        cdnify: 'grunt-google-cdn',
+        protractor: 'grunt-protractor-runner',
+        buildcontrol: 'grunt-build-control',
+        ngconstant: 'grunt-ng-constant'
+    });
+
+    // Time how long tasks take. Can help when optimizing build times
+    require('time-grunt')(grunt);
+
+    grunt.loadNpmTasks('grunt-exec');
+
+    // Define the configuration for all the tasks
+    grunt.initConfig({
+
+        // Project settings
+        pkg: grunt.file.readJSON('package.json'),
+        yeoman: {
+            // configurable paths
+            client: require('./bower.json').appPath || 'client',
+            dist: 'dist'
+        },
+        express: {
+            options: {
+                port: process.env.PORT || 9000
+            },
+            dev: {
+                options: {
+                    script: 'server/app.js',
+                    args:[
+                        grunt.option('min') ? '' : '--unmin',
+                        grunt.option('server-conf') ? '--server-conf=' + grunt.option('server-conf') : '--server-conf=development'
+                    ]
+                }
+            },
+            dev_debug: {
+                options: {
+                    script: 'server/app.js',
+                    debug: true,
+                    args:[
+                        grunt.option('min') ? '' : '--unmin',
+                        grunt.option('server-conf') ? '--server-conf=' + grunt.option('server-conf') : '--server-conf=development'
+                    ]
+                }
+            },
+            mock: {
+                options: {
+                    script: 'mock/server.js'
+                }
+            },
+            prod: {
+                options: {
+                    script: 'dist/server/app.js'
+                }
+            }
+        },
+        open: {
+            server: {
+                url: 'http://localhost:<%= express.options.port %>/ecompportal/applicationsHome'
+            }
+        },
+        watch: {
+            injectJS: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.js',
+                    '!<%= yeoman.client %>/{app,components}/**/*.spec.js',
+                    '!<%= yeoman.client %>/{app,components}/**/*.mock.js',
+                    '!<%= yeoman.client %>/app/app.js'],
+                tasks: ['injector:scripts']
+            },
+            injectCss: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.css'
+                ],
+                tasks: ['injector:css']
+            },
+            mochaTest: {
+                files: ['server/**/*.spec.js'],
+                tasks: ['env:test', 'mochaTest']
+            },
+            jsTest: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.spec.js',
+                    '<%= yeoman.client %>/{app,components}/**/*.mock.js'
+                ],
+                tasks: ['newer:jshint:all', 'karma']
+            },
+            injectLess: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.less'],
+                tasks: ['injector:less']
+            },
+            less: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.less'],
+                tasks: ['less', 'autoprefixer']
+            },
+            babel: {
+                files: [
+                    '<%= yeoman.client %>/{app,components}/**/*.js',
+                    '!<%= yeoman.client %>/{app,components}/**/*.spec.js'
+                ],
+                tasks: ['babel']
+            },
+            gruntfile: {
+                files: ['Gruntfile.js']
+            },
+            livereload: {
+                files: [
+                    '{.tmp,<%= yeoman.client %>}/{app,components}/**/*.css',
+                    '{.tmp,<%= yeoman.client %>}/{app,components}/**/*.html',
+
+                    '.tmp/{app,components}/**/*.js',
+
+                    '!{.tmp,<%= yeoman.client %>}{app,components}/**/*.spec.js',
+                    '!{.tmp,<%= yeoman.client %>}/{app,components}/**/*.mock.js',
+                    '<%= yeoman.client %>/assets/images/{,*//*}*.{png,jpg,jpeg,gif,webp,svg}'
+                ],
+                options: {
+                    livereload: true
+                }
+            },
+            express: {
+                files: [
+                    'server/**/*.{js,json}'
+                ],
+                tasks: ['express:dev', 'wait'],
+                options: {
+                    livereload: true,
+                    spawn: false //Without this option specified express won't be reloaded
+                }
+            },
+            mock:{
+                files:[
+                    'mock/**/*'
+                ],
+                tasks:['express:mock'],
+                options:{
+                    spawn: false
+                }
+            },
+            clientConf: {
+                files: [
+                    'client/configurations/*.json'
+                ],
+                tasks: ['ngconstant']
+            }
+        },
+
+        // Make sure code styles are up to par and there are no obvious mistakes
+        jshint: {
+            options: {
+                jshintrc: '<%= yeoman.client %>/.jshintrc',
+                reporter: require('jshint-stylish')
+            },
+            server: {
+                options: {
+                    jshintrc: 'server/.jshintrc'
+                },
+                src: [
+                    'server/**/*.js',
+                    '!server/**/*.spec.js'
+                ]
+            },
+            serverTest: {
+                options: {
+                    jshintrc: 'server/.jshintrc-spec'
+                },
+                src: ['server/**/*.spec.js']
+            },
+            all: [
+                '<%= yeoman.client %>/{app,components}/**/*.js',
+                '!<%= yeoman.client %>/{app,components}/**/*.spec.js',
+                '!<%= yeoman.client %>/{app,components}/**/*.mock.js'
+            ],
+            test: {
+                src: [
+                    '<%= yeoman.client %>/{app,components}/**/*.spec.js',
+                    '<%= yeoman.client %>/{app,components}/**/*.mock.js'
+                ]
+            }
+        },
+
+        // Empties folders to start fresh
+        clean: {
+            dist: {
+                files: [{
+                    dot: true,
+                    src: [
+                        '.tmp',
+                        '<%= yeoman.dist %>/*',
+                        '!<%= yeoman.dist %>/.git*',
+                        '!<%= yeoman.dist %>/.openshift',
+                        '!<%= yeoman.dist %>/Procfile'
+                    ]
+                }]
+            },
+            server: '.tmp'
+        },
+
+        // Add vendor prefixed styles
+        autoprefixer: {
+            options: {
+                browsers: ['last 1 version']
+            },
+            dist: {
+                files: [{
+                    expand: true,
+                    cwd: '.tmp/',
+                    src: '{,*/}*.css',
+                    dest: '.tmp/'
+                }]
+            }
+        },
+
+        // // Debugging with node inspector
+        // 'node-inspector': {
+        //     custom: {
+        //         options: {
+        //             'web-host': 'localhost'
+        //         }
+        //     }
+        // },
+
+        // Use nodemon to run server in debug mode with an initial breakpoint
+        nodemon: {
+            debug: {
+                script: 'server/app.js',
+                options: {
+                    nodeArgs: ['--debug-brk'],
+                    env: {
+                        PORT: process.env.PORT || 9000
+                    },
+                    callback: function (nodemon) {
+                        nodemon.on('log', function (event) {
+                            console.log(event.colour);
+                        });
+
+                        // opens browser on initial server start
+                        nodemon.on('config:update', function () {
+                            setTimeout(function () {
+                                require('open')('http://localhost:8080/debug?port=5858');
+                            }, 500);
+                        });
+                    }
+                }
+            }
+        },
+
+        // Automatically inject Bower components into the app
+        wiredep: {
+            target: {
+                src: '<%= yeoman.client %>/index.html',
+                ignorePath: '<%= yeoman.client %>/',
+                exclude: [/bootstrap-sass-official/, /bootstrap.js/, '/json3/', '/es5-shim/', /bootstrap.css/, /font-awesome.css/]
+            }
+        },
+
+        // Renames files for browser caching purposes
+        rev: {
+            dist: {
+                files: {
+                    src: [
+                        '<%= yeoman.dist %>/public/{,*/}*.js',
+                        '<%= yeoman.dist %>/public/{,*/}*.css',
+                        '<%= yeoman.dist %>/public/assets/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
+                        '<%= yeoman.dist %>/public/assets/fonts/*',
+                        '!<%= yeoman.dist %>/public/assets/images/tmp/*'
+                    ]
+                }
+            }
+        },
+
+        // Reads HTML for usemin blocks to enable smart builds that automatically
+        // concat, minify and revision files. Creates configurations in memory so
+        // additional tasks can operate on them
+        useminPrepare: {
+            html: ['<%= yeoman.client %>/index.html'],
+            options: {
+                dest: '<%= yeoman.dist %>/public'
+            }
+        },
+
+        // Performs rewrites based on rev and the useminPrepare configuration
+        usemin: {
+            html: ['<%= yeoman.dist %>/public/{,*/}*.html'],
+            css: ['<%= yeoman.dist %>/public/{,*/}*.css'],
+            js: ['<%= yeoman.dist %>/public/{,*/}*.js'],
+            options: {
+                assetsDirs: [
+                    '<%= yeoman.dist %>/public',
+                    '<%= yeoman.dist %>/public/assets'
+                ],
+                // This is so we update image references in our ng-templates
+                patterns: {
+                    js: [
+                        [/(assets\/images\/.*?\.(?:gif|jpeg|jpg|png|webp|svg))/gm, 'Update the JS to reference our revved images']
+                    ]
+                }
+            }
+        },
+
+        // The following *-min tasks produce minified files in the dist folder
+        imagemin: {
+            dist: {
+                files: [{
+                    expand: true,
+                    cwd: '<%= yeoman.client %>/assets/images',
+                    src: '{,*/}*.{png,jpg,jpeg,gif}',
+                    dest: '<%= yeoman.dist %>/public/assets/images'
+                }]
+            }
+        },
+
+        svgmin: {
+            dist: {
+                files: [{
+                    expand: true,
+                    cwd: '<%= yeoman.client %>/assets/images',
+                    src: '{,*/}*.svg',
+                    dest: '<%= yeoman.dist %>/public/assets/images'
+                }]
+            }
+        },
+
+        // Allow the use of non-minsafe AngularJS files. Automatically makes it
+        // minsafe compatible so Uglify does not destroy the ng references
+        ngAnnotate: {
+            dist: {
+                files: [{
+                    expand: true,
+                    cwd: '.tmp/concat',
+                    src: '**/*.js',
+                    dest: '.tmp/concat'
+                }]
+            }
+        },
+
+        // Package all the html partials into a single javascript payload
+        ngtemplates: {
+        	app: {
+        	    options: {
+        	      prefix: ''
+        	    }
+        	 },
+            options: {
+                // This should be the name of your apps angular module
+                module: 'ecompApp',
+                htmlmin: {
+                    collapseBooleanAttributes: true,
+                    collapseWhitespace: true,
+                    removeAttributeQuotes: true,
+                    removeEmptyAttributes: true,
+                    removeRedundantAttributes: true,
+                    removeScriptTypeAttributes: true,
+                    removeStyleLinkTypeAttributes: true
+                },
+                usemin: 'app/app.js'
+            },
+            main: {
+                cwd: '<%= yeoman.client %>',
+                src: ['{app,components}/**/*.html'],
+                dest: '.tmp/templates.js'
+            },
+            tmp: {
+                cwd: '.tmp',
+                src: ['{app,components}/**/*.html'],
+                dest: '.tmp/tmp-templates.js'
+            }
+        },
+
+        // Replace Google CDN references
+        cdnify: {
+            dist: {
+                html: ['<%= yeoman.dist %>/public/*.html']
+            }
+        },
+
+        // Copies remaining files to places other tasks can use
+        copy: {
+            dist: {
+                files: [{
+                    expand: true,
+                    dot: true,
+                    cwd: '<%= yeoman.client %>',
+                    dest: '<%= yeoman.dist %>/public',
+                    src: [
+                        '*.{ico,png,txt}',
+                        '.htaccess',
+                        'bower_components/**/*',
+                        'bower_components_external/**/*',
+                        'assets/images/**/*',
+                        'assets/fonts/**/*',
+                        'index.html'
+                    ]
+                }, {
+                    expand: true,
+                    cwd: '.tmp/images',
+                    dest: '<%= yeoman.dist %>/public/assets/images',
+                    src: ['generated/*']
+                }, {
+                    expand: true,
+                    dest: '<%= yeoman.dist %>',
+                    src: [
+                        'package.json',
+                        'server/**/*'
+                    ]
+                }]
+            },
+            styles: {
+                expand: true,
+                cwd: '<%= yeoman.client %>',
+                dest: '.tmp/',
+                src: ['{app,components}/**/*.css']
+            }
+        },
+
+        buildcontrol: {
+            options: {
+                dir: 'dist',
+                commit: true,
+                push: true,
+                connectCommits: false,
+                message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%'
+            },
+            heroku: {
+                options: {
+                    remote: 'heroku',
+                    branch: 'master'
+                }
+            },
+            openshift: {
+                options: {
+                    remote: 'openshift',
+                    branch: 'master'
+                }
+            }
+        },
+
+        // Run some tasks in parallel to speed up the build process
+        concurrent: {
+            server: [
+                'babel',
+                'less',
+            ],
+            test: [
+                'babel',
+                'less',
+            ],
+            debug: {
+                tasks: [
+                    'nodemon'
+                    //'node-inspector'
+                ],
+                options: {
+                    logConcurrentOutput: true
+                }
+            },
+            dist: [
+                'babel',
+                'less',
+                //'imagemin',
+                'svgmin'
+            ]
+        },
+
+        // Test settings
+        karma: {
+            unit: {
+                configFile: 'karma.conf.js',
+                singleRun: true
+            }
+        },
+
+        mochaTest: {
+            options: {
+                reporter: 'spec'
+            },
+            src: ['server/**/*.spec.js']
+        },
+
+        protractor: {
+            options: {
+                configFile: 'protractor.conf.js'
+            },
+            chrome: {
+                options: {
+                    args: {
+                        browser: 'chrome'
+                    }
+                }
+            }
+        },
+
+        env: {
+            test: {
+                NODE_ENV: 'test'
+            },
+            prod: {
+                NODE_ENV: 'production'
+            },
+            all: localConfig
+        },
+
+        // Compiles ES6 to JavaScript using Babel
+        babel: {
+            options: {
+                sourceMap: true
+            },
+            server: {
+                files: [{
+                    expand: true,
+                    cwd: 'client',
+                    src: [
+                        '{app,components}/**/*.js',
+                        '!{app,components}/**/*.spec.js'
+                    ],
+                    dest: '.tmp'
+                }]
+            }
+        },
+
+        // Compiles Less to CSS
+        less: {
+            options: {
+                paths: [
+                    '<%= yeoman.client %>/bower_components',
+                    '<%= yeoman.client %>/app',
+                    '<%= yeoman.client %>/components'
+                ]
+            },
+            server: {
+                files: {
+                    '.tmp/app/app.css': '<%= yeoman.client %>/app/app.less'
+                }
+            },
+        },
+
+        injector: {
+            options: {},
+            // Inject application script files into index.html (doesn't include bower)
+            scripts: {
+                options: {
+                    transform: function (filePath) {
+                         filePath = filePath.replace('/client/', '');
+                         filePath = filePath.replace('/.tmp/', '');
+                         return '<script src="' + filePath + '"></script>';
+                    },
+                    starttag: '<!-- injector:js -->',
+                    endtag: '<!-- endinjector -->'
+                },
+                files: {
+                    '<%= yeoman.client %>/index.html': [
+                        [
+
+                            '.tmp/{app,components}/**/*.js',
+
+                            '!{.tmp,<%= yeoman.client %>}/app/app.js',
+                            '!{.tmp,<%= yeoman.client %>}/{app,components}/**/*.spec.js',
+                            '!{.tmp,<%= yeoman.client %>}/{app,components}/**/*.mock.js'
+                        ]
+                    ]
+                }
+            },
+
+            // Inject component less into app.less
+            less: {
+                options: {
+                    transform: function (filePath) {
+                        filePath = filePath.replace('/client/app/', '');
+                        filePath = filePath.replace('/client/components/', '');
+                        return '@import \'' + filePath + '\';';
+                    },
+                    starttag: '// injector',
+                    endtag: '// endinjector'
+                },
+                files: {
+                    '<%= yeoman.client %>/app/app.less': [
+                        '<%= yeoman.client %>/{app,components}/**/*.less',
+                        '!<%= yeoman.client %>/app/app.less'
+                    ]
+                }
+            },
+
+            // Inject component css into index.html
+            css: {
+                options: {
+                    transform: function (filePath) {
+                        filePath = filePath.replace('/client/', '');
+                        filePath = filePath.replace('/.tmp/', '');
+                        return '<link rel="stylesheet" href="' + filePath + '">';
+                    },
+                    starttag: '<!-- injector:css -->',
+                    endtag: '<!-- endinjector -->'
+                },
+                files: {
+                    '<%= yeoman.client %>/index.html': [
+                        '<%= yeoman.client %>/{app,components}/**/*.css'
+                    ]
+                }
+            }
+        },
+
+        //Project configuration task
+        ngconstant: {
+            main: {
+                options: {
+                    dest: 'client/app/configurations.js',
+                    name: 'ecomp.conf'
+                },
+                constants: function () {
+                    if (!grunt.option('env')) {
+                        grunt.fail.warn('env parameter missing, please use --env=<environment configuration>, ex: grunt serve --env=mock');
+                    }
+
+                    return {
+                        conf: grunt.file.readJSON('client/configurations/' + grunt.option('env') + '.json')
+                    }
+                }
+            }
+        },
+        exec: {
+            delete: 'sshpass -p Aa123456 ssh root@remotehost rm -rf /var/lib/tomcat/webapps/ecompportal/public/',
+            copy: 'sshpass -p Aa123456 scp -r dist/public/ root@remotehost:/var/lib/tomcat/webapps/ecompportal/'
+        }
+    });
+
+    //Express server task
+
+    // Used for delaying livereload until after server has restarted
+    grunt.registerTask('wait', function () {
+        grunt.log.ok('Waiting for server reload...');
+
+        var done = this.async();
+
+        setTimeout(function () {
+            grunt.log.writeln('Done waiting!');
+            done();
+        }, 1500);
+    });
+
+    grunt.registerTask('express-keepalive', 'Keep grunt running', function () {
+        this.async();
+    });
+
+    grunt.registerTask('serve', function (target) {
+
+        if (target === 'dist') {
+            return grunt.task.run(['build', 'env:all', 'env:prod', 'express:prod', 'express:mock', 'wait', 'open', 'express-keepalive']);
+        }
+
+        if (target === 'debug') {
+            return grunt.task.run([
+                'clean:server',
+                'env:all',
+                'injector:less',
+                'concurrent:server',
+                'express:mock',
+                'injector',
+                'wiredep',
+                'autoprefixer',
+                'concurrent:debug'
+            ]);
+        }
+
+        var isDebug = grunt.option('dev_debug');
+
+        grunt.task.run([
+            'clean:server',
+            'env:all',
+            'ngconstant',
+            'injector:less',
+            'concurrent:server',
+            'injector',
+            'wiredep',
+            'autoprefixer',
+            isDebug ? 'express:dev_debug' : 'express:dev',
+            'express:mock',
+            'wait',
+            'open',
+            'watch'
+        ]);
+    });
+
+    grunt.registerTask('server', function () {
+        grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
+        grunt.task.run(['serve']);
+    });
+
+    grunt.registerTask('test', function (target) {
+        if (target === 'server') {
+            return grunt.task.run([
+                'env:all',
+                'env:test',
+                'mochaTest'
+            ]);
+        }
+
+        else if (target === 'client') {
+            return grunt.task.run([
+                'clean:server',
+                'env:all',
+                'injector:less',
+                'concurrent:test',
+                'injector',
+                'ngtemplates:main',
+                'autoprefixer',
+                'karma'
+            ]);
+        }
+
+        else if (target === 'e2e') {
+            return grunt.task.run([
+                'clean:server',
+                'env:all',
+                'env:test',
+                'injector:less',
+                'concurrent:test',
+                'injector',
+                'wiredep',
+                'autoprefixer',
+                'express:dev',
+                'protractor'
+            ]);
+        }
+
+        else grunt.task.run([
+                'test:server',
+                'test:client'
+            ]);
+    });
+
+    grunt.registerTask('build', [
+        'clean:dist',
+        'injector:less',
+        'ngconstant',
+        'concurrent:dist',
+        'injector',
+        'wiredep',
+        'useminPrepare',
+        'autoprefixer',
+        'ngtemplates',
+        'concat',
+        'ngAnnotate',
+        'copy:dist',
+        //'cdnify',
+        'cssmin',
+        'uglify',
+        'rev',
+        'usemin'
+    ]);
+
+    grunt.registerTask('default', [
+        'newer:jshint',
+        'test',
+        'build'
+    ]);
+
+    grunt.registerTask('deploy', [
+        'build',
+        'exec'
+    ]);
+};
diff --git a/ecomp-portal-FE-os/README.md b/ecomp-portal-FE-os/README.md
new file mode 100644
index 0000000..d8dcbb0
--- /dev/null
+++ b/ecomp-portal-FE-os/README.md
@@ -0,0 +1,70 @@
+# ECOMP Portal Web Application Front End for Open-Source Use
+
+## Overview
+
+This is a Maven project with the ECOMP Portal front-end files for public
+release, containing font files, image files and other static files.
+This project uses Maven to copy in ("overlay") the contents of the ECOMP
+Portal FE common files at package time.
+
+Use Apache Maven to build and package this collection of files using Bower,
+Grunt and NPM.
+
+## Release Notes
+
+Release notes for all ECOMP Portal *Open Source specific* files, including
+front-end files, are tracked in file ecomp-portal-BE-os/README.md
+
+## Installation Notes
+
+TODO: These notes are somewhat outdated.
+
+### Prerequisites
+
+1. [node.js](https://nodejs.org/en/) - ssp project is running on node.js 4.1.1 please install from the link
+2. bower - install with npm: `npm install -g bower` _NOTE: mac/linux users should run the following command with `sudo`_
+3. [git](https://git-scm.com/) - install git command line tool _NOTE: please select to add git command line into the PATH variable for it to be accessible from any folder_
+4. grunt - install grunt with npm: `npm install -g grunt-cli` _NOTE: mac/linux users should run the following command with `sudo`_
+
+
+### First run
+_NOTE: some npm modules inside the project does not support yet the new node.js 4.1.1, npm install command will probably throw an error. even so, everything should work, so no need to worry
+
+1. run `npm install` to install all the server side dependencies
+2. run `bower install` to install all the client side dependencies
+
+### Running the project
+
+this project it supported by grunt task manager, below are the different run options
+ssp project can be run with different client configurations per environment, the environment is set byt the option `--env=<environement name>`
+the following evironments are available:
+
+mock - mock will activate the mock server and will return static data examples from predefined json files.
+
+### Dev time
+
+1. to start the project in dev mode under mock please run: `grunt serve --env=mock`
+2. for any other client configuration change the `--env` option accordingly to env options available 
+
+
+### Tests
+
+There are 3 options available for tests:
+
+1. `grunt test` will run all re server and the client tests all together
+2. `grunt test:client` will run only the client tests
+3. `grunt test:server` will run only the server tests
+
+### Build time
+
+Execute below commands
+
+npm cache clean
+npm install
+npm install -g bower
+bower install
+grunt build --env=integ
+
+COPY ${FE_DIR}/dist/public into ${BE_DIR}/public
+
+deploy BE project onto tomcat and goto login page http://portal.openecomp.org:8989/ECOMPPORTAL/login.htm
diff --git a/ecomp-portal-FE-os/bower.json b/ecomp-portal-FE-os/bower.json
new file mode 100644
index 0000000..b5c8f75
--- /dev/null
+++ b/ecomp-portal-FE-os/bower.json
@@ -0,0 +1,41 @@
+{
+  "name": "ecomp",
+  "version": "0.0.0",
+  "dependencies": {
+    "angular": "1.4.8",
+    "angular-animate": "1.4.8",
+    "angular-route": "1.4.8",
+    "angular-aria": "1.4.8",
+    "angular-messages": "~1.4.8",
+    "angular-material": "0.9.8",
+    "json3": "~3.3.1",
+    "es5-shim": "~4.5.8",
+    "angular-resource": "1.4.8",
+    "angular-cookies": "1.4.8",
+    "angular-sanitize": "1.4.8",
+    "lodash": "~4.13.1",
+    "angular-ui-router": "~0.2.18",
+    "jquery": "~2.2.4",
+    "ui-select": "angular-ui-select#~0.17.1",
+    "angular-touch": "1.4.8",
+    "angular-smart-table": "~2.1.8",
+    "angular-gestures": "latest",
+    "angular-cache": "~4.6.0",
+    "ng-dialog": "~0.6.1",
+    "jqTree": "jqtree#^1.3.3",
+    "angular-uuid": "^0.1.0",
+    "angular-bootstrap": "^2.0.0",
+    "jquery.newstape": "1.0.0",
+    "oclazyload": "1.0.9",
+    "d3" : "3.1.5",
+    "angular-gridster": "^0.13.15"
+
+  },
+  "devDependencies": {
+    "angular-mocks": "~1.4.8",
+    "angular-scenario": "~1.4.8"
+  },
+  "resolutions": {
+    "angular": "1.4.8"
+  }
+}
diff --git a/ecomp-portal-FE-os/build-ecomportal-fe.sh b/ecomp-portal-FE-os/build-ecomportal-fe.sh
new file mode 100644
index 0000000..8fc199d
--- /dev/null
+++ b/ecomp-portal-FE-os/build-ecomportal-fe.sh
@@ -0,0 +1,181 @@
+#!/bin/sh
+
+# Script name : build_ecompportal_fe.sh
+# Script purpose : To have an easy way to build the front-end part of the eComp portal
+# Pre requisites :
+# 1. Your home directory must reside at /home
+# 2. Your server must have a 'Node' installation
+#----------------------------------------------------------------------------------------
+
+
+################################################
+### Functions
+################################################
+function log_message() {
+msgType=$1
+message=$2
+
+if [ ${msgType} == "I" ]; then
+printf "\033[32m %s \n\033[0m" "INF - ${message}"
+elif [ ${msgType} == "E" ]; then
+printf "\033[31m %s \n\033[0m" "ERR - ${message}"
+else
+echo "${msgType} - ${message}";
+fi
+}
+
+
+
+function exit_with_error() {
+
+log_message "E" ""
+log_message "E" "$1"
+log_message "E" ""
+
+exit 1
+}
+
+
+
+################################################
+### Hard coded information.
+################################################
+NVM_DIR="/home/${USER}/.nvm"
+NODE_VERSION=v0.12.4
+SCRIPT_USAGE="USAGE: $0 [ dev | ci | integ | qa ]"
+
+
+
+################################################
+### Verify arguments
+################################################
+log_message "I" "Checking command line arguments."
+if [ $# == 1 ]; then
+if [ $1 == "ci" -o $1 == "integ" -o $1 == "dev" -o $1 == "qa" ]; then
+BUILD_BY_ENV=$1
+else
+exit_with_error "The environment '$1' is invalid."
+fi
+else
+log_message "E" ""
+log_message "E" "$SCRIPT_USAGE"
+log_message "E" ""
+exit 1
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Set the node environment.
+################################################
+log_message "I" "Set the node environment."
+if [ -s "$NVM_DIR/nvm.sh" ]; then
+# This loads nvm
+. "$NVM_DIR/nvm.sh"
+if [ $? != 0 ]; then
+exit_with_error "Cannot load the NODE env."
+fi
+else
+exit_with_error "The nvm.sh script does not exist."
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Set the node version manager version.
+################################################
+log_message "I" "Set the node version manager version."
+nvm use v0.12.4
+TOOLS_ROOT_FOLDER=${NVM_DIR}/versions/node/${NODE_VERSION}/bin
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Set the proxy servers.
+################################################
+log_message "I" "Set the proxy servers."
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Install bower, if neeeded.
+################################################
+log_message "I" "Install bower, if neeeded."
+if [ ! -e ${TOOLS_ROOT_FOLDER}/bower ]; then
+npm install -g bower
+if [ $? != 0 ]; then
+exit_with_error "Cannot install bower."
+fi
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Install grunt, if neeeded.
+################################################
+log_message "I" "Install grunt, if neeeded."
+if [ ! -e ${TOOLS_ROOT_FOLDER}/grunt ]; then
+npm config set ca ""
+npm install -g grunt-cli
+
+if [ $? != 0 ]; then
+exit_with_error "Cannot install grunt."
+fi
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Run the Node package manager (NPM).
+################################################
+log_message "I" "Run the Node package manager (npm install)."
+npm install
+if [ $? != 0 ]; then
+exit_with_error "Cannot run 'npm install'."
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Install the Bower components.
+################################################
+log_message "I" "Install the Bower components."
+bower install
+if [ $? != 0 ]; then
+exit_with_error "Cannot run 'npm install'."
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+################################################
+### Build the application.
+################################################
+log_message "I" "Build the application."
+grunt build --env=${BUILD_BY_ENV}
+if [ $? != 0 ]; then
+exit_with_error "Cannot run 'grunt build --env=${BUILD_BY_ENV}'."
+fi
+log_message "I" "OK."
+log_message "I" ""
+
+
+
+log_message "I" ""
+log_message "I" "Done."
+log_message "I" ""
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/.htaccess b/ecomp-portal-FE-os/client/.htaccess
new file mode 100644
index 0000000..cb84cb9
--- /dev/null
+++ b/ecomp-portal-FE-os/client/.htaccess
@@ -0,0 +1,543 @@
+# Apache Configuration File
+
+# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
+# to the main server config file (usually called `httpd.conf`), you should add
+# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
+
+# ##############################################################################
+# # CROSS-ORIGIN RESOURCE SHARING (CORS)                                       #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Cross-domain AJAX requests                                                 |
+# ------------------------------------------------------------------------------
+
+# Enable cross-origin AJAX requests.
+# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
+# http://enable-cors.org/
+
+# <IfModule mod_headers.c>
+#    Header set Access-Control-Allow-Origin "*"
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | CORS-enabled images                                                        |
+# ------------------------------------------------------------------------------
+
+# Send the CORS header for images when browsers request it.
+# https://developer.mozilla.org/en/CORS_Enabled_Image
+# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
+# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
+
+<IfModule mod_setenvif.c>
+    <IfModule mod_headers.c>
+        <FilesMatch "\.(gif|ico|jpe?g|png|svg|svgz|webp)$">
+            SetEnvIf Origin ":" IS_CORS
+            Header set Access-Control-Allow-Origin "*" env=IS_CORS
+        </FilesMatch>
+    </IfModule>
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | Web fonts access                                                           |
+# ------------------------------------------------------------------------------
+
+# Allow access from all domains for web fonts
+
+<IfModule mod_headers.c>
+    <FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
+        Header set Access-Control-Allow-Origin "*"
+    </FilesMatch>
+</IfModule>
+
+
+# ##############################################################################
+# # ERRORS                                                                     #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | 404 error prevention for non-existing redirected folders                   |
+# ------------------------------------------------------------------------------
+
+# Prevent Apache from returning a 404 error for a rewrite if a directory
+# with the same name does not exist.
+# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
+# http://www.webmasterworld.com/apache/3808792.htm
+
+Options -MultiViews
+
+# ------------------------------------------------------------------------------
+# | Custom error messages / pages                                              |
+# ------------------------------------------------------------------------------
+
+# You can customize what Apache returns to the client in case of an error (see
+# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.:
+
+ErrorDocument 404 /404.html
+
+
+# ##############################################################################
+# # INTERNET EXPLORER                                                          #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Better website experience                                                  |
+# ------------------------------------------------------------------------------
+
+# Force IE to render pages in the highest available mode in the various
+# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf.
+
+<IfModule mod_headers.c>
+    Header set X-UA-Compatible "IE=edge"
+    # `mod_headers` can't match based on the content-type, however, we only
+    # want to send this header for HTML pages and not for the other resources
+    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
+        Header unset X-UA-Compatible
+    </FilesMatch>
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | Cookie setting from iframes                                                |
+# ------------------------------------------------------------------------------
+
+# Allow cookies to be set from iframes in IE.
+
+# <IfModule mod_headers.c>
+#   Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | Screen flicker                                                             |
+# ------------------------------------------------------------------------------
+
+# Stop screen flicker in IE on CSS rollovers (this only works in
+# combination with the `ExpiresByType` directives for images from below).
+
+# BrowserMatch "MSIE" brokenvary=1
+# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
+# BrowserMatch "Opera" !brokenvary
+# SetEnvIf brokenvary 1 force-no-vary
+
+
+# ##############################################################################
+# # MIME TYPES AND ENCODING                                                    #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Proper MIME types for all files                                            |
+# ------------------------------------------------------------------------------
+
+<IfModule mod_mime.c>
+
+  # Audio
+    AddType audio/mp4                                   m4a f4a f4b
+    AddType audio/ogg                                   oga ogg
+
+  # JavaScript
+    # Normalize to standard type (it's sniffed in IE anyways):
+    # http://tools.ietf.org/html/rfc4329#section-7.2
+    AddType application/javascript                      js jsonp
+    AddType application/json                            json
+
+  # Video
+    AddType video/mp4                                   mp4 m4v f4v f4p
+    AddType video/ogg                                   ogv
+    AddType video/webm                                  webm
+    AddType video/x-flv                                 flv
+
+  # Web fonts
+    AddType application/font-woff                       woff
+    AddType application/vnd.ms-fontobject               eot
+
+    # Browsers usually ignore the font MIME types and sniff the content,
+    # however, Chrome shows a warning if other MIME types are used for the
+    # following fonts.
+    AddType application/x-font-ttf                      ttc ttf
+    AddType font/opentype                               otf
+
+    # Make SVGZ fonts work on iPad:
+    # https://twitter.com/FontSquirrel/status/14855840545
+    AddType     image/svg+xml                           svg svgz
+    AddEncoding gzip                                    svgz
+
+  # Other
+    AddType application/octet-stream                    safariextz
+    AddType application/x-chrome-extension              crx
+    AddType application/x-opera-extension               oex
+    AddType application/x-shockwave-flash               swf
+    AddType application/x-web-app-manifest+json         webapp
+    AddType application/x-xpinstall                     xpi
+    AddType application/xml                             atom rdf rss xml
+    AddType image/webp                                  webp
+    AddType image/x-icon                                ico
+    AddType text/cache-manifest                         appcache manifest
+    AddType text/vtt                                    vtt
+    AddType text/x-component                            htc
+    AddType text/x-vcard                                vcf
+
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | UTF-8 encoding                                                             |
+# ------------------------------------------------------------------------------
+
+# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
+AddDefaultCharset utf-8
+
+# Force UTF-8 for certain file formats.
+<IfModule mod_mime.c>
+    AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml
+</IfModule>
+
+
+# ##############################################################################
+# # URL REWRITES                                                               #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Rewrite engine                                                             |
+# ------------------------------------------------------------------------------
+
+# Turning on the rewrite engine and enabling the `FollowSymLinks` option is
+# necessary for the following directives to work.
+
+# If your web host doesn't allow the `FollowSymlinks` option, you may need to
+# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the
+# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
+
+# Also, some cloud hosting services require `RewriteBase` to be set:
+# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
+
+<IfModule mod_rewrite.c>
+    Options +FollowSymlinks
+  # Options +SymLinksIfOwnerMatch
+    RewriteEngine On
+  # RewriteBase /
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | Suppressing / Forcing the "www." at the beginning of URLs                  |
+# ------------------------------------------------------------------------------
+
+# The same content should never be available under two different URLs especially
+# not with and without "www." at the beginning. This can cause SEO problems
+# (duplicate content), therefore, you should choose one of the alternatives and
+# redirect the other one.
+
+# By default option 1 (no "www.") is activated:
+# http://no-www.org/faq.php?q=class_b
+
+# If you'd prefer to use option 2, just comment out all the lines from option 1
+# and uncomment the ones from option 2.
+
+# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Option 1: rewrite www.example.com → example.com
+
+<IfModule mod_rewrite.c>
+    RewriteCond %{HTTPS} !=on
+    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
+    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
+</IfModule>
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Option 2: rewrite example.com → www.example.com
+
+# Be aware that the following might not be a good idea if you use "real"
+# subdomains for certain parts of your website.
+
+# <IfModule mod_rewrite.c>
+#    RewriteCond %{HTTPS} !=on
+#    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
+#    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
+# </IfModule>
+
+
+# ##############################################################################
+# # SECURITY                                                                   #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Content Security Policy (CSP)                                              |
+# ------------------------------------------------------------------------------
+
+# You can mitigate the risk of cross-site scripting and other content-injection
+# attacks by setting a Content Security Policy which whitelists trusted sources
+# of content for your site.
+
+# The example header below allows ONLY scripts that are loaded from the current
+# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
+# work as-is for your site!
+
+# To get all the details you'll need to craft a reasonable policy for your site,
+# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or
+# see the specification: http://w3.org/TR/CSP).
+
+# <IfModule mod_headers.c>
+#    Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
+#    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
+#        Header unset Content-Security-Policy
+#    </FilesMatch>
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | File access                                                                |
+# ------------------------------------------------------------------------------
+
+# Block access to directories without a default document.
+# Usually you should leave this uncommented because you shouldn't allow anyone
+# to surf through every directory on your server (which may includes rather
+# private places like the CMS's directories).
+
+<IfModule mod_autoindex.c>
+    Options -Indexes
+</IfModule>
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Block access to hidden files and directories.
+# This includes directories used by version control systems such as Git and SVN.
+
+<IfModule mod_rewrite.c>
+    RewriteCond %{SCRIPT_FILENAME} -d [OR]
+    RewriteCond %{SCRIPT_FILENAME} -f
+    RewriteRule "(^|/)\." - [F]
+</IfModule>
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Block access to backup and source files.
+# These files may be left by some text editors and can pose a great security
+# danger when anyone has access to them.
+
+<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
+    Order allow,deny
+    Deny from all
+    Satisfy All
+</FilesMatch>
+
+# ------------------------------------------------------------------------------
+# | Secure Sockets Layer (SSL)                                                 |
+# ------------------------------------------------------------------------------
+
+# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.:
+# prevent `https://www.example.com` when your certificate only allows
+# `https://secure.example.com`.
+
+# <IfModule mod_rewrite.c>
+#    RewriteCond %{SERVER_PORT} !^443
+#    RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
+# </IfModule>
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Force client-side SSL redirection.
+
+# If a user types "example.com" in his browser, the above rule will redirect him
+# to the secure version of the site. That still leaves a window of opportunity
+# (the initial HTTP connection) for an attacker to downgrade or redirect the
+# request. The following header ensures that browser will ONLY connect to your
+# server via HTTPS, regardless of what the users type in the address bar.
+# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
+
+# <IfModule mod_headers.c>
+#    Header set Strict-Transport-Security max-age=16070400;
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | Server software information                                                |
+# ------------------------------------------------------------------------------
+
+# Avoid displaying the exact Apache version number, the description of the
+# generic OS-type and the information about Apache's compiled-in modules.
+
+# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
+
+# ServerTokens Prod
+
+
+# ##############################################################################
+# # WEB PERFORMANCE                                                            #
+# ##############################################################################
+
+# ------------------------------------------------------------------------------
+# | Compression                                                                |
+# ------------------------------------------------------------------------------
+
+<IfModule mod_deflate.c>
+
+    # Force compression for mangled headers.
+    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
+    <IfModule mod_setenvif.c>
+        <IfModule mod_headers.c>
+            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
+            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
+        </IfModule>
+    </IfModule>
+
+    # Compress all output labeled with one of the following MIME-types
+    # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
+    #  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
+    #  as `AddOutputFilterByType` is still in the core directives).
+    <IfModule mod_filter.c>
+        AddOutputFilterByType DEFLATE application/atom+xml \
+                                      application/javascript \
+                                      application/json \
+                                      application/rss+xml \
+                                      application/vnd.ms-fontobject \
+                                      application/x-font-ttf \
+                                      application/x-web-app-manifest+json \
+                                      application/xhtml+xml \
+                                      application/xml \
+                                      font/opentype \
+                                      image/svg+xml \
+                                      image/x-icon \
+                                      text/css \
+                                      text/html \
+                                      text/plain \
+                                      text/x-component \
+                                      text/xml
+    </IfModule>
+
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | Content transformations                                                    |
+# ------------------------------------------------------------------------------
+
+# Prevent some of the mobile network providers from modifying the content of
+# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
+
+# <IfModule mod_headers.c>
+#    Header set Cache-Control "no-transform"
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | ETag removal                                                               |
+# ------------------------------------------------------------------------------
+
+# Since we're sending far-future expires headers (see below), ETags can
+# be removed: http://developer.yahoo.com/performance/rules.html#etags.
+
+# `FileETag None` is not enough for every server.
+<IfModule mod_headers.c>
+    Header unset ETag
+</IfModule>
+
+FileETag None
+
+# ------------------------------------------------------------------------------
+# | Expires headers (for better cache control)                                 |
+# ------------------------------------------------------------------------------
+
+# The following expires headers are set pretty far in the future. If you don't
+# control versioning with filename-based cache busting, consider lowering the
+# cache time for resources like CSS and JS to something like 1 week.
+
+<IfModule mod_expires.c>
+
+    ExpiresActive on
+    ExpiresDefault                                      "access plus 1 month"
+
+  # CSS
+    ExpiresByType text/css                              "access plus 1 year"
+
+  # Data interchange
+    ExpiresByType application/json                      "access plus 0 seconds"
+    ExpiresByType application/xml                       "access plus 0 seconds"
+    ExpiresByType text/xml                              "access plus 0 seconds"
+
+  # Favicon (cannot be renamed!)
+    ExpiresByType image/x-icon                          "access plus 1 week"
+
+  # HTML components (HTCs)
+    ExpiresByType text/x-component                      "access plus 1 month"
+
+  # HTML
+    ExpiresByType text/html                             "access plus 0 seconds"
+
+  # JavaScript
+    ExpiresByType application/javascript                "access plus 1 year"
+
+  # Manifest files
+    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
+    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
+
+  # Media
+    ExpiresByType audio/ogg                             "access plus 1 month"
+    ExpiresByType image/gif                             "access plus 1 month"
+    ExpiresByType image/jpeg                            "access plus 1 month"
+    ExpiresByType image/png                             "access plus 1 month"
+    ExpiresByType video/mp4                             "access plus 1 month"
+    ExpiresByType video/ogg                             "access plus 1 month"
+    ExpiresByType video/webm                            "access plus 1 month"
+
+  # Web feeds
+    ExpiresByType application/atom+xml                  "access plus 1 hour"
+    ExpiresByType application/rss+xml                   "access plus 1 hour"
+
+  # Web fonts
+    ExpiresByType application/font-woff                 "access plus 1 month"
+    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
+    ExpiresByType application/x-font-ttf                "access plus 1 month"
+    ExpiresByType font/opentype                         "access plus 1 month"
+    ExpiresByType image/svg+xml                         "access plus 1 month"
+
+</IfModule>
+
+# ------------------------------------------------------------------------------
+# | Filename-based cache busting                                               |
+# ------------------------------------------------------------------------------
+
+# If you're not using a build process to manage your filename version revving,
+# you might want to consider enabling the following directives to route all
+# requests such as `/css/style.12345.css` to `/css/style.css`.
+
+# To understand why this is important and a better idea than `*.css?v231`, read:
+# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
+
+# <IfModule mod_rewrite.c>
+#    RewriteCond %{REQUEST_FILENAME} !-f
+#    RewriteCond %{REQUEST_FILENAME} !-d
+#    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | File concatenation                                                         |
+# ------------------------------------------------------------------------------
+
+# Allow concatenation from within specific CSS and JS files, e.g.:
+# Inside of `script.combined.js` you could have
+#   <!--#include file="libs/jquery.js" -->
+#   <!--#include file="plugins/jquery.idletimer.js" -->
+# and they would be included into this single file.
+
+# <IfModule mod_include.c>
+#    <FilesMatch "\.combined\.js$">
+#        Options +Includes
+#        AddOutputFilterByType INCLUDES application/javascript application/json
+#        SetOutputFilter INCLUDES
+#    </FilesMatch>
+#    <FilesMatch "\.combined\.css$">
+#        Options +Includes
+#        AddOutputFilterByType INCLUDES text/css
+#        SetOutputFilter INCLUDES
+#    </FilesMatch>
+# </IfModule>
+
+# ------------------------------------------------------------------------------
+# | Persistent connections                                                     |
+# ------------------------------------------------------------------------------
+
+# Allow multiple requests to be sent over the same TCP connection:
+# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.
+
+# Enable if you serve a lot of static content but, be aware of the
+# possible disadvantages!
+
+# <IfModule mod_headers.c>
+#    Header set Connection Keep-Alive
+# </IfModule>
diff --git a/ecomp-portal-FE-os/client/.jshintrc b/ecomp-portal-FE-os/client/.jshintrc
new file mode 100644
index 0000000..8c5c42c
--- /dev/null
+++ b/ecomp-portal-FE-os/client/.jshintrc
@@ -0,0 +1,36 @@
+{
+  "node": true,
+  "browser": true,
+  "esnext": true,
+  "bitwise": true,
+  "camelcase": true,
+  "curly": true,
+  "eqeqeq": true,
+  "immed": true,
+  "latedef": true,
+  "newcap": true,
+  "noarg": true,
+  "quotmark": "single",
+  "undef": true,
+  "unused": true,
+  "strict": true,
+  "trailing": true,
+  "smarttabs": true,
+  "globals": {
+    "jQuery": true,
+    "angular": true,
+    "console": true,
+    "$": true,
+    "_": true,
+    "moment": true,
+    "describe": true,
+    "beforeEach": true,
+    "module": true,
+    "inject": true,
+    "it": true,
+    "expect": true,
+    "browser": true,
+    "element": true,
+    "by": true
+  }
+}
diff --git a/ecomp-portal-FE-os/client/assets/images/ecomp_logo.png b/ecomp-portal-FE-os/client/assets/images/ecomp_logo.png
new file mode 100644
index 0000000..609caa4
--- /dev/null
+++ b/ecomp-portal-FE-os/client/assets/images/ecomp_logo.png
Binary files differ
diff --git a/ecomp-portal-FE-os/client/assets/images/grips.png b/ecomp-portal-FE-os/client/assets/images/grips.png
new file mode 100644
index 0000000..29b92cc
--- /dev/null
+++ b/ecomp-portal-FE-os/client/assets/images/grips.png
Binary files differ
diff --git a/ecomp-portal-FE-os/client/assets/images/photo.png b/ecomp-portal-FE-os/client/assets/images/photo.png
new file mode 100644
index 0000000..8260312
--- /dev/null
+++ b/ecomp-portal-FE-os/client/assets/images/photo.png
Binary files differ
diff --git a/ecomp-portal-FE-os/client/assets/images/spinner.gif b/ecomp-portal-FE-os/client/assets/images/spinner.gif
new file mode 100644
index 0000000..c97ec6e
--- /dev/null
+++ b/ecomp-portal-FE-os/client/assets/images/spinner.gif
Binary files differ
diff --git a/ecomp-portal-FE-os/client/bower_components_external/angular-gridster/angular-gridster.min.js b/ecomp-portal-FE-os/client/bower_components_external/angular-gridster/angular-gridster.min.js
new file mode 100644
index 0000000..07d7c87
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/angular-gridster/angular-gridster.min.js
@@ -0,0 +1,8 @@
+/*
+ * angular-gridster
+ * http://manifestwebdesign.github.io/angular-gridster
+ *
+ * @version: 0.13.14
+ * @license: MIT
+ */
+!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["angular"],b):"object"==typeof exports?module.exports=b(require("angular")):b(a.angular)}(this,function(a){"use strict";return a.module("gridster",[]).constant("gridsterConfig",{columns:6,pushing:!0,floating:!0,swapping:!1,width:"auto",colWidth:"auto",rowHeight:"match",margins:[10,10],outerMargin:!0,sparse:!1,isMobile:!1,mobileBreakPoint:600,mobileModeEnabled:!0,minColumns:1,minRows:1,maxRows:100,defaultSizeX:2,defaultSizeY:1,minSizeX:1,maxSizeX:null,minSizeY:1,maxSizeY:null,saveGridItemCalculatedHeightInMobile:!1,resizable:{enabled:!0,handles:["s","e","n","w","se","ne","sw","nw"]},draggable:{enabled:!0,scrollSensitivity:20,scrollSpeed:15}}).controller("GridsterCtrl",["gridsterConfig","$timeout",function(b,c){var d=this;a.extend(this,b),this.resizable=a.extend({},b.resizable||{}),this.draggable=a.extend({},b.draggable||{});var e=!1;this.layoutChanged=function(){e||(e=!0,c(function(){e=!1,d.loaded&&d.floatItemsUp(),d.updateHeight(d.movingItem?d.movingItem.sizeY:0)},30))},this.grid=[],this.allItems=[],this.destroy=function(){this.grid&&(this.grid=[]),this.$element=null,this.allItems&&(this.allItems.length=0,this.allItems=null)},this.setOptions=function(b){if(b)if(b=a.extend({},b),b.draggable&&(a.extend(this.draggable,b.draggable),delete b.draggable),b.resizable&&(a.extend(this.resizable,b.resizable),delete b.resizable),a.extend(this,b),this.margins&&2===this.margins.length)for(var c=0,d=this.margins.length;c<d;++c)this.margins[c]=parseInt(this.margins[c],10),isNaN(this.margins[c])&&(this.margins[c]=0);else this.margins=[0,0]},this.canItemOccupy=function(a,b,c){return b>-1&&c>-1&&a.sizeX+c<=this.columns&&a.sizeY+b<=this.maxRows},this.autoSetItemPosition=function(a){for(var b=0;b<this.maxRows;++b)for(var c=0;c<this.columns;++c){var d=this.getItems(b,c,a.sizeX,a.sizeY,a);if(0===d.length&&this.canItemOccupy(a,b,c))return void this.putItem(a,b,c)}throw new Error("Unable to place item!")},this.getItems=function(a,b,c,d,e){var f=[];c&&d||(c=d=1),!e||e instanceof Array||(e=[e]);var g;if(this.sparse===!1)for(var h=0;h<d;++h)for(var i=0;i<c;++i)g=this.getItem(a+h,b+i,e),!g||e&&e.indexOf(g)!==-1||f.indexOf(g)!==-1||f.push(g);else for(var j=a+d-1,k=b+c-1,l=0;l<this.allItems.length;++l)g=this.allItems[l],!g||e&&e.indexOf(g)!==-1||f.indexOf(g)!==-1||!this.intersect(g,b,k,a,j)||f.push(g);return f},this.getBoundingBox=function(a){if(0===a.length)return null;if(1===a.length)return{row:a[0].row,col:a[0].col,sizeY:a[0].sizeY,sizeX:a[0].sizeX};for(var b=0,c=0,d=9999,e=9999,f=0,g=a.length;f<g;++f){var h=a[f];d=Math.min(h.row,d),e=Math.min(h.col,e),b=Math.max(h.row+h.sizeY,b),c=Math.max(h.col+h.sizeX,c)}return{row:d,col:e,sizeY:b-d,sizeX:c-e}},this.intersect=function(a,b,c,d,e){return b<=a.col+a.sizeX-1&&c>=a.col&&d<=a.row+a.sizeY-1&&e>=a.row},this.removeItem=function(a){for(var b,c=0,d=this.grid.length;c<d;++c){var e=this.grid[c];if(e&&(b=e.indexOf(a),b!==-1)){e[b]=null;break}}this.sparse&&(b=this.allItems.indexOf(a),b!==-1&&this.allItems.splice(b,1)),this.layoutChanged()},this.getItem=function(a,b,c){!c||c instanceof Array||(c=[c]);for(var d=1;a>-1;){for(var e=1,f=b;f>-1;){var g=this.grid[a];if(g){var h=g[f];if(h&&(!c||c.indexOf(h)===-1)&&h.sizeX>=e&&h.sizeY>=d)return h}++e,--f}--a,++d}return null},this.putItems=function(a){for(var b=0,c=a.length;b<c;++b)this.putItem(a[b])},this.putItem=function(a,b,c,d){if(("undefined"==typeof b||null===b)&&(b=a.row,c=a.col,"undefined"==typeof b||null===b))return void this.autoSetItemPosition(a);if(this.canItemOccupy(a,b,c)||(c=Math.min(this.columns-a.sizeX,Math.max(0,c)),b=Math.min(this.maxRows-a.sizeY,Math.max(0,b))),null!==a.oldRow&&"undefined"!=typeof a.oldRow){var e=a.oldRow===b&&a.oldColumn===c,f=this.grid[b]&&this.grid[b][c]===a;if(e&&f)return a.row=b,void(a.col=c);var g=this.grid[a.oldRow];g&&g[a.oldColumn]===a&&delete g[a.oldColumn]}a.oldRow=a.row=b,a.oldColumn=a.col=c,this.moveOverlappingItems(a,d),this.grid[b]||(this.grid[b]=[]),this.grid[b][c]=a,this.sparse&&this.allItems.indexOf(a)===-1&&this.allItems.push(a),this.movingItem===a&&this.floatItemUp(a),this.layoutChanged()},this.swapItems=function(a,b){this.grid[a.row][a.col]=b,this.grid[b.row][b.col]=a;var c=a.row,d=a.col;a.row=b.row,a.col=b.col,b.row=c,b.col=d},this.moveOverlappingItems=function(a,b){b?b.indexOf(a)===-1&&(b=b.slice(0),b.push(a)):b=[a];var c=this.getItems(a.row,a.col,a.sizeX,a.sizeY,b);this.moveItemsDown(c,a.row+a.sizeY,b)},this.moveItemsDown=function(a,b,c){if(a&&0!==a.length){a.sort(function(a,b){return a.row-b.row}),c=c?c.slice(0):[];var d,e,f,g={};for(e=0,f=a.length;e<f;++e){d=a[e];var h=g[d.col];("undefined"==typeof h||d.row<h)&&(g[d.col]=d.row)}for(e=0,f=a.length;e<f;++e){d=a[e];var i=b-g[d.col];this.moveItemDown(d,d.row+i,c),c.push(d)}}},this.moveItemDown=function(a,b,c){if(!(a.row>=b)){for(;a.row<b;)++a.row,this.moveOverlappingItems(a,c);this.putItem(a,a.row,a.col,c)}},this.floatItemsUp=function(){if(this.floating!==!1)for(var a=0,b=this.grid.length;a<b;++a){var c=this.grid[a];if(c)for(var d=0,e=c.length;d<e;++d){var f=c[d];f&&this.floatItemUp(f)}}},this.floatItemUp=function(a){if(this.floating!==!1){for(var b=a.col,c=a.sizeY,d=a.sizeX,e=null,f=null,g=a.row-1;g>-1;){var h=this.getItems(g,b,d,c,a);if(0!==h.length)break;e=g,f=b,--g}null!==e&&this.putItem(a,e,f)}},this.updateHeight=function(a){var b=this.minRows;a=a||0;for(var c=this.grid.length;c>=0;--c){var d=this.grid[c];if(d)for(var e=0,f=d.length;e<f;++e)d[e]&&(b=Math.max(b,c+a+d[e].sizeY))}this.gridHeight=this.maxRows-b>0?Math.min(this.maxRows,b):Math.max(this.maxRows,b)},this.pixelsToRows=function(a,b){return this.outerMargin||(a+=this.margins[0]/2),b===!0?Math.ceil(a/this.curRowHeight):b===!1?Math.floor(a/this.curRowHeight):Math.round(a/this.curRowHeight)},this.pixelsToColumns=function(a,b){return this.outerMargin||(a+=this.margins[1]/2),b===!0?Math.ceil(a/this.curColWidth):b===!1?Math.floor(a/this.curColWidth):Math.round(a/this.curColWidth)}}]).directive("gridsterPreview",function(){return{replace:!0,scope:!0,require:"^gridster",template:'<div ng-style="previewStyle()" class="gridster-item gridster-preview-holder"></div>',link:function(a,b,c,d){a.previewStyle=function(){return d.movingItem?{display:"block",height:d.movingItem.sizeY*d.curRowHeight-d.margins[0]+"px",width:d.movingItem.sizeX*d.curColWidth-d.margins[1]+"px",top:d.movingItem.row*d.curRowHeight+(d.outerMargin?d.margins[0]:0)+"px",left:d.movingItem.col*d.curColWidth+(d.outerMargin?d.margins[1]:0)+"px"}:{display:"none"}}}}}).directive("gridster",["$timeout","$window","$rootScope","gridsterDebounce",function(b,c,d,e){return{scope:!0,restrict:"EAC",controller:"GridsterCtrl",controllerAs:"gridster",compile:function(f){return f.prepend('<div ng-if="gridster.movingItem" gridster-preview></div>'),function(f,g,h,i){function j(){g.css("height",i.gridHeight*i.curRowHeight+(i.outerMargin?i.margins[0]:-i.margins[0])+"px")}function k(a){if(i.setOptions(a),l(g[0])){"auto"===i.width?i.curWidth=g[0].offsetWidth||parseInt(g.css("width"),10):i.curWidth=i.width,"auto"===i.colWidth?i.curColWidth=(i.curWidth+(i.outerMargin?-i.margins[1]:i.margins[1]))/i.columns:i.curColWidth=i.colWidth,i.curRowHeight=i.rowHeight,"string"==typeof i.rowHeight&&("match"===i.rowHeight?i.curRowHeight=Math.round(i.curColWidth):i.rowHeight.indexOf("*")!==-1?i.curRowHeight=Math.round(i.curColWidth*i.rowHeight.replace("*","").replace(" ","")):i.rowHeight.indexOf("/")!==-1&&(i.curRowHeight=Math.round(i.curColWidth/i.rowHeight.replace("/","").replace(" ","")))),i.isMobile=i.mobileModeEnabled&&i.curWidth<=i.mobileBreakPoint;for(var b=0,c=i.grid.length;b<c;++b){var d=i.grid[b];if(d)for(var e=0,f=d.length;e<f;++e)if(d[e]){var h=d[e];h.setElementPosition(),h.setElementSizeY(),h.setElementSizeX()}}j()}}i.loaded=!1,i.$element=g,f.gridster=i,g.addClass("gridster");var l=function(a){return"hidden"!==a.style.visibility&&"none"!==a.style.display};f.$watch(function(){return i.gridHeight},j),f.$watch(function(){return i.movingItem},function(){i.updateHeight(i.movingItem?i.movingItem.sizeY:0)});var m=h.gridster;m?f.$parent.$watch(m,function(a){k(a)},!0):k({}),f.$watch(function(){return i.loaded},function(){i.loaded?(g.addClass("gridster-loaded"),d.$broadcast("gridster-loaded",i)):g.removeClass("gridster-loaded")}),f.$watch(function(){return i.isMobile},function(){i.isMobile?g.addClass("gridster-mobile").removeClass("gridster-desktop"):g.removeClass("gridster-mobile").addClass("gridster-desktop"),d.$broadcast("gridster-mobile-changed",i)}),f.$watch(function(){return i.draggable},function(){d.$broadcast("gridster-draggable-changed",i)},!0),f.$watch(function(){return i.resizable},function(){d.$broadcast("gridster-resizable-changed",i)},!0);var n=g[0].offsetWidth||parseInt(g.css("width"),10),o=function(){var a=g[0].offsetWidth||parseInt(g.css("width"),10);a&&a!==n&&!i.movingItem&&(n=a,i.loaded&&g.removeClass("gridster-loaded"),k(),i.loaded&&g.addClass("gridster-loaded"),d.$broadcast("gridster-resized",[a,g[0].offsetHeight],i))},p=e(function(){o(),b(function(){f.$apply()})},100);f.$watch(function(){return l(g[0])},p),"function"==typeof window.addResizeListener?window.addResizeListener(g[0],p):f.$watch(function(){return g[0].offsetWidth||parseInt(g.css("width"),10)},o);var q=a.element(c);q.on("resize",p),f.$on("$destroy",function(){i.destroy(),q.off("resize",p),"function"==typeof window.removeResizeListener&&window.removeResizeListener(g[0],p)}),b(function(){f.$watch("gridster.floating",function(){i.floatItemsUp()}),i.loaded=!0},100)}}}}]).controller("GridsterItemCtrl",function(){this.$element=null,this.gridster=null,this.row=null,this.col=null,this.sizeX=null,this.sizeY=null,this.minSizeX=0,this.minSizeY=0,this.maxSizeX=null,this.maxSizeY=null,this.init=function(a,b){this.$element=a,this.gridster=b,this.sizeX=b.defaultSizeX,this.sizeY=b.defaultSizeY},this.destroy=function(){this.gridster=null,this.$element=null},this.toJSON=function(){return{row:this.row,col:this.col,sizeY:this.sizeY,sizeX:this.sizeX}},this.isMoving=function(){return this.gridster.movingItem===this},this.setPosition=function(a,b){this.gridster.putItem(this,a,b),this.isMoving()||this.setElementPosition()},this.setSize=function(a,b,c){a=a.toUpperCase();var d="size"+a,e="Size"+a;if(""!==b){b=parseInt(b,10),(isNaN(b)||0===b)&&(b=this.gridster["default"+e]);var f="X"===a?this.gridster.columns:this.gridster.maxRows;this["max"+e]&&(f=Math.min(this["max"+e],f)),this.gridster["max"+e]&&(f=Math.min(this.gridster["max"+e],f)),"X"===a&&this.cols?f-=this.cols:"Y"===a&&this.rows&&(f-=this.rows);var g=0;this["min"+e]&&(g=Math.max(this["min"+e],g)),this.gridster["min"+e]&&(g=Math.max(this.gridster["min"+e],g)),b=Math.max(Math.min(b,f),g);var h=this[d]!==b||this["old"+e]&&this["old"+e]!==b;return this["old"+e]=this[d]=b,this.isMoving()||this["setElement"+e](),!c&&h&&(this.gridster.moveOverlappingItems(this),this.gridster.layoutChanged()),h}},this.setSizeY=function(a,b){return this.setSize("Y",a,b)},this.setSizeX=function(a,b){return this.setSize("X",a,b)},this.setElementPosition=function(){this.gridster.isMobile?this.$element.css({marginLeft:this.gridster.margins[0]+"px",marginRight:this.gridster.margins[0]+"px",marginTop:this.gridster.margins[1]+"px",marginBottom:this.gridster.margins[1]+"px",top:"",left:""}):this.$element.css({margin:0,top:this.row*this.gridster.curRowHeight+(this.gridster.outerMargin?this.gridster.margins[0]:0)+"px",left:this.col*this.gridster.curColWidth+(this.gridster.outerMargin?this.gridster.margins[1]:0)+"px"})},this.setElementSizeY=function(){this.gridster.isMobile&&!this.gridster.saveGridItemCalculatedHeightInMobile?this.$element.css("height",""):this.$element.css("height",this.sizeY*this.gridster.curRowHeight-this.gridster.margins[0]+"px")},this.setElementSizeX=function(){this.gridster.isMobile?this.$element.css("width",""):this.$element.css("width",this.sizeX*this.gridster.curColWidth-this.gridster.margins[1]+"px")},this.getElementSizeX=function(){return this.sizeX*this.gridster.curColWidth-this.gridster.margins[1]},this.getElementSizeY=function(){return this.sizeY*this.gridster.curRowHeight-this.gridster.margins[0]}}).factory("GridsterTouch",[function(){return function(a,b,c,d){var e,f,g={},h=function(a){if(Object.keys)return Object.keys(a).length;var b,c=0;for(b in a)++c;return c},i=function(a){for(var b=0,c=0,d=navigator.userAgent.match(/\bMSIE\b/),e=a;null!=e;e=e.offsetParent)d&&(!document.documentMode||document.documentMode<8)&&"relative"===e.currentStyle.position&&e.offsetParent&&"relative"===e.offsetParent.currentStyle.position&&e.offsetLeft===e.offsetParent.offsetLeft?c+=e.offsetTop:(b+=e.offsetLeft,c+=e.offsetTop);return{x:b,y:c}},j=i(a),k=!1,l=function(e){if("mousemove"!==e.type||0!==h(g)){for(var f=!0,m=e.changedTouches?e.changedTouches:[e],n=0;n<m.length;++n){var o=m[n],p="undefined"!=typeof o.identifier?o.identifier:"undefined"!=typeof o.pointerId?o.pointerId:1;if("undefined"==typeof o.pageX)if(o.pageX=o.offsetX+j.x,o.pageY=o.offsetY+j.y,o.srcElement.offsetParent===a&&document.documentMode&&8===document.documentMode&&"mousedown"===o.type)o.pageX+=o.srcElement.offsetLeft,o.pageY+=o.srcElement.offsetTop;else if(o.srcElement!==a&&!document.documentMode||document.documentMode<8){for(var q=-2,r=-2,s=o.srcElement;null!==s;s=s.parentNode)q+=s.scrollLeft?s.scrollLeft:0,r+=s.scrollTop?s.scrollTop:0;o.pageX=o.clientX+q,o.pageY=o.clientY+r}var t=o.pageX,u=o.pageY;e.type.match(/(start|down)$/i)?(j=i(a),g[p]&&(d&&d({target:e.target,which:e.which,pointerId:p,pageX:t,pageY:u}),delete g[p]),b&&f&&(f=b({target:e.target,which:e.which,pointerId:p,pageX:t,pageY:u})),g[p]={x:t,y:u},a.msSetPointerCapture&&f?a.msSetPointerCapture(p):"mousedown"===e.type&&1===h(g)&&(k?a.setCapture(!0):(document.addEventListener("mousemove",l,!1),document.addEventListener("mouseup",l,!1)))):e.type.match(/move$/i)?!g[p]||g[p].x===t&&g[p].y===u||(c&&f&&(f=c({target:e.target,which:e.which,pointerId:p,pageX:t,pageY:u})),g[p].x=t,g[p].y=u):g[p]&&e.type.match(/(up|end|cancel)$/i)&&(d&&f&&(f=d({target:e.target,which:e.which,pointerId:p,pageX:t,pageY:u})),delete g[p],a.msReleasePointerCapture?a.msReleasePointerCapture(p):"mouseup"===e.type&&0===h(g)&&(k?a.releaseCapture():(document.removeEventListener("mousemove",l,!1),document.removeEventListener("mouseup",l,!1))))}f&&(e.preventDefault&&e.preventDefault(),e.preventManipulation&&e.preventManipulation(),e.preventMouseEvent&&e.preventMouseEvent())}};return this.enable=function(){window.navigator.msPointerEnabled?(a.addEventListener("MSPointerDown",l,!1),a.addEventListener("MSPointerMove",l,!1),a.addEventListener("MSPointerUp",l,!1),a.addEventListener("MSPointerCancel",l,!1),"undefined"!=typeof a.style.msContentZooming&&(e=a.style.msContentZooming,a.style.msContentZooming="none"),"undefined"!=typeof a.style.msTouchAction&&(f=a.style.msTouchAction,a.style.msTouchAction="none")):a.addEventListener?(a.addEventListener("touchstart",l,!1),a.addEventListener("touchmove",l,!1),a.addEventListener("touchend",l,!1),a.addEventListener("touchcancel",l,!1),a.addEventListener("mousedown",l,!1),a.setCapture&&!window.navigator.userAgent.match(/\bGecko\b/)&&(k=!0,a.addEventListener("mousemove",l,!1),a.addEventListener("mouseup",l,!1))):a.attachEvent&&a.setCapture&&(k=!0,a.attachEvent("onmousedown",function(){return l(window.event),window.event.returnValue=!1,!1}),a.attachEvent("onmousemove",function(){return l(window.event),window.event.returnValue=!1,!1}),a.attachEvent("onmouseup",function(){return l(window.event),window.event.returnValue=!1,!1}))},this.disable=function(){window.navigator.msPointerEnabled?(a.removeEventListener("MSPointerDown",l,!1),a.removeEventListener("MSPointerMove",l,!1),a.removeEventListener("MSPointerUp",l,!1),a.removeEventListener("MSPointerCancel",l,!1),e&&(a.style.msContentZooming=e),f&&(a.style.msTouchAction=f)):a.removeEventListener?(a.removeEventListener("touchstart",l,!1),a.removeEventListener("touchmove",l,!1),a.removeEventListener("touchend",l,!1),a.removeEventListener("touchcancel",l,!1),a.removeEventListener("mousedown",l,!1),a.setCapture&&!window.navigator.userAgent.match(/\bGecko\b/)&&(k=!0,a.removeEventListener("mousemove",l,!1),a.removeEventListener("mouseup",l,!1))):a.detachEvent&&a.setCapture&&(k=!0,a.detachEvent("onmousedown"),a.detachEvent("onmousemove"),a.detachEvent("onmouseup"))},this}}]).factory("GridsterDraggable",["$document","$window","GridsterTouch",function(b,c,d){function e(e,f,g,h,i){function j(a){e.addClass("gridster-item-moving"),g.movingItem=h,g.updateHeight(h.sizeY),f.$apply(function(){g.draggable&&g.draggable.start&&g.draggable.start(a,e,i,h)})}function k(a){var b=h.row,d=h.col,j=g.draggable&&g.draggable.drag,k=g.draggable.scrollSensitivity,l=g.draggable.scrollSpeed,m=Math.min(g.pixelsToRows(q),g.maxRows-1),n=Math.min(g.pixelsToColumns(p),g.columns-1),o=g.getItems(m,n,h.sizeX,h.sizeY,h),r=0!==o.length;if(g.swapping===!0&&r){var s=g.getBoundingBox(o),t=s.sizeX===h.sizeX&&s.sizeY===h.sizeY,u=s.row===b,v=s.col===d,w=s.row===m&&s.col===n,x=u||v;if(t&&1===o.length){if(w)g.swapItems(h,o[0]);else if(x)return}else if(s.sizeX<=h.sizeX&&s.sizeY<=h.sizeY&&x)for(var y=h.row<=m?h.row:m+h.sizeY,z=h.col<=n?h.col:n+h.sizeX,A=y-s.row,B=z-s.col,C=0,E=o.length;C<E;++C){var F=o[C],G=g.getItems(F.row+A,F.col+B,F.sizeX,F.sizeY,h);0===G.length&&g.putItem(F,F.row+A,F.col+B)}}g.pushing===!1&&r||(h.row=m,h.col=n),a.pageY-D.body.scrollTop<k?D.body.scrollTop=D.body.scrollTop-l:c.innerHeight-(a.pageY-D.body.scrollTop)<k&&(D.body.scrollTop=D.body.scrollTop+l),a.pageX-D.body.scrollLeft<k?D.body.scrollLeft=D.body.scrollLeft-l:c.innerWidth-(a.pageX-D.body.scrollLeft)<k&&(D.body.scrollLeft=D.body.scrollLeft+l),(j||b!==h.row||d!==h.col)&&f.$apply(function(){j&&g.draggable.drag(a,e,i,h)})}function l(a){e.removeClass("gridster-item-moving");var b=Math.min(g.pixelsToRows(q),g.maxRows-1),c=Math.min(g.pixelsToColumns(p),g.columns-1);g.pushing===!1&&0!==g.getItems(b,c,h.sizeX,h.sizeY,h).length||(h.row=b,h.col=c),g.movingItem=null,h.setPosition(h.row,h.col),f.$apply(function(){g.draggable&&g.draggable.stop&&g.draggable.stop(a,e,i,h)})}function m(b){if(E.indexOf(b.target.nodeName.toLowerCase())!==-1)return!1;var c=a.element(b.target);if(c.hasClass("gridster-item-resizable-handler"))return!1;if(c.attr("onclick")||c.attr("ng-click"))return!1;if(c.closest&&c.closest(".gridster-no-drag").length)return!1;if(g.draggable&&g.draggable.handle){var d=a.element(e[0].querySelectorAll(g.draggable.handle)),f=!1;a:for(var i=0,k=d.length;i<k;++i){var l=d[i];if(l===b.target){f=!0;break}for(var m=b.target,n=0;n<20;++n){var o=m.parentNode;if(o===e[0]||!o)break;if(o===l){f=!0;break a}m=o}}if(!f)return!1}switch(b.which){case 1:break;case 2:case 3:return}return x=b.pageX,y=b.pageY,p=parseInt(e.css("left"),10),q=parseInt(e.css("top"),10),r=e[0].offsetWidth,s=e[0].offsetHeight,t=h.col,u=h.row,j(b),!0}function n(a){if(!e.hasClass("gridster-item-moving")||e.hasClass("gridster-item-resizing"))return!1;var b=g.curWidth-1,c=g.curRowHeight*g.maxRows-1;v=a.pageX,w=a.pageY;var d=v-x+z,f=w-y+A;z=A=0,x=v,y=w;var h=d,i=f;return p+h<C?(d=C-p,z=h-d):p+r+h>b&&(d=b-p-r,z=h-d),q+i<B?(f=B-q,A=i-f):q+s+i>c&&(f=c-q-s,A=i-f),p+=d,q+=f,e.css({top:q+"px",left:p+"px"}),k(a),!0}function o(a){return!(!e.hasClass("gridster-item-moving")||e.hasClass("gridster-item-resizing"))&&(z=A=0,l(a),!0)}var p,q,r,s,t,u,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=b[0],E=["select","option","input","textarea","button"],F=null,G=null;this.enable=function(){if(F!==!0){if(F=!0,G)return void G.enable();G=new d(e[0],m,n,o),G.enable()}},this.disable=function(){F!==!1&&(F=!1,G&&G.disable())},this.toggle=function(a){a?this.enable():this.disable()},this.destroy=function(){this.disable()}}return e}]).factory("GridsterResizable",["GridsterTouch",function(b){function c(c,d,e,f,g){function h(h){function i(a){c.addClass("gridster-item-moving"),c.addClass("gridster-item-resizing"),e.movingItem=f,f.setElementSizeX(),f.setElementSizeY(),f.setElementPosition(),e.updateHeight(1),d.$apply(function(){e.resizable&&e.resizable.start&&e.resizable.start(a,c,g,f)})}function j(a){var b=f.row,i=f.col,j=f.sizeX,k=f.sizeY,l=e.resizable&&e.resizable.resize,m=f.col;["w","nw","sw"].indexOf(h)!==-1&&(m=e.pixelsToColumns(o,!1));var n=f.row;["n","ne","nw"].indexOf(h)!==-1&&(n=e.pixelsToRows(p,!1));var s=f.sizeX;["n","s"].indexOf(h)===-1&&(s=e.pixelsToColumns(q,!0));var t=f.sizeY;["e","w"].indexOf(h)===-1&&(t=e.pixelsToRows(r,!0));var u=n>-1&&m>-1&&s+m<=e.columns&&t+n<=e.maxRows;!u||e.pushing===!1&&0!==e.getItems(n,m,s,t,f).length||(f.row=n,f.col=m,f.sizeX=s,f.sizeY=t);var v=f.row!==b||f.col!==i||f.sizeX!==j||f.sizeY!==k;(l||v)&&d.$apply(function(){l&&e.resizable.resize(a,c,g,f)})}function k(a){c.removeClass("gridster-item-moving"),c.removeClass("gridster-item-resizing"),e.movingItem=null,f.setPosition(f.row,f.col),f.setSizeY(f.sizeY),f.setSizeX(f.sizeX),d.$apply(function(){e.resizable&&e.resizable.stop&&e.resizable.stop(a,c,g,f)})}function l(a){switch(a.which){case 1:break;case 2:case 3:return}return u=e.draggable.enabled,u&&(e.draggable.enabled=!1,d.$broadcast("gridster-draggable-changed",e)),z=a.pageX,A=a.pageY,o=parseInt(c.css("left"),10),p=parseInt(c.css("top"),10),q=c[0].offsetWidth,r=c[0].offsetHeight,s=f.sizeX,t=f.sizeY,i(a),!0}function m(a){var b=e.curWidth-1;x=a.pageX,y=a.pageY;var d=x-z+B,f=y-A+C;B=C=0,z=x,A=y;var g=f,h=d;return w.indexOf("n")>=0&&(r-g<G()?(f=r-G(),C=g-f):p+g<D&&(f=D-p,C=g-f),p+=f,r-=f),w.indexOf("s")>=0&&(r+g<G()?(f=G()-r,C=g-f):p+r+g>E&&(f=E-p-r,C=g-f),r+=f),w.indexOf("w")>=0&&(q-h<H()?(d=q-H(),B=h-d):o+h<F&&(d=F-o,B=h-d),o+=d,q-=d),w.indexOf("e")>=0&&(q+h<H()?(d=H()-q,B=h-d):o+q+h>b&&(d=b-o-q,B=h-d),q+=d),c.css({top:p+"px",left:o+"px",width:q+"px",height:r+"px"}),j(a),!0}function n(a){return e.draggable.enabled!==u&&(e.draggable.enabled=u,d.$broadcast("gridster-draggable-changed",e)),B=C=0,k(a),!0}var o,p,q,r,s,t,u,v,w=h,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=9999,F=0,G=function(){return(f.minSizeY?f.minSizeY:1)*e.curRowHeight-e.margins[0]},H=function(){return(f.minSizeX?f.minSizeX:1)*e.curColWidth-e.margins[1]},I=null;this.enable=function(){I||(I=a.element('<div class="gridster-item-resizable-handler handle-'+w+'"></div>'),c.append(I)),v=new b(I[0],l,m,n),v.enable()},this.disable=function(){I&&(I.remove(),I=null),v.disable(),v=void 0},this.destroy=function(){this.disable()}}var i=[],j=e.resizable.handles;"string"==typeof j&&(j=e.resizable.handles.split(","));for(var k=!1,l=0,m=j.length;l<m;l++)i.push(new h(j[l]));this.enable=function(){if(!k){for(var a=0,b=i.length;a<b;a++)i[a].enable();k=!0}},this.disable=function(){if(k){for(var a=0,b=i.length;a<b;a++)i[a].disable();k=!1}},this.toggle=function(a){a?this.enable():this.disable()},this.destroy=function(){for(var a=0,b=i.length;a<b;a++)i[a].destroy()}}return c}]).factory("gridsterDebounce",function(){return function(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,c||a.apply(e,f)},h=c&&!d;clearTimeout(d),d=setTimeout(g,b),h&&a.apply(e,f)}}}).directive("gridsterItem",["$parse","GridsterDraggable","GridsterResizable","gridsterDebounce",function(a,b,c,d){return{scope:!0,restrict:"EA",controller:"GridsterItemCtrl",controllerAs:"gridsterItem",require:["^gridster","gridsterItem"],link:function(e,f,g,h){function i(){o.setPosition(o.row,o.col),r.row&&r.row.assign&&r.row.assign(e,o.row),r.col&&r.col.assign&&r.col.assign(e,o.col)}function j(){var a=o.setSizeX(o.sizeX,!0);a&&r.sizeX&&r.sizeX.assign&&r.sizeX.assign(e,o.sizeX);var b=o.setSizeY(o.sizeY,!0);b&&r.sizeY&&r.sizeY.assign&&r.sizeY.assign(e,o.sizeY),(a||b)&&(o.gridster.moveOverlappingItems(o),n.layoutChanged(),e.$broadcast("gridster-item-resized",o))}function k(){var a=document.createElement("div"),b={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(var c in b)if(void 0!==a.style[c])return b[c]}var l,m=g.gridsterItem,n=h[0],o=h[1];if(e.gridster=n,m){var p=a(m);l=p(e)||{},!l&&p.assign&&(l={row:o.row,col:o.col,sizeX:o.sizeX,sizeY:o.sizeY,minSizeX:0,minSizeY:0,maxSizeX:null,maxSizeY:null},p.assign(e,l))}else l=g;o.init(f,n),f.addClass("gridster-item");for(var q=["minSizeX","maxSizeX","minSizeY","maxSizeY","sizeX","sizeY","row","col"],r={},s=[],t=function(b){var c;if("string"==typeof l[b])c=l[b];else if("string"==typeof l[b.toLowerCase()])c=l[b.toLowerCase()];else{if(!m)return;c=m+"."+b}s.push('"'+b+'":'+c),r[b]=a(c);var d=r[b](e);"number"==typeof d&&(o[b]=d)},u=0,v=q.length;u<v;++u)t(q[u]);var w="{"+s.join(",")+"}";e.$watchCollection(w,function(a,b){for(var c in a){var d=a[c],e=b[c];e!==d&&(d=parseInt(d,10),isNaN(d)||(o[c]=d))}}),e.$watch(function(){return o.row+","+o.col},i),e.$watch(function(){return o.sizeY+","+o.sizeX+","+o.minSizeX+","+o.maxSizeX+","+o.minSizeY+","+o.maxSizeY},j);var x=new b(f,e,n,o,l),y=new c(f,e,n,o,l),z=function(){y.toggle(!n.isMobile&&n.resizable&&n.resizable.enabled)};z();var A=function(){x.toggle(!n.isMobile&&n.draggable&&n.draggable.enabled)};A(),e.$on("gridster-draggable-changed",A),e.$on("gridster-resizable-changed",z),e.$on("gridster-resized",z),e.$on("gridster-mobile-changed",function(){z(),A()});var B=d(function(){e.$apply(function(){e.$broadcast("gridster-item-transition-end",o)})},50);return f.on(k(),B),e.$broadcast("gridster-item-initialized",o),e.$on("$destroy",function(){try{y.destroy(),x.destroy()}catch(a){}try{n.removeItem(o)}catch(a){}try{o.destroy()}catch(a){}})}}}]).directive("gridsterNoDrag",function(){return{restrict:"A",link:function(a,b){b.addClass("gridster-no-drag")}}})});
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/bower_components_external/b2b/css/b2b-angular/README.md b/ecomp-portal-FE-os/client/bower_components_external/b2b/css/b2b-angular/README.md
new file mode 100644
index 0000000..f3b5e66
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/b2b/css/b2b-angular/README.md
@@ -0,0 +1,14 @@
+This file tracks patches to b2b-angular.css
+
+
+14 March 2017: Replaced occurrences of font names in about 180 places:
+Replace "ATT" with "ECOMP" in font-family in b2b-angular.css file
+-  font-family: "Omnes-ATT-W02-Medium";
++  font-family: "Omnes-ECOMP-W02-Medium";
+ 
+-  font-family: "Omnes-ATT-W02";
++  font-family: "Omnes-ECOMP-W02";
+
+15 March 2017: Revert the change back to original for input:not([type="button"])
+ - height: 14px; 
+ + height: 36px; 
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/README.md b/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/README.md
new file mode 100644
index 0000000..abe5a5f
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/README.md
@@ -0,0 +1,13 @@
+This file tracks patches to b2b-angular.js
+
+
+20 March 2017: Page auto adjustment with left menu collapse and expand.
++
+scope.toggleDrawer = function(showmenu){
+	scope.idx=-1; /*hide the sunmenus*/
+	if(showmenu){
+		document.getElementById('page-content').style.paddingLeft = "50px";
+	}
+	else
+		document.getElementById('page-content').style.paddingLeft = "230px";           	
+};
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/b2b-library.min.js b/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/b2b-library.min.js
new file mode 100644
index 0000000..2826895
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/b2b/js/b2b-angular/b2b-library.min.js
@@ -0,0 +1,22048 @@
+/*! b2b-angular-library - v1.0.1 - Last updated: 2017-03-02. Copyright (c) 2016 AT&T Services, Inc. */ 
+angular.module("b2b.att.tpls", ['b2bTemplate/audioPlayer/audioPlayer.html', 'b2bTemplate/audioRecorder/audioRecorder.html', 'b2bTemplate/backToTop/backToTop.html', 'b2bTemplate/boardstrip/b2bAddBoard.html', 'b2bTemplate/boardstrip/b2bBoard.html', 'b2bTemplate/boardstrip/b2bBoardstrip.html', 'b2bTemplate/calendar/datepicker-popup.html', 'b2bTemplate/calendar/datepicker.html', 'b2bTemplate/coachmark/coachmark.html', 'b2bTemplate/dropdowns/b2bDropdownDesktop.html', 'b2bTemplate/dropdowns/b2bDropdownGroupDesktop.html', 'b2bTemplate/dropdowns/b2bDropdownListDesktop.html', 'b2bTemplate/fileUpload/fileUpload.html', 'b2bTemplate/flyout/flyout.html', 'b2bTemplate/flyout/flyoutContent.html', 'b2bTemplate/footer/footer_column_switch_tpl.html', 'b2bTemplate/horizontalTable/horizontalTable.html', 'b2bTemplate/hourPicker/b2bHourpicker.html', 'b2bTemplate/hourPicker/b2bHourpickerPanel.html', 'b2bTemplate/hourPicker/b2bHourpickerValue.html', 'b2bTemplate/leftNavigation/leftNavigation.html', 'b2bTemplate/listbox/listbox.html', 'b2bTemplate/modalsAndAlerts/b2b-backdrop.html', 'b2bTemplate/modalsAndAlerts/b2b-window.html', 'b2bTemplate/monthSelector/monthSelector-popup.html', 'b2bTemplate/monthSelector/monthSelector.html', 'b2bTemplate/monthSelector/monthSelectorLink.html', 'b2bTemplate/pagination/b2b-pagination.html', 'b2bTemplate/paneSelector/paneSelector.html', 'b2bTemplate/paneSelector/paneSelectorPane.html', 'b2bTemplate/profileCard/profileCard-addUser.html', 'b2bTemplate/profileCard/profileCard.html', 'b2bTemplate/searchField/searchField.html', 'b2bTemplate/seekBar/seekBar.html', 'b2bTemplate/slider/slider.html', 'b2bTemplate/spinButton/spinButton.html', 'b2bTemplate/statusTracker/statusTracker.html', 'b2bTemplate/stepTracker/stepTracker.html', 'b2bTemplate/switches/switches-spanish.html', 'b2bTemplate/switches/switches.html', 'b2bTemplate/tableMessages/tableMessage.html', 'b2bTemplate/tables/b2bTable.html', 'b2bTemplate/tables/b2bTableBody.html', 'b2bTemplate/tables/b2bTableHeaderSortable.html', 'b2bTemplate/tables/b2bTableHeaderUnsortable.html', 'b2bTemplate/tableScrollbar/tableScrollbar.html', 'b2bTemplate/tabs/b2bTab.html', 'b2bTemplate/tabs/b2bTabset.html', 'b2bTemplate/treeNav/groupedTree.html', 'b2bTemplate/treeNav/treeMember.html', 'b2bTemplate/treeNav/ungroupedTree.html', 'b2bTemplate/treeNodeCheckbox/groupedTree.html', 'b2bTemplate/treeNodeCheckbox/treeMember.html', 'b2bTemplate/treeNodeCheckbox/ungroupedTree.html']);angular.module("b2b.att", ["b2b.att.tpls", 'b2b.att.addressInputTemplate','b2b.att.arrows','b2b.att.audioPlayer','b2b.att.audioRecorder','b2b.att.backToTop','b2b.att.badgesForAlerts','b2b.att.boardstrip','b2b.att.breadcrumbs','b2b.att.buttonGroups','b2b.att.buttons','b2b.att.calendar','b2b.att.checkboxes','b2b.att.coachmark','b2b.att.configurationSection','b2b.att.directoryListingTemplate','b2b.att.dropdowns','b2b.att.fileUpload','b2b.att.filters','b2b.att.flyout','b2b.att.footer','b2b.att.header','b2b.att.headings','b2b.att.horizontalTable','b2b.att.hourPicker','b2b.att.inputTemplate','b2b.att.leftNavigation','b2b.att.links','b2b.att.listbox','b2b.att.loaderAnimation','b2b.att.messageWrapper','b2b.att.modalsAndAlerts','b2b.att.monthSelector','b2b.att.multiLevelNavigation','b2b.att.multipurposeExpander','b2b.att.notesMessagesAndErrors','b2b.att.notificationCardTemplate','b2b.att.orderConfirmationTemplate','b2b.att.pagination','b2b.att.paneSelector','b2b.att.phoneNumberInput','b2b.att.profileBlockTemplate','b2b.att.profileCard','b2b.att.radios','b2b.att.searchField','b2b.att.seekBar','b2b.att.selectorModule','b2b.att.separators','b2b.att.slider','b2b.att.spinButton','b2b.att.staticRouteTemplate','b2b.att.statusTracker','b2b.att.stepTracker','b2b.att.switches','b2b.att.tableMessages','b2b.att.tables','b2b.att.tableScrollbar','b2b.att.tabs','b2b.att.tagBadges','b2b.att.textArea','b2b.att.tooltipsForForms','b2b.att.treeNav','b2b.att.treeNodeCheckbox','b2b.att.utilities']);/**
+ * @ngdoc directive
+ * @name Template.att:Address Input
+ *
+ * @description
+ *  <file src="src/addressInputTemplate/docs/readme.md" />
+ *
+ * @usage
+
+ *
+ * @example
+ *  <section id="code">   
+ <example module="b2b.att">
+ <file src="src/addressInputTemplate/docs/demo.html" />
+ <file src="src/addressInputTemplate/docs/demo.js" />
+ </example>
+ </section>
+ *
+ */
+angular.module('b2b.att.addressInputTemplate', ['ngMessages']);
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:arrows
+ *
+ * @description
+ *  <file src="src/arrows/docs/readme.md" />
+ *
+ * @usage
+ *   Please refer demo.html tab in Example section below.
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/arrows/docs/demo.html" />
+            <file src="src/arrows/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.arrows', []);
+/**
+ * @ngdoc directive
+ * @name Videos, audio & animation.att:Audio Player
+ * @scope
+ * @param {string} audioSrcUrl - MP3 audio source URL or Blob URL
+ * @description
+ *  <file src="src/audioPlayer/docs/readme.md" />
+ *
+ * @usage
+ * 
+ <div b2b-audio audio-src-url='audioSrcUrl'></div>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/audioPlayer/docs/demo.html" />
+            <file src="src/audioPlayer/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+ 
+angular.module('b2b.att.audioPlayer', ['b2b.att.utilities', 'b2b.att.seekBar'])
+    .constant('AudioPlayerConfig', {
+        'defaultVolume': 50,
+        'timeShiftInSeconds': 5
+    })
+    .filter('trustedAudioUrl', ['$sce', function ($sce) {
+        return function (audioFileFullPath) {
+            return audioFileFullPath ? $sce.trustAsResourceUrl(audioFileFullPath) : 'undefined';
+        };
+    }])
+    .directive('b2bAudio', ['$log', '$timeout', 'AudioPlayerConfig', '$compile', 'events', function ($log, $timeout, AudioPlayerConfig, $compile, events) {
+        return {
+            restrict: 'EA',
+            replace: true,
+            scope: {
+                audioSrcUrl: '='
+            },
+            templateUrl: 'b2bTemplate/audioPlayer/audioPlayer.html',
+            controller: function ($scope) {
+
+                $scope.audio = {};
+
+                if (!angular.isDefined($scope.audioSrcUrl)) {
+                    $log.warn('b2b-audio : audio-src-url undefined');
+                    $scope.audioSrcUrl = undefined;
+                    $scope.audio.mp3 = undefined;
+                }
+
+            },
+            link: function (scope, element) {
+                var audioElement = angular.element(element[0].querySelector('audio'))[0];
+                scope.audio.audioElement = audioElement;
+                
+                function setAttributes(element, attributes) {
+                    Object.keys(attributes).forEach(function (name) {
+                        element.setAttribute(name, attributes[name]);
+                    });
+                }
+
+                $timeout(function () {
+                    // TODO: Replace with DDA Tooltip
+                    var seekBarKnob = element[0].querySelector('.b2b-seek-bar-knob');
+                    var tooltipObject = {
+                        'tooltip': '{{timeFormatter(audio.currentTime)}}',
+                        'tooltip-placement': 'above',
+                        'tooltip-style': 'blue',
+                        'tooltip-trigger': 'mousedown',
+                        'tooltip-append-to-body': 'false',
+                        'tooltip-offset': '-10',
+                        'refer-by': 'seek-bar-tooltip'
+                    };
+                    setAttributes(seekBarKnob, tooltipObject);
+                    $compile(seekBarKnob)(scope);
+                });
+
+                if (angular.isDefined(scope.audioSrcUrl)) {
+                    scope.audio.mp3 = scope.audioSrcUrl;
+                }
+
+                scope.audio.currentTime = 0;
+                scope.audio.currentVolume = AudioPlayerConfig.defaultVolume;
+                scope.audio.timeShiftInSeconds = AudioPlayerConfig.timeShiftInSeconds;
+                scope.isPlayInProgress = false;
+                scope.isReady = false;
+                scope.isAudioDragging = false;
+
+                $timeout(function () {
+                    audioElement.load();
+                    audioElement.volume = scope.audio.currentVolume / 100;
+                });
+
+                scope.$watch('audioSrcUrl', function (newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        if (!newVal) {
+                            $log.warn('b2b-audio : audio-src-url undefined. Please provide a valid URL');
+                        }
+                        
+                        scope.audio.mp3 = newVal;
+                        $timeout(function () {
+                            audioElement.load();
+                        });
+                    }
+                });
+
+                scope.playAudio = function () {
+                    if (scope.isReady) {
+                        audioElement.play();
+                    }
+                };
+
+                audioElement.onplay = function () {
+                    scope.isPlayInProgress = true;
+                    scope.$digest();
+                };
+
+                scope.pauseAudio = function () {
+                    audioElement.pause();
+                };
+
+                audioElement.onpause = function () {
+                    scope.isPlayInProgress = false;
+                    scope.$digest();
+                };
+
+                scope.toggleAudio = function () {
+                    if (audioElement.paused) {
+                        scope.playAudio();
+                    } else {
+                        scope.pauseAudio();
+                    }
+                };
+
+                scope.volumeUp = function (delta) {
+                    if (!delta) {
+                        delta = 0.1;
+                    } else {
+                        delta = delta / 100;
+                    }
+                    audioElement.muted = false;
+                    if (audioElement.volume < 1) {
+                        audioElement.volume = Math.min((Math.round((audioElement.volume + delta) * 100) / 100), 1);
+                    }
+                    scope.audio.currentVolume = audioElement.volume * 100;
+                    return audioElement.volume;
+                };
+
+                scope.volumeDown = function (delta) {
+                    if (!delta) {
+                        delta = 0.1;
+                    } else {
+                        delta = delta / 100;
+                    }
+                    audioElement.muted = false;
+                    if (audioElement.volume > 0) {
+                        audioElement.volume = Math.max((Math.round((audioElement.volume - delta) * 100) / 100), 0);
+                    }
+                    scope.audio.currentVolume = audioElement.volume * 100;
+                    return audioElement.volume;
+                };
+
+                var volumeHandler = function (e) {
+                    events.preventDefault(e);
+                    if ((e.wheelDelta && e.wheelDelta > 0) || (e.detail && e.detail < 0)) {
+                        scope.volumeUp();
+                    } else {
+                        scope.volumeDown();
+                    }
+                    scope.$digest();
+                };
+
+                
+
+                scope.$watch('audio.currentVolume', function (newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        audioElement.volume = newVal / 100;
+                    }
+                });
+
+                scope.setCurrentTime = function (timeInSec) {
+                    audioElement.currentTime = timeInSec;
+                };
+
+                scope.setAudioPosition = function (val) {
+                    if (scope.isReady) {
+                        scope.setCurrentTime(val);
+                        scope.isAudioDragging = false;
+                    }
+                };
+
+                function getTimestampArray(timestamp) {
+                    var d = Math.abs(timestamp) / 1000; // delta
+                    var r = {}; // result
+                    var s = { // structure
+                        day: 86400,
+                        hour: 3600,
+                        minute: 60,
+                        second: 1
+                    };
+
+                    Object.keys(s).forEach(function (key) {
+                        r[key] = Math.floor(d / s[key]);
+                        d -= r[key] * s[key];
+                    });
+
+                    return r;
+                };
+
+                scope.timeFormatter = function (timeInSec) {
+                    var formattedTime = '00:00';
+
+                    if (!timeInSec || timeInSec < 1) {
+                        return formattedTime;
+                    }
+
+                    if (typeof timeInSec === 'string') {
+                        return timeInSec;
+                    }
+
+                    var dateArray = getTimestampArray(timeInSec * 1000);
+                    Object.keys(dateArray).forEach(function (key) {
+                        if (dateArray[key] === 0) {
+                            dateArray[key] = '00';
+                        } else if (dateArray[key] < 10) {
+                            dateArray[key] = '0' + dateArray[key];
+                        }
+                    });
+
+                    formattedTime = dateArray['minute'] + ':' + dateArray['second'];
+
+                    if (dateArray['hour'] !== '00') {
+                        formattedTime = dateArray['hour'] + ':' + formattedTime;
+                    }
+
+                    if (dateArray['day'] !== '00') {
+                        formattedTime = dateArray['day'] + ':' + formattedTime;
+                    }
+
+                    return formattedTime;
+                };
+
+                audioElement.onloadedmetadata = function () {
+                    scope.audio.duration = audioElement.duration;
+                    scope.$digest();
+                };
+
+                audioElement.ontimeupdate = function () {
+                    if (!scope.isAudioDragging) {
+                        scope.audio.currentTime = audioElement.currentTime;
+                        scope.$digest();
+                    }
+                };
+
+                audioElement.onended = function () {
+                    scope.setCurrentTime(0);
+                    scope.audio.currentTime = 0;
+                    if (!audioElement.paused) {
+                        scope.pauseAudio();
+                    }
+                    scope.$digest();
+                };
+
+                audioElement.oncanplay = function () {
+                    scope.isReady = true;
+                    scope.isPlayInProgress = !audioElement.paused;
+                    scope.$digest();
+                };
+
+                var onloadstart = function () {
+                    scope.isReady = false;
+                    scope.isPlayInProgress = !audioElement.paused;
+                    scope.audio.currentTime = 0;
+                    scope.audio.duration = 0;
+                    scope.$digest();
+                };
+                audioElement.addEventListener("loadstart", onloadstart);
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Videos, audio & animation.att:Audio Recorder
+ * @scope
+ * @param {function} callback - A callback to handle the WAV blob
+ * @param {object} config - A config object with properties startRecordingMessage & whileRecordingMessage
+ * @description
+ *  <file src="src/audioRecorder/docs/readme.md" />
+ *
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/audioRecorder/docs/demo.html" />
+            <file src="src/audioRecorder/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.audioRecorder', ['b2b.att.utilities'])
+    .constant('AudioRecorderConfig', {
+        'startRecordingMessage': 'Click on REC icon to being recording',
+        'whileRecordingMessage': 'Recording...'
+    })
+    .directive('b2bAudioRecorder', ['$interval', 'AudioRecorderConfig', 'b2bUserAgent', 'b2bRecorder', function($interval, AudioRecorderConfig, b2bUserAgent, b2bRecorder) {
+        return {
+            restrict: 'EA',
+            replace: true,
+            scope: {
+                callback: '&'
+            },
+            templateUrl: 'b2bTemplate/audioRecorder/audioRecorder.html',
+            controller: function($scope) {
+
+                function hasGetUserMedia() {
+                    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
+                        navigator.mozGetUserMedia || navigator.msGetUserMedia);
+                }
+
+                if (!hasGetUserMedia()) {
+                    throw new Error('Your broswer does not support MediaRecorder API');
+                }
+
+                if (!(b2bUserAgent.isFF() || b2bUserAgent.isChrome())) {
+                    throw new Error('b2bAudioRecorder does not support this browser!');
+                }
+
+            },
+            link: function(scope, element) {
+                scope.elapsedTime = 0;
+                scope.isRecording = false;
+                scope.config = {};
+                scope.config.startRecordingMessage = AudioRecorderConfig.startRecordingMessage;
+                scope.config.whileRecordingMessage = AudioRecorderConfig.whileRecordingMessage;
+                
+
+                var timer = undefined; // Interval promise
+                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
+                var stream;
+                var audio = angular.element(element[0].querySelector('audio'))[0];
+                var recorder = undefined;
+
+                function startRecording() {
+                    scope.isRecording = true;
+                    navigator.mediaDevices.getUserMedia({
+                        audio: true
+                    }).then(function(stream) {
+                        //create the MediaStreamAudioSourceNode
+                        context = new AudioContext();
+                        source = context.createMediaStreamSource(stream);
+                        recorder = new b2bRecorder(source);
+                        recorder.record();
+
+                        timer = $interval(function() {
+                            scope.elapsedTime += 1;
+                        }, 1000, 0);
+                    }).catch(function(err) {
+                        angular.noop();
+                    });
+
+                };
+
+                function stopRecording() {
+                    scope.isRecording = false;
+                    recorder.stop();
+                    var audio = {};
+                    recorder.exportWAV(function(s) {
+                        audio.src = window.URL.createObjectURL(s);
+                        context.close().then(function() {
+                            if (timer) {
+                                $interval.cancel(timer);
+                            }
+                            scope.elapsedTime = 0;
+                            
+                            recorder.clear();
+                            recorder = undefined;
+                        });
+                        if (angular.isFunction(scope.callback)){
+                            scope.callback({'data': audio});    
+                        }
+                    });
+                    
+                    
+                }
+
+                scope.toggleRecording = function() {
+                    if (scope.isRecording) {
+                        stopRecording();
+                    } else {
+                        startRecording();
+                    }
+                };
+
+
+
+                //TODO: Move this into utilities
+                function getTimestampArray(timestamp) {
+                    var d = Math.abs(timestamp) / 1000; // delta
+                    var r = {}; // result
+                    var s = { // structure
+                        day: 86400,
+                        hour: 3600,
+                        minute: 60,
+                        second: 1
+                    };
+
+                    Object.keys(s).forEach(function(key) {
+                        r[key] = Math.floor(d / s[key]);
+                        d -= r[key] * s[key];
+                    });
+
+                    return r;
+                };
+                scope.timeFormatter = function(timeInSec) {
+                    var formattedTime = '00:00';
+
+                    if (!timeInSec || timeInSec < 1) {
+                        return formattedTime;
+                    }
+
+                    if (typeof timeInSec === 'string') {
+                        return timeInSec;
+                    }
+
+                    var dateArray = getTimestampArray(timeInSec * 1000);
+                    Object.keys(dateArray).forEach(function(key) {
+                        if (dateArray[key] === 0) {
+                            dateArray[key] = '00';
+                        } else if (dateArray[key] < 10) {
+                            dateArray[key] = '0' + dateArray[key];
+                        }
+                    });
+
+                    formattedTime = dateArray['minute'] + ':' + dateArray['second'];
+
+                    if (dateArray['hour'] !== '00') {
+                        formattedTime = dateArray['hour'] + ':' + formattedTime;
+                    }
+
+                    if (dateArray['day'] !== '00') {
+                        formattedTime = dateArray['day'] + ':' + formattedTime;
+                    }
+
+                    return formattedTime;
+                };
+
+                scope.$on('$destroy', function() {
+                    if (timer) {
+                        $interval.cancel(timer);
+                    }
+                });
+            }
+        };
+    }]);
+
+/**
+ * @ngdoc directive
+ * @name Navigation.att:Back To Top
+ * @scope
+ * @description
+ *  <file src="src/backToTop/docs/readme.md" />
+ * @param {integer} scrollSpeed - Scroll speed in seconds, default is 1
+*
+ * @usage
+ * 
+    <div ng-controller="backToTopController">
+        <div b2b-backtotop></div>
+    </div>
+ * 
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/backToTop/docs/demo.html" />
+            <file src="src/backToTop/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+ 
+angular.module('b2b.att.backToTop', ['b2b.att.utilities','b2b.att.position'])
+    .directive('b2bBacktotopButton', [function () {
+        return {
+            restrict: 'EA',
+            replace: true,
+            templateUrl: 'b2bTemplate/backToTop/backToTop.html',
+            link: function (scope, elem, attr) {
+                elem.bind('click', function(evt) {
+                    var scrollSpeed = parseInt(attr.scrollSpeed) || 1;
+                    TweenLite.to(window, scrollSpeed, {scrollTo:{x: 0, y: 0}});
+                });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:badgesForAlerts
+ *
+ * @description
+ *  <file src="src/badgesForAlerts/docs/readme.md" />
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/badgesForAlerts/docs/demo.html" />
+            <file src="src/badgesForAlerts/docs/demo.js" />
+       </example>
+        </section>
+ *
+ */
+angular.module('b2b.att.badgesForAlerts', []);
+/**
+ * @ngdoc directive
+ * @name Misc.att:boardstrip
+ *
+ * @description
+ *  <file src="src/boardstrip/docs/readme.md" />
+ *
+ * @usage
+ * See demo section
+ * @example
+    <section id="code">
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/boardstrip/docs/demo.html" />
+            <file src="src/boardstrip/docs/demo.js" />
+        </example>
+    </section>
+ */
+angular.module('b2b.att.boardstrip', ['b2b.att.utilities'])
+    .constant('BoardStripConfig', {
+        'maxVisibleBoards': 4,
+        'boardsToScroll': 1,
+        /* These parameters are non-configurable and remain unaltered, until there is a change in corresponding CSS */
+        'boardLength': 140,
+        'boardMargin': 15
+    })
+    .directive('b2bBoard', [function () {
+        return {
+            restrict: 'AE',
+            replace: true,
+            transclude: true,
+            require: '^b2bBoardStrip',
+            scope: {
+                boardIndex: '=',
+                boardLabel: '='
+            },
+            templateUrl: 'b2bTemplate/boardstrip/b2bBoard.html',
+            link: function (scope, element, attrs, ctrls) {
+
+                var parentCtrl = ctrls;
+
+                scope.getCurrentIndex = function () {
+                    return parentCtrl.getCurrentIndex();
+                };
+                scope.selectBoard = function (boardIndex) {
+                    if (!isNaN(boardIndex)) {
+                        parentCtrl.setCurrentIndex(boardIndex);
+                    }
+                };
+            }
+        };
+    }])
+    .directive('b2bBoardStrip', ['BoardStripConfig', '$timeout', function (BoardStripConfig, $timeout) {
+        return {
+            restrict: 'AE',
+            replace: true,
+            transclude: true,
+            require: ['?ngModel', 'b2bBoardStrip'],
+            scope: {
+                boardsMasterArray: '=',
+                onAddBoard: '&?'
+            },
+            templateUrl: 'b2bTemplate/boardstrip/b2bBoardstrip.html',
+            controller: function ($scope) {
+                if (!angular.isDefined($scope.boardsMasterArray)) {
+                    $scope.boardsMasterArray = [];
+                }
+
+                this.rectifyMaxVisibleBoards = function () {
+                    if (this.maxVisibleIndex >= $scope.boardsMasterArray.length) {
+                        this.maxVisibleIndex = $scope.boardsMasterArray.length - 1;
+                    }
+
+                    if (this.maxVisibleIndex < 0) {
+                        this.maxVisibleIndex = 0;
+                    }
+                };
+
+                this.resetBoardStrip = function () {
+                    $scope.currentIndex = 0;
+
+                    this.maxVisibleIndex = BoardStripConfig.maxVisibleBoards - 1;
+                    this.minVisibleIndex = 0;
+
+                    this.rectifyMaxVisibleBoards();
+                };
+
+                this.getCurrentIndex = function () {
+                    return $scope.currentIndex;
+                };
+                this.setCurrentIndex = function (indx) {
+                    $scope.currentIndex = indx;
+                };
+
+                this.getBoardsMasterArrayLength = function () {
+                    return $scope.boardsMasterArray.length;
+                };
+
+                $scope.addBoardPressedFlag = false;
+                this.getAddBoardPressedFlag = function () {
+                    return $scope.addBoardPressedFlag;
+                };
+                this.setAddBoardPressedFlag = function (booleanValue) {
+                    $scope.addBoardPressedFlag = booleanValue;
+                };
+
+            },
+            link: function (scope, element, attrs, ctrls) {
+
+                var ngModelCtrl = ctrls[0];
+                var ctrl = ctrls[1];
+
+                var oldTimeout;
+                var animationTimeout = 1000;
+
+                var getBoardViewportWidth = function (numberOfVisibleBoards) {
+                    return numberOfVisibleBoards * (BoardStripConfig.boardLength + BoardStripConfig.boardMargin);
+                };
+                if (element[0].querySelector(".board-viewport")) {
+                    angular.element(element[0].querySelector(".board-viewport")).css({
+                        "width": getBoardViewportWidth(BoardStripConfig.maxVisibleBoards) + "px"
+                    });
+                }
+
+                var getBoardstripContainerWidth = function (totalNumberOfBoards) {
+                    return totalNumberOfBoards * (BoardStripConfig.boardLength + BoardStripConfig.boardMargin);
+                };
+                if (element[0].querySelector(".boardstrip-container")) {
+                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                        "width": getBoardstripContainerWidth(ctrl.getBoardsMasterArrayLength()) + "px"
+                    });
+                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                        "left": "0px"
+                    });
+                }
+
+                var calculateAndGetBoardstripContainerAdjustment = function () {
+
+                    var calculatedAdjustmentValue;
+
+                    if (ctrl.getBoardsMasterArrayLength() <= BoardStripConfig.maxVisibleBoards) {
+                        calculatedAdjustmentValue = 0;
+                    } else {
+                        calculatedAdjustmentValue = (ctrl.minVisibleIndex * (BoardStripConfig.boardLength + BoardStripConfig.boardMargin)) * -1;
+                    }
+
+                    return calculatedAdjustmentValue;
+                };
+
+                var animateBoardstripContainerAdjustment = function (elementToFocusAfterAnimation) {
+                    var oldContainerAdjustment = angular.element(element[0].querySelector(".boardstrip-container"))[0].style.left;
+                    var containerAdjustment = calculateAndGetBoardstripContainerAdjustment();
+                    if (oldContainerAdjustment !== containerAdjustment + 'px') {
+                        angular.element(element[0].querySelector(".boardstrip-container")).css({
+                            "left": containerAdjustment + "px"
+                        });
+
+                        $timeout.cancel(oldTimeout);
+                        oldTimeout = $timeout(function () {
+                            elementToFocusAfterAnimation.focus();
+                        }, animationTimeout);
+                    } else {
+                        elementToFocusAfterAnimation.focus();
+                    }
+                };
+
+                var updateBoardsTabIndex = function (boardArray, minViewIndex, maxViewIndex) {
+                    for (var i = 0; i < boardArray.length; i++) {
+                        angular.element(boardArray[i]).attr('tabindex', '-1');
+                    }
+                    for (var j = minViewIndex; j <= maxViewIndex; j++) {
+                        angular.element(boardArray[j]).attr('tabindex', '0');
+                    }
+                };
+
+                $timeout(function () {
+                    var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                    updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                });
+
+                scope.$watchCollection('boardsMasterArray', function (newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        /* When a board is removed */
+                        if (newVal.length < oldVal.length) {
+                            ctrl.resetBoardStrip();
+                            $timeout(function () {
+
+                                var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                                if (currentBoardArray.length !== 0) {
+                                    animateBoardstripContainerAdjustment(currentBoardArray[0]);
+                                } else {
+                                    element[0].querySelector('div.boardstrip-item--add').focus();
+                                }
+
+                                angular.element(element[0].querySelector(".boardstrip-container")).css({
+                                    "width": getBoardstripContainerWidth(ctrl.getBoardsMasterArrayLength()) + "px"
+                                });
+                                /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                                updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                            });
+                        }
+                        /* When a board is added */
+                        else {
+                            if (ctrl.getAddBoardPressedFlag()) {
+                                ctrl.maxVisibleIndex = ctrl.getBoardsMasterArrayLength() - 1;
+                                ctrl.minVisibleIndex = Math.max(ctrl.maxVisibleIndex - BoardStripConfig.maxVisibleBoards + 1, 0);
+
+                                ctrl.setCurrentIndex(ctrl.maxVisibleIndex);
+
+                                $timeout(function () {
+                                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                                        "width": getBoardstripContainerWidth(ctrl.getBoardsMasterArrayLength()) + "px"
+                                    });
+
+                                    var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                                    animateBoardstripContainerAdjustment(currentBoardArray[currentBoardArray.length - 1]);
+                                    /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                                    updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                                });
+                            } else {
+                                if (ctrl.minVisibleIndex === 0 && ctrl.getBoardsMasterArrayLength() < BoardStripConfig.maxVisibleBoards + 1) {
+                                    ctrl.maxVisibleIndex = ctrl.getBoardsMasterArrayLength() - 1;
+                                    ctrl.rectifyMaxVisibleBoards();
+                                }
+
+                                $timeout(function () {
+                                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                                        "width": getBoardstripContainerWidth(ctrl.getBoardsMasterArrayLength()) + "px"
+                                    });
+
+                                    var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                                    /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                                    updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                                });
+                            }
+
+                            ctrl.setAddBoardPressedFlag(false);
+                        }
+                    }
+                });
+
+                scope.nextBoard = function () {
+                    ctrl.maxVisibleIndex += BoardStripConfig.boardsToScroll;
+                    ctrl.rectifyMaxVisibleBoards();
+                    ctrl.minVisibleIndex = ctrl.maxVisibleIndex - (BoardStripConfig.maxVisibleBoards - 1);
+
+                    $timeout.cancel(oldTimeout);
+                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                        "left": calculateAndGetBoardstripContainerAdjustment() + "px"
+                    });
+
+                    $timeout(function () {
+                        var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+
+                        /* Remove tabindex from non-visible boards */
+                        updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+
+                        if (!(scope.isNextBoard())) {
+                            try {
+                                currentBoardArray[currentBoardArray.length - 1].focus();
+                            } catch (e) { /* IE8 may throw exception */ }
+                        }
+                    }, animationTimeout);
+                };
+                scope.prevBoard = function () {
+
+                    ctrl.minVisibleIndex -= BoardStripConfig.boardsToScroll;
+                    if (ctrl.minVisibleIndex < 0) {
+                        ctrl.minVisibleIndex = 0;
+                    }
+
+                    ctrl.maxVisibleIndex = ctrl.minVisibleIndex + BoardStripConfig.maxVisibleBoards - 1;
+                    ctrl.rectifyMaxVisibleBoards();
+
+                    $timeout.cancel(oldTimeout);
+                    angular.element(element[0].querySelector(".boardstrip-container")).css({
+                        "left": calculateAndGetBoardstripContainerAdjustment() + "px"
+                    });
+
+                    $timeout(function () {
+                        var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+
+                        /* Remove tabindex from non-visible boards */
+                        updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+
+                        if (ctrl.minVisibleIndex === 0) {
+                            try {
+                                element[0].querySelector('div.boardstrip-item--add').focus();
+                            } catch (e) { /* IE8 may throw exception */ }
+                        }
+                    });
+                };
+
+                scope.isPrevBoard = function () {
+                    return (ctrl.minVisibleIndex > 0);
+                };
+                scope.isNextBoard = function () {
+                    return (ctrl.getBoardsMasterArrayLength() - 1 > ctrl.maxVisibleIndex);
+                };
+
+                ngModelCtrl.$render = function () {
+                    if (ngModelCtrl.$viewValue || ngModelCtrl.$viewValue === 0) {
+                        var newCurrentIndex = ngModelCtrl.$viewValue;
+
+                        if (!(newCurrentIndex = parseInt(newCurrentIndex, 10))) {
+                            newCurrentIndex = 0;
+                        }
+
+                        if (newCurrentIndex <= 0) {
+                            ctrl.resetBoardStrip();
+                            newCurrentIndex = 0;
+
+                            var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                            if (currentBoardArray.length !== 0) {
+                                animateBoardstripContainerAdjustment(currentBoardArray[0]);
+                            } else {
+                                element[0].querySelector('div.boardstrip-item--add').focus();
+                            }
+                            /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                            updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                        } else if (newCurrentIndex >= ctrl.getBoardsMasterArrayLength()) {
+                            ctrl.maxVisibleIndex = ctrl.getBoardsMasterArrayLength() - 1;
+                            ctrl.rectifyMaxVisibleBoards();
+                            ctrl.minVisibleIndex = Math.max(ctrl.maxVisibleIndex - BoardStripConfig.maxVisibleBoards + 1, 0);
+
+                            newCurrentIndex = ctrl.maxVisibleIndex;
+
+                            $timeout(function () {
+                                var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                                animateBoardstripContainerAdjustment(currentBoardArray[newCurrentIndex]);
+                                /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                                updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                            });
+                        } else {
+
+                            if (!(newCurrentIndex >= ctrl.minVisibleIndex && newCurrentIndex <= ctrl.maxVisibleIndex)) {
+                                ctrl.minVisibleIndex = newCurrentIndex;
+                                ctrl.maxVisibleIndex = ctrl.minVisibleIndex + BoardStripConfig.maxVisibleBoards - 1;
+                                ctrl.rectifyMaxVisibleBoards();
+
+                                if (ctrl.getBoardsMasterArrayLength() < BoardStripConfig.maxVisibleBoards) {
+                                    ctrl.minVisibleIndex = 0;
+                                } else {
+                                    ctrl.minVisibleIndex = Math.max(ctrl.maxVisibleIndex - BoardStripConfig.maxVisibleBoards + 1, 0);
+                                }
+
+                                $timeout(function () {
+                                    var currentBoardArray = element[0].querySelectorAll('[b2b-board]');
+                                    animateBoardstripContainerAdjustment(currentBoardArray[newCurrentIndex]);
+                                    /* Update tabindecies to ensure keyboard navigation behaves correctly */
+                                    updateBoardsTabIndex(currentBoardArray, ctrl.minVisibleIndex, ctrl.maxVisibleIndex);
+                                });
+                            }
+                        }
+                        scope.currentIndex = newCurrentIndex;
+                        ngModelCtrl.$setViewValue(newCurrentIndex);
+                    } else {
+                        ctrl.resetBoardStrip();
+                        ngModelCtrl.$setViewValue(0);
+                    }
+                };
+
+                scope.$watch('currentIndex', function (newVal, oldVal) {
+                    if (newVal !== oldVal && ngModelCtrl && ngModelCtrl.$viewValue !== newVal) {
+                        ngModelCtrl.$setViewValue(newVal);
+                    }
+                });
+            }
+        };
+    }])
+    .directive('b2bAddBoard', ['BoardStripConfig', '$parse', function (BoardStripConfig, $parse) {
+        return {
+            restrict: 'AE',
+            replace: true,
+            require: '^b2bBoardStrip',
+            scope: {
+                onAddBoard: '&?'
+            },
+            templateUrl: 'b2bTemplate/boardstrip/b2bAddBoard.html',
+            link: function (scope, element, attrs, ctrl) {
+                scope.addBoard = function () {
+                    if (attrs['onAddBoard']) {
+                        scope.onAddBoard = $parse(scope.onAddBoard);
+                        scope.onAddBoard();
+                        ctrl.setAddBoardPressedFlag(true);
+                    }
+                };
+            }
+        };
+    }])
+    .directive('b2bBoardNavigation', ['keymap', 'events', function (keymap, events) {
+        return {
+            restrict: 'AE',
+            link: function (scope, elem) {
+
+                var prevElem = keymap.KEY.LEFT;
+                var nextElem = keymap.KEY.RIGHT;
+
+                elem.bind('keydown', function (ev) {
+
+                    if (!(ev.keyCode)) {
+                        ev.keyCode = ev.which;
+                    }
+
+                    switch (ev.keyCode) {
+                    case nextElem:
+                        events.preventDefault(ev);
+                        events.stopPropagation(ev);
+
+                        if (elem[0].nextElementSibling && parseInt(angular.element(elem[0].nextElementSibling).attr('tabindex')) >= 0) {
+                            angular.element(elem[0])[0].nextElementSibling.focus();
+                        } else {
+                            /* IE8 fix */
+                            var el = angular.element(elem[0])[0];
+                            do {
+                                if (el.nextSibling) {
+                                    el = el.nextSibling;
+                                } else {
+                                    break;
+                                }
+                            } while (el && el.tagName !== 'LI');
+
+                            if (el.tagName && el.tagName === 'LI' && parseInt(angular.element(el).attr('tabindex')) >= 0) {
+                                el.focus();
+                            }
+                        }
+
+                        break;
+                    case prevElem:
+                        events.preventDefault(ev);
+                        events.stopPropagation(ev);
+
+                        if (elem[0].previousElementSibling && parseInt(angular.element(elem[0].previousElementSibling).attr('tabindex')) >= 0) {
+                            angular.element(elem[0])[0].previousElementSibling.focus();
+                        } else {
+                            /* IE8 fix */
+                            var el1 = angular.element(elem[0])[0];
+                            do {
+                                if (el1.previousSibling) {
+                                    el1 = el1.previousSibling;
+                                } else {
+                                    break;
+                                }
+                            } while (el1 && el1.tagName !== 'LI');
+
+                            if (el1.tagName && el1.tagName === 'LI' && parseInt(angular.element(el1).attr('tabindex')) >= 0) {
+                                el1.focus();
+                            }
+                        }
+                        break;
+                    default:
+                        break;
+                    }
+                });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Navigation.att:breadcrumbs
+ *
+ * @description
+ *  <file src="src/breadcrumbs/docs/readme.md" />
+ * @usage
+    <ul class="breadcrumb">
+        <li ng-repeat="link in breadCrumbsLink"><a tabindex="{{(idx==$index)?-1:0}}" href='javascript:void(0)' ng-click="clickActive($index)" ng-class="{'active':idx==$index, '': idx!=$index}">{{link.title}}</a></li>
+    </ul>
+ * @example
+ <example module="b2b.att">
+ <file src="src/breadcrumbs/docs/demo.html" />
+ <file src="src/breadcrumbs/docs/demo.js" />
+ </example>
+ */
+angular.module('b2b.att.breadcrumbs',[])
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:buttonGroups
+ *
+ * @description
+ *  <file src="src/buttonGroups/docs/readme.md" />
+ *
+ * @usage
+<h2>Radio Aproach</h2>
+<div class="btn-group" b2b-key prev="37,38" next="39,40" circular-traversal role="radiogroup">
+    <button type="button" class="btn btn-secondary" b2b-key-item ng-focus="radioModel='Button 1'" ng-model="radioModel" b2b-btn-radio="'Button 1'" tabindex="{{(!radioModel || 'Button 1'===radioModel)?0:-1}}">Button 1</button>
+    <button type="button" class="btn btn-secondary" b2b-key-item ng-focus="radioModel='Button 2'" ng-model="radioModel" b2b-btn-radio="'Button 2'" tabindex="{{(!radioModel || 'Button 2'===radioModel)?0:-1}}">Button 2</button>
+    <button type="button" class="btn btn-secondary" b2b-key-item ng-focus="radioModel='Button 3'" ng-model="radioModel" b2b-btn-radio="'Button 3'" tabindex="{{(!radioModel || 'Button 3'===radioModel)?0:-1}}">Button 3</button>
+</div>
+
+<h2>Checkbox Aproach</h2>
+<span b2b-button-group class="btn-group btn-fullwidth" role="group" max-select="3" ng-model="checkModel1">
+    <button type="button" class="btn btn-secondary" ng-model="checkModel1.Button1" b2b-btn-checkbox>Button1</button>
+    <button type="button" class="btn btn-secondary" ng-model="checkModel1.Button2" b2b-btn-checkbox>Button2</button>
+    <button type="button" class="btn btn-secondary" ng-model="checkModel1.Button3" b2b-btn-checkbox>Button3</button>
+    <button type="button" class="btn btn-secondary" ng-model="checkModel1.Button4" b2b-btn-checkbox>Button4</button>
+    <button type="button" class="btn btn-secondary" ng-model="checkModel1.Button5" b2b-btn-checkbox>Button5</button>
+</span>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/buttonGroups/docs/demo.html" />
+            <file src="src/buttonGroups/docs/demo.js" />
+       </example>
+        </section>
+ *
+ */
+angular.module('b2b.att.buttonGroups', ['b2b.att.utilities'])
+    .constant('buttonConfig', {
+        activeClass: 'active',
+        toggleEvent: 'click'
+    })
+    .directive('b2bBtnRadio', ['buttonConfig', function (buttonConfig) {
+        var activeClass = buttonConfig.activeClass || 'active';
+        var toggleEvent = buttonConfig.toggleEvent || 'click';
+
+        return {
+            require: 'ngModel',
+            link: function (scope, element, attrs, ngModelCtrl) {
+                var notMobile = !/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+
+                if (notMobile) {
+                    element.bind('focus', function () {
+                        scope.$apply(function () {
+                            ngModelCtrl.$setViewValue(scope.$eval(attrs.b2bBtnRadio));
+                            ngModelCtrl.$render();
+                        });
+                    });
+                }
+
+                element.attr('role', 'radio');
+
+                //model -> UI
+                ngModelCtrl.$render = function () {
+                    element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.b2bBtnRadio)));
+                    if (angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.b2bBtnRadio))) {
+                        element.attr("aria-checked", true);
+                    } else {
+                        element.attr("aria-checked", false);
+                    }
+                };
+
+                //ui->model
+                element.bind(toggleEvent, function () {
+                    if (!element.hasClass(activeClass)) {
+                        scope.$apply(function () {
+                            ngModelCtrl.$setViewValue(scope.$eval(attrs.b2bBtnRadio));
+                            ngModelCtrl.$render();
+                        });
+                    }
+                });
+            }
+        };
+    }])
+    .directive('b2bBtnCheckbox', ['buttonConfig', function (buttonConfig) {
+        var activeClass = buttonConfig.activeClass || 'active';
+        var toggleEvent = buttonConfig.toggleEvent || 'click';
+
+        return {
+            require: ['ngModel', '^^b2bButtonGroup'],
+            link: function (scope, element, attrs, ctrls) {
+
+                var ngModelCtrl = ctrls[0];
+                var parentCtrl = ctrls[1];
+
+                element.attr('role', 'checkbox');
+                element.attr('aria-describedby', parentCtrl.getStateDescriptionElemId());
+
+                function getTrueValue() {
+                    var trueValue = scope.$eval(attrs.b2bBtnCheckboxTrue);
+                    return angular.isDefined(trueValue) ? trueValue : true;
+                }
+
+                function getFalseValue() {
+                    var falseValue = scope.$eval(attrs.b2bBtnCheckboxFalse);
+                    return angular.isDefined(falseValue) ? falseValue : false;
+                }
+
+                //model -> UI
+                ngModelCtrl.$render = function () {
+                    element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));
+                    if ((angular.equals(ngModelCtrl.$modelValue, getTrueValue()))) {
+                        element.attr("aria-checked", true);
+                    } else {
+                        element.attr("aria-checked", false);
+                    }
+                };
+
+                //ui->model
+                element.bind(toggleEvent, function () {
+                    scope.$apply(function () {
+                        ngModelCtrl.$setViewValue(element.hasClass(activeClass) ? getFalseValue() : getTrueValue());
+                        ngModelCtrl.$render();
+                    });
+                });
+            }
+        };
+    }])
+    .directive('b2bButtonGroup', ['$timeout', '$compile', function ($timeout, $compile) {
+        return {
+            restrict: 'A',
+            scope: {
+                maxSelect: "=",
+                ngModelButtonState: '=ngModel'
+            },
+            controller: ['$scope', '$element', function ($scope, $element) {
+                $scope.nSel = 0;
+
+                var stateDescriptionElem = angular.element('<span id="b2b_button_group_' + $scope.$id + '" class="hide" aria-hidden="true">{{nSel}} of {{maxSelect}} options selected.</span>');
+                $compile(stateDescriptionElem)($scope);
+                $element.after(stateDescriptionElem);
+
+                this.getStateDescriptionElemId = function () {
+                    return stateDescriptionElem.attr('id');
+                };
+            }],
+            link: function (scope, element) {
+
+
+                var executeFxn = function () {
+                    scope.nSel = 0;
+                    angular.forEach(scope.ngModelButtonState, function (value, key) {
+                        if (value === true) {
+                            scope.nSel += 1;
+                        }
+                    });
+
+                    if (scope.nSel >= scope.maxSelect) {
+                        angular.forEach(element.children(), function (chd) {
+                            if (chd.className.indexOf('active') < 0) {
+                                chd.disabled = true;
+                                chd.setAttribute('aria-disabled', true);
+                            }
+                        });
+                    } else {
+                        angular.forEach(element.children(), function (chd) {
+                            chd.disabled = false;
+                            chd.setAttribute('aria-disabled', false);
+                        });
+                    }
+                    scope.$digest();
+                };
+
+                $timeout(function () {
+                    executeFxn();
+                });
+                element.bind('click', executeFxn);
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:buttons
+ * @element input
+ * @function
+ *
+ * @description
+ *  <file src="src/buttons/docs/readme.md" />
+ * @usage
+ *
+Button shape
+<button class="btn" type="button">Button</button> button.btn (button shape only)
+<button aria-label="Custom aria label" class="btn" type="button">Button</button> button.btn (button shape only) with custom aria label
+<button aria-label="Click on button/Press enter" class="btn" type="button" onclick="javascript:alert('It works!');">Click on button/Press enter</button> button.btn with click functionality
+<a b2b-keyup-click="32" href="javascript:void(0)" class="btn" role="button">Button</a> a.btn (button shape only)
+<button class="btn btn-primary">Button</button> .btn-primary
+<a b2b-keyup-click="32" href="javascript:void(0)" class="btn btn-primary" role="button">Button</a> a.btn-primary
+
+5 Button colors
+<button class="btn btn-secondary">Button</button> .btn-secondary
+<a b2b-keyup-click="32" href="javascript:void(0)" class="btn btn-secondary" role="button">Button</a> a.btn-secondary
+<button class="btn btn-alt">Button</button> .btn-alt
+<a b2b-keyup-click="32" href="javascript:void(0)" class="btn btn-alt" role="button">Button</a> a.btn-alt
+<button class="btn btn-specialty">Button</button> .btn-specialty
+<a b2b-keyup-click="32" href="javascript:void(0)" class="btn btn-specialty" role="button">Button</a> a.btn-specialty
+<button class="btn btn-specialty" disabled="">Button</button> disabled="disabled"
+<a b2b-keyup-click="32" aria-disabled="true" href="javascript:void(0)" class="btn btn-primary disabled" role="button">Button</a> a.disabled
+
+3 button heights
+<button class="btn btn-secondary">Button</button> .btn is default and 46px height
+<button class="btn btn-secondary btn-medium">Button</button> .btn-medium is 42px
+<button class="btn btn-secondary btn-small">Button</button> .btn-small is 36px
+
+.row-nowrap 2 up buttons
+<div class="row-nowrap">
+    <button class="btn btn-secondary btn-fullwidth" type="button">Cancel</button>
+    <button class="btn btn-primary btn-fullwidth" type="button">Continue</button>
+</div>
+
+.row 2 up buttons (desktop) stacked (mobile) (different order)
+<div class="row cta-button-group">
+    <button class="span btn btn-secondary btn-fullwidth hidden-phone" type="button">Cancel</button>
+    <button class="span btn btn-primary btn-fullwidth" type="button">Continue</button>
+    <button class="span btn btn-secondary btn-fullwidth visible-phone" type="button">Cancel</button>
+</div>
+
+ * @example
+ *  <section id="code">
+               <b>HTML + AngularJS</b>
+ *              <example module="b2b.att">
+ *              <file src="src/buttons/docs/demo.html" />
+                 <file src="src/buttons/docs/demo.js" />
+ *              </example>
+            </section>
+ *
+ */
+angular.module('b2b.att.buttons', ['b2b.att.utilities']);
+/**
+ * @ngdoc directive
+ * @name Forms.att:calendar
+ *
+ * @description
+ *  <file src="src/calendar/docs/readme.md" />
+ * @usage
+ *  <input type="text" ng-model="dt" b2b-datepicker>
+ *
+ * @example
+   <section id="code">
+    <b>HTML + AngularJS</b>
+    <example module="b2b.att">
+     <file src="src/calendar/docs/demo.html" />
+     <file src="src/calendar/docs/demo.js" />
+    </example>
+   </section>
+ */
+angular.module('b2b.att.calendar', ['b2b.att.position', 'b2b.att.utilities'])
+
+.constant('b2bDatepickerConfig', {
+    dateFormat: 'MM/dd/yyyy',
+    dayFormat: 'd',
+    monthFormat: 'MMMM',
+    yearFormat: 'yyyy',
+    dayHeaderFormat: 'EEEE',
+    dayTitleFormat: 'MMMM yyyy',
+    disableWeekend: false,
+    disableSunday: false,
+    disableDates: null,
+    onSelectClose: null,
+    startingDay: 0,
+    minDate: null,
+    maxDate: null,
+    dueDate: null,
+    fromDate: null,
+    legendIcon: null,
+    legendMessage: null,
+    calendarDisabled: false,
+    collapseWait: 0,
+    orientation: 'left',
+    inline: false,
+    helperText: 'The date you selected is $date. In case of mobile double tap to open calendar. Select a date to close the calendar.',
+    datepickerEvalAttributes: ['dateFormat', 'dayFormat', 'monthFormat', 'yearFormat', 'dayHeaderFormat', 'dayTitleFormat', 'disableWeekend', 'disableSunday', 'startingDay', 'collapseWait', 'orientation'],
+    datepickerWatchAttributes: ['min', 'max', 'due', 'from', 'legendIcon', 'legendMessage', 'ngDisabled'],
+    datepickerFunctionAttributes: ['disableDates', 'onSelectClose']
+})
+
+.factory('b2bDatepickerService', ['b2bDatepickerConfig', 'dateFilter', function (b2bDatepickerConfig, dateFilter) {
+    var setAttributes = function (attr, elem) {
+        if (angular.isDefined(attr) && attr !== null && angular.isDefined(elem) && elem !== null) {
+            var attributes = b2bDatepickerConfig.datepickerEvalAttributes.concat(b2bDatepickerConfig.datepickerWatchAttributes, b2bDatepickerConfig.datepickerFunctionAttributes);
+            for (var key in attr) {
+                var val = attr[key];
+                if (attributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    elem.attr(key.toSnakeCase(), key);
+                }
+            }
+        }
+    };
+
+    var bindScope = function (attr, scope) {
+        if (angular.isDefined(attr) && attr !== null && angular.isDefined(scope) && scope !== null) {
+            var evalFunction = function (key, val) {
+                scope[key] = scope.$parent.$eval(val);
+            };
+
+            var watchFunction = function (key, val) {
+                scope.$parent.$watch(val, function (value) {
+                    scope[key] = value;
+                });
+                scope.$watch(key, function (value) {
+                    scope.$parent[val] = value;
+                });
+            };
+
+            var evalAttributes = b2bDatepickerConfig.datepickerEvalAttributes;
+            var watchAttributes = b2bDatepickerConfig.datepickerWatchAttributes;
+            for (var key in attr) {
+                var val = attr[key];
+                if (evalAttributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    evalFunction(key, val);
+                } else if (watchAttributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    watchFunction(key, val);
+                }
+            }
+        }
+    };
+
+    return {
+        setAttributes: setAttributes,
+        bindScope: bindScope
+    };
+}])
+
+.controller('b2bDatepickerController', ['$scope', '$attrs', 'dateFilter', '$element', '$position', 'b2bDatepickerConfig', function ($scope, $attrs, dateFilter, $element, $position, dtConfig) {
+    var format = {
+            date: getValue($attrs.dateFormat, dtConfig.dateFormat),
+            day: getValue($attrs.dayFormat, dtConfig.dayFormat),
+            month: getValue($attrs.monthFormat, dtConfig.monthFormat),
+            year: getValue($attrs.yearFormat, dtConfig.yearFormat),
+            dayHeader: getValue($attrs.dayHeaderFormat, dtConfig.dayHeaderFormat),
+            dayTitle: getValue($attrs.dayTitleFormat, dtConfig.dayTitleFormat),
+            disableWeekend: getValue($attrs.disableWeekend, dtConfig.disableWeekend),
+            disableSunday: getValue($attrs.disableSunday, dtConfig.disableSunday),
+            disableDates: getValue($attrs.disableDates, dtConfig.disableDates)
+        },
+        startingDay = getValue($attrs.startingDay, dtConfig.startingDay);
+
+    $scope.minDate = dtConfig.minDate ? $scope.resetTime(dtConfig.minDate) : null;
+    $scope.maxDate = dtConfig.maxDate ? $scope.resetTime(dtConfig.maxDate) : null;
+    $scope.dueDate = dtConfig.dueDate ? $scope.resetTime(dtConfig.dueDate) : null;
+    $scope.fromDate = dtConfig.fromDate ? $scope.resetTime(dtConfig.fromDate) : null;
+    $scope.legendIcon = dtConfig.legendIcon ? dtConfig.legendIcon : null;
+    $scope.legendMessage = dtConfig.legendMessage ? dtConfig.legendMessage : null;
+    $scope.ngDisabled = dtConfig.calendarDisabled ? dtConfig.calendarDisabled : null;
+    $scope.collapseWait = getValue($attrs.collapseWait, dtConfig.collapseWait);
+    $scope.orientation = getValue($attrs.orientation, dtConfig.orientation);
+    $scope.onSelectClose = getValue($attrs.onSelectClose, dtConfig.onSelectClose);
+
+    $scope.inline = $attrs.inline === 'true' ? true : dtConfig.inline;
+
+    function getValue(value, defaultValue) {
+        return angular.isDefined(value) ? $scope.$parent.$eval(value) : defaultValue;
+    }
+
+    function getDaysInMonth(year, month) {
+        return new Date(year, month, 0).getDate();
+    }
+
+    function getDates(startDate, n) {
+        var dates = new Array(n);
+        var current = startDate,
+            i = 0;
+        while (i < n) {
+            dates[i++] = new Date(current);
+            current.setDate(current.getDate() + 1);
+        }
+        return dates;
+    }
+
+    this.updatePosition = function (b2bDatepickerPopupTemplate) {
+        $scope.position = $position.offset($element);
+        $scope.position.top = $scope.position.top + $element.find('input').prop('offsetHeight');
+        if ($scope.orientation === 'right') {
+            $scope.position.left = $scope.position.left - (((b2bDatepickerPopupTemplate && b2bDatepickerPopupTemplate.prop('offsetWidth')) || 290) - $element.find('input').prop('offsetWidth'));
+        }
+    };
+
+    function isSelected(dt) {
+        if (dt && angular.isDate($scope.currentDate) && compare(dt, $scope.currentDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isFromDate(dt) {
+        if (dt && angular.isDate($scope.fromDate) && compare(dt, $scope.fromDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isDateRange(dt) {
+        if (dt && $scope.fromDate && angular.isDate($scope.currentDate) && (compare(dt, $scope.fromDate) >= 0) && (compare(dt, $scope.currentDate) <= 0)) {
+            return true;
+        } else if (dt && $scope.fromDate && compare(dt, $scope.fromDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isOld(date, currentMonthDate) {
+        if (date && currentMonthDate && (new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0).getTime() < new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 1, 0, 0, 0).getTime())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    function isNew(date, currentMonthDate) {
+        if (date && currentMonthDate && (new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0).getTime() > new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 1, 0, 0, 0).getTime())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    function isPastDue(dt) {
+        if ($scope.dueDate) {
+            return (dt > $scope.dueDate);
+        }
+        return false;
+    }
+
+    function isDueDate(dt) {
+        if ($scope.dueDate) {
+            return (dt.getTime() === $scope.dueDate.getTime());
+        }
+        return false;
+    }
+
+    var isDisabled = function (date, currentMonthDate) {
+        if ($attrs.from && !angular.isDate($scope.fromDate)) {
+            return true;
+        }
+        if (format.disableWeekend === true && (dateFilter(date, format.dayHeader) === "Saturday" || dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        if (format.disableSunday === true && (dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        if (isOld(date, currentMonthDate) || isNew(date, currentMonthDate)) {
+            return true;
+        }
+        return (($scope.minDate && compare(date, $scope.minDate) < 0) || ($scope.maxDate && compare(date, $scope.maxDate) > 0) || (format.disableDates && format.disableDates({
+            date: date
+        })));
+    };
+
+    var compare = function (date1, date2) {
+        return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()));
+    };
+
+    function isMinDateAvailable(startDate, endDate) {
+        if (($scope.minDate && $scope.minDate.getTime() >= startDate.getTime()) && ($scope.minDate.getTime() <= endDate.getTime())) {
+            $scope.disablePrev = true;
+            $scope.visibilityPrev = "hidden";
+        } else {
+            $scope.disablePrev = false;
+            $scope.visibilityPrev = "visible";
+        }
+    }
+
+    function isMaxDateAvailable(startDate, endDate) {
+        if (($scope.maxDate && $scope.maxDate.getTime() >= startDate.getTime()) && ($scope.maxDate.getTime() <= endDate.getTime())) {
+            $scope.disableNext = true;
+            $scope.visibilityNext = "hidden";
+        } else {
+            $scope.disableNext = false;
+            $scope.visibilityNext = "visible";
+        }
+    }
+
+    function getLabel(label) {
+        if (label) {
+            var labelObj = {
+                pre: label.substr(0, 1).toUpperCase(),
+                post: label
+            };
+            return labelObj;
+        }
+        return;
+    }
+
+    function makeDate(date, dayFormat, dayHeaderFormat, isSelected, isFromDate, isDateRange, isOld, isNew, isDisabled, dueDate, pastDue) {
+        return {
+            date: date,
+            label: dateFilter(date, dayFormat),
+            header: dateFilter(date, dayHeaderFormat),
+            selected: !!isSelected,
+            fromDate: !!isFromDate,
+            dateRange: !!isDateRange,
+            oldMonth: !!isOld,
+            nextMonth: !!isNew,
+            disabled: !!isDisabled,
+            dueDate: !!dueDate,
+            pastDue: !!pastDue,
+            focusable: !((isDisabled && !(isSelected || isDateRange)) || (isOld || isNew))
+        };
+    }
+
+    this.modes = [
+        {
+            name: 'day',
+            getVisibleDates: function (date) {
+                var year = date.getFullYear(),
+                    month = date.getMonth(),
+                    firstDayOfMonth = new Date(year, month, 1),
+                    lastDayOfMonth = new Date(year, month + 1, 0);
+                var difference = startingDay - firstDayOfMonth.getDay(),
+                    numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : -difference,
+                    firstDate = new Date(firstDayOfMonth),
+                    numDates = 0;
+
+                if (numDisplayedFromPreviousMonth > 0) {
+                    firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
+                    numDates += numDisplayedFromPreviousMonth; // Previous
+                }
+                numDates += getDaysInMonth(year, month + 1); // Current
+                numDates += (7 - numDates % 7) % 7; // Next
+
+                var days = getDates(firstDate, numDates),
+                    labels = new Array(7);
+                for (var i = 0; i < numDates; i++) {
+                    var dt = new Date(days[i]);
+                    days[i] = makeDate(dt,
+                        format.day,
+                        format.dayHeader,
+                        isSelected(dt),
+                        isFromDate(dt),
+                        isDateRange(dt),
+                        isOld(dt, date),
+                        isNew(dt, date),
+                        isDisabled(dt, date),
+                        isDueDate(dt),
+                        isPastDue(dt));
+                }
+                for (var j = 0; j < 7; j++) {
+                    labels[j] = getLabel(dateFilter(days[j].date, format.dayHeader));
+                }
+                isMinDateAvailable(firstDayOfMonth, lastDayOfMonth);
+                isMaxDateAvailable(firstDayOfMonth, lastDayOfMonth);
+                return {
+                    objects: days,
+                    title: dateFilter(date, format.dayTitle),
+                    labels: labels
+                };
+            },
+            split: 7,
+            step: {
+                months: 1
+            }
+        }
+    ];
+}])
+
+.directive('b2bDatepickerPopup', ['$parse', '$log', '$timeout', '$document', '$documentBind', '$isElement', '$templateCache', '$compile', 'trapFocusInElement', '$position', '$window', function ($parse, $log, $timeout, $document, $documentBind, $isElement, $templateCache, $compile, trapFocusInElement, $position, $window) {
+    return {
+        restrict: 'EA',
+        replace: true,
+        transclude: true,
+        templateUrl: function (elem, attr) {
+            if (attr.inline === 'true') {
+                return 'b2bTemplate/calendar/datepicker-popup.html';
+            } else {
+                return 'b2bTemplate/calendar/datepicker.html';
+            }
+        },
+        scope: {},
+        require: ['b2bDatepickerPopup', 'ngModel', '?^b2bDatepickerGroup'],
+        controller: 'b2bDatepickerController',
+        link: function (scope, element, attrs, ctrls) {
+            var datepickerCtrl = ctrls[0],
+                ngModel = ctrls[1],
+                b2bDatepickerGroupCtrl = ctrls[2];
+            var b2bDatepickerPopupTemplate;
+
+            if (!ngModel) {
+                $log.error("ng-model is required.");
+                return; // do nothing if no ng-model
+            }
+
+            // Configuration parameters
+            var mode = 0,
+                selected;
+            scope.isOpen = false;
+
+            scope.headers = [];
+            scope.footers = [];
+
+            if (b2bDatepickerGroupCtrl) {
+                b2bDatepickerGroupCtrl.registerDatepickerScope(scope);
+            }
+
+            element.find('button').bind('click', function () {
+                element.find('input')[0].click();
+            });
+
+            element.find('input').bind('click', function () {
+                if (!scope.ngDisabled) {
+                    scope.isOpen = !scope.isOpen;
+                    toggleCalendar(scope.isOpen);
+                    scope.$apply();
+                    datepickerCtrl.updatePosition(b2bDatepickerPopupTemplate);
+                    $timeout(function () { 
+                        angular.element(element[0].querySelector('.datepicker-input')).scrollTop=0;
+                    },10);
+                }
+            });
+            var toggleCalendar = function (flag) {
+                if (!scope.inline) {
+                    if (flag) {
+                        b2bDatepickerPopupTemplate = angular.element($templateCache.get('b2bTemplate/calendar/datepicker-popup.html'));
+                        b2bDatepickerPopupTemplate = $compile(b2bDatepickerPopupTemplate)(scope);
+                        $document.find('body').append(b2bDatepickerPopupTemplate);
+                        b2bDatepickerPopupTemplate.bind('keydown', keyPress);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            trapFocusInElement(flag, b2bDatepickerPopupTemplate);
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false; 
+                                scope.$apply();
+                            }, 100);
+                        });
+                    } else {
+                        b2bDatepickerPopupTemplate.unbind('keydown', keyPress);
+                        b2bDatepickerPopupTemplate.remove();
+                        element.find('button')[0].focus();
+                        scope.getFocus = false;
+                        trapFocusInElement(flag, b2bDatepickerPopupTemplate);
+                    }
+                }
+            };
+
+            var outsideClick = function (e) {
+                var isElement = $isElement(angular.element(e.target), element, $document);
+                var isb2bDatepickerPopupTemplate = $isElement(angular.element(e.target), b2bDatepickerPopupTemplate, $document);
+                if (!(isElement || isb2bDatepickerPopupTemplate)) {
+                    scope.isOpen = false;
+                    toggleCalendar(scope.isOpen);
+                    scope.$apply();
+                }
+            };
+
+            var keyPress = function (ev) {
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }
+                if (ev.keyCode) {
+                    if (ev.keyCode === 27) {
+                        scope.isOpen = false;
+                        toggleCalendar(scope.isOpen);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === 33) {
+                        !scope.disablePrev && scope.move(-1);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false;
+                                scope.$apply();
+                            }, 100);
+                        });
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === 34) {
+                        !scope.disableNext && scope.move(1);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false;
+                                scope.$apply();
+                            }, 100);
+                        });
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    }
+                    scope.$apply();
+                }
+            };
+
+            $documentBind.click('isOpen', outsideClick, scope);
+
+            var modalContainer = angular.element(document.querySelector('.modalwrapper'));
+            var modalBodyContainer = angular.element(document.querySelector('.modal-body'));
+            if (modalContainer) {
+                modalContainer.bind('scroll', function () {
+                    if (b2bDatepickerPopupTemplate) {
+                        datepickerCtrl.updatePosition(b2bDatepickerPopupTemplate);
+                        scope.$apply();
+                    }
+                });
+            }
+            if (modalBodyContainer) {
+                modalBodyContainer.bind('scroll', function () {
+                    if (b2bDatepickerPopupTemplate) {
+                        datepickerCtrl.updatePosition(b2bDatepickerPopupTemplate);
+                        var datepickerTextfield = $position.offset(element.find('input'));
+                        var modalBodyPosition = $position.offset(modalBodyContainer);
+
+                        if (((datepickerTextfield.top + datepickerTextfield.height) < modalBodyPosition.top || datepickerTextfield.top > (modalBodyPosition.top + modalBodyPosition.height)) && scope.isOpen) {
+                            scope.isOpen = false;
+                            toggleCalendar(scope.isOpen);
+                        }
+                        scope.$apply();
+                    }
+                });
+            }
+            var window = angular.element($window);
+            window.bind('resize', function () {
+                if (b2bDatepickerPopupTemplate) {
+                    datepickerCtrl.updatePosition(b2bDatepickerPopupTemplate);
+                    scope.$apply();
+                }
+            });
+
+            scope.$on('$destroy', function () {
+                if (scope.isOpen) {
+                    scope.isOpen = false;
+                    toggleCalendar(scope.isOpen);
+                }
+            });
+
+            scope.resetTime = function (date) {
+                if (typeof date === 'string') {
+                    date = date + 'T12:00:00';
+                }
+                var dt;
+                if (!isNaN(new Date(date))) {
+                    dt = new Date(date);
+                } else {
+                    return null;
+                }
+                return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());
+            };
+
+            if (attrs.min) {
+                scope.$parent.$watch($parse(attrs.min), function (value) {
+                    scope.minDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.max) {
+                scope.$parent.$watch($parse(attrs.max), function (value) {
+                    scope.maxDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.due) {
+                scope.$parent.$watch($parse(attrs.due), function (value) {
+                    scope.dueDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.from) {
+                scope.$parent.$watch($parse(attrs.from), function (value) {
+                    scope.fromDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+
+            if (attrs.legendIcon) {
+                scope.$parent.$watch(attrs.legendIcon, function (value) {
+                    scope.legendIcon = value ? value : null;
+                    refill();
+                });
+            }
+            if (attrs.legendMessage) {
+                scope.$parent.$watch(attrs.legendMessage, function (value) {
+                    scope.legendMessage = value ? value : null;
+                    refill();
+                });
+            }
+            if (attrs.ngDisabled) {
+                scope.$parent.$watch(attrs.ngDisabled, function (value) {
+                    scope.ngDisabled = value ? value : null;
+                });
+            }
+
+            // Split array into smaller arrays
+            function split(arr, size) {
+                var arrays = [];
+                while (arr.length > 0) {
+                    arrays.push(arr.splice(0, size));
+                }
+                return arrays;
+            }
+
+            function refill(date) {
+                if (angular.isDate(date) && !isNaN(date)) {
+                    selected = new Date(date);
+                } else {
+                    if (!selected) {
+                        selected = new Date();
+                    }
+                }
+
+                if (selected) {
+                    var currentMode = datepickerCtrl.modes[mode],
+                        data = currentMode.getVisibleDates(selected);
+                    scope.rows = split(data.objects, currentMode.split);
+                    var flag = false;
+                    var startFlag = false;
+                    var firstSelected = false;
+                    for (var i = 0; i < scope.rows.length; i++) {
+                        for (var j = 0; j < scope.rows[i].length; j++) {
+
+                            if (scope.rows[i][j].label === "1" && !firstSelected) {
+                                firstSelected = true;
+                                var firstDay = scope.rows[i][j];
+                            }
+
+                            if (scope.rows[i][j].selected === true) {
+                                flag = true;
+                                break;
+                            }
+                        }
+                        if (flag) {
+                            break;
+                        }
+                    }
+                    if (!flag) {
+                        firstDay.firstFocus = true;
+                    }
+
+                    scope.labels = data.labels || [];
+                    scope.title = data.title;
+
+                    datepickerCtrl.updatePosition(b2bDatepickerPopupTemplate);
+                }
+            }
+
+            scope.select = function (date) {
+                var dt = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+                if (!scope.onSelectClose || (scope.onSelectClose && scope.onSelectClose({
+                        date: dt
+                    }) !== false)) {
+                    scope.currentDate = dt;
+                    if (angular.isNumber(scope.collapseWait)) {
+                        $timeout(function () {
+                            scope.isOpen = false;
+                            toggleCalendar(scope.isOpen);
+                        }, scope.collapseWait);
+                    } else {
+                        scope.isOpen = false;
+                        toggleCalendar(scope.isOpen);
+                    }
+                }
+            };
+
+            scope.move = function (direction,$event) {
+                var step = datepickerCtrl.modes[mode].step;
+                selected.setDate(1);
+                selected.setMonth(selected.getMonth() + direction * (step.months || 0));
+                selected.setFullYear(selected.getFullYear() + direction * (step.years || 0));
+                refill();
+
+                $timeout(function () {
+                    trapFocusInElement();
+                }, 100);
+
+                $event.preventDefault();
+                $event.stopPropagation();
+            };
+
+            scope.trapFocus = function () {
+                $timeout(function () {
+                    trapFocusInElement();
+                }, 100);
+            };
+
+            scope.$watch('currentDate', function (value) {
+                if (angular.isDefined(value) && value !== null) {
+                    refill(value);
+                } else {
+                    refill();
+                }
+                ngModel.$setViewValue(value);
+            });
+
+            ngModel.$render = function () {
+                scope.currentDate = ngModel.$viewValue;
+            };
+
+            var stringToDate = function (value) {
+                if (!isNaN(new Date(value))) {
+                    value = new Date(value);
+                }
+                return value;
+            };
+            ngModel.$formatters.unshift(stringToDate);
+        }
+    };
+}])
+
+.directive('b2bDatepicker', ['$compile', '$log', 'b2bDatepickerConfig', 'b2bDatepickerService', function ($compile, $log, b2bDatepickerConfig, b2bDatepickerService) {
+    return {
+        restrict: 'A',
+        scope: {
+            disableDates: '&',
+            onSelectClose: '&'
+        },
+        require: 'ngModel',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            var dateFormatString = angular.isDefined(attr.dateFormat) ? scope.$parent.$eval(attr.dateFormat) : b2bDatepickerConfig.dateFormat;
+            var helperText = angular.isDefined(attr.helperText) ? scope.$parent.$eval(attr.helperText) : b2bDatepickerConfig.helperText;
+            helperText = helperText.replace('$date', '{{dt | date : \'' + dateFormatString + '\'}}');
+
+            var inline = false;
+            if (elem.prop('nodeName') !== 'INPUT') {
+                inline = true;
+            }
+
+            var calendarIcon = '<i class="icon-primary-calendar" aria-hidden="true"></i>'
+            var selectedDateMessage = '<button id="' + attr.btnId + '" type="button" class="span12 faux-input" ng-disabled="ngDisabled"><span class="hidden-spoken">' + helperText + '</span></button>';
+
+            elem.removeAttr('b2b-datepicker');
+            elem.removeAttr('ng-model');
+            elem.removeAttr('ng-disabled');
+            elem.addClass('datepicker-input');
+            elem.attr('ng-model', 'dt');
+            elem.attr('aria-describedby', 'datepicker');
+            elem.attr('aria-hidden', 'true');
+            elem.attr('tabindex', '-1');
+            elem.attr('readonly', 'true');
+            elem.attr('ng-disabled', 'ngDisabled');
+            elem.attr('b2b-format-date', dateFormatString);
+
+            var wrapperElement = angular.element('<div></div>');
+            wrapperElement.attr('b2b-datepicker-popup', '');
+            wrapperElement.attr('ng-model', 'dt');
+            if (inline) {
+                wrapperElement.attr('inline', inline);
+            }
+
+            b2bDatepickerService.setAttributes(attr, wrapperElement);
+            b2bDatepickerService.bindScope(attr, scope);
+
+            wrapperElement.html('');
+            wrapperElement.append(calendarIcon);
+            wrapperElement.append(selectedDateMessage);
+            wrapperElement.append(elem.prop('outerHTML'));
+
+            var elm = wrapperElement.prop('outerHTML');
+            elm = $compile(elm)(scope);
+            elem.replaceWith(elm);
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            if (!ctrl) {
+                $log.error("ng-model is required.");
+                return; // do nothing if no ng-model
+            }
+
+            scope.$watch('dt', function (value) {
+                ctrl.$setViewValue(value);
+            });
+            ctrl.$render = function () {
+                scope.dt = ctrl.$viewValue;
+            };
+        }
+    };
+}])
+
+.directive('b2bDatepickerGroup', [function () {
+    return {
+        restrict: 'EA',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            this.$$headers = [];
+            this.$$footers = [];
+            this.registerDatepickerScope = function (datepickerScope) {
+                datepickerScope.headers = this.$$headers;
+                datepickerScope.footers = this.$$footers;
+            };
+        }],
+        link: function (scope, elem, attr, ctrl) {}
+    };
+}])
+
+.directive('b2bFormatDate', ['dateFilter', function (dateFilter) {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            var b2bFormatDate = "";
+            attr.$observe('b2bFormatDate', function (value) {
+                b2bFormatDate = value;
+            });
+            var dateToString = function (value) {
+                if (!isNaN(new Date(value))) {
+                    return dateFilter(new Date(value), b2bFormatDate);
+                }
+                return value;
+            };
+            ctrl.$formatters.unshift(dateToString);
+        }
+    };
+}])
+
+.directive('b2bDatepickerHeader', [function () {
+    return {
+        restrict: 'EA',
+        require: '^b2bDatepickerGroup',
+        transclude: true,
+        replace: true,
+        template: '',
+        compile: function (elem, attr, transclude) {
+            return function link(scope, elem, attr, ctrl) {
+                if (ctrl) {
+                    ctrl.$$headers.push(transclude(scope, function () {}));
+                }
+                elem.remove();
+            };
+        }
+    };
+}])
+
+.directive('b2bDatepickerFooter', [function () {
+    return {
+        restrict: 'EA',
+        require: '^b2bDatepickerGroup',
+        transclude: true,
+        replace: true,
+        template: '',
+        compile: function (elem, attr, transclude) {
+            return function link(scope, elem, attr, ctrl) {
+                if (ctrl) {
+                    ctrl.$$footers.push(transclude(scope, function () {}));
+                }
+                elem.remove();
+            };
+        }
+    };
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:checkboxes
+ *
+ * @description
+ *  <file src="src/checkboxes/docs/readme.md" />
+ * @usage
+ * See demo section
+ * @example
+ <example module="b2b.att">
+ <file src="src/checkboxes/docs/demo.html" />
+ <file src="src/checkboxes/docs/demo.js" />
+ </example>
+ */
+angular.module('b2b.att.checkboxes', ['b2b.att.utilities'])
+.directive('b2bSelectGroup', [function (){
+        return {
+            restrict: 'A',
+            require: 'ngModel',
+            scope: {
+                checkboxes: "="
+            },
+            link: function (scope, elem, attr, ctrl) {
+                elem.bind('change', function () {
+                    var isChecked = elem.prop('checked');
+                    angular.forEach(scope.checkboxes, function (item) {
+                        item.isSelected = isChecked;
+                    });
+                    scope.$apply();
+                });
+                scope.$watch('checkboxes', function () {
+                    var setBoxes = 0;
+                    if(scope.checkboxes === undefined) {
+                        return;
+                    }
+                    angular.forEach(scope.checkboxes, function (item) {
+                        if (item.isSelected) {
+                            setBoxes++; 
+                        } 
+                    });
+                    elem.prop('indeterminate', false);
+                    if ( scope.checkboxes !==undefined && setBoxes === scope.checkboxes.length && scope.checkboxes.length > 0) { 
+                        ctrl.$setViewValue(true); 
+                        elem.removeClass('indeterminate');
+                    } else if (setBoxes === 0) { 
+                       ctrl.$setViewValue(false); 
+                       elem.removeClass('indeterminate');
+                    } else { 
+                        ctrl.$setViewValue(false); 
+                        elem.addClass('indeterminate');
+                        elem.prop('indeterminate', true); 
+                    }
+                    ctrl.$render();
+                }, true);
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Misc.att:coachmark
+ *
+ * @description
+ * <file src="src/coachmark/docs/readme.md" />
+ *
+ * @usage
+ *
+<button b2b-coachmark start-coachmark-callback="startCoachmark()" end-coachmark-callback="endCoachmark()" action-coachmark-callback="actionCoachmark(action)" coachmark-index="coachmarkIndex" coachmarks="coachmarkElements" id="coachmark0" class="btn btn-alt">Initiate tour</button>
+
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/coachmark/docs/demo.html" />
+            <file src="src/coachmark/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.coachmark', ['b2b.att.utilities','b2b.att.position'])
+        
+    .directive('b2bCoachmark', ['$document', '$compile', '$position', '$timeout', function($document, $compile, $position, $timeout) {
+        return {
+            restrict: 'A',
+             scope: {
+                coachmarks: '=',
+                coachmarkIndex: '=',
+                startCoachmarkCallback: '&',
+                endCoachmarkCallback: '&',
+                actionCoachmarkCallback: '&'
+            },
+            link: function (scope, element, attrs, ctrl) {
+                var coachmarkItems = scope.coachmarks;
+                var body = $document.find('body').eq(0);
+                var coackmarkJqContainer;
+                var coackmarkContainer;
+                var coachMarkElement;
+                var backdropjqLiteEl;
+                var coachmarkHighlight;
+                var initaitedCoachmark = false;
+                scope.coackmarkElPos ={
+                    'top':'',
+                    'left':''
+                };
+                
+                scope.currentCoachmark = {};
+                
+                
+                var coachmarkBackdrop = function(){
+                    backdropjqLiteEl = angular.element('<div class="b2b-modal-backdrop fade in hidden-by-modal"></div>');
+                    body.append(backdropjqLiteEl);
+
+                    backdropjqLiteEl.bind('click', function() {
+                        scope.closeCoachmark();
+                        scope.$apply();
+                    });
+                };
+                
+                
+                scope.closeButtonFocus = function(){
+                    if(document.getElementsByClassName('b2b-coachmark-header').length >0){
+                        document.getElementsByClassName('b2b-coachmark-header')[0].scrollLeft = 0;
+                        document.getElementsByClassName('b2b-coachmark-header')[0].scrollTop = 0;
+                    }
+                }
+
+                scope.actionCoachmark = function(action){
+                    scope.actionCoachmarkCallback({
+                        'action':action
+                    })
+                };
+                
+                scope.closeCoachmark = function(){
+                    initaitedCoachmark = false;
+                    backdropjqLiteEl.remove();  
+                    coackmarkContainer.remove();
+                    coachmarkHighlight.remove();
+                    if(coachMarkElement !== undefined && coachMarkElement !==""){
+                        coachMarkElement.removeClass('b2b-coachmark-label')
+                    }
+                    if (angular.isFunction(scope.endCoachmarkCallback)){
+                        scope.endCoachmarkCallback();   
+                    }
+                    element[0].focus();
+                }
+                
+                function showCoachmark(targetElement) {
+                    scope.currentCoachmark = targetElement;
+                    if(coachMarkElement !== undefined && coachMarkElement !==""){
+                        coachMarkElement.removeClass('b2b-coachmark-label')
+                        coackmarkContainer.remove();
+                        coachmarkHighlight.remove();
+                    }
+                    coachMarkElement = angular.element(document.querySelector(targetElement.elementId));
+                    coachMarkElement.addClass('b2b-coachmark-label');
+                    var elementPosition = $position.offset(coachMarkElement);
+                    
+                    coachmarkHighlight = angular.element('<div class="b2b-coachmark-highlight"></div><div class="b2b-coachmark-highlight b2b-coachmark-highlight-mask"></div>');
+                    coachmarkHighlight.css({
+                        'width': (elementPosition.width + 20) +'px',
+                        'top': (elementPosition.top -10) + 'px',
+                        'left': (elementPosition.left - 10) + 'px',
+                        'height': (elementPosition.height + 20) +'px'
+                    }); 
+                    body.append(coachmarkHighlight);
+                    
+                    scope.coackmarkElPos.top = (elementPosition.top + elementPosition.height + 32) + 'px';
+                    scope.coackmarkElPos.left = (elementPosition.left - 158 + elementPosition.width / 2 ) + 'px';
+                    coackmarkJqContainer = angular.element('<div b2b-coachmark-container b2b-trap-focus-inside-element="true"></div>');
+                    coackmarkContainer = $compile(coackmarkJqContainer)(scope);
+                    body.append(coackmarkContainer);
+                    
+                    $timeout(function () {
+                        var currentCoachmarkContainer = document.getElementsByClassName('b2b-coachmark-container')[0];
+                        currentCoachmarkContainer.focus();
+                        var coachmarkHeight = window.getComputedStyle(currentCoachmarkContainer).height.split('px')[0];
+                        var newOffsetHeight = (Math.round(elementPosition.top) - Math.round(coachmarkHeight));
+                        
+                        // We need a slight offset to show the lightboxed item
+                        TweenLite.to(window, 2, {scrollTo:{x: (scope.coackmarkElPos.left.split('px')[0]-100), y: newOffsetHeight}});
+                    }, 200);
+                }
+                
+                element.bind('click', function (e) {
+                    initaitedCoachmark = true;
+                    if(scope.coachmarkIndex === -1 || scope.coachmarkIndex >= coachmarkItems.length ){
+                        scope.coachmarkIndex = 0;
+                    }
+                    scope.$watch('coachmarkIndex', function () {
+                        if(initaitedCoachmark === true){
+                            if(scope.coachmarkIndex === -1 || scope.coachmarkIndex >= coachmarkItems.length ){
+                                scope.closeCoachmark();
+                            }else{
+                                showCoachmark(coachmarkItems[scope.coachmarkIndex]);
+                            }
+                        }
+                    });
+                    coachmarkBackdrop();
+                    showCoachmark(coachmarkItems[scope.coachmarkIndex]);
+                    if (angular.isFunction(scope.startCoachmarkCallback)){
+                        scope.startCoachmarkCallback(); 
+                    }
+                    $document.bind('keydown', function (evt) {
+                        if (evt.which === 27 && initaitedCoachmark) {
+                            scope.closeCoachmark();
+                            scope.$apply(); 
+                        }
+                    });
+                });
+
+            }
+        };
+    }])
+    .directive('b2bCoachmarkContainer', ['$document', '$position', function($document, $position) {
+        return {
+            restrict: 'A',
+            transclude: true,
+            replace: true,
+            templateUrl: 'b2bTemplate/coachmark/coachmark.html',
+            link: function (scope, element, attrs, ctrl) {
+                            
+            }
+        };  
+    }]);
+    
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Configuration Section 
+ * 
+ * @description 
+ *  <file src="src/configurationSection/docs/readme.md" /> 
+ * 
+ * @example 
+ *  <section id="code"> 
+        <b>HTML + AngularJS</b> 
+        <example module="b2b.att"> 
+            <file src="src/configurationSection/docs/demo.html" /> 
+            <file src="src/configurationSection/docs/demo.js" /> 
+       </example> 
+    </section>    
+ * 
+ */
+angular.module('b2b.att.configurationSection', [])
+  
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Directory Listing 
+ * 
+ * @description 
+ *  <file src="src/directoryListingTemplate/docs/readme.md" /> 
+ * 
+ * @example 
+ *  <section id="code"> 
+        <b>HTML + AngularJS</b> 
+        <example module="b2b.att"> 
+            <file src="src/directoryListingTemplate/docs/demo.html" /> 
+            <file src="src/directoryListingTemplate/docs/demo.js" /> 
+       </example> 
+    </section>    
+ * 
+ */
+angular.module('b2b.att.directoryListingTemplate', [])
+  
+/**
+ * @ngdoc directive
+ * @name Forms.att:dropdowns
+ *
+ * @description
+ *  <file src="src/dropdowns/docs/readme.md" />
+ * @usage
+ *
+ * @example
+   <section id="code">
+    <example module="b2b.att">
+     <file src="src/dropdowns/docs/demo.html" />
+     <file src="src/dropdowns/docs/demo.js" />
+    </example>
+   </section>
+ */
+angular.module('b2b.att.dropdowns', ['b2b.att.utilities', 'b2b.att.position', 'ngSanitize'])
+
+.constant('b2bDropdownConfig', {
+    prev: '37,38',
+    next: '39,40',
+    menuKeyword: 'menu',
+    linkMenuKeyword: 'link-menu',
+    largeKeyword: 'large',
+    smallKeyword: 'small'
+})  
+
+.directive("b2bDropdown", ['$timeout', '$compile', '$templateCache', 'b2bUserAgent', 'b2bDropdownConfig', '$position', function ($timeout, $compile, $templateCache, b2bUserAgent, b2bDropdownConfig, $position) {
+    return {
+        restrict: 'A',
+        scope: true,
+        require: 'ngModel',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            scope.isInputDropdown = true;
+            scope.placeHoldertext = attr.placeholderText;
+            if (attr.type) {
+                if (attr.type.indexOf(b2bDropdownConfig.menuKeyword) > -1 || attr.type.indexOf(b2bDropdownConfig.linkMenuKeyword) > -1) {
+                    scope.isInputDropdown = false;
+                    if (attr.type.indexOf(b2bDropdownConfig.linkMenuKeyword) > -1) {
+                        scope.dropdownType = b2bDropdownConfig.linkMenuKeyword;
+                    } else if (attr.type.indexOf(b2bDropdownConfig.menuKeyword) > -1) {
+                        scope.dropdownType = b2bDropdownConfig.menuKeyword;
+                    }
+                }
+                if (attr.type.indexOf(b2bDropdownConfig.largeKeyword) > -1) {
+                    scope.dropdownSize = b2bDropdownConfig.largeKeyword;
+                } else if (attr.type.indexOf(b2bDropdownConfig.smallKeyword) > -1) {
+                    scope.dropdownSize = b2bDropdownConfig.smallKeyword;
+                }
+            }
+
+            scope.labelText = attr.labelText;
+
+            scope.setBlur = function () {
+                scope.setTouched();
+            };
+
+            if ((scope.isInputDropdown && b2bUserAgent.notMobile()) || (!scope.isInputDropdown)) {
+                var formCtrl = elem.controller('form');
+                scope.setNgModelController = function (name, ngModelCtrl) {
+                    if (name && formCtrl && ngModelCtrl) {
+                        formCtrl[name] = ngModelCtrl;
+                    }
+                };
+                scope.setOptionalCta = function (optionalCta) {
+                    scope.optionalCta = optionalCta;
+                };
+                var innerHtml = angular.element('<div></div>').append(elem.html());
+                innerHtml = ($compile(innerHtml)(scope)).html();
+                var template = angular.element($templateCache.get('b2bTemplate/dropdowns/b2bDropdownDesktop.html'));
+                template.find('ul').eq(0).append(innerHtml);
+                template = $compile(template)(scope);
+                elem.replaceWith(template);
+            } else if (scope.isInputDropdown && b2bUserAgent.isMobile()) {
+                elem.css({
+                    'opacity': '0',
+                    'filter': 'alpha(opacity=0)'
+                });
+                elem.addClass('awd-select isWrapped');
+                elem.wrap('<span class="selectWrap"></span>');
+                var cover = angular.element('<span aria-hidden="true"><i class="icon-primary-down" aria-hidden="true"></i></span>');
+                elem.parent().append(cover);
+                elem.parent().append('<i class="icon-primary-down" aria-hidden="true"></i>');
+                var set = function () {
+                    var sel = elem[0] ? elem[0] : elem;
+                    var selectedText = "";
+                    var selIndex = sel.selectedIndex;
+                    if (typeof selIndex !== 'undefined') {
+                        selectedText = sel.options[selIndex].text;
+                    }
+                    cover.text(selectedText).append('<i class="icon-primary-down" aria-hidden="true"></i>');
+                };
+                var update = function (value) {
+                    $timeout(set, 100);
+                };
+
+                if (attr.ngModel) {
+                    scope.$watch(attr.ngModel, function (newVal, oldVal) {
+                        update();
+                    });
+                }
+                elem.bind('keyup', function (ev) {
+                    if (ev.keyCode === keymap.KEY.TAB || ev.keyCode === keymap.KEY.ESC) {
+                        return;
+                    }
+                    set();
+                });
+            }
+        }],  
+        link: function (scope, elem, attr, ctrl) {
+            if ((scope.isInputDropdown && b2bUserAgent.notMobile()) || (!scope.isInputDropdown)) {
+                scope.updateModel = function () {
+                    if (ctrl.$dirty) {
+                        debugger;
+                    }
+                    ctrl.$setViewValue(scope.currentSelected.value);
+                    if (scope.dropdownRequired && scope.currentSelected.value === '') {
+                        scope.setRequired(false);
+                    } else {
+                        scope.setRequired(true);
+                    }
+
+                    if (scope.dropdownType === b2bDropdownConfig.linkMenuKeyword) {
+                        $timeout(function () {
+                            scope.appendCaretPositionStyle();
+                        }, 100);
+                    }
+                };
+                ctrl.$render = function () {
+//                    if(ctrl.$dirty || ctrl.$pristine) {
+                        $timeout(function () {
+
+                            if ((angular.isUndefined(ctrl.$viewValue) || ctrl.$viewValue == '') && (angular.isUndefined(scope.placeHoldertext) || scope.placeHoldertext == '')) {
+                                scope.dropdownLists[ctrl.$viewValue] && scope.dropdownLists[ctrl.$viewValue][0].updateDropdownValue();
+                            } else if ((angular.isUndefined(scope.placeHoldertext) || scope.placeHoldertext == '') && ctrl.$viewValue !== '' ) {
+                                scope.dropdownLists[ctrl.$viewValue] && scope.dropdownLists[ctrl.$viewValue][0].updateDropdownValue();
+                            } else if ((angular.isUndefined(ctrl.$viewValue) || ctrl.$viewValue == '') && scope.placeHoldertext !== '' )  {
+                                scope.currentSelected.text = scope.placeHoldertext; 
+                            } else {
+                                scope.dropdownLists[ctrl.$viewValue] && scope.dropdownLists[ctrl.$viewValue][0].updateDropdownValue();
+                            }
+
+                        }, 100);
+                    };
+//                }
+                scope.disabled = false;
+                scope.dropdownName = attr.name;
+                scope.dropdownId = attr.id;
+                scope.labelId = attr.ariaLabelledby;
+                scope.dropdownDescribedBy = attr.ariaDescribedby;
+                if (attr.required) {
+                    scope.dropdownRequired = true;
+                } else {
+                    scope.dropdownRequired = false;
+                }
+                elem.removeAttr('name');
+                elem.removeAttr('id');
+                scope.$parent.$watch(attr.ngDisabled, function (val) {
+                    scope.disabled = val;
+                });
+            }
+        }
+    };
+}])
+
+.directive("b2bDropdownToggle", ['$document', '$documentBind', '$isElement', 'b2bDropdownConfig', 'keymap', 'b2bUtilitiesConfig', '$timeout', '$position', function ($document, $documentBind, $isElement, b2bDropdownConfig, keymap, b2bUtilitiesConfig, $timeout, $position) {
+    return {
+        restrict: 'A',
+        require: '?^b2bKey',
+        link: function (scope, elem, attr, ctrl) {
+            scope.appendCaretPositionStyle = function () {
+                while (document.querySelector('style.b2bDropdownCaret')) {
+                    document.querySelector('style.b2bDropdownCaret').remove();
+                };
+                var caretPosition = $position.position(elem).width - 26;
+                if (scope.dropdownType === b2bDropdownConfig.linkMenuKeyword) {
+                    var template = angular.element('<style class="b2bDropdownCaret" type="text/css">.linkSelectorModule .active+.moduleWrapper:before {left: ' + caretPosition + 'px;}</style>');
+                    $document.find('head').append(template);
+                }
+            };
+
+            if (scope.isInputDropdown && (scope.labelText !== undefined)) {
+                elem.attr('aria-label', scope.labelText);
+            }
+
+            scope.toggleFlag = false;
+            scope.dropdownLists = {};
+            scope.dropdownListValues = [];
+            scope.dropdown = {
+                totalIndex: -1
+            };
+            scope.currentSelected = {
+                value: '',
+                text: '',
+                label: '',
+                index: -1
+            };
+            var searchString = '';
+            var searchElement = function (searchExp) {
+                var regex = new RegExp("\\b" + searchExp, "gi");
+                var position = scope.dropdownListValues.regexIndexOf(regex, scope.currentSelected.index + 1, true);
+                if (position > -1) {
+                    return position;
+                }
+                return undefined;
+            };
+            var startTimer = function (time) {
+                if (searchString === '') {
+                    $timeout(function () {
+                        searchString = '';
+                    }, time);
+                }
+            };
+            scope.toggleDropdown = function (toggleFlag) {
+                if (!scope.disabled) {
+                    if (angular.isDefined(toggleFlag)) {
+                        scope.toggleFlag = toggleFlag;
+                    } else {
+                        scope.toggleFlag = !scope.toggleFlag;
+                    }
+                    if (!scope.toggleFlag) {
+                        if (scope.isInputDropdown) {
+                            elem.parent().find('input')[0].focus();
+                        } else {
+                            elem.parent().find('button')[0].focus();
+                        }
+                    } else {
+                        scope.dropdown.highlightedValue = scope.currentSelected.value;
+                        if (ctrl && ctrl.enableSearch) {
+                            if (angular.isDefined(scope.dropdownLists[scope.currentSelected.value])) {
+                                ctrl.resetCounter(scope.dropdownLists[scope.currentSelected.value][2]);
+                            }
+                        }
+                        if (scope.dropdownType === b2bDropdownConfig.linkMenuKeyword) {
+                            scope.appendCaretPositionStyle();
+                        }
+                    }
+                }
+            };
+
+            elem.bind('keydown', function (ev) {
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }
+                if (!scope.toggleFlag) {
+                    if (ev.keyCode) {
+                        var currentIndex = scope.currentSelected.index;
+                        if (ev.altKey === true && ev.keyCode === keymap.KEY.DOWN) {
+                            scope.toggleDropdown(true);
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        } else if (b2bDropdownConfig.prev.split(',').indexOf(ev.keyCode.toString()) > -1) {
+                            angular.isDefined(scope.dropdownListValues[currentIndex - 1]) ? scope.dropdownLists[scope.dropdownListValues[currentIndex - 1]][0].updateDropdownValue() : angular.noop();
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        } else if (b2bDropdownConfig.next.split(',').indexOf(ev.keyCode.toString()) > -1) {
+                            angular.isDefined(scope.dropdownListValues[currentIndex + 1]) ? scope.dropdownLists[scope.dropdownListValues[currentIndex + 1]][0].updateDropdownValue() : angular.noop();
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        } else if (ev.keyCode >= 48 && ev.keyCode <= 105) {
+                            startTimer(b2bUtilitiesConfig.searchTimer);
+                            searchString = searchString + (keymap.MAP[ev.keyCode] || '');
+                            var position = searchElement(searchString);
+                            angular.isDefined(scope.dropdownListValues[position]) ? scope.dropdownLists[scope.dropdownListValues[position]][0].updateDropdownValue() : angular.noop();
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        }
+                    }
+                } else {
+                    if (ev.altKey === true && ev.keyCode === keymap.KEY.UP) {
+                        scope.toggleDropdown(false);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === keymap.KEY.TAB || ev.keyCode === keymap.KEY.ESC) {
+                        scope.toggleDropdown(false);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    }
+                }
+                scope.$apply(); // TODO: Move this into each block to avoid expensive digest cycles
+            });
+            var outsideClick = function (e) {
+                var isElement = $isElement(angular.element(e.target), elem.parent(), $document);
+                if (!isElement) {
+                    scope.toggleDropdown(false);
+                    scope.$apply();
+                }
+            };
+            $documentBind.click('toggleFlag', outsideClick, scope);
+        }
+    };
+}])
+
+.directive("b2bDropdownGroup", ['$compile', '$templateCache', 'b2bUserAgent', function ($compile, $templateCache, b2bUserAgent) {
+    return {
+        restrict: 'A',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            if ((scope.isInputDropdown && b2bUserAgent.notMobile()) || (!scope.isInputDropdown)) {
+                var innerHtml = angular.element('<div></div>').append(elem.html());
+                innerHtml = ($compile(innerHtml)(scope)).html();
+                var template = angular.element($templateCache.get('b2bTemplate/dropdowns/b2bDropdownGroupDesktop.html'));
+                template.attr('ng-repeat', attr.optGroupRepeat);
+                template.attr('label', elem.attr('label'));
+                template.find('ul').append(innerHtml);
+                elem.replaceWith(template);
+            } else if (scope.isInputDropdown && b2bUserAgent.isMobile()) {
+                var template = angular.element(elem.prop('outerHTML'));
+                template.attr('ng-repeat', attr.optGroupRepeat);
+                template.removeAttr('b2b-dropdown-group');
+                template.removeAttr('opt-group-repeat');
+                template = $compile(template)(scope);
+                elem.replaceWith(template);
+            }
+        }]
+    };
+}])
+
+.directive("b2bDropdownGroupDesktop", [function () {
+    return {
+        restrict: 'A',
+        scope: true,
+        link: function (scope, elem, attr, ctrl) {
+            scope.groupHeader = attr.label;
+        }
+    };
+}])
+
+.directive("b2bDropdownList", ['$compile', '$templateCache', 'b2bUserAgent', function ($compile, $templateCache, b2bUserAgent) {
+    return {
+        restrict: 'A',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            if ((scope.isInputDropdown && b2bUserAgent.notMobile()) || (!scope.isInputDropdown)) {
+                var innerHtml = angular.element('<div></div>').append(elem.html());
+                innerHtml = ($compile(innerHtml)(scope)).html();
+                var template = angular.element($templateCache.get('b2bTemplate/dropdowns/b2bDropdownListDesktop.html'));
+                template.attr('ng-repeat', attr.optionRepeat);
+                template.attr('value', elem.attr('value'));
+                template.attr('search-key', elem.attr('value'));
+                if (elem.attr('aria-describedby')){
+                    template.attr('aria-describedby', attr.ariaDescribedby);
+                }
+                if (elem.attr('imgsrc')) {
+                    if (elem.attr('imgalt')) {
+                        template.append('<img role="presentation" ng-src="' + elem.attr('imgsrc') + '" alt="' + elem.attr('imgalt') + '"/>');
+                    } else {
+                        template.append('<img role="presentation" ng-src="' + elem.attr('imgsrc') + '" alt=""/>');
+                    }
+                }
+                template.append(innerHtml);
+                elem.replaceWith(template);
+            } else if (scope.isInputDropdown && b2bUserAgent.isMobile()) {
+                var template = angular.element(elem.prop('outerHTML'));
+                template.attr('ng-repeat', attr.optionRepeat);
+                if (elem.attr('aria-describedby')){
+                    template.attr('aria-describedby', attr.ariaDescribedby);
+                }
+                template.removeAttr('b2b-dropdown-list');
+                template.removeAttr('option-repeat');
+                template = $compile(template)(scope);
+                elem.replaceWith(template);
+            }
+        }]
+    };
+}])
+
+.directive("b2bDropdownListDesktop", ['$sce', 'keymap', 'b2bDropdownConfig', function ($sce, keymap, b2bDropdownConfig) {
+    return {
+        restrict: 'A',
+        scope: true,
+        link: function (scope, elem, attr, ctrl) {
+            var dropdownListValue = scope.dropdownListValue = attr.value;
+            scope.dropdown.totalIndex++;
+            var dropdownListIndex = scope.dropdown.totalIndex;
+            scope.dropdownListValues.push(dropdownListValue);
+            scope.dropdownLists[dropdownListValue] = [];
+            scope.dropdownLists[dropdownListValue][0] = scope;
+            scope.dropdownLists[dropdownListValue][1] = elem;
+            scope.dropdownLists[dropdownListValue][2] = dropdownListIndex;
+            scope.updateDropdownValue = function () {
+                scope.currentSelected.value = dropdownListValue;
+                if (scope.isInputDropdown) {
+                    scope.currentSelected.text = elem.text();
+                } else if ((scope.dropdownType === b2bDropdownConfig.linkMenuKeyword) || (scope.dropdownType === b2bDropdownConfig.menuKeyword && scope.dropdownSize === b2bDropdownConfig.smallKeyword)) {
+                    scope.currentSelected.text = dropdownListValue;
+                } else if (scope.dropdownType === b2bDropdownConfig.menuKeyword) {
+                    scope.currentSelected.text = $sce.trustAsHtml(elem.html());
+                }
+                if (scope.isInputDropdown) {
+                    scope.currentSelected.label = elem.text();
+                } else if (scope.dropdownType === b2bDropdownConfig.linkMenuKeyword) {
+                    scope.currentSelected.label = dropdownListValue;
+                } else if (scope.dropdownType === b2bDropdownConfig.menuKeyword) {
+                    scope.currentSelected.label = elem.text();
+                }
+                scope.currentSelected.index = dropdownListIndex;
+                scope.updateModel();
+            };
+            scope.selectDropdownItem = function () {
+                scope.setDirty();
+                scope.updateDropdownValue();
+                scope.toggleDropdown(false);
+            };
+            scope.highlightDropdown = function () {
+                scope.dropdown.highlightedValue = dropdownListValue;
+            };
+            elem.bind('mouseover', function (ev) {
+                elem[0].focus();
+            });
+            elem.bind('keydown', function (ev) {
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }
+                if (ev.altKey === true && ev.keyCode === keymap.KEY.UP) {
+                    scope.toggleDropdown(false);
+                    ev.preventDefault();
+                    ev.stopPropagation();
+                } else if (ev.keyCode === keymap.KEY.TAB || ev.keyCode === keymap.KEY.ESC) {
+                    scope.toggleDropdown(false);
+                    ev.preventDefault();
+                    ev.stopPropagation();
+                }
+                scope.$apply();
+            });
+        }
+    };
+}])
+
+.directive("b2bDropdownRepeat", ['$compile', 'b2bUserAgent', function ($compile, b2bUserAgent) {
+    return {
+        restrict: 'A',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            if ((scope.isInputDropdown && b2bUserAgent.notMobile()) || (!scope.isInputDropdown)) {
+                var innerHtml = angular.element('<div></div>').append(elem.html());
+                innerHtml = ($compile(innerHtml)(scope)).html();
+                var template = angular.element('<div></div>');
+                template.attr('ng-repeat', attr.b2bDropdownRepeat);
+                template.append(innerHtml);
+                elem.replaceWith(template);
+            } else if (scope.isInputDropdown && b2bUserAgent.isMobile()) {
+                angular.noop();
+            }
+        }]
+    };
+}])
+
+.directive("b2bDropdownValidation", ['$timeout', function ($timeout) {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            $timeout(function () {
+                scope.setNgModelController(attr.name, ctrl);
+            }, 100);
+            scope.setDirty = function () {
+                if (ctrl.$dirty === false) {
+                    ctrl.$dirty = true;
+                    ctrl.$pristine = false;
+                }
+            };
+            scope.setTouched = function () {
+                if (ctrl.$touched === false) {
+                    ctrl.$touched = true;
+                    ctrl.$pristine = false;
+                }
+            };
+            scope.setRequired = function (flag) {
+                ctrl.$setValidity('required', flag);
+            };
+        }
+    };
+}])
+
+.directive('b2bDropdownOptionalCta', [function () {
+    return {
+        restrict: 'EA',
+        transclude: true,
+        replace: true,
+        template: '',
+        compile: function (elem, attr, transclude) {
+            return function link(scope, elem, attr, ctrl) {
+                if (scope.setOptionalCta) {
+                    scope.setOptionalCta(transclude(scope, function () {}));
+                }
+                elem.remove();
+            };
+        }
+    };
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:File Upload
+ *
+ * @description
+ *  <file src="src/fileUpload/docs/readme.md" />
+ *
+ * @usage
+ * 
+<form id="dragDropFile">        
+    <div b2b-file-drop file-model="fileModel" on-drop="triggerFileUpload()"  align="center">
+        <p>
+            <br>To upload a file, drag & drop it here or 
+            <span b2b-file-link file-model="fileModel" on-file-select="triggerFileUpload()" >
+                click here to select from your computer.
+            </span><br>
+        </p>
+    </div>
+</form>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/fileUpload/docs/demo.html" />
+            <file src="src/fileUpload/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.fileUpload', ['b2b.att.utilities'])
+    .directive('b2bFileDrop', [function() {
+            return {
+                restrict: 'EA',
+                scope: {
+                    fileModel: '=',
+                    onDrop: '&'
+                },
+                controller: ['$scope', '$attrs', function($scope, $attrs) {
+                    this.onDrop = $scope.onDrop;
+                }],
+                link: function(scope, element) {
+                    element.addClass('b2b-dragdrop');
+                    element.bind(
+                        'dragover',
+                        function(e) {
+                            if (e.originalEvent) {
+                                e.dataTransfer = e.originalEvent.dataTransfer;
+                            }
+                            e.dataTransfer.dropEffect = 'move';
+                            // allows us to drop
+                            if (e.preventDefault) {
+                                e.preventDefault();
+                            }
+                            element.addClass('b2b-dragdrop-over');
+                            return false;
+                        }
+                    );
+                    element.bind(
+                        'dragenter',
+                        function(e) {
+                            // allows us to drop
+                            if (e.preventDefault) {
+                                e.preventDefault();
+                            }
+                            element.addClass('b2b-dragdrop-over');
+                            return false;
+                        }
+                    );
+                    element.bind(
+                        'dragleave',
+                        function() {
+                            element.removeClass('b2b-dragdrop-over');
+                            return false;
+                        }
+                    );
+                    element.bind(
+                        'drop',
+                        function(e) {
+                            // Stops some browsers from redirecting.
+                            if (e.preventDefault) {
+                                e.preventDefault();
+                            }
+                            if (e.stopPropagation) {
+                                e.stopPropagation();
+                            }
+                            if (e.originalEvent) {
+                                e.dataTransfer = e.originalEvent.dataTransfer;
+                            }
+                            element.removeClass('b2b-dragdrop-over');
+                            if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
+                                scope.fileModel = e.dataTransfer.files[0];
+                                scope.$apply();
+                                if (angular.isFunction(scope.onDrop)) {
+                                    scope.onDrop();
+                                }
+                            }
+                            return false;
+                        }
+                    );
+                }
+            };
+        }])
+        .directive('b2bFileLink', [function() {
+            return {
+                restrict: 'EA',
+                require: '^?b2bFileDrop',
+                replace: true,
+                transclude: true,
+                templateUrl: 'b2bTemplate/fileUpload/fileUpload.html',
+                scope: {
+                    fileModel: '=?',
+                    onFileSelect: '&'
+                },
+                controller: ['$scope', function($scope) {
+                    this.setFileModel = function(fileModel) {
+                        if ($scope.takeFileModelFromParent) {
+                            $scope.$parent.fileModel = fileModel;
+                            $scope.$parent.$apply();
+                        } else {
+                            $scope.fileModel = fileModel;
+                            $scope.$apply();
+                        }
+                    };
+                    this.callbackFunction = function() {
+                        if (angular.isFunction($scope.onFileSelect)) {
+                            $scope.onFileSelect();
+                        }
+                    };
+        
+                }],
+                link: function(scope, element, attr, b2bFileDropCtrl) {
+                    scope.takeFileModelFromParent = false;
+                    if (!(attr.fileModel) && b2bFileDropCtrl) {
+                        scope.takeFileModelFromParent = true;
+                    }
+                    if (!(attr.onFileSelect) && b2bFileDropCtrl) {
+                        scope.onFileSelect = b2bFileDropCtrl.onDrop;
+                    }
+                }
+            };
+        }])
+        .directive('b2bFileChange', ['$log', '$rootScope', function($log, $rootScope) {
+            return {
+                restrict: 'A',
+                require: '^b2bFileLink',
+                link: function(scope, element, attr, b2bFileLinkCtrl) {
+                    element.bind('change', changeFileModel);
+
+                    function changeFileModel(e) {
+                        if (e.target.files && e.target.files.length > 0) {
+                            b2bFileLinkCtrl.setFileModel(e.target.files[0]);
+                            b2bFileLinkCtrl.callbackFunction();
+                        } else {
+                            var strFileName = e.target.value;
+                            try {
+                                var objFSO = new ActiveXObject("Scripting.FileSystemObject");
+                                b2bFileLinkCtrl.setFileModel(objFSO.getFile(strFileName));
+                                b2bFileLinkCtrl.callbackFunction();
+                            } catch (e) {
+                                var errMsg = "There was an issue uploading " + strFileName + ". Please try again.";
+                                $log.error(errMsg);
+                                $rootScope.$broadcast('b2b-file-link-failure', errMsg);
+                            }
+                        }
+                    }
+                }
+            };
+        }]);
+/**
+ * @ngdoc directive
+ * @name Navigation.att:filters
+ *
+ * @description
+ *  <file src="src/filters/docs/readme.md" />
+ *
+ * @usage
+ *  <div b2b-filters></div>
+ *
+ * @example
+ *  <section id="code">
+       <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/filters/docs/demo.html" />
+            <file src="src/filters/docs/demo.js" />
+       </example>
+    </section>
+ * 
+ */
+angular.module('b2b.att.filters', ['b2b.att.utilities', 'b2b.att.multipurposeExpander'])
+    .filter('filtersSelectedItemsFilter', [function () {
+        return function (listOfItemsArray) {
+
+            if (!listOfItemsArray) {
+                listOfItemsArray = [];
+            }
+
+            var returnArray = [];
+
+            for (var i = 0; i < listOfItemsArray.length; i++) {
+                for (var j = 0; j < listOfItemsArray[i].filterTypeItems.length; j++) {
+                    if (listOfItemsArray[i].filterTypeItems[j].selected && !listOfItemsArray[i].filterTypeItems[j].inProgress) {
+                        returnArray.push(listOfItemsArray[i].filterTypeItems[j]);
+                    }
+                }
+            }
+
+            return returnArray;
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:flyout
+ *
+ * @description
+ *  <file src="src/flyout/docs/readme.md" />
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/flyout/docs/demo.html" />
+            <file src="src/flyout/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.flyout', ['b2b.att.utilities', 'b2b.att.position'])
+    .directive('b2bFlyout', ['$timeout', 'b2bDOMHelper', 'keymap', 'events', function ($timeout, b2bDOMHelper, keymap, events) {
+        return {
+            restrict: 'EA',
+            transclude: true,
+            templateUrl: 'b2bTemplate/flyout/flyout.html',
+            controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+                scope.flyoutOpened = false;
+                var contentScope = '';
+                var togglerScope = '';
+                this.registerContentScope = function (scp) {
+                    contentScope = scp;
+                };
+                this.registerTogglerScope = function (scp) {
+                    togglerScope = scp;
+                };
+
+                this.toggleFlyoutState = function () {
+                    if (contentScope) {
+                        contentScope.toggleFlyout();
+                    }
+                };
+                this.getTogglerDimensions = function () {
+                    return togglerScope.getTogglerDimensions();
+                }
+                this.setTogglerFocus = function () {
+                    return togglerScope.setTogglerFocus();
+                }
+
+                this.closeFlyout = function (e) {
+                    contentScope.closeFromChild(e);
+                };
+                this.gotFocus = function () {
+                    contentScope.gotFocus();
+                };
+
+                this.updateAriaModel = function (val) {
+                    scope.flyoutOpened = val;
+                };
+
+                var firstTabableElement = undefined,
+                    lastTabableElement = undefined;
+
+                var firstTabableElementKeyhandler = function (e) {
+                    if (!e.keyCode) {
+                        e.keyCode = e.which;
+                    }
+                    if (e.keyCode === keymap.KEY.TAB && e.shiftKey && scope.flyoutOpened) { 
+                        contentScope.gotFocus();
+                        events.preventDefault(e);
+                        events.stopPropagation(e);
+                    }
+                };
+
+                var lastTabableElementKeyhandler = function (e) {
+                    if (!e.keyCode) {
+                        e.keyCode = e.which;
+                    }
+                    if (e.keyCode === keymap.KEY.TAB && !e.shiftKey) {
+                        contentScope.gotFocus();    
+                        events.preventDefault(e);
+                        events.stopPropagation(e);
+                    }
+                };
+                this.associateTabEvent = function(){
+                    $timeout(function () {
+                        var element = elem[0].getElementsByClassName('b2b-flyout-container')[0];
+                        firstTabableElement = b2bDOMHelper.firstTabableElement(element);
+                        lastTabableElement = b2bDOMHelper.lastTabableElement(element);
+                        if(angular.isUndefined(firstTabableElement)){
+                            angular.element(element).css('display','block');
+                            firstTabableElement = b2bDOMHelper.firstTabableElement(element);
+                            lastTabableElement = b2bDOMHelper.lastTabableElement(element);
+                            angular.element(element).css('display','none');
+                        }
+                        angular.element(firstTabableElement).bind('keydown', firstTabableElementKeyhandler);
+                        angular.element(lastTabableElement).bind('keydown', lastTabableElementKeyhandler);
+                    });
+                }
+                this.updateTabbableElements = function(){
+                    $timeout(function () {
+                        var element = elem[0].getElementsByClassName('b2b-flyout-container')[0];
+                        angular.element(element).css('display','block');
+                        firstTabableElement = b2bDOMHelper.firstTabableElement(element);
+                        lastTabableElement = b2bDOMHelper.lastTabableElement(element);
+                        angular.element(firstTabableElement).bind('keydown', firstTabableElementKeyhandler);
+                        angular.element(lastTabableElement).bind('keydown', lastTabableElementKeyhandler);
+                        angular.element(element).css('display','none');
+                    });
+                }
+                this.unbindTabbaleEvents = function(){
+                    if(angular.isDefined(firstTabableElement)){
+                        angular.element(firstTabableElement).unbind('keydown', firstTabableElementKeyhandler);
+                    }
+
+                    if(angular.isDefined(lastTabableElement)){
+                        angular.element(lastTabableElement).unbind('keydown', lastTabableElementKeyhandler);
+                    }
+                }
+            }],
+            link: function (scope, element, attrs, ctrl) {
+
+            }
+        };
+    }])
+    .directive('b2bFlyoutToggler', [function () {
+        return {
+            restrict: 'A',
+            require: '^b2bFlyout',
+            link: function (scope, element, attrs, ctrl) {
+                element.bind('click', function (e) {
+                    ctrl.toggleFlyoutState();
+                });
+
+                scope.getTogglerDimensions = function () {
+                    return element[0].getBoundingClientRect();
+                }
+
+                scope.setTogglerFocus = function () {
+                    element[0].focus();
+                }
+
+                ctrl.registerTogglerScope(scope);
+            }
+        };
+    }])
+    .directive('b2bFlyoutContent', ['$position', '$timeout', '$documentBind', '$isElement', '$document', function ($position, $timeout, $documentBind, $isElement, $document) {
+        return {
+            restrict: 'EA',
+            transclude: true,
+            replace: true,
+            require: '^b2bFlyout',
+            scope: {
+                horizontalPlacement: '@',
+                verticalPlacement: '@',
+                flyoutStyle: '@',
+                flyoutTitle: '@',
+                contentUpdated: "=?"
+            },
+            templateUrl: 'b2bTemplate/flyout/flyoutContent.html',
+            link: function (scope, element, attrs, ctrl) {
+                var flyoutStyleArray, eachCssProperty, cssPropertyKey, cssPropertyVal, temp;
+                scope.openFlyout = false;
+                if (!scope.horizontalPlacement) {
+                    scope.horizontalPlacement = 'center';
+                }
+                if (!scope.verticalPlacement) {
+                    scope.verticalPlacement = 'below';
+                }
+
+                scope.toggleFlyout = function () {
+
+                    scope.openFlyout = !scope.openFlyout;
+
+                    if (scope.openFlyout) {
+
+                        if (angular.isDefined(scope.flyoutStyle) && scope.flyoutStyle != "") {
+                            flyoutStyleArray = scope.flyoutStyle.split(";");
+                            for (i = 0; i < flyoutStyleArray.length; i++) {
+                                eachCssProperty = flyoutStyleArray[i].split(":");
+                                if (eachCssProperty.length == 2) {
+                                    cssPropertyKey = eachCssProperty[0].trim();
+                                    cssPropertyVal = eachCssProperty[1].trim();
+                                    angular.element(element[0])[0].style[cssPropertyKey] = cssPropertyVal;
+                                }
+                            }
+                        }
+
+                        angular.element(element[0]).css({
+                            'opacity': 0,
+                            'display': 'block'
+                        });
+
+                        var flyoutIcons = angular.element(document.querySelectorAll(".b2b-flyout-icon"));
+                        angular.forEach(flyoutIcons, function (elm) {
+                            angular.element(elm)[0].blur();
+                        });
+
+                        $timeout(function () {
+                            ctrl.setTogglerFocus();
+
+                            var togglerDimensions = ctrl.getTogglerDimensions();
+                            var flyoutDimensions = element[0].getBoundingClientRect();
+
+                            switch (scope.horizontalPlacement) {
+                            case "left":
+                                angular.element(element[0]).css({
+                                    'left': ((togglerDimensions.width / 2) - 26) + 'px'
+                                });
+                                break;
+                            case "right":
+                                angular.element(element[0]).css({
+                                    'right': ((togglerDimensions.width / 2) - 23) + 'px'
+                                });
+                                break;  
+
+                            case "centerLeft":
+                                var marginLeft =  10-(flyoutDimensions.width)-20;
+                                angular.element(element[0]).css({
+                                    'margin-left': marginLeft + 'px'
+                                });
+                                break;
+                            case "centerRight":
+                                angular.element(element[0]).css({
+                                    'left': ((togglerDimensions.width + 9 )) + 'px'
+                                });
+                                break;    
+
+                            default:
+                                var marginLeft = (togglerDimensions.width / 2) - (flyoutDimensions.width / 2) - 8;
+                                angular.element(element[0]).css({
+                                    'margin-left': marginLeft + 'px'
+                                });
+                            }
+
+                            switch (scope.verticalPlacement) {
+                            case "above":
+                                angular.element(element[0]).css({
+                                    'top': -(flyoutDimensions.height + 13) + 'px'
+                                });
+                                break;
+                            case "centerLeft":
+                                angular.element(element[0]).css({
+                                    'top': -((togglerDimensions.height-13))+ 'px'
+                                });
+                                break;
+                            case "centerRight":
+                                angular.element(element[0]).css({
+                                    'top': -(flyoutDimensions.height - 23)+ 'px'
+                                });
+                                break;                                    
+                            default:
+                                angular.element(element[0]).css({
+                                    'top': (togglerDimensions.height + 13) + 'px'
+                                });
+                            }
+
+                            angular.element(element[0]).css({
+                                'opacity': 1
+                            });
+                        }, 100);
+                    } else {
+                        scope.hideFlyout();
+                    }
+                };
+
+                scope.gotFocus = function () {
+                    scope.openFlyout = false;
+                    scope.hideFlyout();
+                    ctrl.setTogglerFocus();
+                    scope.$apply();
+                };
+
+                scope.closeFromChild = function (e) {
+                    scope.openFlyout = false;
+                    scope.hideFlyout();
+                    ctrl.setTogglerFocus();
+                    scope.$apply();
+                };
+
+                scope.hideFlyout = function () {
+                    angular.element(element[0]).css({
+                        'opacity': 0,
+                        'display': 'none'
+                    });
+                };
+
+                scope.closeFlyout = function (e) {
+                    var isElement = $isElement(angular.element(e.target), element, $document);
+                    if ((e.type === "keydown" && e.which === 27) || ((e.type === "click" || e.type==="touchend") && !isElement)) {
+                        scope.openFlyout = false;
+                        scope.hideFlyout();
+                        ctrl.setTogglerFocus();
+                        scope.$apply();
+                    }
+                };
+
+                scope.$watch('openFlyout', function () {
+                    ctrl.updateAriaModel(scope.openFlyout);
+                });
+
+                $documentBind.click('openFlyout', scope.closeFlyout, scope);
+                $documentBind.event('keydown', 'openFlyout', scope.closeFlyout, scope);
+                $documentBind.event('touchend', 'openFlyout', scope.closeFlyout, scope);
+                ctrl.registerContentScope(scope);
+
+                if (angular.isDefined(scope.contentUpdated) && scope.contentUpdated !== null) {
+                    scope.$watch('contentUpdated', function (newVal, oldVal) {
+                        if(newVal){
+                            if (newVal !== oldVal) {
+                                ctrl.unbindTabbaleEvents();
+                                ctrl.associateTabEvent();
+                            }
+                            scope.contentUpdated = false;
+                        } 
+                    });
+                }  
+
+            }
+        };
+    }])
+    .directive('b2bCloseFlyout', [function () {
+        return {
+            restrict: 'A',
+            require: '^b2bFlyout',
+            scope: {
+                closeFlyout: '&'
+            },
+            link: function (scope, element, attrs, ctrl) {
+                element.bind('click', function (e) {
+                    scope.closeFlyout(e);
+                    ctrl.closeFlyout(e);
+                });
+            }
+        };
+    }])
+    .directive('b2bFlyoutTrapFocusInside', [function () {
+        return {
+            restrict: 'A',
+            transclude: false,
+            require: '^b2bFlyout',
+            link: function (scope, elem, attr, ctrl) {
+                /* Before opening modal, find the focused element */
+                ctrl.updateTabbableElements();
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Layouts.att:footer
+ *
+ * @description
+ *  <file src="src/footer/docs/readme.md" />
+ *
+ * @usage
+ * 
+ <footer class="b2b-footer-wrapper" role="contentinfo" aria-label="footer">
+        <div class="b2b-footer-container" b2b-column-switch-footer footer-link-items='footerItems'>
+            <hr>
+            <div class="divider-bottom-footer">
+                <div class="span2 dispalyInline">&nbsp;</div>
+                <div class="span6 dispalyInline">
+                    <ul class="footer-nav-content">
+                        <li><a href="Terms_of_use.html" title="Terms of use" id="foot0">Terms of use</a>|</li>
+                        <li><a href="Privacy_policy.html" title="Privacy policy" id="foot1" class="active">Privacy policy</a>|</li>
+                        <li><a href="Tollfree_directory_assistance.html" title="Tollfree directory assistance" id="foot2">Tollfree directory assistance</a>|</li>
+                        <li><a href="compliance.html" title="Accessibility" id="foot3">Accessibility</a></li>
+
+                    </ul>
+                    <p><a href="//www.att.com/gen/privacy-policy?pid=2587" target="_blank">© <span class="copyright">2016</span> AT&amp;T Intellectual Property</a>. All rights reserved. AT&amp;T,the AT&amp;T Globe logo and all other AT&amp;T marks contained herein are tardemarks of AT&amp;T intellectual property and/or AT&amp;T affiliated companines.
+
+                    </p>
+                </div>
+                <div class="span3 footerLogo dispalyInline">
+                    <a href="index.html" class="footer-logo">
+                        <i class="icon-primary-att-globe"><span class="hidden-spoken">A T &amp; T</span></i>
+                        <h2 class="logo-title">AT&amp;T</h2>
+                    </a>
+                </div>
+            </div>
+
+        </div>  
+    </footer>
+
+ * @example
+ *  <section id="code">   
+ <example module="b2b.att">
+ <file src="src/footer/docs/demo.html" />
+ <file src="src/footer/docs/demo.js" />
+ </example>
+ </section>
+ *
+ */
+angular.module('b2b.att.footer', ['b2b.att.utilities']).
+        directive('b2bColumnSwitchFooter', [function() {
+                return {
+                    restrict: 'A',
+                    transclude: true,
+                    scope: {
+                        footerLinkItems: "="
+                    },
+                    templateUrl: 'b2bTemplate/footer/footer_column_switch_tpl.html',
+                    link: function(scope) {
+                        var tempFooterColumns = scope.footerLinkItems.length;
+                        scope.footerColumns = 3;
+                        if ( (tempFooterColumns === 5) || (tempFooterColumns === 4) ) {
+                            scope.footerColumns = tempFooterColumns;
+                        }
+                    }
+
+                };
+
+            }]);
+     
+
+/**
+ * @ngdoc directive
+ * @name Layouts.att:header
+ *
+ * @description
+ *  <file src="src/header/docs/readme.md" />
+ *
+ * @usage
+ *  <li b2b-header-menu class="header__item b2b-headermenu" ng-repeat="item in tabItems" role="presentation">
+        <a href="#" class="menu__item" role="menuitem">{{item.title}}</a>
+        <div class="header-secondary-wrapper">
+            <ul class="header-secondary" role="menu">
+                <li class="header-subitem" b2b-header-submenu ng-repeat="i in item.subitems" role="presentation">
+                    <a href="#" class="menu__item" aria-haspopup="true" role="menuitem">{{i.value}}</a>
+                    <div class="header-tertiary-wrapper" ng-if="i.links">
+                        <ul class="header-tertiary" role="menu">
+                            <li b2b-header-tertiarymenu ng-repeat="link in i.links" role="presentation">
+                                <label>{{link.title}}</label>
+                                <div b2b-tertiary-link ng-repeat="title in link.value">
+                                    <a href="{{link.href}}" class="header-tertiaryitem" ng-if="!title.subitems" aria-haspopup="false" role="menuitem"><span class="b2b-label-hide">{{link.title}}</span>{{title.title}}</a>
+                                    <a href="{{link.href}}" class="header-tertiaryitem" b2b-header-togglemenu ng-if="title.subitems" aria-haspopup="true" role="menuitem"><span class="b2b-label-hide">{{link.title}}</span>{{title.title}}</a>
+                                    <ul class="header-quarternary" role="menu"  ng-if="title.subitems">
+                                        <li b2b-header-quarternarymenu role="presentation">
+                                            <a href="{{nav.href}}" ng-repeat="nav in title.subitems" role="menuitem" aria-haspopup="true">{{nav.title}}</a>
+                                        </li>
+                                    </ul>
+                                </div>
+                            </li>
+                        </ul>
+                    </div>
+                </li>
+            </ul>
+        </div>
+    </li> 
+ *
+ * @example
+ *  <section id="code">
+ <example module="b2b.att.header">
+ <file src="src/header/docs/demo.html" />
+ <file src="src/header/docs/demo.js" />
+ </example>
+ </section>
+ *
+ */
+angular.module('b2b.att.header', ['b2b.att.dropdowns','b2b.att.utilities'])
+    .directive('b2bHeaderMenu', ['keymap', '$documentBind', '$timeout', '$isElement', '$document', function (keymap, $documentBind, $timeout, $isElement, $document) {
+        return {
+            restrict: 'A',
+            controller:['$scope',function($scope){
+                this.nextSiblingFocus = function (elObj,flag) {
+                        if (elObj.nextElementSibling) {
+                            if(flag){
+                                var nextmenuItem = this.getFirstElement(elObj.nextElementSibling,'a');
+                                nextmenuItem.focus();
+                            }else{
+                                elObj.nextElementSibling.focus();
+                            }
+                        }
+                };
+                
+                this.previousSiblingFocus = function (elObj,flag) {
+                        if (elObj.previousElementSibling) {
+                            if(flag){
+                                var prevmenuItem = this.getFirstElement(elObj.previousElementSibling,'a');
+                                prevmenuItem.focus();
+                            }else{
+                                elObj.previousElementSibling.focus();
+                            }
+                        }
+                };
+                    
+                this.getFirstElement = function(elmObj,selector){
+                        return elmObj.querySelector(selector);                        
+                    };
+            }],
+            link: function (scope, elem,attr,ctrl) {
+                scope.showMenu = false;
+                var activeElm, subMenu, tertiaryMenu, el= angular.element(elem)[0], 
+                        menuItem = angular.element(elem[0].children[0]);
+                menuItem.bind('click', function () {
+                    elem.parent().children().removeClass('active');
+                    elem.addClass('active');
+                    var elems= this.parentElement.parentElement.querySelectorAll('li[b2b-header-menu]>a');
+                    for (var i=0; i<elems.length; i++) {
+                        elems[i].setAttribute("aria-expanded",false);
+                    }
+                    scope.showMenu = true;
+                    var elmTofocus = ctrl.getFirstElement(this.parentElement,'li[b2b-header-submenu]');
+                    elmTofocus.firstElementChild.focus();
+                    this.setAttribute('aria-expanded',true);
+                    scope.$apply();
+                });
+               
+                elem.bind('keydown', function (evt) {
+                    activeElm = document.activeElement;
+                    subMenu = ctrl.getFirstElement(activeElm.parentElement,'li[b2b-header-submenu]');
+                    tertiaryMenu = ctrl.getFirstElement(activeElm.parentElement,'li[b2b-header-tertiarymenu]');
+                    switch (evt.keyCode) {
+                        case keymap.KEY.ENTER:
+                        case keymap.KEY.SPACE:
+                            elem[0].click();
+                            break;
+                        case keymap.KEY.UP:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if (activeElm.parentElement.hasAttribute('b2b-header-submenu')) {
+                                menuItem[0].focus();
+                            }
+                            break;
+                        case keymap.KEY.DOWN:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if (subMenu) {
+                                subMenu.firstElementChild.focus();
+                            } else if (tertiaryMenu) {
+                                var firstSubitem = ctrl.getFirstElement(tertiaryMenu,'a.header-tertiaryitem');
+                                firstSubitem.focus();
+                            }
+                            break;
+                        case keymap.KEY.RIGHT:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if (activeElm.parentElement.hasAttribute('b2b-header-submenu')) {
+                                var elm = angular.element(activeElm.parentElement)[0];
+                                ctrl.nextSiblingFocus(elm,true);
+                            } else if (activeElm.parentElement.parentElement.hasAttribute('b2b-header-tertiarymenu')) {
+                                var tertiaryLI = angular.element(activeElm.parentElement.parentElement)[0];
+                                if (tertiaryLI.nextElementSibling) {
+                                    var nextElm = ctrl.getFirstElement(tertiaryLI.nextElementSibling,"a.header-tertiaryitem");
+                                    nextElm.focus();
+                                }
+                            }
+                            else if(activeElm.parentElement.hasAttribute('b2b-header-menu')){
+                                ctrl.nextSiblingFocus(el,true);
+                            }
+                            break;
+                        case keymap.KEY.LEFT:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if (activeElm.parentElement.hasAttribute('b2b-header-submenu')) {
+                                var previousElm = angular.element(activeElm.parentElement)[0];
+                                ctrl.previousSiblingFocus(previousElm,true);
+                            } else if (activeElm.parentElement.parentElement.hasAttribute('b2b-header-tertiarymenu')) {
+                                var tertiaryLI = angular.element(activeElm.parentElement.parentElement)[0];
+                                if (tertiaryLI.previousElementSibling) {
+                                    var prevElm = ctrl.getFirstElement(tertiaryLI.previousElementSibling,"a.header-tertiaryitem");
+                                    prevElm.focus();
+                                }
+                            }
+                            else if(activeElm.parentElement.hasAttribute('b2b-header-menu')) {
+                                ctrl.previousSiblingFocus(el,true);
+                            }
+                            break;
+                        case keymap.KEY.ESC:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            scope.showMenu = false;
+                            elem.removeClass('active');
+                            menuItem.attr('aria-expanded',false);
+                            $timeout(function(){
+                                menuItem[0].focus();
+                            },100);
+                            scope.$apply();
+                            break;
+                        default:
+                            break;
+                    }
+                });
+                var outsideClick = function (e) {
+                    var isElement = $isElement(angular.element(e.target), elem, $document);
+                    if (!isElement) {
+                        scope.showMenu = false;
+                        elem.removeClass('active');
+                        scope.$apply();
+                    }
+                };
+                $documentBind.click('showMenu', outsideClick, scope);
+            }
+        };
+    }]).directive('b2bHeaderSubmenu', ['$timeout',function ($timeout) {
+        return{
+            restrict: 'A',
+            link: function (scope, elem) {
+                var caretSign = angular.element("<i class='menuCaret'></i>");
+                $timeout(function(){
+                    var menuItem = angular.element(elem[0].children[0]);
+                    menuItem.bind('focus mouseenter', function () {
+                        elem.parent().children().removeClass('active');
+                        elem.addClass('active');
+                        if(elem[0].childElementCount > 1){ // > 1 has third level menu
+                            menuItem.attr('aria-expanded',true);
+                            menuItem.attr('aria-haspopup',true);
+                        }
+                        var caretLeft = (elem[0].offsetLeft +  elem[0].offsetWidth/2) - 10;
+                        caretSign.css({left: caretLeft + 'px'});
+                        angular.element(caretSign);
+                        var tertiaryItems = elem[0].querySelectorAll('[b2b-header-tertiarymenu]');
+                        if(tertiaryItems.length >=1){
+                            elem.append(caretSign);
+                        }
+                    });
+                    menuItem.bind('blur', function () {
+                        $timeout(function () {
+                            var parentElm = document.activeElement.parentElement.parentElement;
+                            if(parentElm){
+                                if (!(parentElm.hasAttribute('b2b-header-tertiarymenu'))) {
+                                    elem.removeClass('active');
+                                    if(elem[0].childElementCount > 1){ // > 1 has third level menu
+                                        menuItem.attr('aria-expanded',false);
+                                    }
+                                    var caret = elem[0].querySelector('.menuCaret');
+                                    if(caret){
+                                        caret.remove();
+                                    }   
+                                }
+                            }
+                        });
+                    });
+                });
+            }
+        };
+    }]).directive('b2bHeaderTertiarymenu', ['$timeout','keymap', function ($timeout,keymap){
+        return{
+            restrict: 'A',
+            require:'^b2bHeaderMenu',
+            link: function (scope, elem,attr,ctrl) {
+                
+                elem.bind('keydown', function (evt) {
+                    var activeElm = document.activeElement;
+                    var activeParentElm = activeElm.parentElement;
+                    var activeParentObj  = angular.element(activeParentElm)[0];
+                    
+                    if(activeParentElm.hasAttribute('b2b-tertiary-link')){
+                        var quarterNav = angular.element(activeParentElm)[0].querySelector('li[b2b-header-quarternarymenu]');
+                        if(quarterNav){
+                            var links = ctrl.getFirstElement(angular.element(quarterNav)[0],'a');
+                        }
+                    }
+                    var tertiaryMenu = activeElm.parentElement.parentElement.parentElement;
+                    var tertiaryMenuFlag = tertiaryMenu.hasAttribute('b2b-tertiary-link');
+                    
+                    switch (evt.keyCode) {
+                        case keymap.KEY.DOWN:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if (activeParentElm.hasAttribute('b2b-tertiary-link')) {
+                                if(angular.element(quarterNav).hasClass('active')){
+                                    links.focus();
+                                }else if(activeParentObj.nextElementSibling){
+                                    ctrl.nextSiblingFocus(activeParentObj,true);
+                                }
+                            }
+                            else if(angular.element(activeParentElm).hasClass('active')){
+                                ctrl.nextSiblingFocus(activeElm);
+                            }
+                            break;                        
+                        case keymap.KEY.UP:
+                            evt.stopPropagation();
+                            evt.preventDefault();
+                            if(activeParentElm.hasAttribute('b2b-tertiary-link')){
+                                if(activeParentObj.previousElementSibling.hasAttribute('b2b-tertiary-link')){
+                                    ctrl.previousSiblingFocus(activeParentObj,true);
+                                }else{
+                                    var elm = angular.element(activeElm.parentElement.parentElement.parentElement.parentElement.parentElement)[0];
+                                    ctrl.getFirstElement(elm,"a").focus();
+                                }
+                            }else if(angular.element(activeParentElm).hasClass('active')){
+                                    if (activeElm.previousElementSibling) {
+                                        ctrl.previousSiblingFocus(activeElm);
+                                    }else if (tertiaryMenuFlag) {
+                                        var elm = angular.element(tertiaryMenu)[0];
+                                        ctrl.getFirstElement(elm,"a.header-tertiaryitem").focus();
+                                    }
+                                }
+                            break;
+                        default:
+                            break;
+                    }
+                });
+            }            
+        };          
+    }]).directive('b2bHeaderTogglemenu', ['$timeout', 'keymap', function ($timeout, keymap) {
+        return{
+            restrict: 'A',
+            require: '^b2bHeaderMenu',
+            link: function (scope, elem, attrs, ctrl) {
+                var quarterNav;
+                $timeout(function () {
+                    quarterNav = angular.element(elem.parent())[0].querySelector('li[b2b-header-quarternarymenu]');
+                    elem.bind('click', function () {
+                        angular.element(quarterNav).toggleClass('active');
+                    });
+                });
+            }
+        };
+    }]).directive('b2bHeaderResponsive', ['$timeout',function ($timeout) {
+        return{
+            restrict: 'A',
+            controller: function($scope){
+                this.applyMediaQueries = function(value){
+                    document.querySelector('style').textContent += 
+                        "@media screen and (max-width:950px) { \
+                            .header__item.profile { right: " + value + "px; } \
+                        }";
+                };
+                this.arrangeResponsiveHeader = function(children){
+                    /* 
+                     * clientWidth of 1090 === max-width of 1100px
+                     * clientWidth of 920 === max-width of 950px
+                     * see b2b-angular.css for rest of responsive header CSS
+                     */
+                  if (document.documentElement.clientWidth <= 920) { 
+                        switch(children){
+                            case 1:
+                                this.applyMediaQueries(200);                    
+                                break;
+                            case 2:
+                                this.applyMediaQueries(200);                            
+                                break;
+                            default: // anthing above 3, however, should not have more than 3 to date
+                                this.applyMediaQueries(200);                                                                            
+                        }
+                    }
+                }
+            },
+            link: function (scope, elem, attrs, ctrl) {
+                var children;
+                var profile;
+                
+                // onload of page
+                $timeout(function(){ 
+                    profile = document.querySelector('li.header__item.profile');
+                    children = angular.element(profile).children().length;
+                    
+                    ctrl.arrangeResponsiveHeader(children); // shift right-side icon flyovers
+                });
+
+                // on screen resize
+                window.addEventListener('resize', function(event){ // caret adjustmet
+                    var activeSubmenu = elem[0].querySelector('[b2b-header-menu] [b2b-header-submenu].active');
+                    var activeSubmenuEl = angular.element(activeSubmenu);
+                    if(activeSubmenu){
+                        var caretSign = activeSubmenu.querySelector('i.menuCaret');
+                        if(caretSign){
+                            var caretSignEl = angular.element(caretSign);
+                            var caretLeft = (activeSubmenu.offsetLeft +  activeSubmenu.offsetWidth/2) - 10;
+                            caretSignEl.css({left: caretLeft + 'px'});
+                        }
+                    }
+
+                    ctrl.arrangeResponsiveHeader(children); // shift right-side icon flyovers
+                });
+            }
+        };
+    }]);
+
+/**
+ * @ngdoc directive
+ * @name Layouts.att:headings
+ *
+ * @description
+ *  <file src="src/headings/docs/readme.md" />
+ *
+ * @usage
+    <h1 class="heading-page">38px page heading</h1>
+    <h2 class="heading-major-section">30px major section heading</h2>
+    <h3 class="heading-sub-section">24px sub-section heading</h3>
+    <h2 class="heading-medium">20px medium heading</h2>
+    <h2 class="heading-medium-emphasis">20px medium emphasis heading</h2>
+    <h3 class="heading-small">18px small heading</h3>
+    <h3 class="heading-small-emphasis">18px small emphasis heading</h3>
+    <h3 class="heading-micro">13px micro heading</h3>
+
+    <h2 class="heading-group">Lead</h2>
+    <h1 class="heading-page">This is 38px heading</h1>
+    <h2 class="lead">This is lead text...The next big thing since the last big thing we announced.</h2>
+    <h2 class="heading-group">Eyebrow</h2>
+    <h3 class="eyebrow">EYEBROW TEXT</h3>
+    <h2 class="heading-major-section">This is a 30px heading</h2>
+    <h3 class="eyebrow">EYEBROW TEXT</h3>
+    <h3 class="heading-sub-section">24px sub-section heading</h3>
+    <h2 class="heading-group">Subheading</h2>
+    <h2 class="heading-major-section">This is a 30px heading</h2>
+    <h3 class="subheading">A subheading here to support what was said above</h3>
+ * @example
+ <section id="code">
+    <b>HTML + AngularJS</b>
+    <example module="b2b.att">
+    <file src="src/headings/docs/demo.html" />
+</example>
+</section>
+ */
+
+var b2bLegalCopy = angular.module('b2b.att.headings', []);
+/**
+ * @ngdoc directive
+ * @name Tabs, tables & accordions.att:horizontalTable
+ *
+ * @description
+ *  <file src="src/horizontalTable/docs/readme.md" />
+ *
+ * @usage
+ * @param {int} sticky - Number of sticky columns to have. Maximum of 3.
+ * @param {boolean} refresh - A boolean that when set to true will force a re-render of table. Only use when using 'bulk mode'
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/horizontalTable/docs/demo.html" />
+            <file src="src/horizontalTable/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.horizontalTable', [])
+    .constant('b2bHorizontalTableConfig', {
+        'maxStickyColumns': 3
+    })
+    .directive('b2bHorizontalTable', ['$timeout', 'b2bHorizontalTableConfig', 'b2bDOMHelper', function ($timeout, b2bHorizontalTableConfig, b2bDOMHelper) {
+        return {
+            restrict: 'EA',
+            scope: true,
+            transclude: true,
+            scope: {
+                numOfStickyCols: '=?sticky',
+                refresh: '=?'
+
+            },
+            templateUrl: 'b2bTemplate/horizontalTable/horizontalTable.html',
+            link: function (scope, element, attrs, ctrl) {
+                scope.numOfStickyCols = scope.numOfStickyCols || 1;
+                scope.viewportIndex = scope.numOfStickyCols;
+
+                // JM520E: This is a temporary hack until I solve the ngRepeat issue
+                function hack() {
+                    if (element.find('th').length < scope.numOfStickyCols) {
+                        // DOM ngRepeat is not ready, let's check back in 10 ms
+                        console.info('THs are not ready, trying again in 10ms');
+                        $timeout(hack, 10, false);
+                    } else {
+                        init();
+                    }
+                }
+                hack();
+
+                if (attrs.refresh !== undefined && attrs.refresh !== '') {
+                    scope.$watch('refresh', function(oldVal, newVal) {
+                        if (scope.refresh) {
+                            // From testing it takes about 30 ms before ngRepeat executes, so let's set initial timeout
+                            // NOTE: May need to expose timeout to developers. Application is known to have digest cycle of 3-5k watches.
+                            $timeout(init, 100, false);
+                            scope.refresh = false;
+                        }
+                    });
+                }
+
+                var tableElement = element.find('table');
+                var thElements = element.find('th');
+                var innerContainer = angular.element(element[0].querySelector('.b2b-horizontal-table-inner-container'));
+                var outerContainer = angular.element(element[0].querySelector('.b2b-horizontal-table'));
+
+                var tableColumns = [];
+                var tableRows = element.find('tr');
+
+                var maxWidth = 0,
+                    maxHeight = 0;
+                var totalWidth = element.children()[0].offsetWidth;
+                var lastVisibleColumn = 0;
+                var collectiveColumnWidth = [];
+                var collectiveRowHeight = [];
+                var columnSets = [];
+                var setIndex = 0; 
+                var stickyPixels = 0;
+
+                var displayNoneCSS = {'display': 'none'};
+                var displayBlockCSS = {'display': 'table-cell'};
+
+                function calculateVisibleColumns(startingPoint) {
+                    var usedWidth = 0, 
+                        visibleColumns = startingPoint || scope.numOfStickyCols;
+
+                    while(usedWidth < stickyPixels && visibleColumns < collectiveColumnWidth.length) {
+                        if (usedWidth+collectiveColumnWidth[visibleColumns] > stickyPixels) {
+                            if (startingPoint === visibleColumns) {
+                                return visibleColumns; // The next cell is too large to fit, it should be only thing to fit
+                            }
+                            visibleColumns--;
+                            return visibleColumns;
+                        }
+                        usedWidth += collectiveColumnWidth[visibleColumns];
+                        visibleColumns++;
+                    }
+
+                    if (usedWidth > stickyPixels) {
+                        return --visibleColumns;
+                    }
+                    return visibleColumns;
+                }
+
+                function updateCellDisplay(set) {
+                    for (var i = scope.numOfStickyCols; i < tableColumns.length; i++) {
+                        angular.element(tableColumns[i]).css(displayNoneCSS);
+                    }
+
+                    for (var i = set[0]; i <= set[1]; i++) {
+                        angular.element(tableColumns[i]).css(displayBlockCSS);
+                    }
+                }
+
+                function forceDigest() {
+                    if (!scope.$$phase) {
+                        scope.$digest();
+                    }
+                }
+
+                function findMax(arr, prop) {
+                    var max = 0;
+                    var localVal = 0;
+                    var prevDisplay;
+                    var item;
+                    for (var i = 0; i < arr.length; i++) {
+                        item = arr[i];
+                        prevDisplay = angular.element(item).css('display');
+                        if (scope.$$phase) {
+                            scope.$digest();
+                        }
+                        if (prop === 'width') {
+                            localVal = Math.ceil(parseInt(window.getComputedStyle(item).width.split('px')[0], 10)) + 30; // 30 px is padding
+                        } else if (prop === 'offsetWidth') {
+                            localVal = item.offsetWidth;
+                        } else if (prop === 'height') {
+                            localVal = item.offsetHeight;
+                        }
+
+                        if (localVal >= max) {
+                            max = localVal;
+                        }
+                    }
+                    
+                    return max;
+                }
+
+                function init() {
+                    // Reset this from a previous execution
+                    tableColumns = [];
+                    collectiveColumnWidth = [];
+                    collectiveRowHeight = [];
+                    maxWidth = 0;
+                    maxHeight = 0;
+                    lastVisibleColumn = 0;
+                    columnSets = [];
+                    setIndex = 0; 
+                    visibleColumns = [];
+                    stickyPixels = 0;
+
+                    tableElement = element.find('table');
+                    thElements = element.find('th');
+                    innerContainer = angular.element(element[0].querySelector('.b2b-horizontal-table-inner-container'));
+                    outerContainer = angular.element(element[0].querySelector('.b2b-horizontal-table'));
+                    totalWidth = element.children()[0].offsetWidth;
+
+
+                    tableRows = element.find('tr');
+                    totalWidth = element.children()[0].offsetWidth;
+
+                    scope.disableLeft = true;
+                    scope.disableRight = false;
+
+                    if (scope.numOfStickyCols > b2bHorizontalTableConfig.maxStickyColumns) {
+                        throw new Error("Table can only support 3 sticky columns.");
+                    }                  
+
+                    angular.forEach(tableRows, function(row, rowIndex) {
+                        collectiveRowHeight.push(findMax(row.children, 'height'));
+                        for(var j = 0; j < row.children.length; j++) {
+                            if (tableColumns[j] === undefined) {
+                                tableColumns[j] = [];
+                            }
+                            tableColumns[j].push(row.children[j]);
+                        }
+                    });
+
+                    // We need to reset all the displayNones from previous runs, if applicable
+                    if (attrs.refresh !== undefined && attrs.refresh !== '')  {
+                        for (var i = scope.numOfStickyCols+1; i < tableColumns.length; i++) {
+                            angular.element(tableColumns[i]).css(displayBlockCSS);
+                        }
+                    }
+
+                    for (var i = 0; i < tableColumns.length; i++) {
+                        collectiveColumnWidth.push(findMax(tableColumns[i], 'width')); //offsetWidth doesn't take into account custom css inside
+                    }
+                    for(var i = 0; i < scope.numOfStickyCols; i++) {
+                        maxWidth += collectiveColumnWidth[i];
+                    }
+      
+                    stickyPixels = totalWidth-maxWidth;
+
+
+                    // At this point, for each tr, I need to set the properties (height) and each numOfStickyCols children
+                    // should be set with sticky properties (margin-left and width)
+                    var width = maxWidth;
+                    for(var i = 0; i < scope.numOfStickyCols; i++) {
+                        for (var j = 0; j < tableRows.length; j++) {
+                            trObject = angular.element(tableRows[j].children[i]);
+                            
+                            angular.element(trObject).css({
+                                'margin-left': -(width + 2) + 'px', 
+                                'width': (collectiveColumnWidth[i] + 3) + 'px', // instead of taking the max width, grab max width for that column
+                                'height': collectiveRowHeight[j] + 'px',
+                                'position': 'absolute',
+                                'background-color': 'lightgrey'
+                            });
+                        }
+                        
+
+                        width -= collectiveColumnWidth[i];
+                    }
+
+                    innerContainer.css({
+                        'padding-left': (maxWidth + 2) + 'px'
+                    });
+
+
+                    // Let's precompute all the (set) combinations beforehand
+                    columnSets = []; 
+                    for (var i = scope.numOfStickyCols; i < tableColumns.length;) {
+                        visibleColumns = calculateVisibleColumns(i);
+                        columnSets.push([i, visibleColumns]);
+                        i = visibleColumns + 1;
+                    }
+                    
+                    updateCellDisplay(columnSets[setIndex]);
+                    checkScrollArrows();
+
+                    scope.numOfCols = tableColumns.length;
+
+                    console.log('Bulk Mode is ' + (attrs.bulkMode ? 'enabled': 'disabled'));
+                    console.log('tableColumns', tableColumns);
+                    console.log('collectiveColumnWidth: ', collectiveColumnWidth);
+                    console.log('maxWidth: ', maxWidth);
+                }
+
+                function checkScrollArrows() {
+                    scope.disableLeft = (setIndex === 0);
+                    scope.disableRight = !(setIndex < columnSets.length-1);
+                }
+
+
+                scope.moveViewportLeft = function () {
+                    setIndex--;
+                    updateCellDisplay(columnSets[setIndex]);
+                    checkScrollArrows();
+
+                    if (scope.disableLeft) {
+                        element.find('span')[0].focus();
+                    }
+                };
+                
+                scope.moveViewportRight = function () {
+                    setIndex++;
+                    updateCellDisplay(columnSets[setIndex]);
+                    checkScrollArrows();
+                    
+                    if (scope.disableRight) {
+                        element.find('span')[0].focus();
+                    }
+                };
+
+                scope.getColumnSet = function () {
+                    return columnSets[setIndex];
+                };
+
+                innerContainer.bind('scroll', function () {
+                    $timeout(function () {
+                        checkScrollArrows();
+                    }, 1);
+                });
+
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:hourPicker
+ *
+ * @description
+ *  <file src="src/hourPicker/docs/readme.md" />
+ *
+ * @usage
+ * <div b2b-hourpicker ng-model="hourpickerValue.value"></div>
+    
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/hourPicker/docs/demo.html" />
+            <file src="src/hourPicker/docs/demo.js" />
+        </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.hourPicker', ['b2b.att.utilities'])
+
+.constant('b2bHourpickerConfig', {
+    dayOptions: [{
+        title: 'sunday',
+        caption: 'Sun',
+        label: 'S',
+        disabled: false
+    }, {
+        title: 'monday',
+        caption: 'Mon',
+        label: 'M',
+        disabled: false
+    }, {
+        title: 'tuesday',
+        caption: 'Tues',
+        label: 'T',
+        disabled: false
+    }, {
+        title: 'wednesday',
+        caption: 'Wed',
+        label: 'W',
+        disabled: false
+    }, {
+        title: 'thursday',
+        caption: 'Thu',
+        label: 'T',
+        disabled: false
+    }, {
+        title: 'friday',
+        caption: 'Fri',
+        label: 'F',
+        disabled: false
+    }, {
+        title: 'saturday',
+        caption: 'Sat',
+        label: 'S',
+        disabled: false
+    }],
+    startTimeOptions: ['1:00', '2:00', '3:00', '4:00', '5:00', '6:00', '7:00', '8:00', '9:00', '10:00', '11:00', '12:00'],
+    startTimeDefaultOptionIndex: -1,
+    startTimeDefaultMeridiem: "am",
+    endTimeOptions: ['1:00', '2:00', '3:00', '4:00', '5:00', '6:00', '7:00', '8:00', '9:00', '10:00', '11:00', '12:00'],
+    endTimeDefaultOptionIndex: -1,
+    endTimeDefaultMeridiem: "pm",
+    sameDayOption: true
+})
+
+.factory('b2bNormalizeHourpickerValues', [function () {
+    var _normalize = function (hourpickerValues) {
+        if (angular.isDefined(hourpickerValues) && hourpickerValues != null) {
+            var finalHourpickerValues = [];
+            var hourpickerValue = {};
+            var days = {};
+            for (var i = 0; i < hourpickerValues.length; i++) {
+                days = hourpickerValues[i].days ? hourpickerValues[i].days : {};
+                hourpickerValue.startTime = hourpickerValues[i].startTime ? hourpickerValues[i].startTime : '';
+                hourpickerValue.startMeridiem = hourpickerValues[i].startMeridiem ? hourpickerValues[i].startMeridiem : '';
+                hourpickerValue.endTime = hourpickerValues[i].endTime ? hourpickerValues[i].endTime : '';
+                hourpickerValue.endMeridiem = hourpickerValues[i].endMeridiem ? hourpickerValues[i].endMeridiem : '';
+                hourpickerValue.days = [];
+
+                var retrieveDaysText = function (daysDetails) {
+                    var daysTexts = [];
+                    var first = -1;
+                    var last = -1;
+                    var index = -1;
+                    for (var i in days) {
+                        if (days[i].value) {
+                            daysTexts.push(i);
+                        }
+                    }
+
+                    first = daysTexts[0];
+                    last = daysTexts[0];
+                    index = 0;
+                    hourpickerValue.days[index] = days[first].caption;
+                    if (daysTexts.length > 1) {
+                        for (var i = 1; i < daysTexts.length; i++) {
+                            if (daysTexts[i] - last === 1) {
+                                last = daysTexts[i];
+                                hourpickerValue.days[index] = days[first].caption + ' - ' + days[last].caption;
+                            } else {
+                                index++;
+                                first = last = daysTexts[i];
+                                hourpickerValue.days[index] = days[first].caption;
+                            }
+                        }
+                    }
+                };
+                retrieveDaysText();
+
+                finalHourpickerValues.push(angular.copy(hourpickerValue));
+            }
+
+            return angular.copy(finalHourpickerValues);
+        }
+    };
+
+    return {
+        normalize: _normalize
+    };
+}])
+
+.directive('b2bHourpicker', ['b2bHourpickerConfig', 'b2bNormalizeHourpickerValues', function (b2bHourpickerConfig, b2bNormalizeHourpickerValues) {
+    return {
+        restrict: 'EA',
+        replace: false,
+        scope: true,
+        require: 'ngModel',
+        templateUrl: 'b2bTemplate/hourPicker/b2bHourpicker.html',
+        controller: ['$scope', function (scope) {
+
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            scope.hourpicker = {};
+            scope.hourpicker.dayOptions = attr.dayOptions ? scope.$parent.$eval(attr.dayOptions) : b2bHourpickerConfig.dayOptions;
+            scope.hourpicker.startTimeOptions = attr.startTimeOptions ? scope.$parent.$eval(attr.startTimeOptions) : b2bHourpickerConfig.startTimeOptions;
+            scope.hourpicker.endTimeOptions = attr.endTimeOptions ? scope.$parent.$eval(attr.endTimeOptions) : b2bHourpickerConfig.endTimeOptions;
+            scope.hourpicker.startTimeDefaultOptionIndex = attr.startTimeDefaultOptionIndex ? scope.$parent.$eval(attr.startTimeDefaultOptionIndex) : b2bHourpickerConfig.startTimeDefaultOptionIndex;
+            scope.hourpicker.endTimeDefaultOptionIndex = attr.endTimeDefaultOptionIndex ? scope.$parent.$eval(attr.endTimeDefaultOptionIndex) : b2bHourpickerConfig.endTimeDefaultOptionIndex;
+            scope.hourpicker.startTimeDefaultMeridiem = attr.startTimeDefaultMeridiem ? scope.$parent.$eval(attr.startTimeDefaultMeridiem) : b2bHourpickerConfig.startTimeDefaultMeridiem;
+            scope.hourpicker.endTimeDefaultMeridiem = attr.endTimeDefaultMeridiem ? scope.$parent.$eval(attr.endTimeDefaultMeridiem) : b2bHourpickerConfig.endTimeDefaultMeridiem;
+            scope.hourpicker.sameDayOption = attr.sameDayOption ? scope.$parent.$eval(attr.sameDayOption) : b2bHourpickerConfig.sameDayOption;
+            scope.hourpicker.editMode = -1;
+
+            scope.hourpickerValues = [];
+            scope.finalHourpickerValues = [];
+            scope.addHourpickerValue = function (hourpickerPanelValue) {
+                if (hourpickerPanelValue) {
+                    if (scope.hourpicker.editMode > -1) {
+                        scope.hourpickerValues[scope.hourpicker.editMode] = hourpickerPanelValue;
+                        scope.hourpicker.editMode = -1;
+                    } else {
+                        scope.hourpickerValues.push(hourpickerPanelValue);
+                    }
+                }
+                scope.finalHourpickerValues = b2bNormalizeHourpickerValues.normalize(angular.copy(scope.hourpickerValues));
+                ctrl.$setViewValue(angular.copy(scope.hourpickerValues));
+            };
+            ctrl.$render = function () {
+                if (angular.isDefined(ctrl.$modelValue)) {
+                    scope.hourpickerValues = angular.copy(ctrl.$modelValue);
+                    scope.finalHourpickerValues = b2bNormalizeHourpickerValues.normalize(angular.copy(scope.hourpickerValues));
+                }
+            };
+            scope.editHourpickerValue = function (index) {
+                scope.hourpickerPanelValue = angular.copy(scope.hourpickerValues[index]);
+                scope.hourpicker.editMode = index;
+            };
+            scope.deleteHourpickerValue = function (index) {
+                scope.hourpickerValues.splice(index, 1);
+                scope.resetHourpickerPanelValue();
+                scope.addHourpickerValue();
+            };
+
+            scope.setValidity = function (errorType, errorValue) {
+                ctrl.$setValidity(errorType, errorValue);
+            }
+        }
+    }
+}])
+
+.directive('b2bHourpickerPanel', [function () {
+    return {
+        restrict: 'EA',
+        replace: false,
+        templateUrl: 'b2bTemplate/hourPicker/b2bHourpickerPanel.html',
+        controller: ['$scope', function (scope) {
+
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            var hourpickerPanelValueTemplate = {
+                days: {},
+                startTime: '',
+                startMeridiem: 'am',
+                endTime: '',
+                endMeridiem: 'pm'
+            };
+            for (var i = 0; i < scope.hourpicker.dayOptions.length; i++) {
+                hourpickerPanelValueTemplate.days[i] = {
+                    value: false,
+                    title: scope.hourpicker.dayOptions[i].title,
+                    caption: scope.hourpicker.dayOptions[i].caption
+                };
+            }
+            scope.hourpickerPanelValue = {};
+            scope.disableAddBtn = true;
+
+            scope.$watch('hourpickerPanelValue.days', function(){
+                for(var i in scope.hourpickerPanelValue.days)
+                {
+                    if(scope.hourpickerPanelValue.days[i].value)
+                    {
+                        scope.disableAddBtn = false;
+                        break;
+                    }
+                    scope.disableAddBtn = true;
+                }
+            }, true);
+
+            scope.resetHourpickerPanelValue = function () {
+                scope.hourpickerPanelValue = angular.copy(hourpickerPanelValueTemplate);
+                if (scope.hourpicker.startTimeDefaultOptionIndex > -1) {
+                    scope.hourpickerPanelValue.startTime = scope.hourpicker.startTimeOptions[scope.hourpicker.startTimeDefaultOptionIndex];
+                }
+                if (scope.hourpicker.endTimeDefaultOptionIndex > -1) {
+                    scope.hourpickerPanelValue.endTime = scope.hourpicker.endTimeOptions[scope.hourpicker.endTimeDefaultOptionIndex];
+                }
+                scope.hourpickerPanelValue.startMeridiem = scope.hourpicker.startTimeDefaultMeridiem;
+                scope.hourpickerPanelValue.endMeridiem = scope.hourpicker.endTimeDefaultMeridiem;
+                scope.hourpicker.editMode = -1;
+                scope.setValidity('invalidHourpickerData', true);
+                scope.setValidity('invalidHourpickerTimeRange', true);
+            };
+            scope.resetHourpickerPanelValue();
+            scope.updateHourpickerValue = function () {
+                if (scope.isFormValid() && !scope.isTimeOverlap()) {
+                    scope.addHourpickerValue(angular.copy(scope.hourpickerPanelValue));
+                    scope.resetHourpickerPanelValue();
+                }
+            };
+
+            scope.isFormValid = function () {
+                var isStartTimeAvailable = scope.hourpickerPanelValue.startTime ? true : false;
+                var isStartMeridiemAvailable = scope.hourpickerPanelValue.startMeridiem ? true : false;
+                var isEndTimeAvailable = scope.hourpickerPanelValue.endTime ? true : false;
+                var isEndMeridiemAvailable = scope.hourpickerPanelValue.endMeridiem ? true : false;
+                var currentStartTime = getTime(scope.hourpickerPanelValue.startTime, scope.hourpickerPanelValue.startMeridiem);
+                var currentEndTime = getTime(scope.hourpickerPanelValue.endTime, scope.hourpickerPanelValue.endMeridiem);
+                var isTimeInProperSequence = currentEndTime > currentStartTime;
+                var isDayChecked = false;
+                for (var i in scope.hourpickerPanelValue.days) {
+                    if (scope.hourpickerPanelValue.days[i].value) {
+                        isDayChecked = true;
+                        break;
+                    }
+                }
+
+                if (isStartTimeAvailable && isStartMeridiemAvailable && isEndTimeAvailable && isEndMeridiemAvailable && isTimeInProperSequence && isDayChecked) {
+                    scope.setValidity('invalidHourpickerData', true);
+                    return true;
+                } else {
+                    scope.setValidity('invalidHourpickerData', false);
+                    return false;
+                }
+            };
+            scope.isTimeOverlap = function () {
+                var selectedDays = [];
+                for (var i in scope.hourpickerPanelValue.days) {
+                    if (scope.hourpickerPanelValue.days[i].value) {
+                        selectedDays.push(i);
+                    }
+                }
+
+                var currentStartTime, currentEndTime, existingStartTime, existingEndTime;
+                currentStartTime = getTime(scope.hourpickerPanelValue.startTime, scope.hourpickerPanelValue.startMeridiem);
+                currentEndTime = getTime(scope.hourpickerPanelValue.endTime, scope.hourpickerPanelValue.endMeridiem);
+                for (var i = 0; i < scope.hourpickerValues.length; i++) {
+                    
+                    if (i === scope.hourpicker.editMode) {
+                        continue;
+                    }
+
+                    for (var j = 0; j < selectedDays.length; j++) {
+                        existingStartTime = getTime(scope.hourpickerValues[i].startTime, scope.hourpickerValues[i].startMeridiem);
+                        existingEndTime = getTime(scope.hourpickerValues[i].endTime, scope.hourpickerValues[i].endMeridiem);
+                        if (scope.hourpickerValues[i].days[selectedDays[j]].value) {
+                            if(!scope.hourpicker.sameDayOption){
+                                scope.setValidity('dayAlreadySelected', false);
+                                return true;
+                            } else if ((currentStartTime > existingStartTime && currentStartTime < existingEndTime) || (currentEndTime > existingStartTime && currentEndTime < existingEndTime)) {
+                                scope.setValidity('invalidHourpickerTimeRange', false);
+                                return true;
+                            } else if ((existingStartTime > currentStartTime && existingStartTime < currentEndTime) || (existingEndTime > currentStartTime && existingEndTime < currentEndTime)) {
+                                scope.setValidity('invalidHourpickerTimeRange', false);
+                                return true;
+                            } else if ((currentStartTime === existingStartTime) && (currentEndTime === existingEndTime)) {
+                                scope.setValidity('invalidHourpickerTimeRange', false);
+                                return true;
+                            }
+                        }
+                    }
+                }
+
+                scope.setValidity('dayAlreadySelected', true);
+                scope.setValidity('invalidHourpickerTimeRange', true);
+                return false;
+            };
+            var getTime = function (timeString, meridiem) {
+                var tempDate = new Date();
+                if (timeString && meridiem) {
+                    var timeSplit = timeString.split(':');
+                    var hour = ((meridiem === 'PM' || meridiem === 'pm') && timeSplit[0] !== '12') ? parseInt(timeSplit[0], 10) + 12 : parseInt(timeSplit[0], 10);
+                    tempDate.setHours(hour, parseInt(timeSplit[1], 10), 0, 0);
+                }
+
+                return tempDate.getTime();
+            };
+        }
+    }
+}])
+
+.directive('b2bHourpickerValue', [function () {
+    return {
+        restrict: 'EA',
+        replace: false,
+        templateUrl: 'b2bTemplate/hourPicker/b2bHourpickerValue.html',
+        controller: ['$scope', function (scope) {
+
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            scope.hourpickerValue = {};
+            scope.hourpickerValue.startTime = attr.startTime ? scope.$eval(attr.startTime) : '';
+            scope.hourpickerValue.startMeridiem = attr.startMeridiem ? scope.$eval(attr.startMeridiem) : '';
+            scope.hourpickerValue.endTime = attr.endTime ? scope.$eval(attr.endTime) : '';
+            scope.hourpickerValue.endMeridiem = attr.endMeridiem ? scope.$eval(attr.endMeridiem) : '';
+            scope.hourpickerValue.days = attr.days ? scope.$eval(attr.days).join(', ') : '';
+            scope.hourpickerValue.index = attr.b2bHourpickerValue ? scope.$eval(attr.b2bHourpickerValue) : -1;
+        }
+    }
+}]);
+/**
+ * @ngdoc directive
+ * @name Template.att:inputTemplate
+ *
+ * @description
+ *  <file src="src/inputTemplate/docs/readme.md" />
+ *
+ * @usage
+ *  <input type="text" id="fieldId" placeholder="placholder text here" class="span12 input-enhanced" name="fieldName">
+ *
+ * @example
+ <section id="code">
+    <b>HTML + AngularJS</b>
+    <example module="b2b.att">
+        <file src="src/inputTemplate/docs/demo.html" />
+        <file src="src/inputTemplate/docs/demo.js" />
+    </example>
+ </section>
+ */
+angular.module('b2b.att.inputTemplate', []);
+
+/**
+ * @ngdoc directive
+ * @name Navigation.att:leftNavigation
+ *
+ * @description
+ *  <file src="src/leftNavigation/docs/readme.md" />
+ *
+ * @usage
+ *   <b2b-left-navigation data-menu="menuData"></b2b-left-navigation> 
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/leftNavigation/docs/demo.html" />
+            <file src="src/leftNavigation/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.leftNavigation', [])
+    .directive('b2bLeftNavigation', [function () {
+        return {
+            restrict: 'EA',
+            templateUrl: 'b2bTemplate/leftNavigation/leftNavigation.html',
+            scope: {
+                menuData: '='
+            },
+            link: function (scope, element, attrs, ctrl) {
+                scope.idx = -1;
+                scope.itemIdx = -1;
+                scope.navIdx = -1;
+                scope.toggleNav = function (val,link) {
+                    if (val === scope.idx) {
+                        scope.idx = -1;
+                        return;
+                    }
+                    scope.idx = val;
+                };
+                /*New function for ECOMP sdk*/
+                scope.toggleDrawer = function(showmenu){
+                	scope.idx=-1; /*hide the sunmenus*/
+            		/*if(showmenu){
+            			//scope.openList.length=0;
+            			document.getElementById('page-content').style.marginLeft = "50px";
+            		}
+            		else
+            			document.getElementById('page-content').style.marginLeft = "250px";   */        	
+                };
+                scope.liveLink = function (evt, val1, val2) {
+                    scope.itemIdx = val1;
+                    scope.navIdx = val2;
+                    evt.stopPropagation();
+                };
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:links
+ *
+ * @description
+ *  <file src="src/links/docs/readme.md" />
+ * @usage
+ *      <!-- See below examples for link implementation -->
+ *      
+ * @example
+       <section id="code">              
+           <b>HTML + AngularJS</b>
+           <example module="b2b.att">
+           <file src="src/links/docs/demo.html" />
+            <file src="src/links/docs/demo.js" />            
+          </example>          
+        </section>
+ */
+angular.module('b2b.att.links', []);
+/**
+ * @ngdoc directive
+ * @name Misc.att:listbox
+ *
+ * @description
+ *  <file src="src/listbox/docs/readme.md" />
+ *
+ * @param {int} currentIndex - Current index of selected listbox item. Is not supported on multiselect listbox
+ * @param {Array} listboxData - Data of listbox items. Should include full data regardless if HTML will be filtered.
+
+ * @example
+ *  <section id="code">   
+     <example module="b2b.att">
+     <file src="src/listbox/docs/demo.html" />
+     <file src="src/listbox/docs/demo.js" />
+     </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.listbox', ['b2b.att.utilities'])
+.directive('b2bListBox', ['keymap', 'b2bDOMHelper', '$rootScope', function(keymap, b2bDOMHelper, $rootScope) {
+                return {
+                    restrict: 'AE',
+                    transclude: true,
+                    replace: true,
+                    scope: {
+                        currentIndex: '=', 
+                        listboxData: '='
+                    },
+                    templateUrl: 'b2bTemplate/listbox/listbox.html',
+                    link: function(scope, elem, attr) {
+
+                        if (attr.ariaMultiselectable !== undefined || attr.ariaMultiselectable === 'true') {
+                            scope.multiselectable = true;
+                        } else {
+                            scope.multiselectable = false;
+                        }
+
+                        var shiftKey = false;
+                        var elements = [];
+                        var prevDirection = undefined; // previous direction is used for an edge case when shifting
+                        var shiftKeyPressed = false; // Used to handle shift clicking
+                        var ctrlKeyPressed = false;
+
+                        var currentIndexSet = {
+                            'elementIndex': 0,
+                            'listboxDataIndex': 0
+                        };
+
+                        /*scope.$watch('currentIndex', function(oldVal, newVal) {
+                            if (angular.equals(oldVal, newVal)) return;
+                            if (!scope.multiselectable) {
+                                // This doesn't garuntee anything. index will update on focus based on rules
+                                currentIndexSet.listboxDataIndex = scope.currentIndex;
+                                // Should this occur? 
+                                //scope.listboxData[currentIndexSet.listboxDataIndex].selected = true;
+
+                                // Update elementIndex
+                                elements = elem.children();
+                                var indecies = Array.prototype.map.call(elements, function(item) {
+                                    return parseInt(angular.element(item).attr('data-index'), 10);
+                                }).filter(function(item) {
+                                    return item === scope.currentIndex;
+                                });
+                                currentIndex.elementIndex = indecies[0];
+                                //focusOnElement(currentIndexSet.elementIndex); // This isn't shifting focus
+                                if (!scope.$$phase) {
+                                    scope.$apply();
+                                }
+                            }
+                        });*/
+
+                        function isTrue(item) {
+                            if (item.selected === true) {
+                                return true;
+                            }
+                        }
+
+                        function incrementIndex(elem) {
+                            $rootScope.$apply();
+
+                            var nextElem = elem.next();
+                            if (!angular.isDefined(nextElem) || nextElem.length === 0) {
+                                return;
+                            }
+
+                            currentIndexSet.elementIndex += 1;
+                            currentIndexSet.listboxDataIndex = parseInt(nextElem.attr('data-index'), 10);
+                            scope.currentIndex = currentIndexSet.listboxDataIndex;
+
+                            if (currentIndexSet.elementIndex >= elements.length - 1) {
+                                currentIndexSet.elementIndex = elements.length-1;
+                            }
+                        }
+
+                        function decrementIndex(elem) {
+                            $rootScope.$apply();
+                            var prevElem = angular.element(b2bDOMHelper.previousElement(elem));
+                            if (!angular.isDefined(prevElem) || prevElem.length === 0) {
+                                return;
+                            }
+
+                            currentIndexSet.elementIndex -= 1;
+                            currentIndexSet.listboxDataIndex = parseInt(prevElem.attr('data-index'), 10);
+                            scope.currentIndex = currentIndexSet.listboxDataIndex;
+
+                            if (currentIndexSet.elementIndex <= 0) {
+                                currentIndexSet.elementIndex = 0;
+                            }
+                        }
+
+                        var focusOnElement = function(index) {
+                            try {
+                                elements[index].focus();
+                            } catch (e) {};
+                        }
+
+                        function selectItems(startIndex, endIndex, forceValue) {
+                            for (var i = startIndex; i < endIndex; i++) {
+                                if (forceValue === undefined) {
+                                    // We will flip the value
+                                    scope.listboxData[i].selected = !scope.listboxData[i].selected;
+                                } else {
+                                    scope.listboxData[i].selected = forceValue;
+                                }
+                            }
+
+                            if (!scope.$$phase) {
+                                scope.$apply();
+                            }
+                        }
+
+                        elem.bind('focus', function(evt) { 
+                            // If multiselectable or not and nothing is selected, put focus on first element 
+                            // If multiselectable and a range is set, put focus on first element of range 
+                            // If not multiselectable and something selected, put focus on element 
+                            elements = elem.children(); 
+                             var selectedItems = scope.listboxData.filter(isTrue); 
+                             var elementsIndies = Array.prototype.map.call(elements, function(item) {
+                                return parseInt(angular.element(item).attr('data-index'), 10);
+                            });
+ 
+                            if (selectedItems.length == 0) { 
+                                focusOnElement(0); 
+                                currentIndexSet.listboxDataIndex = 0;
+                            } else if (attr.ariaMultiselectable) { 
+                                var index = scope.listboxData.indexOf(selectedItems[0]); 
+                                var indies = elementsIndies.filter(function(item) {
+                                    return (item === index);
+                                });
+
+                                if (indies.length === 0 || indies[0] != index) {
+                                    // Set focused on 0
+                                    currentIndexSet.elementIndex = elementsIndies[0]; 
+                                    currentIndexSet.listboxDataIndex = 0;
+                                    focusOnElement(currentIndexSet.elementIndex);
+                                } else {
+                                    focusOnElement(indies[0]); 
+                                    currentIndexSet.elementIndex = indies[0];
+                                    currentIndexSet.listboxDataIndex = index;
+                                }
+                            } else { 
+                                focusOnElement(currentIndexSet.elementIndex);  
+                            }
+                            scope.currentIndex = currentIndexSet.listboxDataIndex;
+
+                            if (!scope.$$phase) {
+                                scope.$apply();
+                            }
+                        });
+                        elem.bind('keyup', function(evt) {
+                            if (evt.keyCode === keymap.KEY.SHIFT) {
+                                shiftKeyPressed = false;
+                            } else if (evt.keyCode === keymap.KEY.CTRL) {
+                                ctrlKeyPressed = false;
+                            }
+                        });
+        
+                        elem.bind('keydown', function(evt) {
+                            var keyCode = evt.keyCode;
+                            elements = elem.children();
+                            if (keyCode === keymap.KEY.SHIFT) {
+                                shiftKeyPressed = true;
+                            } else if (evt.keyCode === keymap.KEY.CTRL) {
+                                ctrlKeyPressed = true;
+                            }
+
+                            switch(keyCode) {
+                                case 65: // A key
+                                {
+                                    if (scope.multiselectable && evt.ctrlKey) {
+                                        var arr = scope.listboxData.filter(isTrue);
+                                        var elementsIndies = Array.prototype.map.call(elements, function(item) {
+                                            return parseInt(angular.element(item).attr('data-index'), 10);
+                                        });
+                                        var val = !(arr.length === scope.listboxData.length);
+                                        for (var i = 0; i < elementsIndies.length; i++) {
+                                            scope.listboxData[elementsIndies[i]].selected = val;
+                                        }
+
+                                        if (!scope.$$phase) {
+                                            scope.$apply();
+                                        }
+                                        
+                                        evt.preventDefault();
+                                        evt.stopPropagation();
+                                    }
+                                    break;
+                                }
+                                case keymap.KEY.END:
+                                {
+                                    if (scope.multiselectable && evt.ctrlKey && evt.shiftKey) {
+                                        var elementsIndies = Array.prototype.map.call(elements, function(item) {
+                                            return parseInt(angular.element(item).attr('data-index'), 10);
+                                        }).filter(function(item) {
+                                            return (item >= currentIndexSet.listboxDataIndex);
+                                        });
+                                        for (var i = 0; i < elementsIndies.length; i++) {
+                                            scope.listboxData[elementsIndies[i]].selected = true;
+                                        }
+                                        evt.preventDefault();
+                                        evt.stopPropagation();
+
+                                        if (!scope.$$phase) {
+                                            scope.$apply();
+                                        }
+                                    }
+                                    break;
+                                }
+                                case keymap.KEY.HOME: 
+                                {
+                                    if (scope.multiselectable && evt.ctrlKey && evt.shiftKey) {
+                                        selectItems(0, currentIndexSet.listboxDataIndex+1, true); // currentIndex+1 is what is being focused on
+                                        evt.preventDefault();
+                                        evt.stopPropagation();
+                                    }
+                                    break;
+                                }
+                                case keymap.KEY.LEFT:
+                                case keymap.KEY.UP:
+                                {
+                                    if (currentIndexSet.listboxDataIndex === 0) {
+                                        evt.preventDefault();
+                                        evt.stopPropagation();
+                                        return;
+                                    }
+
+                                    decrementIndex(elements.eq(currentIndexSet.elementIndex));
+                                    if (scope.multiselectable && (evt.shiftKey || evt.ctrlKey)) {
+                                        if (evt.shiftKey) {
+                                            if (prevDirection === 'DOWN') {
+                                                scope.listboxData[currentIndexSet.listboxDataIndex+1].selected = !scope.listboxData[currentIndexSet.listboxDataIndex+1].selected;
+                                            }
+                                            scope.listboxData[currentIndexSet.listboxDataIndex].selected = !scope.listboxData[currentIndexSet.listboxDataIndex].selected;
+                                        }
+                                        prevDirection = 'UP';
+                                    } else {
+                                        // If no modifier keys are selected, all other items need to be unselected.
+                                        prevDirection = undefined;
+                                        selectItems(0, scope.listboxData.length, false);
+                                        scope.listboxData[currentIndexSet.listboxDataIndex].selected = true;
+                                    }
+                                    focusOnElement(currentIndexSet.elementIndex);
+                                    if(!scope.$$phase) {
+                                        scope.$apply();
+                                    }
+                                    evt.preventDefault();
+                                    evt.stopPropagation();
+                                    break;
+                                }
+                                case keymap.KEY.RIGHT:
+                                case keymap.KEY.DOWN:
+                                {
+                                    if (currentIndexSet.listboxDataIndex === scope.listboxData.length-1) {
+                                        evt.preventDefault();
+                                        evt.stopPropagation();
+                                        return;
+                                    }
+
+                                    incrementIndex(elements.eq(currentIndexSet.elementIndex));
+                                    
+                                    if (scope.multiselectable && (evt.shiftKey || evt.ctrlKey)) {
+                                        if (evt.shiftKey) {
+                                            if (prevDirection === 'UP') {
+                                                scope.listboxData[currentIndexSet.listboxDataIndex-1].selected = !scope.listboxData[currentIndexSet.listboxDataIndex-1].selected;
+                                            }
+                                            
+                                            scope.listboxData[currentIndexSet.listboxDataIndex].selected = !scope.listboxData[currentIndexSet.listboxDataIndex].selected;    
+                                        }
+                                        prevDirection = 'DOWN';
+                                    } else {
+                                        // If no modifier keys are selected, all other items need to be unselected.
+                                        prevDirection = undefined;
+                                        selectItems(0, scope.listboxData.length, false);
+                                        scope.listboxData[currentIndexSet.listboxDataIndex].selected = true;
+                                    }
+
+                                    focusOnElement(currentIndexSet.elementIndex);
+                                    if(!scope.$$phase) {
+                                        scope.$apply();
+                                    }
+                                    evt.preventDefault();
+                                    evt.stopPropagation();
+                                    break;
+                                }
+                                case keymap.KEY.TAB:
+                                    if(evt.shiftKey) {
+                                        var previousElement = b2bDOMHelper.previousElement(elem.parent().parent(), true);
+                                        evt.preventDefault();
+                                        previousElement.focus();
+                                    }
+                                    break;
+                                default:
+                                    break;
+                            }
+                        });
+
+                        elem.bind('click', function(evt) {
+                            var index = parseInt(evt.target.dataset.index, 10);
+                            if (index === undefined || isNaN(index)) {
+                                return;
+                            }
+                            if (scope.multiselectable && currentIndexSet.listboxDataIndex !== undefined) {
+                                if (shiftKeyPressed) {
+                                    var min = Math.min(index, currentIndexSet.listboxDataIndex);
+                                    var max = Math.max(index, currentIndexSet.listboxDataIndex);
+
+                                    if (index === min) { // clicking up
+                                        var firstIndex = scope.listboxData.findIndex(function(item) { return item.selected === true;});
+                                        // Given the firstIndex, let's find the matching element to get proper element match
+                                        elements = elem.children();
+                                        elements.eq(firstIndex)
+                                        var elementsThatMatch = Array.prototype.filter.call(elements, function(item) {
+                                            if (parseInt(angular.element(item).attr('data-index'), 10) === firstIndex) {
+                                                return true;
+                                            }
+                                        });
+                                        firstIndex = parseInt(angular.element(elementsThatMatch).attr('data-index'), 10);
+                                        
+                                        if (index <= firstIndex && scope.listboxData.filter(isTrue).length > 1) {
+                                            // Break the selection into 2
+                                            selectItems(firstIndex + 1, max + 1, undefined); // + 1 needed because selectItems only selects up to MAX
+                                            selectItems(min, firstIndex, undefined); 
+                                        } else if (scope.listboxData.filter(isTrue).length == 1){
+                                            selectItems(min, max, undefined); 
+                                        } else {
+                                            selectItems(min + 1, max + 1, undefined);
+                                        }
+                                    } else { // clicking down
+                                        selectItems(min + 1, max + 1, scope.listboxData[min].selected);
+                                    }
+                                } else if (ctrlKeyPressed) {
+                                    scope.listboxData[index].selected = !scope.listboxData[index].selected;
+                                } else {
+                                    selectItems(0, scope.listboxData.length, false);
+                                    scope.listboxData[index].selected = !scope.listboxData[index].selected;
+                                }
+                            } else {
+                                selectItems(0, scope.listboxData.length, false);
+                                scope.listboxData[index].selected = !scope.listboxData[index].selected;
+                            }
+                            currentIndexSet.elementIndex = index;
+                            currentIndexSet.listboxDataIndex = index;
+                            scope.currentIndex = currentIndexSet.listboxDataIndex;
+                            if (!scope.$$phase) {
+                                scope.$apply();
+                            }
+                            focusOnElement(index);
+                        });
+                    }
+                };
+            }]);
+/**
+ * @ngdoc directive
+ * @name Videos, audio & animation.att:loaderAnimation
+ *
+ * @description
+ *  <file src="src/loaderAnimation/docs/readme.md" />
+ *
+ * @usage
+ *   <!-- Below demo js shows-->
+ *   Angular library uses Global.css's icon-primary-spinner.
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/loaderAnimation/docs/demo.html" />
+            <file src="src/loaderAnimation/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.loaderAnimation', [])
+    .constant('b2bSpinnerConfig', {
+        loadingText: 'Loading...',
+        startEvent: 'startButtonSpinner',
+        stopEvent: 'stopButtonSpinner'
+    })
+    .constant("progressTrackerConfig", {
+        loadingText: 'Loading...',
+        minDuration: "",
+        activationDelay: "",
+        minDurationPromise: "",
+        activationDelayPromise: ""
+    })
+
+.provider('progressTracker', function () {
+    this.$get = ['$q', '$timeout', function ($q, $timeout) {
+        function cancelTimeout(promise) {
+            if (promise) {
+                $timeout.cancel(promise);
+            }
+        }
+        return function ProgressTracker(options) {
+            //do new if user doesn't
+            if (!(this instanceof ProgressTracker)) {
+                return new ProgressTracker(options);
+            }
+
+            options = options || {};
+            //Array of promises being tracked
+            var tracked = [];
+            var self = this;
+            //Allow an optional "minimum duration" that the tracker has to stay active for.
+            var minDuration = options.minDuration;
+            //Allow a delay that will stop the tracker from activating until that time is reached
+            var activationDelay = options.activationDelay;
+            var minDurationPromise;
+            var activationDelayPromise;
+            self.active = function () {
+                //Even if we have a promise in our tracker, we aren't active until delay is elapsed
+                if (activationDelayPromise) {
+                    return false;
+                }
+                return tracked.length > 0;
+            };
+            self.tracking = function () {
+                //Even if we aren't active, we could still have a promise in our tracker
+                return tracked.length > 0;
+            };
+            self.destroy = self.cancel = function () {
+                minDurationPromise = cancelTimeout(minDurationPromise);
+                activationDelayPromise = cancelTimeout(activationDelayPromise);
+                for (var i = tracked.length - 1; i >= 0; i--) {
+                    tracked[i].resolve();
+                }
+                tracked.length = 0;
+            };
+            //Create a promise that will make our tracker active until it is resolved.
+            // @return deferred - our deferred object that is being tracked
+            self.createPromise = function () {
+                var deferred = $q.defer();
+                tracked.push(deferred);
+                //If the tracker was just inactive and this the first in the list of promises, we reset our delay and minDuration again.
+                if (tracked.length === 1) {
+                    if (activationDelay) {
+                        activationDelayPromise = $timeout(function () {
+                            activationDelayPromise = cancelTimeout(activationDelayPromise);
+                            startMinDuration();
+                        }, activationDelay);
+                    } else {
+                        startMinDuration();
+                    }
+                }
+                deferred.promise.then(onDone(false), onDone(true));
+                return deferred;
+
+                function startMinDuration() {
+                    if (minDuration) {
+                        minDurationPromise = $timeout(angular.noop, minDuration);
+                    }
+                }
+                //Create a callback for when this promise is done. It will remove our tracked promise from the array if once minDuration is complete
+                function onDone() {
+                    return function () {
+                        (minDurationPromise || $q.when()).then(function () {
+                            var index = tracked.indexOf(deferred);
+                            tracked.splice(index, 1);
+                            //If this is the last promise, cleanup the timeouts for activationDelay
+                            if (tracked.length === 0) {
+                                activationDelayPromise = cancelTimeout(activationDelayPromise);
+                            }
+                        });
+                    };
+                }
+            };
+            self.addPromise = function (promise) {
+                
+//                we cannot assign then function in other var and then add the resolve and reject 
+                var thenFxn = promise && (promise.then || promise.$then || (promise.$promise && promise.$promise.then));                
+                if (!thenFxn) {
+                    throw new Error("progressTracker expects a promise object :: Not found");
+                }
+                var deferred = self.createPromise();
+                //When given promise is done, resolve our created promise
+                //Allow $then for angular-resource objects
+
+                promise.then(function (value) {
+                        deferred.resolve(value);
+                        return value;
+                    }, function (value) {
+                        deferred.reject(value);
+                        return $q.reject(value);
+                    }
+                );
+                return deferred;
+            };
+        };
+    }];
+})
+
+.config(['$httpProvider', function ($httpProvider) {
+    $httpProvider.interceptors.push(['$q', 'progressTracker', function ($q) {
+        return {
+            request: function (config) {
+                if (config.tracker) {
+                    if (!angular.isArray(config.tracker)) {
+                        config.tracker = [config.tracker];
+                    }
+                    config.$promiseTrackerDeferred = config.$promiseTrackerDeferred || [];
+
+                    angular.forEach(config.tracker, function (tracker) {
+                        var deferred = tracker.createPromise();
+                        config.$promiseTrackerDeferred.push(deferred);
+                    });
+                }
+                return $q.when(config);
+            },
+            response: function (response) {
+                if (response.config && response.config.$promiseTrackerDeferred) {
+                    angular.forEach(response.config.$promiseTrackerDeferred, function (deferred) {
+                        deferred.resolve(response);
+                    });
+                }
+                return $q.when(response);
+            },
+            responseError: function (response) {
+                if (response.config && response.config.$promiseTrackerDeferred) {
+                    angular.forEach(response.config.$promiseTrackerDeferred, function (deferred) {
+                        deferred.reject(response);
+                    });
+                }
+                return $q.reject(response);
+            }
+        };
+    }]);
+}])
+
+.directive('b2bClickSpin', ['$timeout', '$parse', '$rootScope', 'progressTracker', function ($timeout, $parse, $rootScope, progressTracker) {
+    return {
+        restrict: 'A',
+        link: function (scope, elm, attrs) {
+            var fn = $parse(attrs.b2bClickSpin);
+            elm.on('click', function (event) {
+                var promise = $timeout(function () {console.log("inside Promise")}, 5000);
+                scope.$apply(function () {
+                    fn(scope, {
+                        $event: event
+                    });
+                });
+                //comment this line if not running unit test
+                $rootScope.loadingTracker = progressTracker({
+                    minDuration: 750
+                });
+                $rootScope.loadingTracker.addPromise(promise);
+                angular.forEach("$routeChangeSuccess $viewContentLoaded $locationChangeSuccess".split(" "), function (event) {
+                    $rootScope.$on(event, function () {
+
+                        $timeout.cancel(promise);
+                    });
+                });
+            });
+        }
+    };
+}])
+
+.directive('b2bProgressTracker', ['progressTrackerConfig', function (ptc) {
+    return {
+        restrict: 'EA',
+        replace: true,
+        template: '<div><div ng-show="loadingTracker.active()" style="width:100%; text-align:center"><i class=\"icon-primary-spinner\"></i></div><div ng-show="loadingTracker.active()" style="width:100%;margin-top:10px; text-align:center">'+ ptc.loadingText+'</div></div>'
+    };
+}])
+
+.directive('b2bLoadButton', ['b2bSpinnerConfig', '$timeout', function (spinnerConfig, $timeout) {
+    var spinButton = function (state, element, data) {
+        
+        var attr = element.html() ? 'html' : 'val';
+        state = state + 'Text';
+        if (state === 'loadingText') {
+            element[attr](data[state]);
+            element.attr("disabled",'disabled');
+            element.addClass('disabled');
+        } else if (state === 'resetText') {
+            element[attr](data[state]);
+            element.removeAttr("disabled");
+            element.removeClass('disabled');
+        }
+    };
+
+    return {
+        restrict: 'A',
+        replace: false,
+        scope: {
+            promise: '=promise',
+            startEvent: '@startEvent',
+            stopEvent: '@stopEvent'
+        },
+        link: function (scope, element, attr) {
+            var validAttr = element.html() ? 'html' : 'val';
+            var data = {
+                loadingText: '',
+                resetText: ''
+            };
+
+            var updateLoadingText = function (val) {
+                var loadingText = val;
+                if (!angular.isDefined(loadingText) || loadingText === "") {
+                    loadingText = spinnerConfig.loadingText;
+                }
+                data.loadingText = validAttr === 'html' ? "<i class=\"icon-primary-spinner small\"></i>" + loadingText : loadingText;
+            };
+            var updateResetText = function (val) {
+                data.resetText = val;
+            };
+
+            attr.$observe('b2bLoadButton', function (val) {
+                updateLoadingText(val);
+            });
+            $timeout(function () {
+                updateResetText(element[validAttr]());
+            }, 500);
+
+            if (!angular.isDefined(scope.startEvent) || scope.startEvent === "") {
+                scope.startEvent = spinnerConfig.startEvent;
+            }
+
+            if (!angular.isDefined(scope.stopEvent) || scope.stopEvent === "") {
+                scope.stopEvent = spinnerConfig.stopEvent;
+            }
+
+            scope.$watch('promise', function () {
+                if (angular.isDefined(scope.promise) && angular.isFunction(scope.promise.then)) {
+                    spinButton('loading', element, data);
+                    scope.promise.then(function () {
+                        spinButton('reset', element, data);
+                    }, function () {
+                        spinButton('reset', element, data);
+                    });
+                }
+            });
+
+            scope.$on(scope.startEvent, function () {
+                spinButton('loading', element, data);
+                scope.$on(scope.stopEvent, function () {
+                    spinButton('reset', element, data);
+                });
+            });
+        }
+    };
+}])
+
+
+;
+ /**
+ * @ngdoc directive
+ * @name Misc.att:messageWrapper
+ * @scope
+ * @param {boolean} trigger - A boolean that triggers directive to switch focus
+ * @param {integer} delay  - Extra delay added to trigger code to allow for DOM to be ready. Default is 10ms.
+ * @param {string} noFocus - Attribute-based API to trigger whether first focusable element receives focus on trigger or whole message (assumes tabindex="-1" set on first child)
+ * @param {string} trapFocus - Attribute-based API to trap focus within the message. This should be enabled by default on all toast messages.
+ * @description
+ *  <file src="src/messageWrapper/docs/readme.md" />
+ * @usage
+ * <b2b-message-wrapper>Code that contains at least one focusable element and will be shown/hidden on some logic. This must have tabindex="-1".</b2b-message-wrapper>
+ *
+ * @example
+ *  <section id="code">   
+ <b>HTML + AngularJS</b>
+ <example module="b2b.att">
+ <file src="src/messageWrapper/docs/demo.html" />
+ <file src="src/messageWrapper/docs/demo.js" />
+ </example>
+ </section>
+ *
+ */
+angular.module('b2b.att.messageWrapper', ['b2b.att.utilities'])
+.directive('b2bMessageWrapper', ['b2bDOMHelper', '$compile', '$timeout', '$log', function(b2bDOMHelper, $compile, $timeout, $log) {
+  return {
+    restrict: 'AE',
+    scope: {
+      trigger: '=',
+      delay: '=?'
+    },
+    transclude: true,
+    replace: true,
+    template: '<div ng-transclude></div>',
+    link: function(scope, elem, attrs) {
+      scope.delay = scope.delay || 10;
+
+      if (attrs.trapFocus != undefined && !elem.children().eq(0).attr('b2b-trap-focus-inside-element')) {
+        // Append b2bTrapFocusInsideElement onto first child and recompile
+        elem.children().eq(0).attr('b2b-trap-focus-inside-element', 'false');
+        elem.children().eq(0).attr('trigger', scope.trigger);
+        $compile(elem.contents())(scope);
+      }
+
+      var firstElement = undefined,
+          launchingElement = undefined;
+      
+      scope.$watch('trigger', function(oldVal, newVal) {
+        if (oldVal === newVal) return;
+        if (!angular.isDefined(launchingElement)) {
+          launchingElement = document.activeElement;
+        }
+        $timeout(function() {
+          if (scope.trigger) {
+
+            if (attrs.noFocus === true || attrs.noFocus === "") {
+              elem.children()[0].focus();
+            } else {
+              firstElement = b2bDOMHelper.firstTabableElement(elem);
+
+              if (angular.isDefined(firstElement)) {
+                firstElement.focus();
+              }
+            }
+            
+          } else {
+            if (angular.isDefined(launchingElement) && launchingElement.nodeName !== 'BODY') {
+              if (launchingElement === document.activeElement) {
+                return;
+              }
+
+              if (b2bDOMHelper.isInDOM(launchingElement) && b2bDOMHelper.isTabable(launchingElement)) {
+                  // At this point, launchingElement is still a valid element, but focus will fail and 
+                  // activeElement will become body, hence we want to apply custom logic and find previousElement
+                  var prevLaunchingElement = launchingElement;
+                  launchingElement.focus();
+
+                  if (document.activeElement !== launchingElement || document.activeElement.nodeName === 'BODY') {
+                    launchingElement = b2bDOMHelper.previousElement(angular.element(prevLaunchingElement), true);
+                    launchingElement.focus();
+                  }
+              } else {
+                launchingElement = b2bDOMHelper.previousElement(launchingElement, true);
+                launchingElement.focus();
+              }
+            }
+          }
+        }, scope.delay); 
+      });
+    }
+  };
+}]);
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:modalsAndAlerts
+ *
+ * @description
+ *  <file src="src/modalsAndAlerts/docs/readme.md" />
+ *
+ * @usage
+ *  <button class="btn" b2b-modal="b2bTemplate/modalsAndAlerts/demo_modal.html" modal-ok="ok()" modal-cancel="cancel()">Launch demo modal</button>
+ *
+ * @example
+ *  <section id="code">
+     <example module="b2b.att">
+      <file src="src/modalsAndAlerts/docs/demo.html" />
+      <file src="src/modalsAndAlerts/docs/demo.js" />
+     </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.modalsAndAlerts', ['b2b.att.position', 'b2b.att.transition', 'b2b.att.utilities'])
+
+/**
+ * A helper, internal data structure that acts as a map but also allows getting / removing
+ * elements in the LIFO order
+ */
+.factory('$$stackedMap', function () {
+    return {
+        createNew: function () {
+            var stack = [];
+
+            return {
+                add: function (key, value) {
+                    stack.push({
+                        key: key,
+                        value: value
+                    });
+                },
+                get: function (key) {
+                    for (var i = 0; i < stack.length; i++) {
+                        if (key === stack[i].key) {
+                            return stack[i];
+                        }
+                    }
+                },
+                keys: function () {
+                    var keys = [];
+                    for (var i = 0; i < stack.length; i++) {
+                        keys.push(stack[i].key);
+                    }
+                    return keys;
+                },
+                top: function () {
+                    return stack[stack.length - 1];
+                },
+                remove: function (key) {
+                    var idx = -1;
+                    for (var i = 0; i < stack.length; i++) {
+                        if (key === stack[i].key) {
+                            idx = i;
+                            break;
+                        }
+                    }
+                    return stack.splice(idx, 1)[0];
+                },
+                removeTop: function () {
+                    return stack.splice(stack.length - 1, 1)[0];
+                },
+                length: function () {
+                    return stack.length;
+                }
+            };
+        }
+    };
+}).factory('trapFocusInElement', ['$document', '$isElement', 'DOMHelper', 'keymap', function ($document, $isElement, DOMHelper, keymap) {
+    var elementStack = [];
+    var stackHead = undefined;
+    var firstTabableElement, lastTabableElement;
+
+    var trapKeyboardFocusInFirstElement = function (e) {
+        if (!e.keyCode) {
+            e.keyCode = e.which;
+        }
+
+        if (e.shiftKey === true && e.keyCode === keymap.KEY.TAB) {
+            lastTabableElement[0].focus();
+            e.preventDefault(e);
+            e.stopPropagation(e);
+        }
+
+    };
+
+    var trapKeyboardFocusInLastElement = function (e) {
+        if (!e.keyCode) {
+            e.keyCode = e.which;
+        }
+
+        if (e.shiftKey === false && e.keyCode === keymap.KEY.TAB) {
+            firstTabableElement[0].focus();
+            e.preventDefault(e);
+            e.stopPropagation(e);
+        }
+    };
+    
+    var trapFocusInElement = function (flag, firstTabableElementParam, lastTabableElementParam) {
+        var bodyElements = $document.find('body').children();
+
+        firstTabableElement = firstTabableElementParam ? firstTabableElementParam : angular.element(DOMHelper.firstTabableElement(stackHead));
+        lastTabableElement = lastTabableElementParam ? lastTabableElementParam : angular.element(DOMHelper.lastTabableElement(stackHead));
+
+        if (flag) {
+            for (var i = 0; i < bodyElements.length; i++) {
+                if (bodyElements[i] !== stackHead[0]) {
+                    bodyElements.eq(i).attr('aria-hidden', true);
+                }
+            }
+            firstTabableElement.bind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.bind('keydown', trapKeyboardFocusInLastElement);
+        } else {
+            for (var j = 0; j < bodyElements.length; j++) {
+                if (bodyElements[j] !== stackHead[0]) {
+                    bodyElements.eq(j).removeAttr('aria-hidden');
+                }
+            }
+            firstTabableElement.unbind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.unbind('keydown', trapKeyboardFocusInLastElement);
+        }
+    };
+    var toggleTrapFocusInElement = function (flag, element) {
+        if (angular.isDefined(flag) && angular.isDefined(element)) {
+            if (angular.isUndefined(stackHead)) {
+                stackHead = element;
+                trapFocusInElement(flag);
+            } else {
+                if (flag) {
+                    trapFocusInElement(false);
+                    elementStack.push(stackHead);
+                    stackHead = element;
+                    trapFocusInElement(true);
+                } else {
+                    if (stackHead.prop('$$hashKey') === element.prop('$$hashKey')) {
+                        trapFocusInElement(false);
+                        stackHead = elementStack.pop();
+                        if (angular.isDefined(stackHead)) {
+                            trapFocusInElement(true);
+                        }
+                    }
+                }
+            }
+        }else {
+            if (angular.isDefined(stackHead)) {
+                trapFocusInElement(false, firstTabableElement, lastTabableElement);
+                trapFocusInElement(true);
+            }
+        }
+    };
+
+    return toggleTrapFocusInElement;
+}])
+
+/**
+ * A helper directive for the $modal service. It creates a backdrop element.
+ */
+.directive('b2bModalBackdrop', ['$modalStack', '$timeout', function ($modalStack, $timeout) {
+    return {
+        restrict: 'EA',
+        replace: true,
+        templateUrl: 'b2bTemplate/modalsAndAlerts/b2b-backdrop.html',
+        link: function (scope, element, attrs) {
+            scope.close = function (evt) {
+                var modal = $modalStack.getTop();
+                if (modal && modal.value.backdrop && modal.value.backdrop !== 'static') {
+                    evt.preventDefault();
+                    evt.stopPropagation();
+                    $modalStack.dismiss(modal.key, 'backdrop click');
+                }
+            };
+        }
+    };
+}])
+
+.directive('b2bModalWindow', ['$timeout', 'windowOrientation', '$window', function ($timeout, windowOrientation, $window) {
+    return {
+        restrict: 'EA',
+        scope: {
+            index: '@'
+        },
+        replace: true,
+        transclude: true,
+        templateUrl: 'b2bTemplate/modalsAndAlerts/b2b-window.html',
+        controller: ['$scope', '$element', '$attrs', function (scope, element, attrs) {
+            scope.windowClass = attrs.windowClass || '';
+            scope.sizeClass = attrs.sizeClass || '';
+            scope.isNotifDialog = false;
+
+            this.setTitle = function (title) {
+                scope.title = title;
+            };
+            this.setContent = function (content) {
+                scope.content = content;
+                scope.isNotifDialog = true;
+            };
+            this.isDockedModal = scope.windowClass.indexOf('modal-docked') > -1;
+        }],
+        link: function (scope, element, attrs, ctrl) {
+            if (ctrl.isDockedModal) {
+                scope.isModalLandscape = false;
+
+                var window = angular.element($window);
+                scope.updateCss = function () {
+                    if (windowOrientation.isPotrait()) { // Potrait Mode
+                        scope.isModalLandscape = false;
+                    } else if (windowOrientation.isLandscape()) { // Landscape Mode
+                        scope.isModalLandscape = true;
+                    }
+                };
+
+                $timeout(function () {
+                    scope.updateCss();
+                    scope.$apply();
+                }, 100);
+                window.bind('orientationchange', function () {
+                    scope.updateCss();
+                    scope.$apply();
+                });
+                window.bind('resize', function () {
+                    scope.updateCss();
+                    scope.$apply();
+                });
+            }else {
+                angular.element(element[0].querySelectorAll(".awd-select-list")).css({
+                    "max-height": "200px"
+                });
+            }
+
+            var isIE = /msie|trident/i.test(navigator.userAgent);
+            if (isIE) {
+                if(angular.element(element[0].querySelector('.corner-button button.close')).length > 0){
+                    angular.element(element[0].querySelector('.corner-button button.close')).bind('focus', function () {
+                       angular.element(element[0].querySelector('.b2b-modal-header'))[0].scrollLeft = 0;
+                       angular.element(element[0].querySelector('.b2b-modal-header'))[0].scrollTop = 0;
+                    });
+                }
+            }
+            
+        }
+    };
+}])
+
+.directive('b2bModalTitle', [function () {
+    return {
+        restrict: 'A',
+        require: '^b2bModalWindow',
+        link: function (scope, elem, attr, ctrl) {
+            ctrl.setTitle(attr.id);
+        }
+    };
+}])
+
+.directive('b2bModalContent', [function () {
+    return {
+        restrict: 'A',
+        require: '^b2bModalWindow',
+        link: function (scope, elem, attr, ctrl) {
+            ctrl.setContent(attr.id);
+        }
+    };
+}])
+
+
+.directive('b2bModalBody', ['$timeout', '$position', '$document', '$window', 'windowOrientation', 'b2bAwdBreakpoints', function ($timeout, $position, $document, $window, windowOrientation, b2bAwdBreakpoints) {
+    return {
+        restrict: 'AC',
+        scope: {
+            index: '@'
+        },
+        require: '^b2bModalWindow',
+        link: function (scope, element, attrs, ctrl) {
+            var window = angular.element($window);
+            var body = $document.find('body').eq(0);
+            scope.setModalHeight = function () {
+                var modalHeaderHeight, modalFooterHeight, modalBodyHeight, windowHeight, windowWidth, modalHeight;
+                modalHeaderHeight = 0;
+                modalFooterHeight = 0;
+                windowHeight = $window.innerHeight;
+                windowWidth = $window.innerWidth;
+                body.css({
+                    'height': windowHeight + 'px'
+                });
+
+                if (ctrl.isDockedModal) {
+                    var modalElements = element.parent().children();
+                    for (var i = 0; i < modalElements.length; i++) {
+                        if (modalElements.eq(i).hasClass('b2b-modal-header')) {
+                            modalHeaderHeight = $position.position(modalElements.eq(i)).height;
+                        } else if (modalElements.eq(i).hasClass('b2b-modal-footer')) {
+                            modalFooterHeight = $position.position(modalElements.eq(i)).height;
+                        }
+                    }
+
+                    modalHeight = $position.position(element.parent()).height;
+
+                    modalBodyHeight = modalHeight - (modalHeaderHeight + modalFooterHeight) + 'px';
+
+                    if (windowOrientation.isPotrait()) { // Potrait Mode
+                        element.removeAttr('style').css({
+                            height: modalBodyHeight
+                        });
+                    } else if (windowOrientation.isLandscape() && windowWidth < b2bAwdBreakpoints.breakpoints.mobile.max) { // Landscape Mode Mobile
+                        element.removeAttr('style');
+                    } else if (windowOrientation.isLandscape() && windowWidth >= b2bAwdBreakpoints.breakpoints.mobile.max) { // Landscape Mode Non-Mobile
+                        element.removeAttr('style').css({
+                            height: modalBodyHeight
+                        });
+                    }
+                }
+            };
+
+            $timeout(function () {
+                scope.setModalHeight();
+                scope.$apply();
+            }, 100);
+            window.bind('orientationchange', function () {
+                scope.setModalHeight();
+                scope.$apply();
+            });
+            window.bind('resize', function () {
+                scope.setModalHeight();
+                scope.$apply();
+            });
+        }
+    };
+}])
+
+.directive('b2bModalFooter', ['windowOrientation', '$window', function (windowOrientation, $window) {
+    return {
+        restrict: 'AC',
+        scope: {
+            index: '@'
+        },
+        link: function (scope, element, attrs) {
+
+        }
+    };
+}])
+
+.factory('$modalStack', ['$document', '$compile', '$rootScope', '$$stackedMap', '$log', '$timeout', 'trapFocusInElement', function ($document, $compile, $rootScope, $$stackedMap, $log, $timeout, trapFocusInElement) {
+    var backdropjqLiteEl, backdropDomEl;
+    var backdropScope = $rootScope.$new(true);
+    var body = $document.find('body').eq(0);
+    var html = $document.find('html').eq(0);
+    var openedWindows = $$stackedMap.createNew();
+    var $modalStack = {};
+
+    function backdropIndex() {
+        var topBackdropIndex = -1;
+        var opened = openedWindows.keys();
+        for (var i = 0; i < opened.length; i++) {
+            if (openedWindows.get(opened[i]).value.backdrop) {
+                topBackdropIndex = i;
+            }
+        }
+        return topBackdropIndex;
+    }
+
+    $rootScope.$watch(backdropIndex, function (newBackdropIndex) {
+        backdropScope.index = newBackdropIndex;
+    });
+
+    function removeModalWindow(modalInstance) {
+        //background scroll fix
+        html.removeAttr('style');
+        body.removeAttr('style');
+        body.removeClass('styled-by-modal');
+
+        var modalWindow = openedWindows.get(modalInstance).value;
+        trapFocusInElement(false, modalWindow.modalDomEl);
+
+        //clean up the stack
+        openedWindows.remove(modalInstance);
+
+        //remove window DOM element
+        modalWindow.modalDomEl.remove();
+
+        //remove backdrop if no longer needed
+        if (backdropDomEl && backdropIndex() === -1) {
+            backdropDomEl.remove();
+            backdropDomEl = undefined;
+        }
+
+        //destroy scope
+        modalWindow.modalScope.$destroy();
+    }
+
+    $document.bind('keydown', function (evt) {
+        var modal;
+
+        if (evt.which === 27) {
+            modal = openedWindows.top();
+            if (modal && modal.value.keyboard) {
+                $rootScope.$apply(function () {
+                    $modalStack.dismiss(modal.key);
+                });
+            }
+        }
+    });
+
+    $modalStack.open = function (modalInstance, modal) {
+
+        openedWindows.add(modalInstance, {
+            deferred: modal.deferred,
+            modalScope: modal.scope,
+            backdrop: modal.backdrop,
+            keyboard: modal.keyboard
+        });
+
+        var angularDomEl = angular.element('<div b2b-modal-window></div>');
+        angularDomEl.attr('window-class', modal.windowClass);
+        angularDomEl.attr('size-class', modal.sizeClass);
+        angularDomEl.attr('index', openedWindows.length() - 1);
+        angularDomEl.html(modal.content);
+
+        var modalDomEl = $compile(angularDomEl)(modal.scope);
+        openedWindows.top().value.modalDomEl = modalDomEl;
+        //background page scroll fix
+        html.css({
+            'overflow-y': 'hidden'
+        });
+        body.css({
+            'overflow-y': 'hidden',
+            'width': '100%',
+            'height': window.innerHeight + 'px'
+        });
+        body.addClass('styled-by-modal');
+        body.append(modalDomEl);
+
+        if (backdropIndex() >= 0 && !backdropDomEl) {
+            backdropjqLiteEl = angular.element('<div b2b-modal-backdrop></div>');
+            backdropDomEl = $compile(backdropjqLiteEl)(backdropScope);
+            body.append(backdropDomEl);
+        }
+
+        $timeout(function () {
+
+            if (modal.scope.$$childHead.isNotifDialog) {
+                angular.element(modalDomEl).find('button')[0].focus();
+            } else {
+                angular.element(modalDomEl)[0].focus();
+            }
+            trapFocusInElement(true, angular.element(modalDomEl).eq(0));
+        }, 200);
+    };
+
+    $modalStack.close = function (modalInstance, result) {
+        var modal = openedWindows.get(modalInstance);
+        if (modal) {
+            modal.value.deferred.resolve(result);
+            removeModalWindow(modalInstance);
+        }
+    };
+
+    $modalStack.dismiss = function (modalInstance, reason) {
+        var modalWindow = openedWindows.get(modalInstance).value;
+        if (modalWindow) {
+            modalWindow.deferred.reject(reason);
+            removeModalWindow(modalInstance);
+        }
+    };
+
+    $modalStack.getTop = function () {
+        return openedWindows.top();
+    };
+
+    return $modalStack;
+}])
+
+.provider('$modal', function () {
+    var $modalProvider = {
+        options: {
+            backdrop: true, //can be also false or 'static'
+            keyboard: true
+        },
+        $get: ['$injector', '$rootScope', '$q', '$http', '$templateCache', '$controller', '$modalStack', function ($injector, $rootScope, $q, $http, $templateCache, $controller, $modalStack) {
+            var $modal = {};
+
+            function getTemplatePromise(options) {
+                return options.template ? $q.when(options.template) :
+                    $http.get(options.templateUrl, {
+                        cache: $templateCache
+                    }).then(function (result) {
+                        return result.data;
+                    });
+            }
+
+            function getResolvePromises(resolves) {
+                var promisesArr = [];
+                angular.forEach(resolves, function (value, key) {
+                    if (angular.isFunction(value) || angular.isArray(value)) {
+                        promisesArr.push($q.when($injector.invoke(value)));
+                    }
+                });
+                return promisesArr;
+            }
+
+            $modal.open = function (modalOptions) {
+
+                var modalResultDeferred = $q.defer();
+                var modalOpenedDeferred = $q.defer();
+                //prepare an instance of a modal to be injected into controllers and returned to a caller
+                var modalInstance = {
+                    result: modalResultDeferred.promise,
+                    opened: modalOpenedDeferred.promise,
+                    close: function (result) {
+                        $modalStack.close(modalInstance, result);
+                    },
+                    dismiss: function (reason) {
+                        $modalStack.dismiss(modalInstance, reason);
+                    }
+                };
+
+                //merge and clean up options
+                modalOptions = angular.extend({}, $modalProvider.options, modalOptions);
+                modalOptions.resolve = modalOptions.resolve || {};
+
+                //verify options
+                if (!modalOptions.template && !modalOptions.templateUrl) {
+                    throw new Error('One of template or templateUrl options is required.');
+                }
+
+                var templateAndResolvePromise =
+                    $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve)));
+
+
+                templateAndResolvePromise.then(function resolveSuccess(tplAndVars) {
+
+                    var modalScope = (modalOptions.scope || $rootScope).$new();
+                    modalScope.$close = modalInstance.close;
+                    modalScope.$dismiss = modalInstance.dismiss;
+
+                    var ctrlInstance, ctrlLocals = {};
+                    var resolveIter = 1;
+
+                    //controllers
+                    if (modalOptions.controller) {
+                        ctrlLocals.$scope = modalScope;
+                        ctrlLocals.$modalInstance = modalInstance;
+                        angular.forEach(modalOptions.resolve, function (value, key) {
+                            ctrlLocals[key] = tplAndVars[resolveIter++];
+                        });
+
+                        ctrlInstance = $controller(modalOptions.controller, ctrlLocals);
+                    }
+
+                    $modalStack.open(modalInstance, {
+                        scope: modalScope,
+                        deferred: modalResultDeferred,
+                        content: tplAndVars[0],
+                        backdrop: modalOptions.backdrop,
+                        keyboard: modalOptions.keyboard,
+                        windowClass: modalOptions.windowClass,
+                        sizeClass: modalOptions.sizeClass
+                    });
+
+                }, function resolveError(reason) {
+                    modalResultDeferred.reject(reason);
+                });
+
+                templateAndResolvePromise.then(function () {
+                    modalOpenedDeferred.resolve(true);
+                }, function () {
+                    modalOpenedDeferred.reject(false);
+                });
+
+                return modalInstance;
+            };
+
+            return $modal;
+        }]
+    };
+
+    return $modalProvider;
+})
+
+.directive("b2bModal", ["$modal", "$log", '$scrollTo', function ($modal, $log, $scrollTo) {
+    return {
+        restrict: 'A',
+        scope: {
+            b2bModal: '@',
+            modalController: '@',
+            modalOk: '&',
+            modalCancel: '&',
+            windowClass: '@',
+            sizeClass: '@'
+        },
+        link: function (scope, elm, attr) {
+            elm.bind('click', function (ev) {
+                var currentPosition = ev.pageY - ev.clientY;
+                ev.preventDefault();
+                if (angular.isDefined(elm.attr("href")) && elm.attr("href") !== "") {
+                    scope.b2bModal = elm.attr("href");
+                }
+                $modal.open({
+                    templateUrl: scope.b2bModal,
+                    controller: scope.modalController,
+                    windowClass: scope.windowClass,
+                    sizeClass: scope.sizeClass
+                }).result.then(function (value) {
+                    scope.modalOk({
+                        value: value
+                    });
+                    elm[0].focus();
+                }, function (value) {
+                    scope.modalCancel({
+                        value: value
+                    });
+                    elm[0].focus();
+                });
+            });
+        }
+    };
+}])
+
+.directive("utilityFilter", ["$modal", "$log", '$scrollTo', function ($modal, $log, $scrollTo) {
+    return {
+        restrict: 'EA',
+        scope: {
+            utilityFilter: '@'
+        },
+        require: 'ngModel',
+        templateUrl: 'b2bTemplate/modal/u-filter.html',
+        link: function (scope, element, attribute, ctrl) {
+            //controller to be passed to $modal service
+            scope.options = angular.copy(scope.$parent.$eval(attribute.ngModel));
+            scope.$parent.$watch(attribute.ngModel, function (newVal, oldVal) {
+                if (newVal !== oldVal) {
+                    scope.options = newVal;
+                }
+            });
+            var modalCtrl = function ($scope, options) {
+                $scope.options = angular.copy(options);
+            };
+
+            if (angular.isDefined(scope.utilityFilter)) {
+                scope.templateUrl = scope.utilityFilter;
+            } else {
+                scope.templateUrl = 'b2bTemplate/modal/u-filter-window.html';
+            }
+            element.bind('click', function (ev) {
+                var currentPosition = ev.pageY - ev.clientY;
+                $modal.open({
+                    templateUrl: scope.templateUrl,
+                    controller: modalCtrl,
+                    resolve: {
+                        options: function () {
+                            return scope.options;
+                        }
+                    }
+                }).result.then(function (value) {
+                    ctrl.$setViewValue(value);
+                    element[0].focus();
+                    $scrollTo(0, currentPosition, 0);
+                }, function () {
+                    element[0].focus();
+                    $scrollTo(0, currentPosition, 0);
+                });
+            });
+        }
+    };
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:monthSelector
+ *
+ * @description
+ *  <file src="src/monthSelector/docs/readme.md" />
+ *
+ * @usage
+ * <div b2b-monthpicker ng-model="dt" min="minDate" max="maxDate" mode="monthpicker"></div>
+    
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/monthSelector/docs/demo.html" />
+            <file src="src/monthSelector/docs/demo.js" />
+        </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.monthSelector', ['b2b.att.position', 'b2b.att.utilities'])
+
+.constant('b2bMonthpickerConfig', {
+    dateFormat: 'MM/dd/yyyy',
+    dayFormat: 'd',
+    monthFormat: 'MMMM',
+    yearFormat: 'yyyy',
+    dayHeaderFormat: 'EEEE',
+    dayTitleFormat: 'MMMM yyyy',
+    disableWeekend: false,
+    disableSunday: false,
+    disableDates: null,
+    onSelectClose: null,
+    startingDay: 0,
+    minDate: null,
+    maxDate: null,
+    dueDate: null,
+    fromDate: null,
+    legendIcon: null,
+    legendMessage: null,
+    calendarDisabled: false,
+    collapseWait: 0,
+    orientation: 'left',
+    inline: false,
+    mode:0,
+    helperText: 'The date you selected is $date. Double tap to open calendar. Select a date to close the calendar.',
+    descriptionText: 'Use tab to navigate between previous button, next button and month. Use arrow keys to navigate between months. Use space or enter to select a month.',
+    MonthpickerEvalAttributes: ['dateFormat', 'dayFormat', 'monthFormat', 'yearFormat', 'dayHeaderFormat', 'dayTitleFormat', 'disableWeekend', 'disableSunday', 'startingDay', 'collapseWait', 'orientation','mode','id'],
+    MonthpickerWatchAttributes: ['min', 'max', 'due', 'from', 'legendIcon', 'legendMessage', 'ngDisabled'],
+    MonthpickerFunctionAttributes: ['disableDates', 'onSelectClose']
+})
+
+.factory('b2bMonthpickerService', ['b2bMonthpickerConfig', 'dateFilter', function (b2bMonthpickerConfig, dateFilter) {
+    var setAttributes = function (attr, elem) {
+        if (angular.isDefined(attr) && attr !== null && angular.isDefined(elem) && elem !== null) {
+            var attributes = b2bMonthpickerConfig.MonthpickerEvalAttributes.concat(b2bMonthpickerConfig.MonthpickerWatchAttributes, b2bMonthpickerConfig.MonthpickerFunctionAttributes);
+            for (var key in attr) {
+                var val = attr[key];
+                if (attributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    elem.attr(key.toSnakeCase(), key);
+                }
+            }
+        }
+    };
+
+    var bindScope = function (attr, scope) {
+        if (angular.isDefined(attr) && attr !== null && angular.isDefined(scope) && scope !== null) {
+            var evalFunction = function (key, val) {
+                scope[key] = scope.$parent.$eval(val);
+            };
+
+            var watchFunction = function (key, val) {
+                scope.$parent.$watch(val, function (value) {
+                    scope[key] = value;
+                });
+                scope.$watch(key, function (value) {
+                    scope.$parent[val] = value;
+                });
+            };
+
+            var evalAttributes = b2bMonthpickerConfig.MonthpickerEvalAttributes;
+            var watchAttributes = b2bMonthpickerConfig.MonthpickerWatchAttributes;
+            for (var key in attr) {
+                var val = attr[key];
+                if (evalAttributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    evalFunction(key, val);
+                } else if (watchAttributes.indexOf(key) !== -1 && angular.isDefined(val)) {
+                    watchFunction(key, val);
+                }
+            }
+        }
+    };
+
+    return {
+        setAttributes: setAttributes,
+        bindScope: bindScope
+    };
+}])
+
+.controller('b2bMonthpickerController', ['$scope', '$attrs', 'dateFilter', '$element', '$position', 'b2bMonthpickerConfig', function ($scope, $attrs, dateFilter, $element, $position, dtConfig) {
+    var format = {
+            date: getValue($attrs.dateFormat, dtConfig.dateFormat),
+            day: getValue($attrs.dayFormat, dtConfig.dayFormat),
+            month: getValue($attrs.monthFormat, dtConfig.monthFormat),
+            year: getValue($attrs.yearFormat, dtConfig.yearFormat),
+            dayHeader: getValue($attrs.dayHeaderFormat, dtConfig.dayHeaderFormat),
+            dayTitle: getValue($attrs.dayTitleFormat, dtConfig.dayTitleFormat),
+            disableWeekend: getValue($attrs.disableWeekend, dtConfig.disableWeekend),
+            disableSunday: getValue($attrs.disableSunday, dtConfig.disableSunday),
+            disableDates: getValue($attrs.disableDates, dtConfig.disableDates)
+        },
+        startingDay = getValue($attrs.startingDay, dtConfig.startingDay);
+
+    $scope.minDate = dtConfig.minDate ? $scope.resetTime(dtConfig.minDate) : null;
+    $scope.maxDate = dtConfig.maxDate ? $scope.resetTime(dtConfig.maxDate) : null;
+    $scope.dueDate = dtConfig.dueDate ? $scope.resetTime(dtConfig.dueDate) : null;
+    $scope.fromDate = dtConfig.fromDate ? $scope.resetTime(dtConfig.fromDate) : null;
+    $scope.legendIcon = dtConfig.legendIcon ? dtConfig.legendIcon : null;
+    $scope.legendMessage = dtConfig.legendMessage ? dtConfig.legendMessage : null;
+    $scope.ngDisabled = dtConfig.calendarDisabled ? dtConfig.calendarDisabled : null;
+    $scope.collapseWait = getValue($attrs.collapseWait, dtConfig.collapseWait);
+    $scope.orientation = getValue($attrs.orientation, dtConfig.orientation);
+    $scope.onSelectClose = getValue($attrs.onSelectClose, dtConfig.onSelectClose);
+    $scope.mode = getValue($attrs.mode, dtConfig.mode);
+    
+    $scope.inline = $attrs.inline === 'true' ? true : dtConfig.inline;
+
+    function getValue(value, defaultValue) {
+        return angular.isDefined(value) ? $scope.$parent.$eval(value) : defaultValue;
+    }
+
+    function getDaysInMonth(year, month) {
+        return new Date(year, month, 0).getDate();
+    }
+
+    function getDates(startDate, n) {
+        var dates = new Array(n);
+        var current = startDate,
+            i = 0;
+        while (i < n) {
+            dates[i++] = new Date(current);
+            current.setDate(current.getDate() + 1);
+        }
+        return dates;
+    }
+
+    this.updatePosition = function (b2bMonthpickerPopupTemplate) {
+        $scope.position = $position.offset($element);
+        if($element.find('input').length > 0 ){
+            $scope.position.top += $element.find('input').prop('offsetHeight');
+        }else{
+            $scope.position.top += $element.find('a').prop('offsetHeight');
+        }
+        
+        if ($scope.orientation === 'right') {
+            $scope.position.left -= (((b2bMonthpickerPopupTemplate && b2bMonthpickerPopupTemplate.prop('offsetWidth')) || 290) - $element.find('input').prop('offsetWidth'));
+        }
+    };
+
+    function isSelected(dt) { 
+        if (dt && angular.isDate($scope.currentDate) && compare(dt, $scope.currentDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isFromDate(dt) {
+        if (dt && angular.isDate($scope.fromDate) && compare(dt, $scope.fromDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isDateRange(dt) {
+        if (dt && $scope.fromDate && angular.isDate($scope.currentDate) && (compare(dt, $scope.fromDate) >= 0) && (compare(dt, $scope.currentDate) <= 0)) {
+            return true;
+        } else if (dt && $scope.fromDate && compare(dt, $scope.fromDate) === 0) {
+            return true;
+        }
+        return false;
+    }
+
+    function isOld(date, currentMonthDate) {
+        if (date && currentMonthDate && (new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0).getTime() < new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 1, 0, 0, 0).getTime())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    function isNew(date, currentMonthDate) {
+        if (date && currentMonthDate && (new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0).getTime() > new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 1, 0, 0, 0).getTime())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    function isPastDue(dt) {
+        if ($scope.dueDate) {
+            return (dt > $scope.dueDate);
+        }
+        return false;
+    }
+
+    function isDueDate(dt) {
+        if ($scope.dueDate) {
+            return (dt.getTime() === $scope.dueDate.getTime());
+        }
+        return false;
+    }
+
+    var isDisabled = function (date, currentMonthDate) {
+        if ($attrs.from && !angular.isDate($scope.fromDate)) {
+            return true;
+        }
+        if (format.disableWeekend === true && (dateFilter(date, format.dayHeader) === "Saturday" || dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        if (format.disableSunday === true && (dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        if (isOld(date, currentMonthDate) || isNew(date, currentMonthDate)) {
+            return true;
+        }
+        return (($scope.minDate && compare(date, $scope.minDate) < 0) || ($scope.maxDate && compare(date, $scope.maxDate) > 0) || (format.disableDates && format.disableDates({
+            date: date
+        })));
+    };
+    
+    var isDisabledMonth = function (date, currentMonthDate) {
+        if ($attrs.from && !angular.isDate($scope.fromDate)) {
+            return true;
+        }
+        if (format.disableWeekend === true && (dateFilter(date, format.dayHeader) === "Saturday" || dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        if (format.disableSunday === true && (dateFilter(date, format.dayHeader) === "Sunday")) {
+            return true;
+        }
+        return (($scope.minDate && compare(date, $scope.minDate) < 0) || ($scope.maxDate && compare(date, $scope.maxDate) > 0) || (format.disableDates && format.disableDates({
+            date: date
+        })));
+    };    
+         
+    var compare = function (date1, date2) {
+        return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()));
+    };
+
+    function isMinDateAvailable(startDate, endDate) {
+        if (($scope.minDate && $scope.minDate.getTime() >= startDate.getTime()) && ($scope.minDate.getTime() <= endDate.getTime())) {
+            $scope.disablePrev = true;
+            $scope.visibilityPrev = "hidden";
+        } else {
+            $scope.disablePrev = false;
+            $scope.visibilityPrev = "visible";
+        }
+    }
+    
+    function isMaxDateAvailable(startDate, endDate) {
+        if (($scope.maxDate && $scope.maxDate.getTime() >= startDate.getTime()) && ($scope.maxDate.getTime() <= endDate.getTime())) {
+            $scope.disableNext = true;
+            $scope.visibilityNext = "hidden";
+        } else {
+            $scope.disableNext = false;
+            $scope.visibilityNext = "visible";
+        }
+    }    
+    
+    function isYearInRange(currentYear) {
+            
+        if ($scope.minDate && currentYear === $scope.minDate.getFullYear()) {
+            $scope.disablePrev = true;
+            $scope.visibilityPrev = "hidden";
+        } else {
+            $scope.disablePrev = false;
+            $scope.visibilityPrev = "visible";
+        }
+        
+        if ($scope.maxDate && currentYear === $scope.maxDate.getFullYear()) {
+            $scope.disableNext = true;
+            $scope.visibilityNext = "hidden";
+        } else {
+            $scope.disableNext = false;
+            $scope.visibilityNext = "visible";
+        }
+        
+    }    
+
+    this.focusNextPrev = function(b2bMonthpickerPopupTemplate,init){
+        if(init){
+            if (!$scope.disablePrev){
+                b2bMonthpickerPopupTemplate[0].querySelector('th.prev').focus();
+            }else if (!$scope.disableNext){
+                b2bMonthpickerPopupTemplate[0].querySelector('th.next').focus();
+            }else{
+                b2bMonthpickerPopupTemplate[0].querySelector('th.b2b-monthSelector-label').focus();
+            }
+        }else{
+            if ($scope.disableNext || $scope.disablePrev){
+                b2bMonthpickerPopupTemplate[0].querySelector('th.b2b-monthSelector-label').focus();
+            }       
+        }    
+    };
+
+    function getLabel(label) {
+        if (label) {
+            var labelObj = {
+                pre: label.substr(0, 1).toUpperCase(),
+                post: label
+            };
+            return labelObj;
+        }
+        return;
+    }
+
+    function makeDate(date, dayFormat, dayHeaderFormat, isSelected, isFromDate, isDateRange, isOld, isNew, isDisabled, dueDate, pastDue) {
+        return {
+            date: date,
+            label: dateFilter(date, dayFormat),
+            header: dateFilter(date, dayHeaderFormat),
+            selected: !!isSelected,
+            fromDate: !!isFromDate,
+            dateRange: !!isDateRange,
+            oldMonth: !!isOld,
+            nextMonth: !!isNew,
+            disabled: !!isDisabled,
+            dueDate: !!dueDate,
+            pastDue: !!pastDue,
+            focusable: !((isDisabled && !(isSelected || isDateRange)) || (isOld || isNew))
+        };
+    }
+    
+    this.modes = [
+        {
+            name: 'day',
+            getVisibleDates: function (date) {
+                var year = date.getFullYear(),
+                    month = date.getMonth(),
+                    firstDayOfMonth = new Date(year, month, 1),
+                    lastDayOfMonth = new Date(year, month + 1, 0);
+                var difference = startingDay - firstDayOfMonth.getDay(),
+                    numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : -difference,
+                    firstDate = new Date(firstDayOfMonth),
+                    numDates = 0;
+
+                if (numDisplayedFromPreviousMonth > 0) {
+                    firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
+                    numDates += numDisplayedFromPreviousMonth; // Previous
+                }
+                numDates += getDaysInMonth(year, month + 1); // Current
+                numDates += (7 - numDates % 7) % 7; // Next
+
+                var days = getDates(firstDate, numDates),
+                    labels = new Array(7);
+                for (var i = 0; i < numDates; i++) {
+                    var dt = new Date(days[i]);
+                    days[i] = makeDate(dt,
+                        format.day,
+                        format.dayHeader,
+                        isSelected(dt),
+                        isFromDate(dt),
+                        isDateRange(dt),
+                        isOld(dt, date),
+                        isNew(dt, date),
+                        isDisabled(dt, date),
+                        isDueDate(dt),
+                        isPastDue(dt));
+                }
+                for (var j = 0; j < 7; j++) {
+                    labels[j] = getLabel(dateFilter(days[j].date, format.dayHeader));
+                }
+                isMinDateAvailable(firstDayOfMonth, lastDayOfMonth);
+                isMaxDateAvailable(firstDayOfMonth, lastDayOfMonth);
+                return {
+                    objects: days,
+                    title: dateFilter(date, format.dayTitle),
+                    labels: labels
+                };
+            },
+            split: 7,
+            step: {
+                months: 1
+            }
+        },
+        {
+            name: 'month',
+            getVisibleDates: function(date) {
+                var months = [], 
+                    labels = [], 
+                    year = date.getFullYear();
+                    for (var i = 0; i < 12; i++) {
+                        var dt = new Date(year,i,1);                
+                        months[i] = makeDate(dt,
+                                    format.month,
+                                    format.dayHeader,
+                                    isSelected(dt), 
+                                    isFromDate(dt),
+                                    isDateRange(dt),
+                                    false,
+                                    false,
+                                    isDisabledMonth(dt, date),
+                                    isDueDate(dt),                                       
+                                    isPastDue(dt));                                                                                                                                                         
+                    }
+                isYearInRange(year);  
+                return {objects: months, title: dateFilter(date, format.year), labels: labels};
+            },
+            split:4,
+            step: {years: 1}
+        }
+    ];
+}])
+
+.directive('b2bMonthpickerPopup', ['$parse', '$log', '$timeout', '$document', '$documentBind', '$isElement', '$templateCache', '$compile','$interval', 'trapFocusInElement', 'keymap', function ($parse, $log, $timeout, $document, $documentBind, $isElement, $templateCache, $compile, $interval,trapFocusInElement, keymap) {
+    return {
+        restrict: 'EA',
+        scope: {
+          trigger: '='
+        },
+        replace: true,
+        transclude: true,
+        templateUrl: function (elem, attr) {
+            if (attr.inline === 'true') {
+                return 'b2bTemplate/monthSelector/monthSelector-popup.html';
+            }else if (attr.link === 'true') {
+                return 'b2bTemplate/monthSelector/monthSelectorLink.html';
+            }else {
+                return 'b2bTemplate/monthSelector/monthSelector.html';
+            }
+        },
+        scope: {},
+        require: ['b2bMonthpickerPopup', 'ngModel', '?^b2bMonthpickerGroup'],
+        controller: 'b2bMonthpickerController',
+        link: function (scope, element, attrs, ctrls) {
+            var MonthpickerCtrl = ctrls[0],
+                ngModel = ctrls[1],
+                b2bMonthpickerGroupCtrl = ctrls[2];
+            var b2bMonthpickerPopupTemplate;
+
+            if (!ngModel) {
+                $log.error("ng-model is required.");
+                return; // do nothing if no ng-model
+            }
+
+            // Configuration parameters
+            var mode = scope.mode,
+                selected;
+            scope.isOpen = false;
+
+            scope.headers = [];
+            scope.footers = [];
+            scope.triggerInterval=undefined;
+
+
+            if (b2bMonthpickerGroupCtrl) {
+                b2bMonthpickerGroupCtrl.registerMonthpickerScope(scope);
+            }
+
+            element.bind('keydown', function (ev) {                   
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }                                
+                if(ev.keyCode === keymap.KEY.ESC)
+                {
+                    scope.isOpen = false;
+                    toggleCalendar(scope.isOpen);
+                    scope.$apply();
+                }
+            });
+            
+            element.find('button').bind('click', function () {
+                onClicked();                
+            });
+
+            element.find('a').bind('click', function () {
+                onClicked();                
+            });
+
+            
+            element.find('input').bind('click', function () {
+                onClicked();
+            });
+
+            var onClicked = function() {        
+                if (!scope.ngDisabled) {
+                    scope.isOpen = !scope.isOpen;
+                    toggleCalendar(scope.isOpen);                    
+                    MonthpickerCtrl.updatePosition(b2bMonthpickerPopupTemplate);
+                    scope.$apply();
+                }
+            };
+        
+            var toggleCalendar = function (flag) {
+                if (!scope.inline) {
+                    if (flag) {
+                        b2bMonthpickerPopupTemplate = angular.element($templateCache.get('b2bTemplate/monthSelector/monthSelector-popup.html'));
+                        b2bMonthpickerPopupTemplate.attr('b2b-trap-focus-inside-element', 'false');
+                        b2bMonthpickerPopupTemplate.attr('trigger', 'true');
+                        b2bMonthpickerPopupTemplate = $compile(b2bMonthpickerPopupTemplate)(scope);
+                        $document.find('body').append(b2bMonthpickerPopupTemplate);
+                        b2bMonthpickerPopupTemplate.bind('keydown', escPress);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            scope.trigger=0;
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false;
+                                scope.$apply();
+                                MonthpickerCtrl.focusNextPrev(b2bMonthpickerPopupTemplate,true);
+                            }, 100);
+                        });
+                        scope.triggerInterval = $interval(function () {
+                            //This value is updated to trigger init() function of directive on year change.
+                            scope.trigger=(scope.trigger === 0 ? 1 : 0);
+                        }, 200);
+
+                    } else {
+                        b2bMonthpickerPopupTemplate.unbind('keydown', escPress);
+                        if(scope.triggerInterval)
+                        {
+                            $interval.cancel(scope.triggerInterval);
+                            scope.triggerInterval=undefined;
+                        }
+                        b2bMonthpickerPopupTemplate.remove();
+                        if(element.find('button').length > 0){
+                            element.find('button')[0].focus();
+                        }else{
+                            element.find('a')[0].focus();
+                        }
+                        
+                        scope.getFocus = false;
+                    }
+                }
+            };
+
+            var outsideClick = function (e) {
+                var isElement = $isElement(angular.element(e.target), element, $document);
+                var isb2bMonthpickerPopupTemplate = $isElement(angular.element(e.target), b2bMonthpickerPopupTemplate, $document);
+                if (!(isElement || isb2bMonthpickerPopupTemplate)) {
+                    scope.isOpen = false;
+                    toggleCalendar(scope.isOpen);
+                    scope.$apply();
+                }
+            };
+
+            var escPress = function (ev) {
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }
+                if (ev.keyCode) {
+                    if (ev.keyCode === keymap.KEY.ESC) {
+                        scope.isOpen = false;
+                        toggleCalendar(scope.isOpen);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === 33) {
+                        !scope.disablePrev && scope.move(-1);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false;
+                                scope.$apply();
+                            }, 100);
+                        });
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === 34) {
+                        !scope.disableNext && scope.move(1);
+                        $timeout(function () {
+                            scope.getFocus = true;
+                            scope.$apply();
+                            $timeout(function () {
+                                scope.getFocus = false;
+                                scope.$apply();
+                            }, 100);
+                        });
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    }
+                    scope.$apply();
+                }
+            };              
+                    
+            $documentBind.click('isOpen', outsideClick, scope);
+
+            scope.$on('$destroy', function () {
+                if (scope.isOpen) {
+                    scope.isOpen = false;
+                    toggleCalendar(scope.isOpen);
+                }
+            });
+
+            scope.resetTime = function (date) {
+                if (typeof date === 'string') {
+                    date = date + 'T12:00:00';
+                }
+                var dt;
+                if (!isNaN(new Date(date))) {
+                    dt = new Date(date);
+                    if(scope.mode === 1){
+                        dt = new Date(dt.getFullYear(), dt.getMonth());
+                    }else{
+                        dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());
+                    }                                                            
+                } else {
+                    return null;
+                }
+                return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());
+            };
+            
+            if (attrs.min) {
+                scope.$parent.$watch($parse(attrs.min), function (value) {
+                    scope.minDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.max) {
+                scope.$parent.$watch($parse(attrs.max), function (value) {
+                    scope.maxDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.due) {
+                scope.$parent.$watch($parse(attrs.due), function (value) {
+                    scope.dueDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+            if (attrs.from) {
+                scope.$parent.$watch($parse(attrs.from), function (value) {
+                    scope.fromDate = value ? scope.resetTime(value) : null;
+                    refill();
+                });
+            }
+
+            if (attrs.legendIcon) {
+                scope.$parent.$watch(attrs.legendIcon, function (value) {
+                    scope.legendIcon = value ? value : null;
+                    refill();
+                });
+            }
+            if (attrs.legendMessage) {
+                scope.$parent.$watch(attrs.legendMessage, function (value) {
+                    scope.legendMessage = value ? value : null;
+                    refill();
+                });
+            }
+            if (attrs.ngDisabled) {
+                scope.$parent.$watch(attrs.ngDisabled, function (value) {
+                    scope.ngDisabled = value ? value : null;
+                });
+            }      
+            
+
+            // Split array into smaller arrays
+            function split(arr, size) {
+                var arrays = [];
+                while (arr.length > 0) {
+                    arrays.push(arr.splice(0, size));
+                }
+                return arrays;
+            }
+            
+            var moveMonth = function(selectedDate, direction) {
+                var step = MonthpickerCtrl.modes[scope.mode].step;
+                selectedDate.setDate(1);
+                selectedDate.setMonth(selectedDate.getMonth() + direction * (step.months || 0));
+                selectedDate.setFullYear(selectedDate.getFullYear() + direction * (step.years || 0));
+
+                return selectedDate;
+            };            
+
+            function refill(date) {
+                if (angular.isDate(date) && !isNaN(date)) {
+                    selected = new Date(date);
+                } else {
+                    if (!selected) {
+                        selected = new Date();
+                    }
+                }
+
+                if (selected) {                    
+                    var selectedCalendar;
+                    if(scope.mode === 1){
+                        if(!angular.isDate(selected))
+                           {                           
+                                selected = new Date();
+                           }
+                        selectedCalendar = moveMonth(angular.copy(selected), -1);
+                    } else {
+                        selectedCalendar = angular.copy(selected);
+                    }
+                    
+                    var currentMode = MonthpickerCtrl.modes[mode],
+                        data = currentMode.getVisibleDates(selected);
+
+                    scope.rows = split(data.objects, currentMode.split);
+            
+                    var flag=false;
+                    var startFlag=false;
+                    var firstSelected = false;
+                    for(var i=0; i<scope.rows.length; i++)
+                    {
+                        for(var j=0; j<scope.rows[i].length; j++)
+                        {
+                            if(!scope.rows[i][j].disabled && !firstSelected)
+                            {
+                                firstSelected=true;
+                                var firstDay = scope.rows[i][j];
+                            }
+
+                            if(scope.rows[i][j].selected)
+                            {
+                                flag=true;
+                                break;
+                            }                  
+                        }
+                        if(flag)
+                        {
+                            break;
+                        }
+                    }
+                    if(!flag && firstSelected)
+                    {
+                       firstDay.firstFocus=true;
+                    }
+
+                    scope.labels = data.labels || [];
+                    scope.title = data.title;                    
+                }
+            }
+
+            scope.select = function (date,$event) {
+                var dt = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+                scope.currentDate = dt;
+                if (!scope.onSelectClose || (scope.onSelectClose && scope.onSelectClose({
+                        date: dt
+                    }) !== false)) {
+                    if (angular.isNumber(scope.collapseWait)) {
+                        $timeout(function () {
+                            scope.isOpen = false;
+                            toggleCalendar(scope.isOpen);
+                        }, scope.collapseWait);
+                    } else {
+                        scope.isOpen = false;
+                        toggleCalendar(scope.isOpen);
+                    }
+                }
+            };
+
+            scope.move = function (direction,$event) {
+                var step = MonthpickerCtrl.modes[mode].step;
+                selected.setDate(1);
+                selected.setMonth(selected.getMonth() + direction * (step.months || 0));
+                selected.setFullYear(selected.getFullYear() + direction * (step.years || 0));
+                refill();
+                scope.getFocus = true;
+                $timeout(function () {
+                    if (attrs.inline === 'true') {
+                        MonthpickerCtrl.focusNextPrev(element,false); 
+                    }else{
+                        MonthpickerCtrl.focusNextPrev(b2bMonthpickerPopupTemplate,false);
+                    }
+                },100);
+                $event.preventDefault();
+                $event.stopPropagation();
+            };
+
+            scope.$watch('currentDate', function (value) {
+                if (angular.isDefined(value) && value !== null) {
+                    refill(value);
+                } else {
+                    refill();
+                }
+                ngModel.$setViewValue(value);
+            });
+
+            ngModel.$render = function () {
+                scope.currentDate = ngModel.$viewValue;
+            };
+
+            var stringToDate = function (value) {
+                if (!isNaN(new Date(value))) {
+                    value = new Date(value);
+                }
+                return value;
+            };
+            ngModel.$formatters.unshift(stringToDate);
+        }
+    };
+}])
+
+.directive('b2bMonthpicker', ['$compile', '$log', 'b2bMonthpickerConfig', 'b2bMonthpickerService', function ($compile, $log, b2bMonthpickerConfig, b2bMonthpickerService) {
+    return {
+        restrict: 'A',
+        scope: {
+            disableDates: '&',
+            onSelectClose: '&'
+        },
+        require: 'ngModel',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            var dateFormatString = angular.isDefined(attr.dateFormat) ? scope.$parent.$eval(attr.dateFormat) : b2bMonthpickerConfig.dateFormat;
+            var helperText = angular.isDefined(attr.helperText) ? scope.$parent.$eval(attr.helperText) : b2bMonthpickerConfig.helperText; 
+            helperText = helperText.replace('$date', '{{dt | date : \'' + dateFormatString + '\'}}');
+
+            var descriptionText = angular.isDefined(attr.descriptionText) ? scope.$parent.$eval(attr.descriptionText) : b2bMonthpickerConfig.descriptionText;  
+
+
+            var inline = false;
+            if (elem.prop('nodeName') !== 'INPUT' && elem.prop('nodeName') !== 'A') {
+                inline = true;
+            }
+
+            var selectedDateMessage = "";
+            
+            if (elem.prop('nodeName') !== 'A'){
+                selectedDateMessage = '<button type="button" class="span12 faux-input" ng-disabled="ngDisabled" aria-describedby="monthpicker-description'+scope.$id+'"><span class="hidden-spoken" aria-live="assertive" aria-atomic="false">' + helperText + '</span></button>';    
+                elem.attr('tabindex', '-1'); 
+                elem.attr('aria-hidden', 'true');  
+                elem.attr('readonly', 'true'); 
+            }else{
+                selectedDateMessage = ''
+                elem.attr('aria-label', helperText);
+            }
+            
+            var descriptionTextSpan = '<span class="offscreen-text" id="monthpicker-description'+scope.$id+'">'+descriptionText+'</span>';
+            elem.removeAttr('b2b-Monthpicker');
+            elem.removeAttr('ng-model');
+            elem.removeAttr('ng-disabled');
+            elem.addClass('Monthpicker-input');
+            elem.attr('ng-model', 'dt');
+            elem.attr('aria-describedby', 'monthpicker-description'+scope.$id);
+            
+            
+            
+            elem.attr('ng-disabled', 'ngDisabled');
+            elem.attr('b2b-format-date', dateFormatString);
+
+            var wrapperElement = angular.element('<div></div>');
+            wrapperElement.attr('b2b-Monthpicker-popup', '');
+            wrapperElement.attr('ng-model', 'dt');
+            if (inline) {
+                wrapperElement.attr('inline', inline);
+            }
+            if (elem.prop('nodeName') === 'A'){
+                wrapperElement.attr('link', true);
+            }
+            b2bMonthpickerService.setAttributes(attr, wrapperElement);
+            b2bMonthpickerService.bindScope(attr, scope);
+
+            wrapperElement.html('');
+            wrapperElement.append(selectedDateMessage);
+            wrapperElement.append('');
+            wrapperElement.append(descriptionTextSpan);
+            wrapperElement.append('');
+            wrapperElement.append(elem.prop('outerHTML'));
+
+            var elm = wrapperElement.prop('outerHTML');
+            elm = $compile(elm)(scope);
+            elem.replaceWith(elm);
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            if (!ctrl) {
+                $log.error("ng-model is required.");
+                return; // do nothing if no ng-model
+            }
+            
+            scope.$watch('dt', function (value) {
+                ctrl.$setViewValue(value);
+            });
+            ctrl.$render = function () {
+                scope.dt = ctrl.$viewValue;
+            };
+        }
+    };
+}])
+
+.directive('b2bMonthpickerGroup', [function () {
+    return {
+        restrict: 'EA',
+        controller: ['$scope', '$element', '$attrs', function (scope, elem, attr) {
+            this.$$headers = [];
+            this.$$footers = [];
+            this.registerMonthpickerScope = function (MonthpickerScope) {
+                MonthpickerScope.headers = this.$$headers;
+                MonthpickerScope.footers = this.$$footers;
+            };
+        }],
+        link: function (scope, elem, attr, ctrl) {}
+    };
+}])
+
+.directive('b2bFormatDate', ['dateFilter', function (dateFilter) {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            var b2bFormatDate = "";
+            attr.$observe('b2bFormatDate', function (value) {
+                b2bFormatDate = value;
+            });
+            var dateToString = function (value) {
+                if (!isNaN(new Date(value))) {
+                    return dateFilter(new Date(value), b2bFormatDate);
+                }
+                return value;
+            };
+            ctrl.$formatters.unshift(dateToString);
+        }
+    };
+}])
+
+.directive('b2bMonthpickerHeader', [function () {
+    return {
+        restrict: 'EA',
+        require: '^b2bMonthpickerGroup',
+        transclude: true,
+        replace: true,
+        template: '',
+        compile: function (elem, attr, transclude) {
+            return function link(scope, elem, attr, ctrl) {
+                if (ctrl) {
+                    ctrl.$$headers.push(transclude(scope, function () {}));
+                }
+                elem.remove();
+            };
+        }
+    };
+}])
+
+.directive('b2bMonthpickerFooter', [function () {
+    return {
+        restrict: 'EA',
+        require: '^b2bMonthpickerGroup',
+        transclude: true,
+        replace: true,
+        template: '',
+        compile: function (elem, attr, transclude) {
+            return function link(scope, elem, attr, ctrl) {
+                if (ctrl) {
+                    ctrl.$$footers.push(transclude(scope, function () {}));
+                }
+                elem.remove();
+            };
+        }
+    };
+}]);
+/**
+ * @ngdoc directive
+ * @name Navigation.att:multiLevelNavigation
+ *
+ * @description
+ *  <file src="src/multiLevelNavigation/docs/readme.md" />
+ *
+ * @usage
+ *       <div class="b2b-ml-nav">
+ *          <ul role="tree">
+ *             <li aria-label="{{child.name}}" tabindex="-1" b2b-ml-nav="{{child.type}}" role="treeitem" ng-repeat="child in treeStructure">
+ *                  <a tabindex="-1" href="javascript:void(0);" title="{{child.name}}">{{child.name}}<span><i class="{{child.type=='endNode'?'icon-primary-circle':'icon-primary-collapsed'}}"></i></span></a>
+ *                      <!-- Below UL tag is RECURSIVE to generate n-childs -->
+ *                      <ul role="group" ng-if="child.child">
+ *                          <li aria-label="{{child.name}}" b2b-ml-nav="{{child.type}}" tabindex="-1" role="treeitem" ng-repeat="child in child.child">
+ *                          <a tabindex="-1" href="javascript:void(0);" title="{{child.name}}">{{child.name}}<span><i class="{{child.type=='endNode'?'icon-primary-circle':'icon-primary-collapsed'}}"></i></span></a>
+ *                               <!-- RECURSIVE UL tag goes here -->
+ *                          </li>
+ *                      </ul>
+ *             </li>
+ *           </ul>
+ *        </div>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/multiLevelNavigation/docs/demo.html" />
+            <file src="src/multiLevelNavigation/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.multiLevelNavigation', ['b2b.att.utilities'])
+    //directive b2bMlNav Test coverage 100% on 5/13
+    .directive('b2bMlNav', ['keymap', function (keymap) {
+        return {
+            restrict: 'EA',
+            link: function (scope, element) {
+                var rootE, parentE, upE, downE, lastE, homeE, endE;
+                //default root tree element tabindex set zero
+                if (element.parent().parent().hasClass('b2b-ml-nav') && (element[0].previousElementSibling === null)) {
+                    element.attr('tabindex', 0);
+                }
+                //check root via class
+                var isRoot = function (elem) {
+                        if (elem.parent().parent().eq(0).hasClass('b2b-ml-nav')) {
+                            return true;
+                        } else {
+                            return false;
+                        }
+
+                    }
+                    //for any expandable tree item on click
+                var toggleState = function (e) {
+                    if (angular.element(e.target).attr("b2b-ml-nav") !== "endNode") {
+                        var eLink = element.find('a').eq(0);
+                        if (eLink.hasClass('active')) {
+                            eLink.removeClass('active');
+                            eLink.parent().attr("aria-expanded", "false");
+                            eLink.find('i').eq(0).removeClass('icon-primary-expanded');
+                            eLink.find('i').eq(0).addClass('icon-primary-collapsed');
+                        } else {
+                            eLink.addClass('active');
+                            eLink.parent().attr("aria-expanded", "true");
+                            eLink.find('i').eq(0).removeClass('icon-primary-collapsed');
+                            eLink.find('i').eq(0).addClass('icon-primary-expanded');
+                        }
+                    }
+                };
+                //function finds the main root-item from particular tree-group
+                var findRoot = function (elem) {
+                    if (isRoot(elem)) {
+                        rootE = elem;
+                        return;
+                    }
+                    if (elem.attr("b2b-ml-nav") === "middleNode" || elem.attr("b2b-ml-nav") === "endNode") {
+                        parentE = elem.parent().parent();
+                    } else {
+                        parentE = elem;
+                    }
+                    if (parentE.attr("b2b-ml-nav") === "rootNode") {
+                        rootE = parentE;
+                    } else {
+                        findRoot(parentE);
+                    }
+                };
+                //finds the last visible node of the previous tree-group
+                var findPreActive = function (elem) {
+                    if (!(elem.hasClass("active"))) {
+                        return;
+                    } else {
+                        var childElems = angular.element(elem[0].nextElementSibling.children);
+                        lastE = angular.element(childElems[childElems.length - 1]);
+                        if (lastE.attr("b2b-ml-nav") === "middleNode" && lastE.find('a').eq(0).hasClass('active')) {
+                            findPreActive(lastE.find('a').eq(0));
+                        }
+                        upE = lastE;
+                    }
+                };
+                //find above visible link
+                var findUp = function (elem) {
+                    if (elem[0].previousElementSibling !== null) {
+                        upE = angular.element(elem[0].previousElementSibling);
+                    } else {
+                        upE = elem.parent().parent();
+                    }
+                    if (isRoot(elem) || (upE.attr('b2b-ml-nav') === "middleNode" && upE[0] !== elem.parent().parent()[0])) {
+                        findPreActive(upE.find('a').eq(0)); 
+                    }
+                };
+                //find below visible link
+                var findDown = function (elem) {
+                    if (elem.hasClass('active')) {
+                        downE = elem.next().find('li').eq(0);
+                    } else {
+                        if (elem.parent().next().length !== 0) {
+                            downE = elem.parent().next().eq(0);
+                        } else {
+                            if (elem.parent().parent().parent().next().length !== 0) {
+                                downE = elem.parent().parent().parent().next().eq(0);
+                                return;
+                            }
+                            downE = elem.parent().eq(0);
+                        }
+                    }
+                };
+                //finds last root-group element of the tree
+                var findEnd = function (elem) {
+                    findRoot(elem);
+                    endE = angular.element(rootE.parent()[0].children[rootE.parent()[0].children.length - 1]);
+                };
+                //finds first root element of tree
+                var findHome = function (elem) {
+                    findRoot(elem);
+                    homeE = angular.element(rootE.parent()[0].children[0]);
+                };
+                element.bind('click', function (e) {
+                    if(element.attr("b2b-ml-nav") !== "endNode") { 
+                        toggleState(e); 
+                    }
+                    e.stopPropagation();
+                });
+                element.bind('focus', function (e) {
+                    if(element.attr("b2b-ml-nav") !== "endNode") {
+                        if(element.find('a').eq(0).hasClass('active')) {
+                            element.attr("aria-expanded", true);
+                        }
+                        else {
+                            element.attr("aria-expanded", false);
+                        }
+                        
+                    }
+                })
+                //Keyboard functionality approach:
+                //find keycode
+                //set set tabindex -1 on the current focus element
+                //find the next element to be focussed, set tabindex 0 and throw focus
+                element.bind('keydown', function (evt) {
+                    switch (evt.keyCode) {
+                    case keymap.KEY.ENTER:
+                    case keymap.KEY.SPACE:
+                        element.triggerHandler('click');
+                        evt.stopPropagation();
+                        evt.preventDefault();
+                        break;
+                    case keymap.KEY.END:
+                        evt.preventDefault();
+                        element.attr('tabindex', -1);
+                        findEnd(element);
+                        endE.eq(0).attr('tabindex', 0);
+                        endE[0].focus();
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.HOME:
+                        evt.preventDefault();
+                        element.attr('tabindex', -1);
+                        findHome(element);
+                        homeE.eq(0).attr('tabindex', 0);
+                        homeE[0].focus();
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.LEFT:
+                        evt.preventDefault();
+                        if (!isRoot(element)) {
+                            element.attr('tabindex', -1);
+                            parentE = element.parent().parent();
+                            parentE.eq(0).attr('tabindex', 0);
+                            parentE[0].focus();
+                            parentE.eq(0).triggerHandler('click');
+                        } else {
+                            if (element.find('a').eq(0).hasClass('active')) {
+                                element.triggerHandler('click');
+                            }
+                        }
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.UP:
+                        evt.preventDefault();
+                        if (!(isRoot(element) && element[0].previousElementSibling === null)) {
+                            element.attr('tabindex', -1);
+                            findUp(element);
+                            upE.eq(0).attr('tabindex', 0);
+                            upE[0].focus();
+                        }
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.RIGHT:
+                        evt.preventDefault();
+                        if (element.attr("b2b-ml-nav") !== "endNode") {
+                            if (!element.find('a').eq(0).hasClass('active')) {
+                                element.triggerHandler('click');
+                            }
+                            element.attr('tabindex', -1);
+                            findDown(element.find('a').eq(0));
+                            downE.eq(0).attr('tabindex', 0);
+                            downE[0].focus();
+                        }
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.DOWN:
+                        evt.preventDefault();
+                        element.attr('tabindex', -1);
+                        if (!(element.attr("b2b-ml-nav") === "middleNode" && element.find('a').eq(0).hasClass('active')) && (element.next().length === 0)) {
+                            if(element.parent().parent().attr("b2b-ml-nav") !== "rootNode" && element.parent().parent()[0].nextElementSibling !== null)
+                            {
+                                findDown(element.find('a').eq(0));
+                                downE.eq(0).attr('tabindex', 0);
+                                downE[0].focus();
+                                evt.stopPropagation();
+                                break;
+                            }
+                            findRoot(element);
+                            if (!(rootE.next().length === 0)) {
+                                rootE.next().eq(0).attr('tabindex', 0);
+                                rootE.next()[0].focus();
+                            } else {
+                                rootE.eq(0).attr('tabindex', 0);
+                                rootE[0].focus();
+                            }
+                            evt.stopPropagation();
+                            break;
+                        }
+                        findDown(element.find('a').eq(0));
+                        downE.eq(0).attr('tabindex', 0);
+                        downE[0].focus();
+                        evt.stopPropagation();
+                        break;
+                    default:
+                        break;
+                    }
+                });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Tabs, tables & accordions.att:multipurposeExpander
+ *
+ * @description
+ *  <file src="src/multipurposeExpander/docs/readme.md" />
+ *
+ * @usage
+ * <!--With Close Other -->
+ * <b2b-expander-group close-others="true">
+ *  <b2b-expanders class="mpc-expanders" is-open="testmpc">            
+ *      <b2b-expander-heading ng-class=" { 'b2b-toggle-header-active': !testmpc, 'b2b-toggle-header-inactive': testmpc } ">Heading content goes here</b2b-expander-heading>               
+ *      <b2b-expander-body>
+            <p>body content goes here</p>
+        </b2b-expander-body>
+ *  </b2b-expanders>
+ *  </b2b-expander-group>
+ *  
+ * <!-- Without Close Other -->
+ *  <b2b-expanders class="mpc-expanders" is-open="testmpc2">            
+ *      <b2b-expander-heading ng-class=" { 'b2b-toggle-header-active': !testmpc2, 'b2b-toggle-header-inactive': testmpc2 } ">Heading content goes here</b2b-expander-heading>               
+ *      <b2b-expander-body>
+            <p>body content goes here</p>
+        </b2b-expander-body>
+ *  </b2b-expanders>
+ *  
+ * @example
+ *  <section id="code">
+        <example module="b2b.att.multipurposeExpander">
+            <file src="src/multipurposeExpander/docs/demo.html" />
+            <file src="src/multipurposeExpander/docs/demo.js" />
+        </example>
+    </section>
+ *
+ */
+
+angular.module('b2b.att.multipurposeExpander', ['b2b.att', 'b2b.att.collapse'])
+.directive('b2bExpanderGroup', function () {
+    return {
+        restrict: 'EA',
+        transclude: true,
+        template: "<ng-transclude></ng-transclude>",
+        controller:['$scope','$attrs', function($scope,$attrs){
+            this.groups = [];
+            this.index = -1;            
+            this.scope = $scope;
+            
+            this.addGroup = function (groupScope) {
+                var that = this;
+                groupScope.index = this.groups.length;
+                this.groups.push(groupScope);
+                if(this.groups.length > 0){
+                    this.index = 0;
+                }
+                groupScope.$on('$destroy', function () {
+                that.removeGroup(groupScope);
+            });
+            };
+
+            this.closeOthers = function (openGroup) {
+                var closeOthers = angular.isDefined($attrs.closeOthers);
+                if (closeOthers && !$scope.forceExpand) {
+                    angular.forEach(this.groups, function (group) {
+                        if (group !== openGroup) {
+                            group.isOpen = false;
+                        }
+                    });
+                }
+                if (this.groups.indexOf(openGroup) === (this.groups.length - 1) && $scope.forceExpand) {
+                    $scope.forceExpand = false;
+                }
+            };
+            this.removeGroup = function (group) {
+            var index = this.groups.indexOf(group);
+            if (index !== -1) {
+                this.groups.splice(this.groups.indexOf(group), 1);
+            }
+        };
+        }]
+       
+    };
+    
+})
+.directive('b2bExpanders', function () {
+    return{
+        restrict: 'EA',
+        replace: true,
+        require:['b2bExpanders','?^b2bExpanderGroup'],
+        transclude: true,
+        scope:{isOpen:'=?'},
+        template: "<div ng-transclude></div>",
+        controller: ['$scope', function ($scope){
+                var bodyScope = null;
+                var expanderScope = null;
+                this.isOpened = function(){                
+                    if($scope.isOpen)
+                    {
+                        return  true;
+                    }else
+                    {
+                        return false;
+                    }
+                };                
+                this.setScope = function (scope) {
+                    bodyScope = scope; 
+                    bodyScope.isOpen = $scope.isOpen;                   
+                };                
+                this.setExpanderScope = function (scope) {
+                    expanderScope = scope;                                   
+                };
+                this.toggle = function () {
+                    $scope.isOpen = bodyScope.isOpen = !bodyScope.isOpen;                    
+                    return bodyScope.isOpen;
+                    
+                };
+                this.watchToggle = function(io){ 
+                    bodyScope.isOpen = io;
+                    expanderScope.updateIcons(io);
+                };  
+            }],
+        link: function (scope, elem, attr, myCtrl)
+        {
+            //scope.isOpen = false; 
+            if(myCtrl[1]){
+                myCtrl[1].addGroup(scope);
+            }
+            scope.$watch('isOpen', function(val){                               
+                myCtrl[0].watchToggle(scope.isOpen);
+                if(val && myCtrl[1]){
+                    myCtrl[1].closeOthers(scope);
+                }
+            });            
+        }
+    };
+})
+
+.directive('b2bExpanderHeading', function () {
+    return{
+        require: "^b2bExpanders",
+        restrict: 'EA',
+        replace: true,
+        transclude: true,
+        scope: true,
+        template: "<div style='padding:10px 10px 10px 0 !important' ng-transclude></div>"
+    };
+})
+
+.directive('b2bExpanderBody', function () {
+    return{
+        restrict: 'EA',
+        require: "^b2bExpanders",
+        replace: true,
+        transclude: true,
+        scope: {},
+        template: "<div b2b-collapse='!isOpen' ><div ng-transclude></div></div>",
+        link: function (scope, elem, attr, myCtrl) {
+            scope.isOpen = false;
+            myCtrl.setScope(scope);
+        }
+    };
+})
+
+.directive('b2bExpanderToggle', function () {
+    return{
+        restrict: 'EA',
+        require: "^b2bExpanders",
+        scope: {
+            expandIcon: '@',
+            collapseIcon: '@'
+        },
+        
+        link: function (scope, element, attr, myCtrl)
+        {
+            myCtrl.setExpanderScope(scope);
+            var isOpen = myCtrl.isOpened();   
+
+            scope.setIcon = function () {
+                element.attr("role", "tab");
+
+                if (scope.expandIcon && scope.collapseIcon)
+                {
+                    if (isOpen) {
+                        element.removeClass(scope.expandIcon);
+                        element.addClass(scope.collapseIcon);
+
+                        element.attr("aria-expanded", "true");
+                    }
+                    else {
+                        element.removeClass(scope.collapseIcon);
+                        element.addClass(scope.expandIcon);
+
+                        element.attr("aria-expanded", "false");
+                    }
+                }                               
+            };
+            
+            element.bind('click', function (){
+                scope.toggleit();
+            });
+            scope.updateIcons = function(nStat){
+                isOpen = nStat;
+                scope.setIcon();                
+            };
+            scope.toggleit = function (){
+                isOpen = myCtrl.toggle();
+                scope.setIcon();
+                scope.$apply();
+            };                    
+            scope.setIcon();
+        }
+    };
+});
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:notesMessagesAndErrors
+ *
+ * @description
+ *  <file src="src/notesMessagesAndErrors/docs/readme.md" />
+ *
+ * @usage
+ *  See Demo
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/notesMessagesAndErrors/docs/demo.html" />
+            <file src="src/notesMessagesAndErrors/docs/demo.js" />
+       </example>
+        </section>
+ *
+ */
+angular.module('b2b.att.notesMessagesAndErrors', []);
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Notification Card
+ * 
+ * @description 
+ *  <file src="src/notificationCardTemplate/docs/readme.md" /> 
+ * 
+ * @example 
+ *  <section id="code"> 
+        <b>HTML + AngularJS</b> 
+        <example module="b2b.att"> 
+            <file src="src/notificationCardTemplate/docs/demo.html" /> 
+            <file src="src/notificationCardTemplate/docs/demo.js" /> 
+       </example> 
+    </section>    
+ * 
+ */
+angular.module('b2b.att.notificationCardTemplate', [])
+  
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Order Confirmation Template
+ * 
+ * @description 
+ *  <file src="src/orderConfirmationTemplate/docs/readme.md" /> 
+ * 
+ * @example 
+ *  <section id="code"> 
+        <b>HTML + AngularJS</b> 
+        <example module="b2b.att"> 
+            <file src="src/orderConfirmationTemplate/docs/demo.html" /> 
+            <file src="src/orderConfirmationTemplate/docs/demo.js" /> 
+       </example> 
+    </section>    
+ * 
+ */
+angular.module('b2b.att.orderConfirmationTemplate', []);
+  
+/**
+ * @ngdoc directive
+ * @name Navigation.att:pagination
+ *
+ * @description
+ *  <file src="src/pagination/docs/readme.md" />
+ *
+ * @usage
+ *   <div b2b-pagination="" input-id="goto-page-2" total-pages="totalPages1" current-page="currentPage1" click-handler="customHandler" show-input="showInput"></div> 
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/pagination/docs/demo.html" />
+            <file src="src/pagination/docs/demo.js" />
+       </example>
+        </section>
+ *
+ */
+angular.module('b2b.att.pagination', ['b2b.att.utilities', 'ngTouch'])
+    .directive('b2bPagination', ['b2bUserAgent', 'keymap', '$window', '$timeout', function (b2bUserAgent, keymap, $window, $timeout) {
+        return {
+            restrict: 'A',
+            scope: {
+                totalPages: '=',
+                currentPage: '=',
+                showInput: '=',
+                clickHandler: '=?',
+                inputId: '='
+            },
+            replace: true,
+            templateUrl: 'b2bTemplate/pagination/b2b-pagination.html',
+            link: function (scope, elem) {
+                scope.isMobile = b2bUserAgent.isMobile();
+                scope.notMobile = b2bUserAgent.notMobile();
+                scope.focusedPage;
+                scope.meanVal = 3;
+                scope.$watch('totalPages', function (value) {
+                    if (angular.isDefined(value) && value !== null) {
+                        scope.pages = [];
+                        if (value < 1) {
+                            scope.totalPages = 1;
+                            return;
+                        }
+                        if (value <= 10) {
+                            for (var i = 1; i <= value; i++) {
+                                scope.pages.push(i);
+                            }
+                        } else if (value > 10) {
+                            var midVal = Math.ceil(value / 2);
+                            scope.pages = [midVal - 2, midVal - 1, midVal, midVal + 1, midVal + 2];
+                        }
+                        if(scope.currentPage === undefined || scope.currentPage === 1)
+                        {
+                            currentPageChanged(1);
+                        }
+                    }
+                });
+                scope.$watch('currentPage', function (value) {
+                    currentPageChanged(value);
+                    callbackHandler(value);
+                });
+                var callbackHandler = function (num) {
+                    if (angular.isFunction(scope.clickHandler)) {
+                        scope.clickHandler(num);
+                    }
+                };
+
+                function currentPageChanged(value) {
+                    if (angular.isDefined(value) && value !== null) {
+                        if (!value || value < 1) {
+                            value = 1;
+                        }
+                        if (value > scope.totalPages) {
+                            value = scope.totalPages;
+                        }
+                        if (scope.currentPage !== value) {
+                            scope.currentPage = value;
+                            callbackHandler(scope.currentPage);
+                        }
+                        if (scope.totalPages > 10) {
+                            var val = parseInt(value);
+                            if (val <= 6) {
+                                scope.pages = [1, 2, 3, 4, 5, 6, 7, 8];
+                            } else if (val > 6 && val <= scope.totalPages - 5) {
+                                scope.pages = [val - 1, val, val + 1];
+                            } else if (val >= scope.totalPages - 5) {
+                                scope.pages = [scope.totalPages - 7, scope.totalPages - 6, scope.totalPages - 5, scope.totalPages - 4, scope.totalPages - 3, scope.totalPages - 2, scope.totalPages - 1, scope.totalPages];
+                            }
+                        }
+                        if (scope.isMobile) {
+                            var inWidth = $window.innerWidth;
+                            var viewLimit = 7;
+                            if (inWidth <= 400) {
+                                viewLimit = 7;
+                            } else if (inWidth > 400 && inWidth < 500) {
+                                viewLimit = 9;
+                            } else if (inWidth >= 500 && inWidth < 600) {
+                                viewLimit = 11;
+                            } else if (inWidth >= 600 && inWidth < 700) {
+                                viewLimit = 13;
+                            } else if (inWidth >= 700 && inWidth < 800) {
+                                viewLimit = 15;
+                            }
+
+                            var val = parseInt(value);
+
+                            scope.meanVal = Math.floor(viewLimit / 2);
+                            var lowerLimit = (val - scope.meanVal) < 1 ? 1 : val - scope.meanVal;
+                            var upperLimit = (lowerLimit + viewLimit - 1) > scope.totalPages ? scope.totalPages : lowerLimit + viewLimit - 1;
+                            scope.pages = [];
+                            for (var i = lowerLimit; i <= upperLimit; i++) {
+                                scope.pages.push(i);
+                            }
+                        }
+                    }
+                }
+                scope.gotoKeyClick = function (keyEvent) {
+                  if (keyEvent.which === keymap.KEY.ENTER) {
+                    scope.gotoBtnClick()
+                  }
+                }
+                scope.gotoBtnClick = function () {
+                    currentPageChanged(parseInt(scope.gotoPage)); 
+                    callbackHandler(scope.currentPage);
+                    var qResult = elem[0].querySelector('button');
+                    angular.element(qResult).attr('disabled','true');
+                    $timeout(function(){
+                        elem[0].querySelector('.b2b-pager__item--active').focus();
+                    }, 50); 
+                    scope.gotoPage = null;               
+                }
+                scope.onfocusIn = function(evt)
+                {
+                    var qResult = elem[0].querySelector('button');
+                    angular.element(qResult).removeAttr('disabled');
+                }
+                scope.onfocusOut = function(evt)
+                {
+                    if(evt.target.value === "")
+                    {
+                        var qResult = elem[0].querySelector('button');
+                        angular.element(qResult).attr('disabled','true');
+                    }                    
+                }
+                scope.next = function (event) {
+                    if (event != undefined) {
+                        event.preventDefault();
+                    }
+                    if (scope.currentPage < scope.totalPages) {
+                        scope.currentPage += 1;
+                        callbackHandler(scope.currentPage);
+                    }
+                };
+                scope.prev = function (event) {
+                    if (event != undefined) {
+                        event.preventDefault();
+                    }
+                    if (scope.currentPage > 1) {
+                        scope.currentPage -= 1;
+                        callbackHandler(scope.currentPage);
+                    }
+                };
+                scope.selectPage = function (value, event) {
+                    event.preventDefault();
+                    scope.currentPage = value;
+                    scope.focusedPage = value;
+                    callbackHandler(scope.currentPage);
+                };
+                scope.checkSelectedPage = function (value) {
+                    if (scope.currentPage === value) {
+                        return true;
+                    }
+                    return false;
+                };
+                scope.isFocused = function (page) {
+                    return scope.focusedPage === page;
+                };
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Navigation.att:paneSelector
+ *
+ * @description
+ *  <file src="src/paneSelector/docs/readme.md" />
+ *
+ * @usage
+ *  Please refer demo.html tab in Example section below.
+ *
+ * @example
+    <section id="code">
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/paneSelector/docs/demo.html" />
+            <file src="src/paneSelector/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.paneSelector', ['b2b.att.tabs', 'b2b.att.utilities'])
+
+.filter('paneSelectorSelectedItemsFilter', [function () {
+    return function (listOfItemsArray) {
+
+        if (!listOfItemsArray) {
+            listOfItemsArray = [];
+        }
+
+        var returnArray = [];
+
+        for (var i = 0; i < listOfItemsArray.length; i++) {
+            if (listOfItemsArray[i].isSelected) {
+                returnArray.push(listOfItemsArray[i]);
+            }
+        }
+
+        return returnArray;
+    };
+}])
+
+.filter('paneSelectorFetchChildItemsFilter', [function () {
+    return function (listOfItemsArray) {
+
+        if (!listOfItemsArray) {
+            listOfItemsArray = [];
+        }
+
+        var returnArray = [];
+
+        for (var i = 0; i < listOfItemsArray.length; i++) {
+            for (var j = 0; j < listOfItemsArray[i].childItems.length; j++) {
+                returnArray.push(listOfItemsArray[i].childItems[j]);
+            }
+        }
+
+        return returnArray;
+    };
+}])
+
+.directive('b2bPaneSelector', [function () {
+    return {
+        restrict: 'AE',
+        replace: true,
+        templateUrl: 'b2bTemplate/paneSelector/paneSelector.html',
+        transclude: true,
+        scope: {}
+    };
+}])
+
+.directive('b2bPaneSelectorPane', [ function () {
+    return {
+        restrict: 'AE',
+        replace: true,
+        templateUrl: 'b2bTemplate/paneSelector/paneSelectorPane.html',
+        transclude: true,
+        scope: {}
+    };
+}])
+
+.directive('b2bTabVertical', ['$timeout', 'keymap', function ($timeout, keymap) {
+    return {
+        restrict: 'A',
+        require: '^b2bTab',
+        link: function (scope, element, attr, b2bTabCtrl) {
+
+            if (!b2bTabCtrl) {
+                return;
+            }
+
+            // retreive the isolateScope
+            var iScope = angular.element(element).isolateScope();
+
+            $timeout(function () {
+                angular.element(element[0].querySelector('a')).unbind('keydown');
+                angular.element(element[0].querySelector('a')).bind('keydown', function (evt) {
+
+                    if (!(evt.keyCode)) {
+                        evt.keyCode = evt.which;
+                    }
+
+                    switch (evt.keyCode) {
+                        case keymap.KEY.DOWN:
+                            evt.preventDefault();
+                            iScope.nextKey();
+                            break;
+
+                        case keymap.KEY.UP:
+                            evt.preventDefault();
+                            iScope.previousKey();
+                            break;
+
+                        default:;
+                    }
+                });
+            });
+        }
+    };
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:phoneNumberInput
+ *
+ * @description
+ *  <file src="src/phoneNumberInput/docs/readme.md" />
+ *
+ * @usage
+<form name="userForm1">
+    <div class="form-row" ng-class="{'error':!userForm1.text.$valid && userForm1.text.$dirty}">
+        <label>Phone Mask<span style="color:red">*</span>: (npa) nxx-line &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Model Value: {{mask.text}}</label>
+        <div>
+            <input b2b-phone-mask="phoneMask" name="text" ng-model="mask.text" type="text" placeholder="e.g. (123) 456-7890" title="Phone Number" class="b2b-phone-mask-input" required />
+            <div ng-messages="userForm1.text.$error" class="error-msg" aria-live="polite" aria-atomic="true">
+                <span ng-message="required" role="alert">This field is mandatory!</span>
+                <span ng-message="invalidPhoneNumber" role="alert">Please enter valid phone number!</span>
+                <span ng-message="mask" role="alert">Please enter valid phone number!</span>
+            </div>
+        </div>
+    </div>
+</form>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/phoneNumberInput/docs/demo.html" />
+            <file src="src/phoneNumberInput/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.phoneNumberInput', ['ngMessages', 'b2b.att.utilities'])
+    .constant("CoreFormsUiConfig", {
+        phoneMask: '(___) ___-____',
+        phoneMaskDot: '___.___.____',
+        phoneMaskHyphen: '___-___-____'
+    })
+    .directive('b2bPhoneMask', ['$parse', 'CoreFormsUiConfig', 'keymap', function ($parse, CoreFormsUiConfig, keymap) {
+        return {
+            require: 'ngModel',
+            scope: {
+                ngModel: '='
+            },
+            link: function (scope, iElement, iAttrs, ctrl) {
+                var navigatorAgent = navigator.userAgent.toLowerCase(),
+                    isAndroid = navigatorAgent.indexOf("android") > -1,
+                    oldIE = navigatorAgent.indexOf('msie 8.0') !== -1;
+                var mask = '';
+                var validPhoneNumber = false;
+                var currentKey = '';
+                if (isAndroid) {
+                    mask = "__________";
+                } else {
+                    switch (iAttrs.b2bPhoneMask) {
+                    case "phoneMask":
+                        mask = CoreFormsUiConfig.phoneMask;
+                        break;
+                    case "phoneMaskDot":
+                        mask = CoreFormsUiConfig.phoneMaskDot;
+                        break;
+                    case "phoneMaskHyphen":
+                        mask = CoreFormsUiConfig.phoneMaskHyphen;
+                        break;
+                    default:
+                        mask = CoreFormsUiConfig.phoneMask;
+                    }
+                }
+                iElement.attr("maxlength", mask.length);
+                var checkValidity = function (unmaskedValue, rawValue) {
+                    var valid = false;
+                    if (angular.isUndefined(rawValue) || rawValue === '') {
+                        valid = true;
+                    } else if (unmaskedValue) {
+                        valid = (unmaskedValue.length === 10);
+                    }
+                    ctrl.$setValidity('invalidPhoneNumber', validPhoneNumber);
+                    ctrl.$setValidity('mask', valid);
+                    return valid;
+                };
+                var handleKeyup = function (evt) {
+
+                    if (evt && evt.keyCode === keymap.KEY.SHIFT) {
+                        return;
+                    }
+
+                    var index, formattedNumber;
+                    if (ctrl.$modelValue) {
+                        formattedNumber = ctrl.$modelValue;
+                    } else {
+                        formattedNumber = iElement.val();
+                    }
+                    if (!formattedNumber.length && currentKey === '') {
+                        return;
+                    }
+                    var maskLength, inputNumbers, maskArray, tempArray, maskArrayLength;
+                    tempArray = [];
+                    maskArray = mask.split("");
+                    maskArrayLength = maskArray.length;
+                    maskLength = formattedNumber.substring(0, mask.length);
+                    inputNumbers = formattedNumber.replace(/[^0-9]/g, "").split("");
+                    for (index = 0; index < maskArrayLength; index++) {
+                        tempArray.push(maskArray[index] === "_" ? inputNumbers.shift() : maskArray[index]);
+                        if (inputNumbers.length === 0) {
+                            break;
+                        }
+                    }
+                    formattedNumber = tempArray.join("");
+                    if (formattedNumber === '(') {
+                        formattedNumber = '';
+                    }
+
+                    if ( (angular.isDefined(evt) && evt.which) && currentKey !== '') {
+                        if (maskArray[0] === currentKey && formattedNumber === '') {
+                            formattedNumber = '(';
+                        } else if (evt.which === keymap.KEY.SPACE && currentKey === ' ') {
+                            formattedNumber = formattedNumber + ') ';
+                        } else if (maskArray[0] === currentKey && formattedNumber === '') {
+                            formattedNumber = formattedNumber + currentKey;
+                        } else if (maskArray[formattedNumber.length] === currentKey) {
+                            formattedNumber = formattedNumber + currentKey;
+                        }
+                        currentKey = '';
+                    }
+
+                    ctrl.$setViewValue(formattedNumber);
+                    ctrl.$render();
+                    return formattedNumber;
+                };
+
+
+                // since we are only allowing 0-9, why even let the keypress go forward?
+                // also added in delete... in case they want to delete :)
+                var handlePress = function (e) {
+                    if (e.which) {
+                        if ((e.which < 48 || e.which > 57) && (e.which < 96 || e.which > 105)) {
+                            if (e.which !== keymap.KEY.BACKSPACE && e.which !== keymap.KEY.TAB && e.which !== keymap.KEY.DELETE && e.which !== keymap.KEY.ENTER && e.which !== keymap.KEY.LEFT && e.which !== keymap.KEY.RIGHT &&
+                                // Allow: Ctrl+V/v
+                                (!(e.ctrlKey) && (e.which !== '118' || e.which !== '86')) &&
+                                // Allow: Ctrl+C/c
+                                (!(e.ctrlKey) && (e.which !== '99' || e.which !== '67')) &&
+                                // Allow: Ctrl+X/x
+                                (!(e.ctrlKey) && (e.which !== '120' || e.which !== '88'))) {
+                                e.preventDefault ? e.preventDefault() : e.returnValue = false;
+                                iElement.attr("aria-label", "Only numbers are allowed");
+                                validPhoneNumber = false;
+                            }
+                        } else {
+                            iElement.removeAttr("aria-label");
+                            validPhoneNumber = true;
+                        }
+
+                        setCurrentKey(e);
+                    }
+                    scope.$apply();
+                };
+                // i moved this out because i thought i might need focus as well..
+                // to handle setting the model as the view changes
+                var parser = function (fromViewValue) {
+                    var letters = /^[A-Za-z]+$/;
+                    var numbers = /^[0-9]+$/;
+                    if (angular.isUndefined(fromViewValue) || fromViewValue === '') {
+                        validPhoneNumber = true;
+                    } else {
+                        if (fromViewValue.match(letters)) {
+                            validPhoneNumber = false;
+                        }
+                        if (fromViewValue.match(numbers)) {
+                            validPhoneNumber = true;
+                        }
+                    }
+                    var clean = "";
+                    if (fromViewValue && fromViewValue.length > 0) {
+                        clean = fromViewValue.replace(/[^0-9]/g, '');
+                    }
+                    checkValidity(clean, fromViewValue);
+                    return clean;
+                };
+
+                //to handle reading the model and formatting it
+                var formatter = function (fromModelView) {
+                    var input = '';
+                    checkValidity(fromModelView);
+                    if (fromModelView) {
+                        input = handleKeyup();
+                    }
+                    return input;
+                };
+
+                var setCurrentKey = function (e) {
+                    switch (e.which) {
+                    case 189:
+                    case 109:
+                        currentKey = '-';
+                        break;
+                    case 190:
+                    case 110:
+                        currentKey = '.';
+                        break;
+                    case 57:
+                        if (e.shiftKey === true) {
+                            currentKey = '(';
+                        }
+                        break;
+                    case 48:
+                        if (e.shiftKey === true) {
+                            currentKey = ')';
+                        }
+                        break;
+                    case 32:
+                        currentKey = ' ';
+                        break;
+                    }
+                };
+
+                if (angular.isDefined(scope.ngModel)) {
+                    parser(scope.ngModel);
+                }
+
+                ctrl.$parsers.push(parser);
+                ctrl.$formatters.push(formatter);
+                iElement.bind('keyup', handleKeyup);
+                iElement.bind('keydown', handlePress);
+            }
+        };
+}]);
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Profile Blocks 
+ * 
+ * @description 
+ *  <file src="src/profileBlockTemplate/docs/readme.md" /> 
+ * @example 
+ *  <section id="code">  
+        <example module="b2b.att"> 
+            <file src="src/profileBlockTemplate/docs/demo.html" /> 
+            <file src="src/profileBlockTemplate/docs/demo.js" /> 
+       </example>  
+    </section>  
+ *  
+ */   
+
+angular.module('b2b.att.profileBlockTemplate', [])
+    
+     
+  
+/**
+ * @ngdoc directive
+ * @name Layouts.att:profileCard
+ *
+ * @description
+ *  <file src="src/profileCard/docs/readme.md" />
+ *
+ * @usage
+ *  <b2b-profile-card></b2b-profile-card>
+ *
+ * @example
+    <section id="code">   
+        <example module="b2b.att">
+            <file src="src/profileCard/docs/demo.html" />
+            <file src="src/profileCard/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.profileCard', ['b2b.att'])
+.constant('profileStatus',{
+    status: {
+        ACTIVE: {
+            status: "Active",
+            color: "green"
+        },
+        DEACTIVATED: {
+            status: "Deactivated",
+            color: "red"
+        },
+        LOCKED: {
+            status: "Locked",
+            color: "red"
+        },
+        IDLE: {
+            status: "Idle",
+            color: "yellow"
+        },
+        PENDING: {
+            status: "Pending",
+            color: "blue"
+        }
+    },
+    role: "COMPANY ADMINISTRATOR"
+
+})
+.directive('b2bProfileCard',['$http','$q','profileStatus', function($http,$q,profileStatus) {
+   return {
+        restrict: 'EA',
+        replace: 'true',
+        templateUrl: function(element, attrs){
+            if(!attrs.addUser){
+                return 'b2bTemplate/profileCard/profileCard.html';
+            }
+            else{
+                return 'b2bTemplate/profileCard/profileCard-addUser.html';
+            }
+        },
+        scope: {
+            profile:'=',
+            characterLimit: '@'
+        },
+        link: function(scope, elem, attr){
+            scope.characterLimit = parseInt(attr.characterLimit, 10) || 25;
+            scope.shouldClip = function(str) {
+                return str.length > scope.characterLimit;
+            };
+
+            scope.showEmailTooltip = false;
+
+            scope.image=true;
+            function isImage(src) {
+                var deferred = $q.defer();
+                var image = new Image();
+                image.onerror = function() {
+                    deferred.reject(false);
+                };
+                image.onload = function() {
+                    deferred.resolve(true);
+                };
+                if(src !== undefined && src.length>0 ){
+                    image.src = src;
+                } else {
+                     deferred.reject(false);
+                }
+                return deferred.promise;
+            }
+            if(!attr.addUser){
+            scope.image=false;
+            isImage(scope.profile.img).then(function(img) {
+                scope.image=img;
+            });
+            var splitName=(scope.profile.name).split(' ');
+            scope.initials='';
+            for(var i=0;i<splitName.length;i++){
+                scope.initials += splitName[i][0];
+            }
+            if(scope.profile.role.toUpperCase() === profileStatus.role){
+                scope.badge=true;
+            }
+            var profileState=profileStatus.status[scope.profile.state.toUpperCase()];
+            if(profileState) {
+                scope.profile.state=profileStatus.status[scope.profile.state.toUpperCase()].status;
+                scope.colorIcon=profileStatus.status[scope.profile.state.toUpperCase()].color;
+                if(scope.profile.state.toUpperCase()===profileStatus.status.PENDING.status.toUpperCase()||scope.profile.state.toUpperCase()===profileStatus.status.LOCKED.status.toUpperCase()){
+                        scope.profile.lastLogin=scope.profile.state;
+                }
+            }
+            var today=new Date().getTime();
+            var lastlogin=new Date(scope.profile.lastLogin).getTime();
+            var diff=(today-lastlogin)/(1000*60*60*24);
+            if(diff<=1){
+                scope.profile.lastLogin="Today";
+            }
+            else if(diff<=2){
+                scope.profile.lastLogin="Yesterday";
+            }
+        }
+    }
+};
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:radios
+ *
+ * @description
+ *  <file src="src/radios/docs/readme.md" />
+ *
+ * @usage
+ *  See demo section
+ *
+ * @param {boolean} refreshRadioGroup - A trigger that recalculates and updates the accessibility roles on radios in a group.
+ * 
+ * @example
+    <section id="code">
+               <b>HTML + AngularJS</b>
+               <example module="b2b.att">
+                <file src="src/radios/docs/demo.html" />
+                <file src="src/radios/docs/demo.js" />
+               </example>
+            </section>
+ */
+angular.module('b2b.att.radios', ['b2b.att.utilities'])
+.directive('b2bRadioGroupAccessibility', ['$timeout', 'b2bUserAgent', function($timeout, b2bUserAgent) {
+    return {
+        restrict: "A",
+        scope: {
+            refreshRadioGroup: "=",
+        },
+        link: function(scope, ele, attr) {
+
+            var roleRadioElement, radioProductSelectElement, radioInputTypeElement;
+
+            $timeout(calculateNumberOfRadio);
+
+            scope.$watch('refreshRadioGroup', function(value) {
+                if (value === true) {
+                    addingRoleAttribute();
+                    $timeout(calculateNumberOfRadio);
+                    scope.refreshRadioGroup = false;
+                } else {
+                    return;
+                }
+            })
+
+
+            function calculateNumberOfRadio() {
+                roleRadioElement = ele[0].querySelectorAll('[role="radio"]');
+
+                radioProductSelectElement = ele[0].querySelectorAll('[role="radiogroup"] li.radio-box');
+
+                radioInputTypeElement = ele[0].querySelectorAll('input[type="radio"]');
+
+                for (var i = 0; i < radioInputTypeElement.length; i++) {
+                    var isChecked = radioInputTypeElement[i].checked ? 'true' : 'false';
+                    var isDisabled = radioInputTypeElement[i].disabled ? 'true' : 'false';
+                    var numOfx = i + 1 + ' of ' + radioInputTypeElement.length;
+                    angular.element(roleRadioElement[i]).attr({
+                        'aria-checked': isChecked,
+                        'aria-disabled': isDisabled,
+                        'data-opNum': numOfx
+                    });
+                    if (b2bUserAgent.notMobile()) {
+                        angular.element(roleRadioElement[i]).removeAttr("role");
+                    }
+
+                    if (radioProductSelectElement.length) {
+                        isChecked === 'true' ? angular.element(radioProductSelectElement[i]).addClass('active') : angular.element(radioProductSelectElement[i]).removeClass('active');
+                    }
+
+                    if (/Android/i.test(navigator.userAgent)) {
+                        angular.element(roleRadioElement[i]).append('<span class="hidden-spoken">. ' + numOfx + '.</span>');
+                    }
+
+
+                    angular.element(radioInputTypeElement[i]).bind('click', radioStateChangeonClick);
+
+                }
+            }
+
+            function addingRoleAttribute() {
+                for (var i = 0; i < radioInputTypeElement.length; i++) {
+                    if (b2bUserAgent.notMobile()) {
+                        angular.element(roleRadioElement[i]).attr("role", "radio");
+                    }
+                }
+            }
+
+            function radioStateChangeonClick() {
+                for (var i = 0; i < radioInputTypeElement.length; i++) {
+                    var isChecked = radioInputTypeElement[i].checked ? 'true' : 'false';
+                    var isDisabled = radioInputTypeElement[i].disabled ? 'true' : 'false';
+                    if (radioProductSelectElement.length) {
+                        isChecked === 'true' ? angular.element(radioProductSelectElement[i]).addClass('active') : angular.element(radioProductSelectElement[i]).removeClass('active');
+                    }
+                    angular.element(roleRadioElement[i]).attr({
+                        'aria-checked': isChecked,
+                        'aria-disabled': isDisabled
+                    });
+                }
+
+            }
+        }
+    }
+
+}]);
+
+/**
+ * @ngdoc directive
+ * @name Forms.att:searchField
+ *
+ * @description
+ *  <file src="src/searchField/docs/readme.md" />
+ *
+ * @usage
+ *  <div b2b-search-field dropdown-list="listdata" on-click-callback="clickFn(value)" class="span12" input-model='typedString' config-obj='keyConfigObj'></div>
+ *
+ * @example
+ <section id="code">
+    <example module="b2b.att">
+    <file src="src/searchField/docs/demo.html" />
+    <file src="src/searchField/docs/demo.js" />
+    </example>
+</section>
+ */
+
+angular.module('b2b.att.searchField', ['b2b.att.utilities', 'b2b.att.position'])
+    .filter('b2bFilterInput', [function() {
+        return function(list, str, keyArray, displayListKey, isContainsSearch, searchSeperator) {
+            var res = [];
+            var searchLabel;
+            var searchCondition;
+            var conditionCheck = function(searchSeperator, listItem, displayListKey, splitString) {
+                var displayTitle = null;
+                if (splitString) {
+                    for (var i = 0; i < displayListKey.length; i++) {
+                        if (i <= 0) {
+                            displayTitle = listItem[displayListKey[i]].toLowerCase().indexOf(splitString[i].toLowerCase()) > -1;
+                        } else {
+                            displayTitle = (splitString[i]) ? displayTitle && listItem[displayListKey[i]].toLowerCase().indexOf(splitString[i].toLowerCase().trim()) > -1 : displayTitle;
+                        }
+                    }
+                } else {
+                    angular.forEach(displayListKey, function(value) {
+                        if (!displayTitle) {
+                            displayTitle = listItem[value];
+                        } else {
+                            displayTitle = displayTitle + (listItem[value] ? searchSeperator + ' ' + listItem[value] : '');
+                        }
+                    });
+                }
+                return displayTitle;
+            }
+            angular.forEach(list, function(listItem) {
+                var splitString = str.indexOf(searchSeperator) > -1 ? str.split(searchSeperator) : false;
+                var displayList = conditionCheck(searchSeperator, listItem, displayListKey, splitString)
+                for (var i = 0; i < keyArray.length; i++) {
+                    searchLabel = keyArray[i];
+                    if (listItem[searchLabel]) {
+                        if (isContainsSearch) {
+                            var displaySearchList = listItem[searchLabel].toLowerCase().indexOf(str.toLowerCase()) > -1;
+                            if (splitString.length > 1) {
+                                displaySearchList = (splitString.length <= keyArray.length) ? displayList : false;
+                            }
+                            searchCondition = displaySearchList;
+                        } else {
+                            searchCondition = listItem[searchLabel].match(new RegExp('^' + str, 'gi'));
+                        }
+                        if (searchCondition) {
+                            res.push({
+                                'title': conditionCheck(searchSeperator, listItem, displayListKey),
+                                'valueObj': listItem
+                            });
+                            break;
+                        }
+                    }
+                }
+            });
+            return res;
+        };
+    }]).directive('b2bSearchField', ['$filter', 'b2bFilterInputFilter', 'keymap', '$documentBind', '$isElement', '$document', 'events', '$timeout', function($filter, b2bFilterInput, keymap, $documentBind, $isElement, $document, events, $timeout) {
+        return {
+            restrict: 'A',
+            scope: {
+                dataList: '=dropdownList',
+                onClickCallback: '&',
+                inputModel: '=',
+                configObj: '=',
+                objModel: '=',
+                inputDeny: '=?',
+                disabled: '=?'
+            },
+            replace: true,
+            templateUrl: 'b2bTemplate/searchField/searchField.html',
+            controller: ['$scope', function($scope) {
+                this.searchKeyArray = [];
+                if ($scope.configObj.searchKeys) {
+                    this.searchKeyArray = $scope.configObj.searchKeys;
+                }
+                if (angular.isUndefined($scope.disabled)) {
+                    $scope.disabled = false;
+                }
+                this.triggerInput = function(searchString) {
+                    $scope.originalInputModel = searchString;
+                    if (searchString === '') {
+                        $scope.currentIndex = -1;
+                        $scope.filterList = [];
+                        $scope.showListFlag = false;
+                    } else if (searchString !== '' && !$scope.isFilterEnabled) {
+                        $scope.filterList = $filter('b2bFilterInput')($scope.dataList, searchString, this.searchKeyArray, $scope.configObj.displayListDataKey, $scope.configObj.isContainsSearch, $scope.configObj.searchSeperator);
+                        $scope.showListFlag = true;
+                    }
+                };
+                this.denyRegex = function() {
+                    return $scope.inputDeny;
+                };
+            }],
+            link: function(scope, elem) {
+                scope.isFilterEnabled = false;
+                scope.showListFlag = false;
+                scope.currentIndex = -1;
+                scope.setCurrentIdx = function(idx) {
+                    scope.currentIndex = idx;
+                    if (idx > -1) {
+                        scope.inputModel = scope.filterList[idx].title;
+                        scope.objModel = scope.filterList[idx];
+                    }
+                };
+                scope.isActive = function(index, dropdownLength) {
+                    scope.dropdownLength = dropdownLength;
+                    return scope.currentIndex === index;
+                };
+                scope.selectItem = function(idx) {
+                    scope.setCurrentIdx(idx);
+                    scope.onClickCallback({
+                        value: scope.inputModel,
+                        objValue: scope.objModel
+                    });
+                    scope.showListFlag = false;
+                    $timeout(function() {
+                        elem.find('div').find('input')[0].focus();
+                    }, 150);
+                };
+                scope.startSearch = function() {
+                    scope.onClickCallback({
+                        value: scope.inputModel,
+                        objValue: scope.objModel
+                    });
+                };
+                scope.selectPrev = function() {
+                    if (scope.currentIndex > 0 && scope.filterList.length > 0) {
+                        scope.currentIndex = scope.currentIndex - 1;
+                        scope.setCurrentIdx(scope.currentIndex);
+                    } else if (scope.currentIndex === 0) {
+                        scope.currentIndex = scope.currentIndex - 1;
+                        scope.inputModel = scope.originalInputModel;
+                        scope.isFilterEnabled = true;
+                    }
+                };
+                scope.selectNext = function() {
+                    if (scope.currentIndex < scope.configObj.noOfItemsDisplay - 1) {
+                        if (scope.currentIndex < scope.filterList.length - 1) {
+                            scope.currentIndex = scope.currentIndex + 1;
+                            scope.setCurrentIdx(scope.currentIndex);
+                        }
+                    }
+                };
+                scope.selectCurrent = function() {
+                    scope.selectItem(scope.currentIndex);
+                };
+                scope.selectionIndex = function(e) {
+                    switch (e.keyCode) {
+                        case keymap.KEY.DOWN:
+                            events.preventDefault(e);
+                            scope.isFilterEnabled = true;
+                            scope.selectNext();
+                            break;
+                        case keymap.KEY.UP:
+                            events.preventDefault(e);
+                            scope.isFilterEnabled = true;
+                            scope.selectPrev();
+                            break;
+                        case keymap.KEY.ENTER:
+                            events.preventDefault(e);
+                            scope.isFilterEnabled = true;
+                            scope.selectCurrent();
+                            break;
+                        case keymap.KEY.ESC:
+                            events.preventDefault(e);
+                            scope.isFilterEnabled = false;
+                            scope.showListFlag = false;
+                            scope.inputModel = '';
+                            break;
+                        default:
+                            scope.isFilterEnabled = false;
+                            break;
+                    }
+                    if (elem[0].querySelector('.filtercontainer')) {
+                        elem[0].querySelector('.filtercontainer').scrollTop = (scope.currentIndex - 1) * 35;
+                    }
+                };
+                scope.$watch('filterList', function(newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        scope.currentIndex = -1;
+                    }
+                });
+                scope.blurInput = function() {
+                    $timeout(function() {
+                        scope.showListFlag = false;
+                    }, 150);
+                };
+                var outsideClick = function(e) {
+                    var isElement = $isElement(angular.element(e.target), elem.find('ul').eq(0), $document);
+                    if (!isElement && document.activeElement.tagName.toLowerCase() !== 'input') {
+                        scope.showListFlag = false;
+                        scope.$apply();
+                    }
+                };
+                $documentBind.click('showListFlag', outsideClick, scope);
+            }
+        };
+    }])
+    .directive('b2bSearchInput', [function() {
+        return {
+            restrict: 'A',
+            require: ['ngModel', '^b2bSearchField'],
+            link: function(scope, elem, attr, ctrl) {
+                var ngModelCtrl = ctrl[0];
+                var attSearchBarCtrl = ctrl[1];
+                var REGEX = ctrl[1].denyRegex();
+                var parser = function(viewValue) {
+                    attSearchBarCtrl.triggerInput(viewValue);
+                    return viewValue;
+                };
+                ngModelCtrl.$parsers.push(parser);
+
+                if (REGEX !== undefined || REGEX !== '') {
+                    elem.bind('input', function() {
+                        var inputString = ngModelCtrl.$viewValue && ngModelCtrl.$viewValue.replace(REGEX, '');
+                        if (inputString !== ngModelCtrl.$viewValue) {
+                            ngModelCtrl.$setViewValue(inputString);
+                            ngModelCtrl.$render();
+                            scope.$apply();
+                        }
+                    });
+                }
+            }
+        };
+    }]);
+
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:Seek bar
+ *
+ * @description
+ *  <file src="src/seekBar/docs/readme.md" />
+ *
+ * @usage
+ *  Horizontal Seek Bar
+ *  <b2b-seek-bar min="0" max="400" step="1" skip-interval="1" data-ng-model="horizontalSeekBarVal" style="width:180px; margin: auto;" on-drag-end="onDragEnd()" on-drag-init="onDragStart()"></b2b-seek-bar>
+
+ *  Vertical Seek Bar
+ *  <b2b-seek-bar min="0" max="1" step="0.01" skip-interval="0.1" vertical data-ng-model="verticalSeekBarVal" style=" width: 6px; height: 180px; margin: auto;"></b2b-seek-bar>
+ *
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/seekBar/docs/demo.html" />
+            <file src="src/seekBar/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.seekBar', ['b2b.att.utilities','b2b.att.position'])
+        .constant('b2bSeekBarConfig', {
+            'min': 0,
+            'max': 100,
+            'step': 1,
+            'skipInterval': 1
+        })
+        .directive('b2bSeekBar', ['$documentBind', 'events', 'b2bSeekBarConfig', 'keymap', '$compile', function($documentBind, events, b2bSeekBarConfig, keymap, $compile) {
+                return {
+                    restrict: 'AE',
+                    replace: true,
+                    require: 'ngModel',
+                    templateUrl: 'b2bTemplate/seekBar/seekBar.html',
+                    scope: {
+                        onDragEnd: '&?',
+                        onDragInit: '&?'
+                    },
+                    link: function(scope, elm, attr, ngModelCtrl) {
+                        scope.isDragging = false;
+                        scope.verticalSeekBar = false;
+                        var min;
+                        var max;
+                        var step = b2bSeekBarConfig.step;
+                        var skipInterval = b2bSeekBarConfig.skipInterval;
+                        var knob = angular.element(elm[0].querySelector('.b2b-seek-bar-knob-container'));
+                        var seekBarKnob = angular.element(knob[0].querySelector('.b2b-seek-bar-knob'));
+                        var trackContainer = angular.element(elm[0].querySelector('.b2b-seek-bar-track-container'));
+                        var trackFill = angular.element(elm[0].querySelector('.b2b-seek-bar-track-fill'));
+                        var trackContainerRect = {};
+                        var axisPosition;
+                        var trackFillOrderPositioning;
+
+                        if (angular.isDefined(attr.vertical)) {
+                            scope.verticalSeekBar = true;
+                            axisPosition = "clientY";
+                        }
+                        else {
+                            scope.verticalSeekBar = false;
+                            axisPosition = "clientX";
+                        }
+                        var getValidStep = function(val) {
+                            val = parseFloat(val);
+                            // in case $modelValue came in string number
+                            if (angular.isNumber(val)) {
+                                val = Math.round((val - min) / step) * step + min;
+                                return Math.round(val * 1000) / 1000;
+                            }
+                        };
+
+                        var getPositionToPercent = function(x) {
+                            if (scope.verticalSeekBar) {
+                                return Math.max(0, Math.min(1, (trackContainerRect.bottom - x) / (trackFillOrderPositioning)));
+                            }
+                            else {
+                                return Math.max(0, Math.min(1, (x - trackContainerRect.left) / (trackFillOrderPositioning)));
+                            }
+                        };
+
+                        var getPercentToValue = function(percent) {
+                            return (min + percent * (max - min));
+                        };
+
+                        var getValueToPercent = function(val) {
+                            return (val - min) / (max - min);
+                        };
+
+                        var getValidMinMax = function(val) {
+                            return Math.max(min, Math.min(max, val));
+                        };
+
+                        var updateTrackContainerRect = function() {
+                            trackContainerRect = trackContainer[0].getBoundingClientRect();
+                            if (scope.verticalSeekBar) {
+                                if (!trackContainerRect.height) {
+                                    trackFillOrderPositioning = trackContainer[0].scrollHeight;
+                                } else {
+                                    trackFillOrderPositioning = trackContainerRect.height;
+                                }
+                            }
+                            else {
+                                if (!trackContainerRect.width) {
+                                    trackFillOrderPositioning = trackContainer[0].scrollWidth;
+                                } else {
+                                    trackFillOrderPositioning = trackContainerRect.width;
+                                }
+
+                            }
+
+                        };
+
+                        var updateKnobPosition = function(percent) {
+                            var percentStr = (percent * 100) + '%';
+                            if (scope.verticalSeekBar) {
+                                knob.css('bottom', percentStr);
+                                trackFill.css('height', percentStr);
+                            }
+                            else {
+                                knob.css('left', percentStr);
+                                trackFill.css('width', percentStr);
+                            }
+                        };
+
+                        var modelRenderer = function() {
+                            if (isNaN(ngModelCtrl.$viewValue)) {
+                                ngModelCtrl.$viewValue = ngModelCtrl.$modelValue || min;
+                            }
+
+                            var viewVal = ngModelCtrl.$viewValue;
+                            scope.currentModelValue = viewVal;
+
+                            //wait for min, max and step to be set then only update UI to avoid NaN on percent calculation
+                            if ((min || min === 0) && max && step) {
+                                updateKnobPosition(getValueToPercent(viewVal));
+                            }
+                        };
+
+                        var setModelValue = function(val) {
+                            scope.currentModelValue = getValidMinMax(getValidStep(val));
+                            ngModelCtrl.$setViewValue(scope.currentModelValue);
+                        };
+
+                        var updateMin = function(val) {
+                            min = parseFloat(val);
+                            if(isNaN(min)){
+                               min = b2bSeekBarConfig.min; 
+                            }
+                            modelRenderer();
+                        };
+
+                        var updateMax = function(val) {
+                            max = parseFloat(val);
+                            if(isNaN(max)){
+                               max = b2bSeekBarConfig.max; 
+                            }
+                            modelRenderer();
+                        };
+
+                        var updateStep = function(val) {
+                            step = parseFloat(val);
+                            if (!attr['skipInterval']) {
+                                skipInterval = step;
+                            }
+                        };
+
+                        var updateSkipInterval = function(val) {
+                            skipInterval = step * Math.ceil(val / (step!==0?step:1));
+                        };
+
+                        angular.isDefined(attr.min) ? attr.$observe('min', updateMin) : updateMin(b2bSeekBarConfig.min);
+                        angular.isDefined(attr.max) ? attr.$observe('max', updateMax) : updateMax(b2bSeekBarConfig.max);
+                        if (angular.isDefined(attr.step)) {
+                            attr.$observe('step', updateStep);
+                        }
+                        if (angular.isDefined(attr.skipInterval)) {
+                            attr.$observe('skipInterval', updateSkipInterval);
+                        }
+                        scope.currentModelValue = getValidMinMax(getValidStep(min));
+                        var onMouseDown = function(e) {
+                            switch (e.which) {
+                                case 1:
+                                    // left mouse button
+                                    break;
+                                case 2:
+                                case 3:
+                                    // right or middle mouse button
+                                    return;
+                            }
+                            ;
+
+                            scope.isDragging = true;
+                            seekBarKnob[0].focus();
+                            updateTrackContainerRect();
+                            if (attr['onDragInit']) {
+                                scope.onDragInit();
+                            }
+                            events.stopPropagation(e);
+                            events.preventDefault(e);
+                             scope.$apply(function() {
+                                setModelValue(getPercentToValue(getPositionToPercent(e[axisPosition])));
+                            });
+                        };
+
+                        var onMouseUp = function() {
+
+                            if (attr['onDragEnd']) {
+                                scope.onDragEnd();
+                            }
+                            scope.isDragging = false;
+                            scope.$digest();
+                        };
+
+                        var onMouseMove = function(e) {
+                            if (scope.isDragging) {
+                                events.stopPropagation(e);
+                                events.preventDefault(e);
+
+                                scope.$apply(function() {
+                                    setModelValue(getPercentToValue(getPositionToPercent(e[axisPosition])));
+                                });
+                            }
+                        };
+
+                        function onKeyDown(e) {
+                            if (!(e.keyCode)) {
+                                e.keyCode = e.which;
+                            }
+                            var updateStep;
+                            switch (e.keyCode) {
+                                case keymap.KEY.LEFT:
+                                    if (!scope.verticalSeekBar) {
+                                        updateStep = -skipInterval;
+                                    }
+                                    break;
+                                case keymap.KEY.RIGHT:
+                                    if (!scope.verticalSeekBar) {
+                                        updateStep = skipInterval;
+                                    }
+                                    break;
+                                case keymap.KEY.UP:
+                                    if (scope.verticalSeekBar) {
+                                        updateStep = skipInterval;
+                                    }
+                                    break;
+                                case keymap.KEY.DOWN:
+                                    if (scope.verticalSeekBar) {
+                                        updateStep = -skipInterval;
+                                    }
+                                    break;
+                                default:
+                                    return;
+                            }
+
+                            if (updateStep) {
+                                events.stopPropagation(e);
+                                events.preventDefault(e);
+                                scope.$apply(function() {
+                                    setModelValue(ngModelCtrl.$viewValue + updateStep);
+                                });
+                                if (attr['onDragEnd']) {
+                                scope.onDragEnd();
+                            }
+                            }
+                        }
+
+                        elm.on('keydown', onKeyDown);
+                        elm.on('mousedown', onMouseDown);
+
+                        $documentBind.event('mousemove', 'isDragging', onMouseMove, scope, true, 0);
+                        $documentBind.event('mouseup', 'isDragging', onMouseUp, scope, true, 0);
+
+                        ngModelCtrl.$render = function() {
+                            if (!scope.isDragging) {
+                                modelRenderer();
+                            }
+                        };
+                        ngModelCtrl.$viewChangeListeners.push(modelRenderer);
+                        ngModelCtrl.$formatters.push(getValidMinMax);
+                        ngModelCtrl.$formatters.push(getValidStep);
+                    }
+                };
+            }]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:selectorModule
+ *
+ * @description
+ *  <file src="src/selectorModule/docs/readme.md" />
+ *
+ * @usage
+ * <select name="myNameBig" type="large" b2b-dropdown ng-model="Controller Variable here">
+ *   <option b2b-dropdown-list option-repeat="option data here" imgsrc="image path" value="value">List Text</option>
+ * </select>
+ *
+ * <select name="myNameBig" type="large" b2b-dropdown ng-model="Controller Variable here">
+ * <option b2b-dropdown-list option-repeat="option data here" imgsrc="image path" value="value">List Text</option>
+ * </select>
+ *
+ * <select name="myNameBig" b2b-dropdown ng-model="Controller Variable here">
+ *   <optgroup b2b-dropdown-group label="Group Label here">
+ *     <option b2b-dropdown-list option-repeat="option data here" imgsrc="image path" value="value">List Text</option>
+ *   </optgroup>
+ * </select>
+ *
+ *  @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/selectorModule/docs/demo.html" />
+            <file src="src/selectorModule/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.selectorModule', ['b2b.att.dropdowns']);
+/**
+ * @ngdoc directive
+ * @name Layouts.att:separators
+ *
+ * @description
+ *  <file src="src/separators/docs/readme.md" />
+ *
+ * @usage
+
+ *
+ * @example
+ *  <section id="code">   
+ <b>HTML + AngularJS</b>
+ <example module="b2b.att">
+ <file src="src/separators/docs/demo.html" />
+ <file src="src/separators/docs/demo.js" />
+ </example>
+ </section>
+ *
+ */
+
+angular.module('b2b.att.separators', []);
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:slider
+ *
+ * @description
+ *  <file src="src/slider/docs/readme.md" />
+ *
+ * @usage
+ *  <b2b-slider min="0" max="400" step="1" no-aria-label skip-interval="1" ng-model="horizontalSliderVal" style="width:180px; margin: auto;" on-drag-end="onDragEnd()" on-drag-init="onDragStart()" label-id="slider-label" post-aria-label="postAriaLabel"></b2b-slider>
+ *
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/slider/docs/demo.html" />
+            <file src="src/slider/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.slider', ['b2b.att.utilities'])
+        .constant('SliderConfig', {
+            'min': 0,
+            'max': 100,
+            'step': 1,
+            'skipInterval': 1
+        })
+        .directive('b2bSlider', ['$documentBind', 'SliderConfig', 'keymap', '$compile', '$log', function($documentBind, SliderConfig, keymap, $compile, $log) {
+                return {
+                    restrict: 'AE',
+                    replace: true,
+                    require: 'ngModel',
+                    templateUrl: 'b2bTemplate/slider/slider.html',
+                    scope: {
+                        onDragEnd: '&?',
+                        onDragInit: '&?',
+                        trackFillColor: '=?',
+                        preAriaLabel: '=?',
+                        postAriaLabel: '=?',
+                        onRenderEnd: '&?',
+                        sliderSnapPoints: '=?',
+                        customAriaLabel: '=?',
+                        labelId: '@?'
+                    },
+                    link: function(scope, elm, attr, ngModelCtrl) {
+                        scope.isDragging = false;
+                        scope.verticalSlider = false;
+                        var min;
+                        var max;
+                        var step = SliderConfig.step;
+                        var skipInterval = SliderConfig.skipInterval;
+                        var knob = angular.element(elm[0].querySelector('.slider-knob-container'));
+                        var sliderKnob = angular.element(knob[0].querySelector('.slider-knob'));
+                        var trackContainer = angular.element(elm[0].querySelector('.slider-track-container'));
+                        var trackFill = angular.element(elm[0].querySelector('.slider-track-fill'));
+                        var trackContainerRect = {};
+                        var axisPosition = "clientX";
+                        var trackFillOrderPositioning;
+
+                        //Forcefully disabling the vertical Slider code.
+                        if (angular.isDefined(attr.vertical)) {
+                            scope.verticalSlider = true;
+                            axisPosition = "clientY";
+                        }
+
+                        if (angular.isDefined(scope.noAriaLabel) && scope.noAriaLabel !== '') {
+                            $log.warn('no-aria-label has been deprecated. This will be removed in v0.6.0.');
+                        }
+                        if (angular.isDefined(scope.preAriaLabel) && scope.preAriaLabel !== '') {
+                            $log.warn('pre-aria-label has been deprecated. Please use label-id instead. This will be removed in v0.6.0.');
+                        }
+                        if (angular.isDefined(scope.customAriaLabel) && scope.customAriaLabel !== '') {
+                            $log.warn('custom-aria-label has been deprecated. Please use label-id and post-aria-label instead. This will be removed in v0.6.0.');
+                        }
+
+                        var binarySearchNearest = function (num, arr) {
+                            var mid;
+                            var lo = 0;
+                            var hi = arr.length - 1;
+                            
+                            while (hi - lo > 1) {
+                                mid = Math.floor((lo + hi) / 2);
+                                if (arr[mid] < num) {
+                                    lo = mid;
+                                } else {
+                                    hi = mid;
+                                }
+                            }
+                            if (num - arr[lo] < arr[hi] - num) {
+                                return arr[lo];
+                            }
+                            return arr[hi];
+                        };
+                        
+                        var getValidStep = function(val) {
+                            val = parseFloat(val);
+                            // in case $modelValue came in string number
+                            if (!isNaN(val)) {
+                                
+                                if(attr['sliderSnapPoints'] && scope.sliderSnapPoints.length > 0) {
+                                    val = binarySearchNearest(val, scope.sliderSnapPoints);
+                                }
+                                else {
+                                    val = Math.round((val - min) / step) * step + min;
+                                }
+                                
+                                return Math.round(val * 1000) / 1000;
+                            }
+                        };
+
+                        var getPositionToPercent = function(x) {
+                            if (scope.verticalSlider) {
+                                return Math.max(0, Math.min(1, (trackContainerRect.bottom - x) / (trackFillOrderPositioning)));
+                            }
+                            else {
+                                return Math.max(0, Math.min(1, (x - trackContainerRect.left) / (trackFillOrderPositioning)));
+                            }
+                        };
+
+                        var getPercentToValue = function(percent) {
+                            return (min + percent * (max - min));
+                        };
+
+                        var getValueToPercent = function(val) {
+                            return (val - min) / (max - min);
+                        };
+
+                        var getValidMinMax = function(val) {
+                            return Math.max(min, Math.min(max, val));
+                        };
+
+                        var updateTrackContainerRect = function() {
+                            trackContainerRect = trackContainer[0].getBoundingClientRect();
+                            if (scope.verticalSlider) {
+                                if (!trackContainerRect.height) {
+                                    trackFillOrderPositioning = trackContainer[0].scrollHeight;
+                                } else {
+                                    trackFillOrderPositioning = trackContainerRect.height;
+                                }
+                            }
+                            else {
+                                if (!trackContainerRect.width) {
+                                    trackFillOrderPositioning = trackContainer[0].scrollWidth;
+                                } else {
+                                    trackFillOrderPositioning = trackContainerRect.width;
+                                }
+
+                            }
+
+                        };
+
+                        var updateKnobPosition = function(percent) {
+                            var percentStr = (percent * 100) + '%';
+                            if (scope.verticalSlider) {
+                                knob.css('bottom', percentStr);
+                                trackFill.css('height', percentStr);
+                            }
+                            else {
+                                knob.css('left', percentStr);
+                                trackFill.css('width', percentStr);
+                            }
+                        };
+
+                        var modelRenderer = function() {
+
+                            if(attr['disabled']){
+                                return;
+                            }
+
+                            if (isNaN(ngModelCtrl.$viewValue)) {
+                                ngModelCtrl.$viewValue = ngModelCtrl.$modelValue || min;
+                            }
+
+                            var viewVal = ngModelCtrl.$viewValue;
+                            scope.currentModelValue = viewVal;
+
+                            //wait for min, max and step to be set then only update UI to avoid NaN on percent calculation
+                            if ((min || min === 0) && max && step) {
+                                updateKnobPosition(getValueToPercent(viewVal));
+                            }
+                        };
+
+                        var setModelValue = function(val) {
+                            scope.currentModelValue = getValidMinMax(getValidStep(val));
+                            ngModelCtrl.$setViewValue(scope.currentModelValue);
+                        };
+
+                        var updateMin = function(val) {
+                            min = parseFloat(val);
+                            if(isNaN(min)){
+                               min = SliderConfig.min; 
+                            }
+                            scope.min = min;
+                            modelRenderer();
+                        };
+
+                        var updateMax = function(val) {
+                            max = parseFloat(val);
+                            if(isNaN(max)){
+                               max = SliderConfig.max; 
+                            }
+                            scope.max = max;
+                            modelRenderer();
+                        };
+
+                        var updateStep = function(val) {
+                            step = parseFloat(val);
+                            if (!attr['skipInterval']) {
+                                skipInterval = step;
+                            }
+                        };
+
+                        var updateSkipInterval = function(val) {
+                            skipInterval = step * Math.ceil(val / (step!==0?step:1));
+                        };
+
+                        angular.isDefined(attr.min) ? attr.$observe('min', updateMin) : updateMin(SliderConfig.min);
+                        angular.isDefined(attr.max) ? attr.$observe('max', updateMax) : updateMax(SliderConfig.max);
+                        if (angular.isDefined(attr.step)) {
+                            attr.$observe('step', updateStep);
+                        }
+                        if (angular.isDefined(attr.skipInterval)) {
+                            attr.$observe('skipInterval', updateSkipInterval);
+                        }
+                        scope.currentModelValue = getValidMinMax(getValidStep(min));
+                        var onMouseDown = function(e) {
+
+                            if(attr['disabled']){
+                                return;
+                            }
+
+                            switch (e.which) {
+                                case 1:
+                                    // left mouse button
+                                    break;
+                                case 2:
+                                case 3:
+                                    // right or middle mouse button
+                                    return;
+                            }
+
+                            scope.isDragging = true;
+                            sliderKnob[0].focus();
+                            updateTrackContainerRect();
+                            if (attr['onDragInit']) {
+                                scope.onDragInit();
+                            }
+                            e.stopPropagation();
+                            e.preventDefault();
+                             scope.$apply(function() {
+                                setModelValue(getPercentToValue(getPositionToPercent(e[axisPosition])));
+                            });
+                        };
+
+                        var onMouseUp = function() {
+
+                            if (attr['onDragEnd']) {
+                                scope.onDragEnd();
+                            }
+                            scope.isDragging = false;
+                            scope.$digest();
+                        };
+
+                        var onMouseMove = function(e) {
+                            if (scope.isDragging) {
+                                e.stopPropagation();
+                                e.preventDefault();
+
+                                scope.$apply(function() {
+                                    setModelValue(getPercentToValue(getPositionToPercent(e[axisPosition])));
+                                });
+                            }
+                        };
+
+                        function onKeyDown(e) {
+                            if (!(e.keyCode)) {
+                                e.keyCode = e.which;
+                            }
+                            var updateStep;
+                            switch (e.keyCode) {
+                                case keymap.KEY.DOWN:
+                                case keymap.KEY.LEFT:
+                                    if(attr['sliderSnapPoints'] && scope.sliderSnapPoints.length > 0) {
+                                        var currentIndex = scope.sliderSnapPoints.indexOf(ngModelCtrl.$viewValue);
+                                        if (currentIndex > 0) {
+                                            currentIndex--;
+                                        }
+                                        updateStep = scope.sliderSnapPoints[currentIndex];
+                                    }
+                                    else {
+                                        updateStep = ngModelCtrl.$viewValue - skipInterval;
+                                    }
+                                    break;
+                                case keymap.KEY.UP:
+                                case keymap.KEY.RIGHT:
+                                    if(attr['sliderSnapPoints'] && scope.sliderSnapPoints.length > 0) {
+                                        var currentIndex = scope.sliderSnapPoints.indexOf(ngModelCtrl.$viewValue);
+                                        if (currentIndex < scope.sliderSnapPoints.length-1) {
+                                            currentIndex++;
+                                        }
+                                        updateStep = scope.sliderSnapPoints[currentIndex];
+                                    }
+                                    else {
+                                        updateStep = ngModelCtrl.$viewValue + skipInterval;
+                                    }
+                                    break;
+                                case keymap.KEY.END:
+                                    if(attr['sliderSnapPoints'] && scope.sliderSnapPoints.length > 0) {
+                                        currentIndex = scope.sliderSnapPoints.length-1;
+                                        updateStep = scope.sliderSnapPoints[currentIndex];
+                                    } else {
+                                        setModelValue(scope.max);
+                                    }
+                                    e.preventDefault();
+                                    e.stopPropagation();
+                                    break;
+                                case keymap.KEY.HOME:
+                                    if(attr['sliderSnapPoints'] && scope.sliderSnapPoints.length > 0) {
+                                        currentIndex = 0;
+                                        updateStep = scope.sliderSnapPoints[currentIndex];
+                                    } else {
+                                        setModelValue(scope.min);
+                                    }
+                                    e.preventDefault();
+                                    e.stopPropagation();
+                                    break;
+                                default:
+                                    return;
+                            }
+
+                            if (angular.isNumber(updateStep) && !attr['disabled']) {
+                                e.stopPropagation();
+                                e.preventDefault();
+                                scope.$apply(function() {
+                                    setModelValue(updateStep);
+                                });
+                                if (attr['onDragEnd']) {
+                                    scope.onDragEnd();
+                                }
+                            }
+                        }
+
+                        elm.on('keydown', onKeyDown);
+                        elm.on('mousedown', onMouseDown);
+
+                        $documentBind.event('mousemove', 'isDragging', onMouseMove, scope, true, 0);
+                        $documentBind.event('mouseup', 'isDragging', onMouseUp, scope, true, 0);
+
+                        attr.$observe('disabled', function (disabled) {
+                            if (disabled) {
+                                sliderKnob.removeAttr('tabindex');
+                            } else {
+                                sliderKnob.attr('tabindex', '0');
+                                disabled = false;
+                            }
+
+                            elm.toggleClass("slider-disabled", disabled);
+
+                            if (angular.isDefined(attr.hideDisabledKnob)) {
+                                scope.hideKnob = disabled;
+                            }
+                        });
+
+                        ngModelCtrl.$render = function() {
+                            if (!scope.isDragging) {
+                                modelRenderer();
+                                if (attr['onRenderEnd'] && !attr['disabled']) {
+                                    scope.onRenderEnd({currentModelValue: scope.currentModelValue});
+                                }
+                            }
+                        };
+                        ngModelCtrl.$viewChangeListeners.push(modelRenderer);
+                        ngModelCtrl.$formatters.push(getValidMinMax);
+                        ngModelCtrl.$formatters.push(getValidStep);
+                    }
+                };
+            }]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:spinButton
+ *
+ * @param {String} spin-button-id - An ID for the input field
+ * @param {Integer} min - Minimum value for the input
+ * @param {Integer} max - Maximum value for the input
+ * @param {Integer} step - Value by which input field increments or decrements on up/down arrow keys
+ * @param {Integer} page-step - Value by which input field increments or decrements on page up/down keys
+ * @param {boolean} input-model-key - Default value for input field
+ * @param {boolean} disabled-flag - A boolean that triggers directive once the min or max value has reached
+ *
+ * @description
+ *  <file src="src/spinButton/docs/readme.md" />
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/spinButton/docs/demo.html" />
+            <file src="src/spinButton/docs/demo.js" />
+       </example>
+    </section>
+ * 
+ */
+angular.module('b2b.att.spinButton', ['b2b.att.utilities'])
+    .constant('b2bSpinButtonConfig', {
+        min: 1,
+        max: 10,
+        step: 1,
+        pageStep: 10,
+        inputModelKey: 'value',
+        disabledFlag: false
+    })
+    .directive('b2bSpinButton', ['keymap', 'b2bSpinButtonConfig', 'b2bUserAgent', function (keymap, b2bSpinButtonConfig, userAgent) {
+        return {
+            restrict: 'EA',
+            require: '?ngModel',
+            transclude: false,
+            replace: true,
+            scope: {
+                min: '=min',
+                max: '=max',
+                step: '=step',
+                pageStep: '=pageStep',
+                spinButtonId: '@',
+                inputValue: '=ngModel',
+                inputModelKey: '@',
+                disabledFlag: "=?"
+            },
+            templateUrl: 'b2bTemplate/spinButton/spinButton.html',
+            controller: ['$scope', '$element', '$attrs', function (scope, element, attrs) {
+
+                scope.isMobile = userAgent.isMobile();
+                scope.notMobile = userAgent.notMobile();
+
+                scope.min = attrs.min ? scope.min : b2bSpinButtonConfig.min;
+                scope.max = attrs.max ? scope.max : b2bSpinButtonConfig.max;
+                scope.step = attrs.step ? scope.step : b2bSpinButtonConfig.step;
+                scope.pageStep = attrs.pageStep ? scope.pageStep : b2bSpinButtonConfig.pageStep;
+                scope.inputModelKey = attrs.inputModelKey ? scope.inputModelKey : b2bSpinButtonConfig.inputModelKey;
+                scope.disabledFlag = attrs.disabledFlag ? scope.disabledFlag : b2bSpinButtonConfig.disabledFlag;
+                
+                if (scope.min < 0) {
+                    scope.min = 0;
+                }
+                if (scope.max > 999) {
+                    scope.max = 999;
+                }
+
+                scope.isPlusDisabled = function () {
+                    return (scope.disabledFlag || scope.inputValue[scope.inputModelKey] >= scope.max);
+                };
+                scope.isMinusDisabled = function () {
+                    return (scope.disabledFlag || scope.inputValue[scope.inputModelKey] <= scope.min);
+                };
+
+                scope.getValidateInputValue = function (value) {
+                    if (value <= scope.min) {
+                        return scope.min;
+                    } else if (value >= scope.max) {
+                        return scope.max;
+                    } else {
+                        return value;
+                    }
+                };
+
+                scope.plus = function () {
+                    scope.inputValue[scope.inputModelKey] = scope.getValidateInputValue(parseInt(scope.inputValue[scope.inputModelKey], 10) + scope.step);
+                };
+                scope.minus = function () {
+                    scope.inputValue[scope.inputModelKey] = scope.getValidateInputValue(parseInt(scope.inputValue[scope.inputModelKey], 10) - scope.step);
+                };
+                scope.pagePlus = function () {
+                    scope.inputValue[scope.inputModelKey] = scope.getValidateInputValue(parseInt(scope.inputValue[scope.inputModelKey], 10) + scope.pageStep);
+                };
+                scope.pageMinus = function () {
+                    scope.inputValue[scope.inputModelKey] = scope.getValidateInputValue(parseInt(scope.inputValue[scope.inputModelKey], 10) - scope.pageStep);
+                };
+
+            }],
+            link: function (scope, elem) {
+
+                if (scope.notMobile) {
+                    angular.element(elem).find('input').attr('aria-live', 'off');
+                    angular.element(elem).find('input').attr('role', 'spinbutton');
+                }
+
+                elem.find('input').bind('keydown', function (e) {
+                    if (e.keyCode === keymap.KEY.UP) {
+                        scope.plus();
+                    } else if (e.keyCode === keymap.KEY.DOWN){
+                        scope.minus();
+                    } else if (e.keyCode === keymap.KEY.HOME) {
+                        scope.inputValue[scope.inputModelKey] = parseInt(scope.min);
+                    } else if (e.keyCode === keymap.KEY.END) {
+                        scope.inputValue[scope.inputModelKey] = parseInt(scope.max);
+                    } else if (e.keyCode === keymap.KEY.PAGE_UP) {
+                        scope.pagePlus();
+                    } else if (e.keyCode === keymap.KEY.PAGE_DOWN) {
+                        scope.pageMinus();
+                    }
+                    scope.$apply();
+                });
+
+                elem.find('input').bind('keyup', function () {
+                    if (scope.inputValue[scope.inputModelKey] === null ||
+                        scope.inputValue[scope.inputModelKey] === '' ||
+                        scope.inputValue[scope.inputModelKey] < scope.min) {
+                        scope.inputValue[scope.inputModelKey] = scope.min;
+                        scope.$apply();
+                    } else if (angular.isUndefined(scope.inputValue[scope.inputModelKey]) || 
+                               scope.inputValue[scope.inputModelKey] > scope.max) {
+                        scope.inputValue[scope.inputModelKey] = scope.max;
+                        scope.$apply();
+                    }
+                });
+
+                scope.focusInputSpinButton = function (evt) {
+                    evt.preventDefault();
+                    if (scope.notMobile) {
+                        elem[0].querySelector('input').focus();
+                    }
+                };
+
+            }
+        };  
+    }]);
+/** 
+ * @ngdoc directive 
+ * @name Template.att:Static Route
+ * 
+ * @description 
+ *  <file src="src/staticRouteTemplate/docs/readme.md" /> 
+ * 
+ * @example 
+ *  <section id="code"> 
+        <example module="b2b.att"> 
+            <file src="src/staticRouteTemplate/docs/demo.html" /> 
+            <file src="src/staticRouteTemplate/docs/demo.js" /> 
+       </example> 
+    </section>    
+ * 
+ */
+angular.module('b2b.att.staticRouteTemplate', ['b2b.att.utilities'])
+  
+/**
+ * @ngdoc directive
+ * @name Progress & usage indicators.att:statusTracker
+ *
+ * @scope
+ * @param {array} statuses - An array of status objects
+ * @description
+ * <file src="src/statusTracker/docs/readme.md" />
+ *
+ * @usage
+ *
+<div ng-controller="statusTrackerController">
+    <b2b-status-tracker statuses="statusObject"></b2b-status-tracker>
+</div>
+
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/statusTracker/docs/demo.html" />
+            <file src="src/statusTracker/docs/demo.js" />
+        </example>
+    </section>
+ */
+
+angular.module('b2b.att.statusTracker', ['b2b.att.utilities'])
+.constant('b2bStatusTrackerConfig', {
+    'maxViewItems': 3
+})
+.directive('b2bStatusTracker', ['b2bStatusTrackerConfig', function(b2bStatusTrackerConfig) {
+        return {
+            restrict: 'EA',
+            transclude: false,
+            replace: true,
+            scope:{
+                statuses: '='
+            },
+            templateUrl: function(scope) {
+                return 'b2bTemplate/statusTracker/statusTracker.html';
+            },
+            link: function(scope, element, attr) {
+                scope.currentViewIndex = 0;
+                scope.b2bStatusTrackerConfig = b2bStatusTrackerConfig;
+
+                scope.nextStatus = function() {
+                    if (scope.currentViewIndex+1 <= scope.statuses.length) {
+                        scope.currentViewIndex++;
+                    }
+                };
+                scope.previousStatus = function() {
+                    if (scope.currentViewIndex-1 >= 0) {
+                        scope.currentViewIndex--;
+                    }
+                };
+                scope.isInViewport = function(index) {
+                    return (index < scope.currentViewIndex+3 && index >= scope.currentViewIndex);  // && index > scope.currentViewIndex-2
+                };
+                scope.currentStatus = function(index) {
+                    if(index != undefined){
+                        if(!scope.statuses[index].complete) {
+                            if(index > 0 && scope.statuses[index-1].complete) {
+                                return true;
+                            } else if(index == 0 && !scope.statuses[index].complete){
+                                return true;
+                            } else {
+                                return false;
+                            }
+                        }
+                    }
+                };
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Progress & usage indicators.att:stepTracker
+ *
+ * @scope
+ * @param {array} stepsItemsObject - An array of step objects
+ * @param {Integer} currenIindex - This indicates the current running step
+ * @param {Integer} viewportIndex - This is optional. This can used to start the view port rather than 1 item.
+ * @description
+ * <file src="src/stepTracker/docs/readme.md" />
+ *
+ * @usage
+ *
+ *  <b2b-step-tracker steps-items-object="stepsObject" current-index="currentStepIndex" step-indicator-heading="stepHeading"></b2b-step-tracker>
+ *
+
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/stepTracker/docs/demo.html" />
+            <file src="src/stepTracker/docs/demo.js" />
+        </example>
+    </section>
+ */
+angular.module('b2b.att.stepTracker', ['b2b.att.utilities'])
+    .constant('b2bStepTrackerConfig', {
+        'maxViewItems': 5
+    })
+    .directive('b2bStepTracker', ['b2bStepTrackerConfig', function(b2bStepTrackerConfig) {
+        return {
+            restrict: 'EA',
+            transclude: true,
+            scope:{
+                stepsItemsObject:"=",
+                currentIndex:"=",
+                viewportIndex:"=?"
+            },
+            templateUrl: 'b2bTemplate/stepTracker/stepTracker.html',
+            link: function(scope, ele, attr) {
+                if (angular.isDefined(scope.viewportIndex)) {
+                    scope.currentViewIndex = scope.viewportIndex - 1;   
+                }else{
+                    scope.currentViewIndex = 0;
+                }
+               
+               scope.b2bStepTrackerConfig = b2bStepTrackerConfig;
+               scope.nextStatus = function() {
+                    if (scope.currentViewIndex+1 <= scope.stepsItemsObject.length) {
+                        scope.currentViewIndex++;
+                    }
+                };
+                scope.previousStatus = function() {
+                    if (scope.currentViewIndex-1 >= 0) {
+                        scope.currentViewIndex--;
+                    }
+                };
+                scope.isInViewport = function(index) {
+                    return (index < scope.currentViewIndex+b2bStepTrackerConfig.maxViewItems && index >= scope.currentViewIndex);
+                };
+            }
+        };
+    }]);
+     
+/**
+ * @ngdoc directive
+ * @name Buttons, links & UI controls.att:switches
+ *
+ * @description
+ *  <file src="src/switches/docs/readme.md" />
+ *
+ * @usage
+ *  
+ *  <!-- On / Off Toggle switch -->
+ *  <label for="switch1" class="controlled-text-wrap"> This is ON
+ *      <input type="checkbox" role="checkbox" b2b-switches id="switch1" ng-model="switch1.value">
+ *  </label>
+ *
+ *  <!-- On / Off Toggle switch and DISABLED -->
+ *  <label for="switch2" class="controlled-text-wrap"> This is ON (disabled)
+ *      <input type="checkbox" role="checkbox" b2b-switches id="switch2" ng-model="switch1.value" ng-disabled="true" >
+ *  </label> 
+ *
+ *
+ * @example
+ *  <section id="code">
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/switches/docs/demo.js" />
+            <file src="src/switches/docs/demo.html" />
+        </example>
+    </section>
+ */
+angular.module('b2b.att.switches', ['b2b.att.utilities'])
+    .directive('b2bSwitches', ['$compile', '$templateCache', 'keymap', 'events', function ($compile, $templateCache, keymap, events) {
+        return {
+            restrict: 'EA',
+            require: ['ngModel'],
+            link: function (scope, element, attrs, ctrl) {
+                var ngModelController = ctrl[0];
+        
+                element.parent().bind("keydown", function (e) {
+                    if (!attrs.disabled && (e.keyCode === keymap.KEY.ENTER || e.keyCode === keymap.KEY.SPACE)) {
+                        events.preventDefault(e);
+                        ngModelController.$setViewValue(!ngModelController.$viewValue);
+                        element.prop("checked", ngModelController.$viewValue);
+                    }
+                });
+
+                element.wrap('<div class="btn-switch">');
+                //element.attr("tabindex", -1);
+                if (navigator.userAgent.match(/iphone/i)){
+                    element.attr("aria-live", "polite");
+                }
+                else {
+                    element.removeAttr('aria-live');
+                }
+
+                var templateSwitch = angular.element($templateCache.get("b2bTemplate/switches/switches.html"));
+                if (angular.isDefined(attrs.typeSpanish)) {
+                    templateSwitch = angular.element($templateCache.get("b2bTemplate/switches/switches-spanish.html"));
+                }
+
+                templateSwitch = $compile(templateSwitch)(scope);
+                element.parent().append(templateSwitch);
+
+                element.bind("focus", function (e) {
+                    element.parent().addClass('focused');
+                });
+
+                element.bind("blur", function (e) {
+                    element.parent().removeClass('focused');
+                });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:tableMessages
+ *
+ * @description
+ *  <file src="src/tableMessages/docs/readme.md" />
+ *
+ * @usage
+    <!-- no matching results -->
+    <b2b-table-message msg-type="'noMatchingResults'">
+       <p>No Matching Results</p>
+    </b2b-table-message>
+  
+    <!-- info could not load -->
+    <b2b-table-message msg-type="'infoCouldNotLoad'" on-refresh-click="refreshClicked()">
+    </b2b-table-message>
+   
+    <!-- magnify search -->
+    <b2b-table-message msg-type="'magnifySearch'">
+    </b2b-table-message>
+   
+    <!-- loading data -->
+    <b2b-table-message msg-type="'loadingTable'">
+          <!-- custom html -->
+          <p>The data is currently loading...</p>
+    </b2b-table-message>
+
+ * @example
+    <section id="code">   
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/tableMessages/docs/demo.html" />
+            <file src="src/tableMessages/docs/demo.js" />
+        </example>
+    </section>
+ */
+angular.module('b2b.att.tableMessages', [])
+    .directive('b2bTableMessage', [function() {
+        return {
+            restrict: 'AE',
+            replace: true,
+            transclude: true,
+            scope: {
+                msgType: '=',
+                onRefreshClick: '&'
+            },
+            templateUrl: 'b2bTemplate/tableMessages/tableMessage.html',
+            link: function(scope) {
+                scope.refreshAction = function(evt) {
+                    scope.onRefreshClick(evt);
+                };
+            }
+        };
+    }]);
+
+/**
+ * @ngdoc directive
+ * @name Tabs, tables & accordions.att:tableScrollbar
+ *
+ * @description
+ *  <file src="src/tableScrollbar/docs/readme.md" />
+ *
+ * @usage
+ * 
+<b2b-table-scrollbar>
+    <table>
+        <thead type="header">
+            <tr>
+                <th role="columnheader" scope="col" key="Id" id="col1">Id</th>
+                .....
+            </tr>
+        </thead>
+        <tbody type="body">
+            <tr>
+                <td id="rowheader0" headers="col1">1002</td>
+                .....
+            </tr>
+        </tbody>
+    </table>
+</b2b-table-scrollbar>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/tableScrollbar/docs/demo.html" />
+            <file src="src/tableScrollbar/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.tableScrollbar', [])
+    .directive('b2bTableScrollbar', ['$timeout', function ($timeout) {
+        return {
+            restrict: 'E',
+            scope: true,
+            transclude: true,
+            templateUrl: 'b2bTemplate/tableScrollbar/tableScrollbar.html',
+            link: function (scope, element, attrs, ctrl) {
+                var firstThWidth, firstTdWidth, firstColumnWidth, firstColumnHeight, trHeight = 0;
+                var pxToScroll = '';
+                var tableElement = element.find('table');
+                var thElements = element.find('th');
+                var tdElements = element.find('td');
+                var innerContainer = angular.element(element[0].querySelector('.b2b-table-inner-container'));
+                var outerContainer = angular.element(element[0].querySelector('.b2b-table-scrollbar'));
+
+                scope.disableLeft = true;
+                scope.disableRight = false;
+
+                if (angular.isDefined(thElements[0])) {
+                    firstThWidth = thElements[0].offsetWidth;
+                }
+                if (angular.isDefined(tdElements[0])) {
+                    firstTdWidth = tdElements[0].offsetWidth;
+                }
+                firstColumnWidth = (firstThWidth > firstTdWidth) ? firstThWidth : firstTdWidth;
+
+                innerContainer.css({
+                    'padding-left': (firstColumnWidth + 2) + 'px'
+                });
+
+                angular.forEach(element.find('tr'), function (eachTr, index) {
+                    trObject = angular.element(eachTr);
+                    firstColumn = angular.element(trObject.children()[0]);
+
+                    angular.element(firstColumn).css({
+                        'margin-left': -(firstColumnWidth + 2) + 'px',
+                        'width': (firstColumnWidth + 2) + 'px',
+                        'position': 'absolute'
+                    });
+
+                    trHeight = trObject[0].offsetHeight;
+                    firstColumnHeight = firstColumn[0].offsetHeight;
+                    if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
+                        firstColumnHeight += 1;
+                    }
+
+                    if (trHeight !== firstColumnHeight - 1) {
+                        if (trHeight > firstColumnHeight) {
+                            if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
+                                trHeight -= 1;
+                            }
+                            angular.element(firstColumn).css({
+                                'height': (trHeight + 1) + 'px'
+                            });
+                        } else {
+                            angular.element(trObject).css({
+                                'height': (firstColumnHeight - 1) + 'px'
+                            });
+                        }
+                    }
+
+                });
+
+                pxToScroll = outerContainer[0].offsetWidth - firstColumnWidth;
+
+                scope.scrollLeft = function () {
+                    innerContainer[0].scrollLeft = innerContainer[0].scrollLeft + 20 - pxToScroll;
+                };
+
+                scope.scrollRight = function () {
+                    innerContainer[0].scrollLeft = innerContainer[0].scrollLeft + pxToScroll - 20;
+                };
+
+                scope.checkScrollArrows = function () {
+                    if (innerContainer[0].scrollLeft == 0) {
+                        scope.disableLeft = true;
+                    } else {
+                        scope.disableLeft = false;
+                    }
+
+                    if (((innerContainer[0].offsetWidth - firstColumnWidth) + innerContainer[0].scrollLeft) >= tableElement[0].offsetWidth) {
+                        scope.disableRight = true;
+                    } else {
+                        scope.disableRight = false;
+                    }
+                };
+
+                innerContainer.bind('scroll', function () {
+                    $timeout(function () {
+                        scope.checkScrollArrows();
+                    }, 1);
+                });
+
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Tabs, tables & accordions.att:tables
+ *
+ * @description
+ *  <file src="src/tables/docs/readme.md" />
+ *
+ * @usage
+ *   
+ Table
+ <table b2b-table table-data="tableData" search-string="searchString">
+    <thead b2b-table-row type="header">
+        <tr>
+            <th b2b-table-header key="requestId" default-sort="a" id="col1">Header 1</th>
+            <th b2b-table-header key="requestType" sortable="false" id="col2">Header 2</th>
+        </tr>
+    </thead>
+    <tbody b2b-table-row type="body" row-repeat="rowData in tableData">
+        <tr>
+            <td b2b-table-body id="rowheader{{$index}}" headers="col1" ng-bind="rowData['requestId']"> </td>
+            <td b2b-table-body ng-bind="rowData['requestType']"></td>
+        </tr>
+    </tbody>
+ </table>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/tables/docs/demo.html" />
+            <file src="src/tables/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.tables', ['b2b.att.utilities'])
+    .constant('b2bTableConfig', {
+        defaultSortPattern: false, // true for descending & false for ascending
+        highlightSearchStringClass: 'tablesorter-search-highlight',
+        zebraStripCutOff: 6, // > zebraStripCutOff
+        tableBreakpoints: [ // breakpoints are >= min and < max
+            {
+                min: 0,
+                max: 480,
+                columns: 2
+            },
+            {
+                min: 480,
+                max: 768,
+                columns: 3
+            },
+            {
+                min: 768,
+                max: 1025,
+                columns: 5
+            },
+            {
+                min: 1025,
+                max: 1920,
+                columns: 7
+            }
+        ]
+    })
+    .directive('b2bTable', ['$filter', '$window', 'b2bTableConfig', '$timeout', function ($filter, $window, b2bTableConfig, $timeout) {
+        return {
+            restrict: 'EA',
+            replace: true,
+            transclude: true,
+            scope: {
+                tableData: "=",
+                viewPerPage: "=",
+                currentPage: "=",
+                totalPage: "=",
+                searchCategory: "=",
+                searchString: "=",
+                nextSort: '='
+            },
+            require: 'b2bTable',
+            templateUrl: 'b2bTemplate/tables/b2bTable.html',
+            controller: ['$scope', '$attrs', function ($scope, $attrs) {
+                this.headers = [];
+                this.currentSortIndex = null;
+                this.responsive = $scope.responsive = $attrs.responsive;
+                this.maxTableColumns = -1;
+                this.totalTableColums = 0;
+                this.active = $scope.active = false;
+                this.responsiveRowScopes = [];
+                this.hideColumnPriority = [];
+                this.hiddenColumn = [];
+                this.setIndex = function (headerScope, priority) {
+                    this.headers.push(headerScope);
+                    if (this.responsive) {
+                        this.totalTableColums++;
+                        if (!isNaN(priority)) {
+                            this.hideColumnPriority[priority] = this.totalTableColums - 1;
+                        } else {
+                            this.hideColumnPriority[this.totalTableColums - 1] = this.totalTableColums - 1;
+                        }
+                    }
+                    return this.totalTableColums - 1;
+                };
+                this.getIndex = function (headerName) {
+                    for (var i = 0; i < this.headers.length; i++) {
+                        if (this.headers[i].headerName === headerName) {
+                            return this.headers[i].index;
+                        }
+                    }
+                    return null;
+                };
+                this.setResponsiveRow = function (responsiveRowScope) {
+                    this.responsiveRowScopes.push(responsiveRowScope);
+                }
+                $scope.nextSort = '';
+                this.sortData = function (columnIndex, reverse, externalSort) {
+                    if ($scope.$parent && $scope.$parent !== undefined) {
+                        $scope.$parent.columnIndex = columnIndex;
+                        $scope.$parent.reverse = reverse;
+                    }
+                    this.currentSortIndex = columnIndex;
+                    if (externalSort === true) {
+                        if (!reverse) {
+                            $scope.nextSort = 'd'
+                        } else {
+                            $scope.nextSort = 'a'
+                        }
+                    }
+                    $scope.currentPage = 1;
+                    this.resetSortPattern();
+                };
+                this.getSearchString = function () {
+                    return $scope.searchString;
+                };
+                this.resetSortPattern = function () {
+                    for (var i = 0; i < this.headers.length; i++) {
+                        var currentScope = this.headers[i];
+                        if (currentScope.index !== this.currentSortIndex) {
+                            currentScope.resetSortPattern();
+                        }
+                    }
+                };
+
+                $scope.$watch('nextSort', function (val) {
+                    if ($scope.$parent && $scope.$parent !== undefined) {
+                        $scope.$parent.nextSort = val;
+                    }
+
+                });
+            }],
+            link: function (scope, elem, attr, ctrl) {
+                scope.searchCriteria = {};
+                scope.tableBreakpoints = attr.tableConfig ? scope.$parent.$eval(attr.tableConfig) : angular.copy(b2bTableConfig.tableBreakpoints);
+                scope.$watchCollection('tableData', function (value) {
+                    if (value && !isNaN(value.length)) {
+                        scope.totalRows = value.length;
+                    }
+                });
+                scope.$watch('currentPage', function (val) {
+                    if (scope.$parent && scope.$parent !== undefined) {
+                        scope.$parent.currentPage = val;
+                    }
+
+                });
+                scope.$watch('viewPerPage', function (val) {
+                    if (scope.$parent && scope.$parent !== undefined) {
+                        scope.$parent.viewPerPage = val;
+                    }
+                });
+                scope.$watch('totalRows', function (val) {
+                    if (scope.$parent && scope.$parent !== undefined) {
+                        if (val > b2bTableConfig.zebraStripCutOff) {
+                            scope.$parent.zebraStripFlag = true;
+                        } else {
+                            scope.$parent.zebraStripFlag = false;
+                        }
+                    }
+                });
+                scope.$watch(function () {
+                    return scope.totalRows / scope.viewPerPage;
+                }, function (value) {
+                    if (!isNaN(value)) {
+                        scope.totalPage = Math.ceil(value);
+                        scope.currentPage = 1;
+                    }
+                });
+                var searchValCheck = function (val) {
+                    if (angular.isDefined(val) && val !== null && val !== "") {
+                        return true;
+                    }
+                };
+                var setSearchCriteria = function (v1, v2) {
+                    if (searchValCheck(v1) && searchValCheck(v2)) {
+                        var index = ctrl.getIndex(v2);
+                        scope.searchCriteria = {};
+                        if (index !== null) {
+                            scope.searchCriteria[index] = v1;
+                        }
+                    } else if (searchValCheck(v1) && (!angular.isDefined(v2) || v2 === null || v2 === "")) {
+                        scope.searchCriteria = {
+                            $: v1
+                        };
+                    } else {
+                        scope.searchCriteria = {};
+                    }
+                };
+                scope.$watch('searchCategory', function (newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        setSearchCriteria(scope.searchString, newVal);
+                    }
+                });
+                scope.$watch('searchString', function (newVal, oldVal) {
+                    if (newVal !== oldVal) {
+                        setSearchCriteria(newVal, scope.searchCategory);
+                    }
+                });
+                scope.$watchCollection('searchCriteria', function (val) {
+                    if (scope.$parent && scope.$parent !== undefined) {
+                        scope.$parent.searchCriteria = val;
+                    }
+                    scope.totalRows = scope.tableData && ($filter('filter')(scope.tableData, val, false)).length || 0;
+                    scope.currentPage = 1;
+                });
+                var window = angular.element($window);
+                var findMaxTableColumns = function () {
+                    var windowWidth;
+                    windowWidth = $window.innerWidth;
+                    ctrl.maxTableColumns = -1;
+                    for (var i in scope.tableBreakpoints) {
+                        if (windowWidth >= scope.tableBreakpoints[i].min && windowWidth < scope.tableBreakpoints[i].max) {
+                            ctrl.maxTableColumns = scope.tableBreakpoints[i].columns;
+                            break;
+                        }
+                    }
+                    if (ctrl.maxTableColumns > -1 && ctrl.totalTableColums > ctrl.maxTableColumns) {
+                        ctrl.active = true;
+                    } else {
+                        ctrl.active = false;
+                    }
+                    for (var i in ctrl.responsiveRowScopes) {
+                        ctrl.responsiveRowScopes[i].setActive(ctrl.active);
+                    }
+                };
+                var findHiddenColumn = function () {
+                    var columnDiffenence = ctrl.maxTableColumns > -1 ? ctrl.totalTableColums - ctrl.maxTableColumns : 0;
+                    ctrl.hiddenColumn = [];
+                    if (columnDiffenence > 0) {
+                        var tempHideColumnPriority = angular.copy(ctrl.hideColumnPriority);
+                        for (var i = 0; i < columnDiffenence; i++) {
+                            ctrl.hiddenColumn.push(tempHideColumnPriority.pop());
+                        }
+                    }
+                };
+                var resizeListener = function () {
+                    findMaxTableColumns();
+                    findHiddenColumn();
+                };
+                if (ctrl.responsive) {
+                    window.bind('resize', function () {
+                        resizeListener();
+                        scope.$apply();
+                    });
+                    $timeout(function () {
+                        resizeListener();
+                    }, 100);
+                }
+            }
+        };
+    }])
+    .directive('b2bTableRow', [function () {
+        return {
+            restrict: 'EA',
+            compile: function (elem, attr) {
+                if (attr.type === 'header') {
+                    angular.noop();
+                } else if (attr.type === 'body') {
+                    var html = elem.children();
+                    if (attr.rowRepeat) {
+                        html.attr('ng-repeat', attr.rowRepeat.concat(" | orderBy : columnIndex : reverse | filter : searchCriteria : false "));
+                    }
+                    html.attr('ng-class', "{'odd': $odd && zebraStripFlag}");
+                    html.attr('class', 'data-row');
+                    html.attr('b2b-responsive-row', '{{$index}}');
+                    elem.append(html);
+                }
+            }
+        };
+    }])
+    .directive('b2bTableHeader', ['b2bTableConfig', function (b2bTableConfig) {
+        return {
+            restrict: 'EA',
+            replace: true,
+            transclude: true,
+            scope: {
+                sortable: '@',
+                defaultSort: '@',
+                index: '@key'
+            },
+            require: '^b2bTable',
+            templateUrl: function (elem, attr) {
+                if (attr.sortable === 'false') {
+                    return 'b2bTemplate/tables/b2bTableHeaderUnsortable.html';
+                } else {
+                    return 'b2bTemplate/tables/b2bTableHeaderSortable.html';
+                }
+            },
+            link: function (scope, elem, attr, ctrl) {
+                var reverse = b2bTableConfig.defaultSortPattern;
+                scope.headerName = elem.text();
+                scope.headerId = elem.attr('id');
+                scope.sortPattern = null;
+                var priority = parseInt(attr.priority, 10);
+                scope.columnIndex = ctrl.setIndex(scope, priority);
+
+                scope.isHidden = function () {
+                    return (ctrl.hiddenColumn.indexOf(scope.columnIndex) > -1);
+                };
+
+                scope.$watch(function () {
+                    return elem.text();
+                }, function (value) {
+                    scope.headerName = value;
+                });
+                scope.sort = function (sortType) {
+                    if (typeof sortType === 'boolean') {
+                        reverse = sortType;
+                    }
+                    ctrl.sortData(scope.index, reverse, false);
+                    scope.sortPattern = reverse ? 'descending' : 'ascending';
+                    reverse = !reverse;
+                };
+                scope.$watch(function () {
+                    return ctrl.currentSortIndex;
+                }, function (value) {
+                    if (value !== scope.index) {
+                        scope.sortPattern = null;
+                    }
+                });
+
+                if (scope.sortable === undefined || scope.sortable === 'true' || scope.sortable === true) {
+                    scope.sortable = 'true';
+                } else if (scope.sortable === false || scope.sortable === 'false') {
+                    scope.sortable = 'false';
+                }
+
+                if (scope.sortable !== 'false') {
+                    if (scope.defaultSort === 'A' || scope.defaultSort === 'a') {
+                        scope.sort(false);
+                    } else if (scope.defaultSort === 'D' || scope.defaultSort === 'd') {
+                        scope.sort(true);
+                    }
+                }
+                scope.resetSortPattern = function () {
+                    reverse = b2bTableConfig.defaultSortPattern;
+                };
+            }
+        };
+    }])
+    .directive('b2bResponsiveRow', ['$templateCache', '$timeout', '$compile', function ($templateCache, $timeout, $compile) {
+        return {
+            restrict: 'EA',
+            require: '^b2bTable',
+            controller: ['$scope', function ($scope) {
+                this.rowValues = $scope.rowValues = [];
+                this.setRowValues = function (rowValue) {
+                    this.rowValues.push(rowValue);
+                };
+                var columnIndexCounter = -1;
+                this.getIndex = function () {
+                    columnIndexCounter++;
+                    return columnIndexCounter;
+                };
+            }],
+            link: function (scope, elem, attr, ctrl) {
+                if (ctrl.responsive) {
+                    scope.rowIndex = attr.b2bResponsiveRow;
+                    scope.active = false;
+                    scope.expandFlag = false;
+                    scope.headerValues = ctrl.headers;
+                    ctrl.setResponsiveRow(scope);
+                    var firstTd = elem.find('td').eq(0);
+                    scope.setActive = function (activeFlag) {
+                        scope.active = activeFlag;
+                        if (scope.active) {
+                            elem.addClass('has-button');
+                            firstTd.attr('role', 'rowheader');
+                            firstTd.parent().attr('role', 'row');
+                        } else {
+                            elem.removeClass('has-button');
+                            firstTd.removeAttr('role');
+                            firstTd.parent().removeAttr('role');
+                        }
+                    };
+                    scope.toggleExpandFlag = function (expandFlag) {
+                        if (angular.isDefined(expandFlag)) {
+                            scope.expandFlag = expandFlag;
+                        } else {
+                            scope.expandFlag = !scope.expandFlag;
+                        }
+                        if (scope.expandFlag) {
+                            elem.addClass('opened');
+                        } else {
+                            elem.removeClass('opened');
+                        }
+                    };
+
+                    firstTd.attr('scope', 'row');
+                    firstTd.addClass('col-1');
+                    scope.$on('$destroy', function () {
+                        elem.next().remove();
+                    });
+                    $timeout(function () {
+                        scope.firstTdId = firstTd.attr('id');
+                        var firstTdContent = firstTd.html();
+                        var toggleButtonTemplate = '<span ng-show="!active">' + firstTdContent + '</span><button type="button" aria-describedby="sup-actNum{{$id}}" aria-expanded="{{expandFlag}}" ng-show="active" ng-click="toggleExpandFlag()"><i ng-class="{\'icon-primary-accordion-plus\': !expandFlag, \'icon-primary-accordion-minus\': expandFlag}" aria-hidden="true"></i>' + firstTdContent + '</button><span id="sup-actNum{{$id}}" style="display:none">{{expandFlag && "Hide row below." || "Show row below."}}</span>';
+                        toggleButtonTemplate = $compile(toggleButtonTemplate)(scope);
+                        firstTd.html('');
+                        firstTd.prepend(toggleButtonTemplate);
+
+                        var template = $templateCache.get('b2bTemplate/tables/b2bResponsiveRow.html');
+                        template = $compile(template)(scope);
+                        elem.after(template);
+                    }, 100);
+                }
+            }
+        };
+    }])
+    .directive('b2bResponsiveList', ['$templateCache', '$timeout', '$compile', function ($templateCache, $timeout, $compile) {
+        return {
+            restrict: 'EA',
+            require: '^b2bTable',
+            link: function (scope, elem, attr, ctrl) {
+                scope.columnIndex = parseInt(attr.b2bResponsiveList, 10);
+                scope.isVisible = function () {
+                    return (ctrl.hiddenColumn.indexOf(scope.columnIndex) > -1);
+                };
+            }
+        };
+    }])
+    .directive('b2bTableBody', ['$filter', '$timeout', 'b2bTableConfig', function ($filter, $timeout, b2bTableConfig) {
+        return {
+            restrict: 'EA',
+            require: ['^b2bTable', '?^b2bResponsiveRow'],
+            scope: true,
+            replace: true,
+            transclude: true,
+            templateUrl: 'b2bTemplate/tables/b2bTableBody.html',
+            link: function (scope, elem, attr, ctrl) {
+                var b2bTableCtrl = ctrl[0];
+                var b2bResponsiveRowCtrl = ctrl[1];
+                var highlightSearchStringClass = b2bTableConfig.highlightSearchStringClass;
+                var searchString = "";
+                var wrapElement = function (elem) {
+                    var text = elem.text();
+                    elem.html($filter('b2bHighlight')(text, searchString, highlightSearchStringClass));
+                };
+                var traverse = function (elem) {
+                    var innerHtml = elem.children();
+                    if (innerHtml.length > 0) {
+                        for (var i = 0; i < innerHtml.length; i++) {
+                            traverse(innerHtml.eq(i));
+                        }
+                    } else {
+                        wrapElement(elem);
+                        return;
+                    }
+                };
+                var clearWrap = function (elem) {
+                    var elems = elem.find('*');
+                    for (var i = 0; i < elems.length; i++) {
+                        if (elems.eq(i).attr('class') && elems.eq(i).attr('class').indexOf(highlightSearchStringClass) !== -1) {
+                            var text = elems.eq(i).text();
+                            elems.eq(i).replaceWith(text);
+                        }
+                    }
+                };
+                if (b2bResponsiveRowCtrl) {
+                    scope.columnIndex = b2bResponsiveRowCtrl.getIndex();
+                    scope.isHidden = function () {
+                        return (b2bTableCtrl.hiddenColumn.indexOf(scope.columnIndex) > -1);
+                    };
+                }
+                $timeout(function () {
+                    var actualHtml = elem.children();
+                    scope.$watch(function () {
+                        return b2bTableCtrl.getSearchString();
+                    }, function (val) {
+                        searchString = val;
+                        clearWrap(elem);
+                        if (actualHtml.length > 0) {
+                            traverse(elem);
+                        } else {
+                            wrapElement(elem);
+                        }
+                    });
+                    if (b2bResponsiveRowCtrl) {
+                        b2bResponsiveRowCtrl.setRowValues(elem.html());
+                    }
+                }, 50);
+            }
+        };
+    }])
+    .directive('b2bTableSort', ['b2bTableConfig','$timeout', function (b2bTableConfig,$timeout) {
+        return {
+            restrict: 'EA',
+            replace: true,
+            require: '^b2bTable',
+            link: function (scope, elem, attr, ctrl) {
+                var initialSort = '',
+                    nextSort = '',
+                    tempsort = '';
+                initialSort = attr.initialSort;
+
+                scope.sortTable = function (msg) {
+                    $timeout(function(){
+                        if (nextSort.length > 0) {
+
+                        if (nextSort === 'd' || nextSort === 'D') {
+                            tempsort = nextSort
+                            ctrl.sortData(msg, true, true);
+                            nextSort = 'a';
+                             $timeout(function(){
+                                if(!angular.isUndefined(elem[0].querySelector('.sortButton')) || elem[0].querySelector('.sortButton') !== null ){
+                                    angular.element(elem[0].querySelector('.sortButton'))[0].focus();
+                                }   
+                            },100);
+                            
+                        } else {
+                            tempsort = nextSort
+                            ctrl.sortData(msg, false, true);
+                            nextSort = 'd';
+                             $timeout(function(){
+                                if(!angular.isUndefined(elem[0].querySelector('.sortButton')) || elem[0].querySelector('.sortButton') !== null ){
+                                    angular.element(elem[0].querySelector('.sortButton'))[0].focus();
+                                }   
+                            },100);
+                        }
+                    } else if (initialSort.length > 0) {
+
+                        if (initialSort === 'd' || initialSort === 'D') {
+                            tempsort = nextSort
+                            ctrl.sortData(msg, true, true);
+                            nextSort = 'a';
+                            $timeout(function(){
+                                if(!angular.isUndefined(elem[0].querySelector('.sortButton')) || elem[0].querySelector('.sortButton') !== null ){
+                                    angular.element(elem[0].querySelector('.sortButton'))[0].focus();
+                                }   
+                            },100);
+                             
+                        } else {
+                            tempsort = nextSort
+                            ctrl.sortData(msg, false, true);
+                            nextSort = 'd';
+                             $timeout(function(){
+                                if(!angular.isUndefined(elem[0].querySelector('.sortButton')) || elem[0].querySelector('.sortButton') !== null ){
+                                    angular.element(elem[0].querySelector('.sortButton'))[0].focus();
+                                }   
+                            },100);
+
+                             
+                        }
+                    }
+                    },10)
+
+                };
+
+                scope.sortDropdown = function(msg) {
+
+                    if(tempsort==='') {
+
+                        tempsort='a'
+                    }
+                    if(tempsort === 'd' || tempsort === 'D' ) {
+                        ctrl.sortData(msg, true, false);       
+                    } else {
+                       ctrl.sortData(msg, false, false);
+                    }
+
+                };
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Tabs, tables & accordions.att:tabs
+ *
+ * @description
+ *  <file src="src/tabs/docs/readme.md" />
+ *
+ * @usage
+ *  <b2b-tabset tab-id-selected="activeTabsId">
+        <b2b-tab ng-repeat="tab in gTabs" tab-item="tab" 
+                 id="{{tab.uniqueId}}" aria-controls="{{tab.tabPanelId}}"
+                 ng-disabled="tab.disabled">
+            {{tab.title}}
+        </b2b-tab>
+    </b2b-tabset>
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/tabs/docs/demo.html" />
+            <file src="src/tabs/docs/demo.js" />
+        </example>
+    </section>
+ *
+ */
+
+angular.module('b2b.att.tabs', ['b2b.att.utilities'])
+    .directive('b2bTabset', function () {
+        return {
+            restrict: 'EA',
+            transclude: true,
+            replace: true,
+            scope: {
+                tabIdSelected: '='
+            },
+            templateUrl: 'b2bTemplate/tabs/b2bTabset.html',
+            controller: ['$scope', function ($scope) {
+
+                this.setTabIdSelected = function (tab) {
+                    $scope.tabIdSelected = tab.id;
+                };
+
+                this.getTabIdSelected = function () {
+                    return $scope.tabIdSelected;
+                };
+            }]
+        };
+    })
+    .directive('b2bTab', ['keymap', function (keymap) {
+        return {
+            restrict: 'EA',
+            transclude: true,
+            replace: true,
+            require: '^b2bTabset',
+            scope: {
+                tabItem: "="
+            },
+            templateUrl: 'b2bTemplate/tabs/b2bTab.html',
+            controller: [function(){}],
+            link: function (scope, element, attr, b2bTabsetCtrl) {
+
+                if (scope.tabItem && !scope.tabItem.disabled) {
+                    scope.tabItem.disabled = false;
+                }
+
+                scope.isTabActive = function () {
+                    return (scope.tabItem.id === b2bTabsetCtrl.getTabIdSelected());
+                };
+
+                scope.clickTab = function () {
+                    if (attr.disabled) {
+                        return;
+                    }
+                    b2bTabsetCtrl.setTabIdSelected(scope.tabItem);
+                };
+
+                scope.nextKey = function () {
+                    var el = angular.element(element[0])[0];
+                    var elementToFocus = null;
+                    while (el && el.nextElementSibling) {
+                        el = el.nextElementSibling;
+                        if (!el.querySelector('a').disabled) {
+                            elementToFocus = el.querySelector('a');
+                            break;
+                        }
+                    }
+
+                    if (!elementToFocus) {
+                        var childTabs = element.parent().children();
+                        for (var i = 0; i < childTabs.length; i++) {
+                            if (!childTabs[i].querySelector('a').disabled) {
+                                elementToFocus = childTabs[i].querySelector('a');
+                                break;
+                            }
+                        }
+                    }
+
+                    if (elementToFocus) {
+                        elementToFocus.focus();
+                    }
+                };
+
+                scope.previousKey = function () {
+                    var el = angular.element(element[0])[0];
+                    var elementToFocus = null;
+
+                    while (el && el.previousElementSibling) {
+                        el = el.previousElementSibling;
+                        if (!el.querySelector('a').disabled) {
+                            elementToFocus = el.querySelector('a');
+                            break;
+                        }
+                    }
+
+                    if (!elementToFocus) {
+                        var childTabs = element.parent().children();
+                        for (var i = childTabs.length - 1; i > 0; i--) {
+                            if (!childTabs[i].querySelector('a').disabled) {
+                                elementToFocus = childTabs[i].querySelector('a');
+                                break;
+                            }
+                        }
+                    }
+
+                    if (elementToFocus) {
+                        elementToFocus.focus();
+                    }
+                };
+
+                angular.element(element[0].querySelector('a')).bind('keydown', function (evt) {
+
+                    if (!(evt.keyCode)) {
+                        evt.keyCode = evt.which;
+                    }
+
+                    switch (evt.keyCode) {
+                        case keymap.KEY.RIGHT:
+                            evt.preventDefault();
+                            scope.nextKey();
+                            break;
+
+                        case keymap.KEY.LEFT:
+                            evt.preventDefault();
+                            scope.previousKey();
+                            break;
+
+                        default:;
+                    }
+                });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Messages, modals & alerts.att:tagBadges
+ *
+ * @description
+ *  <file src="src/tagBadges/docs/readme.md" />
+ *
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/tagBadges/docs/demo.html" />
+            <file src="src/tagBadges/docs/demo.js" />
+        </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.tagBadges', ['b2b.att.utilities'])
+        .directive('b2bTagBadge',['$timeout',function($timeout){
+            return{
+                restrict: 'EA',
+                link: function(scope,elem,attr,ctrl){
+                    elem.addClass('b2b-tags');
+                    if(angular.element(elem[0].querySelector('.icon-primary-close')).length>0) {
+                        var item = angular.element(elem[0].querySelector('.icon-primary-close'));
+                        item.bind('click',function(){
+                        elem.css({'height':'0','width':'0','padding':'0','border':'0'});
+                        elem.attr('tabindex','0');
+                        elem[0].focus();
+                        item.parent().remove();
+                        elem[0].bind('blur',function(){
+                            elem[0].remove();
+                        });
+                    });  
+                    }
+                  
+
+
+
+                }
+            };   
+}]);
+/**
+ * @ngdoc directive
+ * @name Forms.att:textArea
+ *
+ * @description
+ *  <file src="src/textArea/docs/readme.md" />
+ *
+ * @usage
+ *  <textarea b2b-reset b2b-reset-textarea ng-model="textAreaModel" ng-disabled="disabled" ng-trim="false" placeholder="{{placeholderText}}" rows="{{textAreaRows}}" maxlength="{{textAreaMaxlength}}" role="textarea"></textarea>
+ *
+ * @example
+    <section id="code">
+        <b>HTML + AngularJS</b>
+        <example module="b2b.att">
+            <file src="src/textArea/docs/demo.html" />
+            <file src="src/textArea/docs/demo.js" />
+        </example>
+    </section>
+ */
+angular.module('b2b.att.textArea', ['b2b.att.utilities'])
+
+.directive('b2bResetTextarea', [ function () {
+    return {
+        restrict: 'A',
+        require: 'b2bReset',
+        link: function (scope, element, attrs, ctrl) {
+
+            var resetButton = ctrl.getResetButton();
+            
+            var computeScrollbarAndAddClass = function () {
+                if (element.prop('scrollHeight') > element[0].clientHeight) {
+                    element.addClass('hasScrollbar');
+                } else {
+                    element.removeClass('hasScrollbar');
+                }
+            };
+            
+            computeScrollbarAndAddClass();
+
+            element.on('focus keyup', function(){
+                computeScrollbarAndAddClass();
+            });
+        }
+    };
+}]);
+
+/**
+ * @ngdoc directive
+ * @name Forms.att:tooltipsForForms
+ *
+ * @description
+ *  <file src="src/tooltipsForForms/docs/readme.md" />
+ *
+ * @example
+ <example module="b2b.att">
+ <file src="src/tooltipsForForms/docs/demo.html" />
+ <file src="src/tooltipsForForms/docs/demo.js" />
+ </example>
+ */
+angular.module('b2b.att.tooltipsForForms', ['b2b.att.utilities'])
+        .directive('b2bTooltip', ['$document', '$window', '$isElement', function ($document, $window, $isElement) {
+                return  {
+                    restrict: 'A',
+                    link: function (scope, elem, attr, ctrl) {
+                        var icon = elem[0].querySelector('a.tooltip-element');
+                        var btnIcon = elem[0].querySelector('.btn.tooltip-element');
+                        var tooltipText = elem[0].querySelector('.helpertext');
+                        var tooltipWrapper = elem[0].querySelector('.tooltip-size-control');
+                        if (elem.hasClass('tooltip-onfocus')) {
+                            var inputElm = angular.element(elem[0].querySelector("input"));
+                            var textAreaElm = angular.element(elem[0].querySelector("textarea"));
+                        }
+                        angular.element(icon).attr({'aria-expanded': false});
+                        angular.element(btnIcon).attr({'aria-expanded': false});
+                        var calcTooltip = function () {
+                            if (!elem.hasClass('tooltip active')) {
+                                if (elem.hasClass('tooltip-onfocus')) {
+                                    angular.element(elem[0].querySelector("input")).triggerHandler('focusout');
+                                }
+                                if (elem.hasClass('tooltip-onclick')) {
+                                    return false;
+                                }
+                                angular.element(icon).removeClass('active');
+                                angular.element(icon).attr({'aria-expanded': true});
+                                angular.element(icon).attr({'aria-describedby': angular.element(tooltipText).attr('id')});
+                                angular.element(tooltipText).attr({'aria-hidden': false});
+                                elem.addClass('active');
+
+                                var tooltipIconPos = angular.element(icon).prop('offsetLeft'),
+                                        tooltipPosition = angular.element(tooltipText).prop('offsetWidth') / 2,
+                                        tipOffset = (tooltipIconPos - 30) - tooltipPosition,
+                                        maxRightPos = (($window.innerWidth - 72) - (tooltipPosition * 2)) - 14.5;
+
+                                if ($window.innerWidth >= '768') {
+                                    if (tipOffset < 0) {// if icon on far left side of page
+                                        tipOffset = 15;
+                                    }
+                                    else if (tooltipIconPos > maxRightPos) {// if icon is far right side of page
+                                        tipOffset = maxRightPos;
+                                    }
+                                    else {// if tooltip in the middle somewhere
+                                        tipOffset = tipOffset;
+                                    }
+                                    angular.element(tooltipWrapper).css({left: tipOffset + 'px'});
+                                }
+                            }
+                        };
+                        
+                        // TOOLTIP LINK ONCLICK AND FOCUS
+                        angular.element(icon).on('click mouseover mouseout focus blur', function (e) {
+                            if (e.type == 'mouseover') {
+                                calcTooltip();
+                            }
+                            else if (e.type == 'mouseout' && elem.hasClass('active')) {
+                                if (!elem.hasClass('activeClick')) {
+                                    angular.element(tooltipText).attr({
+                                        'aria-hidden': true,
+                                        'tabindex': '-1'
+                                    });
+                                    elem.removeClass('active');
+                                } else if (elem.hasClass('activeClick') && navigator.userAgent.match(/iphone/i)) {
+                                    elem.removeClass('active activeClick');
+                                }
+                            }
+
+                            else {
+                                if (elem.hasClass('activeClick')) {
+                                    angular.element(icon).attr({'aria-expanded': false});
+                                    angular.element(tooltipText).attr({'aria-hidden': true});
+                                    angular.element(icon).removeAttr('aria-describedby');
+                                    elem.removeClass('activeClick active');
+                                    e.preventDefault();
+                                }
+                                else if (e.type == 'click') {
+                                    elem.addClass('activeClick');
+                                    calcTooltip();
+                                    e.preventDefault();
+                                }
+                                else {
+                                    angular.element(icon).on('keydown', function (e) {
+                                        if (e.keyCode == '32') {
+                                            (elem.hasClass('active')) ? elem.removeClass('active') : elem.addClass('value');
+                                            angular.element(icon).triggerHandler('click');
+                                            e.preventDefault();
+                                        } else if (e.keyCode == '27') {
+                                            (elem.hasClass('active')) ? elem.removeClass('active activeClick') : elem.addClass('value');
+                                        }
+                                    });
+                                    e.preventDefault();
+                                }
+                            }
+                            e.preventDefault();
+                        });
+
+                        // TOOLTIP BUTTON INSIDE A TEXT FIELD
+                        angular.element(btnIcon).on('click', function (e) {
+                            var $this = angular.element(this);
+                            if ($this.hasClass('active') && elem.hasClass('tooltip-onclick')) {
+                                elem.removeClass('active');
+                                $this.removeClass('active');
+                                angular.element(tooltipText).removeAttr('aria-live');
+                                $this.attr({'aria-expanded': 'false'});
+                                $this.removeAttr('aria-describedby');
+                            } else {
+                                elem.addClass('active');
+                                $this.addClass('active');
+                                $this.attr({'aria-expanded': 'true', 'aria-describedby': angular.element(tooltipText).attr('id')});
+                                angular.element(tooltipText).attr({'aria-live': 'polite'});
+                            }
+                        });
+
+                        angular.element(btnIcon).on('blur', function (e) {
+                            var $this = angular.element(this);
+                            if ($this.hasClass('active') && elem.hasClass('tooltip-onclick')) {
+                                elem.removeClass('active');
+                                $this.removeClass('active');
+                                angular.element(tooltipText).removeAttr('aria-live');
+                                $this.attr({'aria-expanded': 'false'});
+                                $this.removeAttr('aria-describedby');
+                            }
+                        });  
+
+                        angular.element(btnIcon).on('keydown', function (e) {
+                            var $this = angular.element(this);
+                            if (e.keyCode == '27') {
+                                var $this = angular.element(this);
+                                if ($this.hasClass('active') && elem.hasClass('tooltip-onclick')) {
+                                    elem.removeClass('active');
+                                    $this.removeClass('active');
+                                    angular.element(tooltipText).removeAttr('aria-live');
+                                    $this.attr({'aria-expanded': 'false'});
+                                    $this.removeAttr('aria-describedby');
+                                }
+                            }
+                        });
+
+                        // close all tooltips if clicking something else
+                        $document.bind('click', function (e) {
+                            var isElement = $isElement(angular.element(e.target), elem, $document);
+                            if (!isElement) {
+                                elem.removeClass('active');
+                                angular.element(elem[0].querySelector('.tooltip-element')).removeClass('active');
+                                angular.element(tooltipText).removeAttr('aria-live');
+                                angular.element(elem[0].querySelector('.tooltip-element')).attr({'aria-expanded': 'false'});
+                                angular.element(elem[0].querySelector('.tooltip-element')).removeAttr('aria-describedby');
+                            };
+                        });
+
+                        angular.element(inputElm).on('keydown', function (e) {
+                            if (e.keyCode == '27'){
+                                elem.removeClass('active');
+                                angular.element(tooltipText).css('display', 'none');
+                                angular.element(tooltipText).removeAttr('aria-live');
+
+                                if (angular.element(this).attr('aria-describedby') === undefined){
+
+                                }
+
+                                else if ((spaceIndex = angular.element(this).attr('aria-describedby').lastIndexOf(' ')) >= 0){
+
+                                    var describedByValue = angular.element(this).attr('aria-describedby').slice(0, spaceIndex);
+
+                                    angular.element(this).attr('aria-describedby', describedByValue);
+
+                                }
+                                else {
+                                    angular.element(this).removeAttr('aria-describedby');
+                                }
+                            }
+                        });
+
+                        angular.element(textAreaElm).on('keydown', function (e) {
+                            if (e.keyCode == '27'){
+                                elem.removeClass('active');
+                                angular.element(tooltipText).css('display', 'none');
+                                angular.element(tooltipText).removeAttr('aria-live');
+                                if (angular.element(this).attr('aria-describedby') === undefined){
+
+                                }
+
+                                else if ((spaceIndex = angular.element(this).attr('aria-describedby').lastIndexOf(' ')) >= 0){
+
+                                    var describedByValue = angular.element(this).attr('aria-describedby').slice(0, spaceIndex);
+
+                                    angular.element(this).attr('aria-describedby', describedByValue);
+
+                                }
+                                else {
+                                    angular.element(this).removeAttr('aria-describedby');
+                                }
+                            }
+                        });
+
+                        // TOOLTIP TRIGGERED AUTOMATICALLY INSIDE A TEXT FIELD
+                        angular.element(inputElm).on('focus', function (e) {
+                            var allTooltip = $document[0].querySelectorAll('[class*="tooltip"]');
+                            for (var i = 0; i < allTooltip.length; i++) {
+                                if (angular.element(allTooltip[i]).hasClass('active')) {
+                                    angular.element(allTooltip[i]).triggerHandler('click');
+                                }
+                            };
+                            angular.element(this).attr({'aria-describedby': angular.element(tooltipText).attr('id')});
+                            angular.element(tooltipText).css('display', 'block');
+                            angular.element(tooltipText).attr({'aria-live': 'polite'});
+                            elem.addClass('active');
+                        });
+                        angular.element(inputElm).on('blur', function (e) {
+                            elem.removeClass('active');
+                            angular.element(tooltipText).css('display', 'none');
+                            angular.element(tooltipText).removeAttr('aria-live');
+                            angular.element(this).removeAttr('aria-describedby');
+                        });
+
+                        // TOOLTIP TRIGGERED AUTOMATICALLY INSIDE A TEXTAREA
+                        angular.element(textAreaElm).on('focus', function (e) {
+                            var allTooltip = $document[0].querySelectorAll('[class*="tooltip"]');
+                            for (var i = 0; i < allTooltip.length; i++) {
+                                if (angular.element(allTooltip[i]).hasClass('active')) {
+                                    angular.element(allTooltip[i]).triggerHandler('click');
+                                }
+                            };
+                            elem.addClass('active');
+                            angular.element(tooltipText).css('display', 'block');
+                            angular.element(tooltipText).attr({'aria-live': 'polite'});
+                            angular.element(this).attr({'aria-describedby': angular.element(tooltipText).attr('id')});
+                        });
+                        angular.element(textAreaElm).on('blur', function (e) {
+                            elem.removeClass('active');
+                            angular.element(tooltipText).css('display', 'none');
+                            angular.element(tooltipText).removeAttr('aria-live');
+                            angular.element(this).removeAttr('aria-describedby');
+                        });
+                    }
+                };
+            }]); 
+/**
+ * @ngdoc directive
+ * @name Navigation.att:TreeNavigation
+ *
+ *
+ * @scope
+ * @param {String} setRole - This value needs to be "tree". This is required to incorporate CATO requirements.
+ * @param {Boolean} groupIt - This value needs to be "false" for top-level tree rendered.
+ *
+ * @description
+ *  <file src="src/treeNav/docs/readme.md" />
+ *
+ * @usage
+ *      <div class="b2b-tree">
+ *                <b2b-tree-nav collection="treeStructure" set-role="tree" group-it="false"></b2b-tree-nav>
+ *            </div>
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/treeNav/docs/demo.html" />
+            <file src="src/treeNav/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.treeNav', ['b2b.att.utilities'])
+    .directive('b2bTreeNav', function () {
+        return {
+            restrict: "E",
+            replace: true,
+            scope: {
+                collection: '=',
+                groupIt: '=',
+                setRole: '@'
+            },
+            templateUrl: function (element, attrs) {
+                if (attrs.groupIt === 'true') {
+                    return "b2bTemplate/treeNav/groupedTree.html";
+                } else {
+                    return "b2bTemplate/treeNav/ungroupedTree.html";
+                }
+            },
+            link: function (scope) {               
+                if (!(scope.setRole === 'tree')) {
+                    scope.setRole = 'group';
+                }             
+            }
+        }
+    })
+    .directive('b2bMember', ['$compile', '$timeout', 'keymap', function ($compile, $timeout, keymap) {
+        return {
+            restrict: "E",
+            replace: true,
+            scope: {
+                member: '=',
+                groupIt: '='
+            },
+            templateUrl: 'b2bTemplate/treeNav/treeMember.html',
+            link: function (scope, element, attrs) {
+                scope.elemArr = [];
+                var removeRootTabIndex = function (elem) {
+                    if (elem.parent().parent().eq(0).hasClass('b2b-tree')) {
+                        elem.attr('tabindex', -1);                        
+                        return;
+                    }
+                    removeRootTabIndex(elem.parent());
+                };
+                scope.$watch('member.child', function(newVal, oldVal){                  
+                    if(newVal !== oldVal){
+                        scope.showChild();
+                    };
+                });
+                scope.showChild = function () {
+                        if (!element.hasClass('grouped')) {
+                            if (angular.isArray(scope.member.child) && scope.member.child.length > 0 && (scope.member.divide === undefined || scope.member.child.length < scope.member.divide)) {
+                                scope.groupIt = false;
+                                element.addClass('grouped');
+                                element.append("<b2b-tree-nav collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-nav>");
+                                $compile(element.contents())(scope);
+                                if(scope.member.active && scope.member.active === true){
+                                    element.find('i').eq(0).removeClass('icon-primary-collapsed');
+                                };
+                                if(scope.member.selected && scope.member.selected === true){
+                                    element.attr('aria-selected', true);
+                                    element.attr('tabindex', 0);
+                                    removeRootTabIndex(element);
+                                };
+                                if(scope.member.active && scope.member.active == undefined){
+                                    element.find('i').eq(0).addClass('icon-primary-collapsed');
+                                };
+                            } else if (scope.member.child && scope.member.divide && scope.member.child.length > scope.member.divide) {
+                                element.addClass('grouped');
+                                scope.groupIt = true;
+                                // FILTER - GROUPBY - APPROACH 
+                                var j = 0;
+                                var grpName = '';
+                                if(scope.member.child[0].groupName !== undefined){
+                                    grpName = scope.member.child[0].groupName;
+                                }
+                                else{
+                                    var toSlice = scope.member.child[0].name.search(' ');
+                                    grpName = scope.member.child[0].name.slice(0, toSlice);
+                                }
+
+                                for (i = 0; i < scope.member.child.length; i += scope.member.divide) {
+                                    j = 0;
+                                    for (j = j + i; j < (i + scope.member.divide); j++) {                                        
+                                        if (j === scope.member.child.length) {
+                                            scope.member.child[j - 1].grpChild = grpName + ' ' + (i + 1) + ' - ' + (scope.member.child.length);
+                                            break;
+                                            
+                                            if(scope.member.child[j-1].active && scope.member.child[j-1].active===true){
+                                                scope.member.child[j-1].activeGrp = true;
+                                            };
+                                            
+                                        }
+                                        if (i + scope.member.divide > scope.member.child.length) {
+                                            scope.member.child[j].grpChild = grpName + ' ' + (i + 1) + ' - ' + (scope.member.child.length);
+                                            if(scope.member.child[j].active && scope.member.child[j].active===true){
+                                                scope.member.child[j].activeGrp = true;
+                                            };
+
+                                        } else {
+                                            scope.member.child[j].grpChild = grpName + ' ' + (i + 1) + ' - ' + (i + scope.member.divide);
+                                            if(scope.member.child[j].active && scope.member.child[j].active===true){
+                                                scope.member.child[j].activeGrp = true;
+                                            };
+                                        }
+                                    }
+                                }
+                                if(scope.member.divide){
+                                    element.append("<b2b-tree-nav collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-nav>");
+                                } else {
+                                    element.append("<b2b-tree-nav collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-nav>");
+                                }
+                                $compile(element.contents())(scope);
+                                if(scope.member.active && scope.member.active === true){
+                                    element.find('i').eq(0).removeClass('icon-primary-collapsed');
+                                };
+                                if(scope.member.selected && scope.member.selected === true){
+                                    element.attr('aria-selected', true);
+                                };
+                                if( scope.member.active && scope.member.active == undefined){
+                                    element.find('i').eq(0).addClass('icon-primary-collapsed');
+                                };
+                            }
+                        }
+                };
+                //Below condition opens node for opening on json load.
+                if(scope.member.active && scope.member.active == true){
+                    scope.showChild();
+                };
+                if(scope.member.active == undefined && !element.find('a').eq(0).hasClass('active') && scope.member.child !== undefined){
+                    element.find('i').eq(0).addClass('icon-primary-collapsed');
+                }
+                else if(scope.member.child == undefined){
+                    element.find('i').eq(0).addClass('icon-primary-circle');
+                };
+                element.bind('keydown', function (evt) {
+                    switch (evt.keyCode) {
+                        case keymap.KEY.ENTER:
+                            if (element.hasClass('bg') && scope.member.onSelect !== undefined) {
+                                scope.member.onSelect(scope.member);
+                            }
+                            evt.stopPropagation();
+                            break;
+                        default: 
+                            break;                            
+                    }
+                    
+                });
+                //else getting true in every case .. so better use switch case .. that makes more sense you dumb.
+                element.bind('click', function (evt) {
+                    scope.showChild();
+                    var expandFunc = scope.member.onExpand;
+                    
+                    //onSelect
+                        if (element.hasClass('bg') && scope.member.onSelect !== undefined) {
+                                    scope.member.onSelect(scope.member);
+                                }
+                        if (element.find('a').eq(0).hasClass('active') && scope.member.onExpand !== undefined) {
+                           var eValue = scope.member.onExpand(scope.member);
+                        }
+                        if (!element.find('a').eq(0).hasClass('active') && scope.member.onCollapse !== undefined) {
+                            scope.member.onCollapse(scope.member);
+                        }
+                });
+            }
+        }
+}])
+    .directive('b2bTreeLink', ['keymap', '$timeout', function (keymap, $timeout) {
+        return {
+            restrict: 'A',
+            link: function (scope, element, attr, ctrl) {
+                var rootE, parentE, upE, downE;
+                var closeOthersUp = function (elem,isKeyPress,passiveClose) {
+                    //For accordion functionality on sibling nodes
+                    if (elem.find('a').eq(0).hasClass('active')) {
+                        activeToggle(elem,isKeyPress,passiveClose);
+                        return;
+                    }
+                    if (elem.hasClass('bg') && !isKeyPress) {
+                        elem.removeClass('bg');
+                        if (elem.attr('aria-selected')) {
+                            elem.attr('aria-selected', 'false');
+                        }                        
+                    }
+                    if (elem[0].previousElementSibling !== null) {
+                        closeOthersUp(angular.element(elem[0].previousElementSibling),isKeyPress);
+                    }
+                };
+                var closeOthersDown = function (elem,isKeyPress,passiveClose) {
+                    //For accordion functionality on sibling nodes
+                    if (elem.find('a').eq(0).hasClass('active')) {
+                        activeToggle(elem,isKeyPress,passiveClose);
+                        return;
+                    }
+                    if (elem.hasClass('bg') && !isKeyPress) {
+                        elem.removeClass('bg');
+                        if (elem.attr('aria-selected')) {
+                            elem.attr('aria-selected', 'false');
+                        }                        
+                    }
+                    if (elem[0].nextElementSibling !== null) {
+                        closeOthersDown(angular.element(elem[0].nextElementSibling),isKeyPress);
+                    }
+                };
+
+               
+                var removeBackground = function(elem){
+
+                    if(elem.hasClass('b2b-tree')){
+                        angular.element(elem[0].getElementsByClassName('bg')).removeClass('bg');
+                        return;
+                    }else{
+                        removeBackground(elem.parent().parent());
+                    }
+
+                };
+
+/**
+* These two functions used for setting heights on parent nodes as the child node closes
+* Retaining this code for future reference
+
+                var addParentHeight = function(e, h) {
+                    var parentLi = e.parent().parent();
+                    var parentUl = e.parent();
+                    if(!parentLi.hasClass('b2b-tree')) {
+                        var addHeight = parentUl[0].offsetHeight + h;
+                        parentLi.find('ul').eq(0).css({
+                            height: addHeight+'px'
+                        })
+                        addParentHeight(parentLi, h);
+                    }                    
+                };
+
+                var removeParentHeight = function(e, h) {
+                    var parentLi = e.parent().parent();
+                    var parentUl = e.parent();
+                    if(!parentLi.hasClass('b2b-tree')) {
+                        var addHeight = parentUl[0].offsetHeight - h;
+                        parentLi.find('ul').eq(0).css({
+                            height: addHeight+'px'
+                        })
+                        removeParentHeight(parentLi, h);
+                    }
+                };
+*/          
+
+            // isKeyPress - to notify that the function is called by Right Key press
+            // passiveClose -  prevents firing of oncollapse events during the action
+            // of expand function(check the function definition)
+
+                var activeToggle = function (elem,isKeyPress,passiveClose) {
+                    var element = elem.find('a').eq(0);
+                    if (element.hasClass('active')) {
+                        if(!isKeyPress){
+                            elem.removeClass('bg');
+                        }
+                        
+                        if (elem.attr('aria-selected') && !isKeyPress) {
+                            elem.attr('aria-selected', 'false');
+                        }
+                        if (!element.find('i').eq(0).hasClass('icon-primary-circle')) {
+                            if(isKeyPress && scope.member){
+                                if (scope.member.onCollapse !== undefined && !passiveClose) {
+                                    scope.member.onCollapse(scope.member);
+                                }
+                            }
+                            element.removeClass('active');
+                            elem.attr('aria-expanded', 'false');
+                            element.find('i').eq(0).removeClass('icon-primary-expanded');
+                            element.find('i').eq(0).addClass('icon-primary-collapsed');
+                            //For Animation: below commented code is used to manually set height of UL to zero 
+                            //retaining code for future reference
+                            /*
+                            var totalHeight = elem.find('ul')[0].scrollHeight;
+                            removeParentHeight(elem, totalHeight);
+                            elem.find('ul').eq(0).css({
+                                height: null
+                            });*/
+                        }
+                    } else {
+                        if(!isKeyPress){
+                            elem.addClass('bg');
+                            elem.attr('aria-selected', 'true');
+                        }
+                        
+                        if (!element.find('i').eq(0).hasClass('icon-primary-circle')) {
+                            if(isKeyPress){
+                                if(typeof scope.showChild === 'function' ){
+                                scope.showChild();
+                                }
+                                if(scope.member){
+                                    if (scope.member.onExpand !== undefined) {
+                                        scope.member.onExpand(scope.member);
+                                    }
+                                }
+                            }
+                            element.addClass('active');
+                            elem.attr('aria-expanded', 'true');
+                            element.find('i').eq(0).removeClass('icon-primary-collapsed');
+                            element.find('i').eq(0).addClass('icon-primary-expanded');
+                            //For Animation: below commented code is used to manually set height of the ul generatedon the click of parent LI.
+                            //retaining code for future reference
+                            /*                            
+                            var totalHeight = elem.find('ul')[0].scrollHeight;
+                            addParentHeight(elem, totalHeight);
+                            elem.find('ul').eq(0).css({
+                                height: totalHeight+'px'
+                            });*/
+                            
+                        }
+                    }
+                };
+                element.bind('click', function (evt) {
+                    //first we close others and then we open the clicked element
+                    if (element[0].previousElementSibling) {
+                        closeOthersUp(angular.element(element[0].previousElementSibling));
+                    }
+                    if (element[0].nextElementSibling) {
+                        closeOthersDown(angular.element(element[0].nextElementSibling));
+                    }
+                    removeBackground(element);
+                    activeToggle(element);                    
+                    
+                    evt.stopPropagation();                    
+                });
+                //default root tree element tabindex set zero
+                if (element.parent().parent().hasClass('b2b-tree') && (element.parent()[0].previousElementSibling === null)) {
+                    element.attr('tabindex', 0);
+                }
+                //check root via class
+                var isRoot = function (elem) {
+                    if (elem.parent().parent().eq(0).hasClass('b2b-tree')) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                };
+                var findRoot = function (elem) {
+                    if (isRoot(elem)) {
+                        rootE = elem;
+                        return;
+                    }
+                    findRoot(elem.parent());
+                };
+
+                var findPreActive = function (elem) {
+
+                    if (!(elem.hasClass("active"))) {
+                        return;
+                    } else {
+                        var childElems = angular.element(elem[0].nextElementSibling.children);
+                        lastE = angular.element(childElems[childElems.length - 1]);
+                        if (lastE.find('a').eq(0).hasClass('active')) {
+                            findPreActive(lastE.find('a').eq(0));
+                        }
+                        upE = lastE;
+                    }
+                };
+
+                var findUp = function (elem) {
+                    if (isRoot(elem)) {
+                        upE = elem;
+                        return;
+                    }
+                    if (elem[0].previousElementSibling !== null && !angular.element(elem[0].previousElementSibling).hasClass('tree-hide')) {
+                        upE = angular.element(elem[0].previousElementSibling);
+                        if (upE.find('a').eq(0).hasClass('active')) {
+                            findPreActive(upE.find('a').eq(0));
+                        }
+                    } else {
+                        upE = elem.parent().parent();
+                    }
+                };
+
+                var downElement = function (elem) {
+                    if (elem.next().hasClass('tree-hide')) {
+                        downElement(elem.next());
+                    } else {
+                        downE = elem.next();
+                    }
+                }
+                var isBottomElem = false;
+                var downParent = function(liElem){
+                    if(liElem.eq(0).parent().parent().eq(0).hasClass('b2b-tree')){
+                        isBottomElem = true;
+                        return;
+                    }
+                    if(liElem.next().length !== 0){
+                        downE = liElem.next().eq(0);
+                        return;
+                    }
+                    else {
+                        downParent(liElem.parent().parent());
+                    }
+                }
+                
+                var findDown = function (elem) {
+                    if (isRoot(elem.parent()) && !elem.hasClass('active')) {
+                        downE = elem.parent();
+                        return;
+                    }
+                    if (elem.hasClass('active')) {
+                        downE = elem.next().find('li').eq(0);
+                        if (downE.hasClass('tree-hide')) {
+                            downElement(downE);
+                        }
+
+                    } else {
+                        downParent(elem.parent());
+                        if(isBottomElem === true){
+                            downE = elem.parent();
+                            isBottomElem = false;
+                        }
+                    }
+                };
+
+
+                var resetTabPosition = function(element){
+                    findRoot(element);
+                    angular.element(rootE.parent().parent()[0].querySelector("li[tabindex='0']")).attr('tabindex','-1');
+                    var elemToFocus =  rootE.parent().parent()[0].querySelector(".bg")|| rootE;
+
+                    angular.element(elemToFocus).attr('tabindex','0');
+                };
+                // Function to control the expansion of nodes when the user tabs into the tree and
+                // the slected node is not visible
+                var expand = function(elemArr){
+                    var elem= elemArr.pop();
+                    var element = elem.find('a').eq(0);                    
+                    var selectedNode = elem.parent().parent()[0].querySelector(".bg");
+                    if(selectedNode != null){
+                        while(elem){
+                             element = elem.find('a').eq(0);
+                    if(!element.hasClass('active') ){
+
+
+                    if (elem[0].previousElementSibling) {
+                        closeOthersUp(angular.element(elem[0].previousElementSibling),true,true);
+                        }
+                        if (elem[0].nextElementSibling) {
+                            closeOthersDown(angular.element(elem[0].nextElementSibling),true,true);
+                        }
+
+                         if (!element.find('i').eq(0).hasClass('icon-primary-circle')) {
+                            if(typeof scope.showChild === 'function' ){
+                                scope.showChild();
+                            }
+                            element.addClass('active');
+                            elem.attr('aria-expanded', 'true');
+                            element.find('i').eq(0).removeClass('icon-primary-collapsed');
+                            element.find('i').eq(0).addClass('icon-primary-expanded');
+                            }
+                          
+                          }   
+                          elem = elemArr.pop();
+                        }                      
+                        
+                    }else{
+                        return;
+                    }                   
+                };
+
+                element.find('a').eq(0).bind('mouseenter', function (evt) {
+                    angular.forEach(document.querySelectorAll('.activeTooltip'), function(value, key) {
+                        angular.element(value).removeClass('activeTooltip') 
+                    });
+                    element.addClass('activeTooltip');
+                });
+                element.find('a').eq(0).bind('mouseleave', function (evt) {
+                    element.removeClass('activeTooltip');
+                });
+                element.bind('focus', function (evt) {
+                    angular.forEach(document.querySelectorAll('.activeTooltip'), function(value, key) {
+                        angular.element(value).removeClass('activeTooltip') 
+                    });
+                    element.addClass('activeTooltip');
+                });
+                element.bind('blur', function (evt) {
+                    element.removeClass('activeTooltip');
+                });
+                element.bind('keydown', function (evt) {
+                    switch (evt.keyCode) {
+                    case keymap.KEY.HOME:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        element.attr('tabindex', -1);
+                        findRoot(element);
+                        rootE.eq(0).attr('tabindex', 0);
+                        rootE[0].focus();
+                        break;
+                    case keymap.KEY.LEFT:
+                        evt.preventDefault();
+                        evt.stopPropagation(); 
+                      
+                        if(element.find('a').eq(0).hasClass('active')){
+                            if (element[0].previousElementSibling) {
+                                closeOthersUp(angular.element(element[0].previousElementSibling),true);
+                            }
+                            if (element[0].nextElementSibling) {
+                                closeOthersDown(angular.element(element[0].nextElementSibling),true);
+                             }
+                             activeToggle(element,true);
+                                return;
+                        }
+                            element.attr('tabindex', -1);
+                            parentE = element.parent().parent();
+                            parentE.attr('tabindex', 0);
+                            parentE[0].focus();
+                        break;
+                    case keymap.KEY.UP:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        element.attr('tabindex', -1);
+                        findUp(element);
+                        upE.eq(0).attr('tabindex', 0);
+                        upE[0].focus();
+                        break;
+                    case keymap.KEY.RIGHT:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        if(element.find('i').eq(0).hasClass('icon-primary-circle')){
+                            break;
+                        }    
+                        if (!element.find('a').eq(0).hasClass('active')) {
+                            if (element[0].previousElementSibling) {
+                        closeOthersUp(angular.element(element[0].previousElementSibling),true);
+                        }
+                        if (element[0].nextElementSibling) {
+                            closeOthersDown(angular.element(element[0].nextElementSibling),true);
+                        }
+                        activeToggle(element,true);
+                    
+                        }
+                        else {
+                            element.attr('tabindex', -1);
+                            findDown(element.find('a').eq(0));
+                            downE.eq(0).attr('tabindex', 0);
+                            downE[0].focus();                            
+                        }                        
+                        break;
+                    case keymap.KEY.DOWN:
+                        evt.preventDefault();
+                        element.attr('tabindex', -1);
+                        findDown(element.find('a').eq(0));
+                        downE.eq(0).attr('tabindex', 0);
+                        downE[0].focus();
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.ENTER:
+                        var isSelectedElem = element.hasClass('bg');
+                        var enterFunc = function(element){
+                            if (isSelectedElem) {
+                                element.removeClass('bg');
+                                if (element.attr('aria-selected')) {
+                                    element.attr('aria-selected', 'false');
+                                }                        
+                            }
+                            else {
+                                element.addClass('bg');
+                                element.attr('aria-selected', 'true');                                   
+                            }  
+                        };                            
+                        if (element[0].previousElementSibling) {
+                            closeOthersUp(angular.element(element[0].previousElementSibling));
+                        }
+                        if (element[0].nextElementSibling) {
+                            closeOthersDown(angular.element(element[0].nextElementSibling));
+                        }                   
+                        
+                        removeBackground(element);
+                        enterFunc(element);
+                        evt.stopPropagation();                                                      
+                        break;
+                    case keymap.KEY.TAB:
+                        $timeout(function(){
+                            resetTabPosition(element);
+                        },0);
+                         evt.stopPropagation(); 
+                        
+                        break;
+                    default:
+                        break;
+                    }
+                });
+            element.bind('keyup',function(evt){
+                if(evt.keyCode === keymap.KEY.TAB){
+                  
+                        var tempElem = element;
+                        var elemArr = [];
+                        while(!tempElem.hasClass('b2b-tree')){
+                            elemArr.push(tempElem);
+                            tempElem = tempElem.parent().parent();
+                        }
+                        elemArr.push(tempElem);
+                      
+                        expand(elemArr);                    
+                }
+                 evt.stopPropagation(); 
+            });
+            }
+        };
+    }]);
+/**
+ * @ngdoc directive
+ * @name Navigation.att:Tree nodes with checkboxes
+ *
+ * @param {String} setRole - The value needs to be "tree". This is required to incorporate CATO requirements.
+ * @param {boolean} groupIt - The value needs to be "false" for top-level tree rendered. 
+ * @param {Object} collection -  The JSON object of tree to be rendered.
+ * @description
+ *  <file src="src/treeNodeCheckbox/docs/readme.md" />
+ *
+ * @usage
+ *      <div class="b2b-tree-checkbox">
+ *                <b2b-tree-node-checkbox collection="treeStructure" set-role="tree" group-it="false"></b2b-tree-node-checkbox>
+ *            </div>
+ * @example
+ *  <section id="code">
+        <example module="b2b.att">
+            <file src="src/treeNodeCheckbox/docs/demo.html" />
+            <file src="src/treeNodeCheckbox/docs/demo.js" />
+       </example>
+    </section>
+ *
+ */
+angular.module('b2b.att.treeNodeCheckbox', ['b2b.att.utilities'])
+    .directive('b2bTreeNodeCheckbox', function () {
+        return {
+            restrict: "E",
+            replace: true,
+            scope: {
+                collection: '=',
+                groupIt: '=',
+                setRole: '@'
+            },
+            templateUrl: function (element, attrs) {
+                if (attrs.groupIt === 'true') {
+                    return "b2bTemplate/treeNodeCheckbox/groupedTree.html";
+                } else {
+                    return "b2bTemplate/treeNodeCheckbox/ungroupedTree.html";
+                }
+            },
+            link: function (scope) {
+                if (!(scope.setRole === 'tree')) {
+                    scope.setRole = 'group';
+                }
+            }
+        }
+    })
+    .directive('b2bTreeMember', ['$compile', '$timeout', 'keymap', function ($compile, $timeout, keymap) {
+        return {
+            restrict: "E",
+            replace: true,
+            scope: {
+                member: '=',
+                groupIt: '='
+            },
+            templateUrl: 'b2bTemplate/treeNodeCheckbox/treeMember.html',
+            link: function (scope, element, attrs) {
+                scope.elemArr = [];
+                var removeRootTabIndex = function (elem) {
+                    if (elem.parent().parent().eq(0).hasClass('b2b-tree-checkbox')) {
+                        elem.attr('tabindex', -1);                        
+                        return;
+                    }
+                    removeRootTabIndex(elem.parent());
+                };
+                scope.$watch('member.child', function(newVal, oldVal){                  
+                    if(newVal !== oldVal){
+                        scope.showChild();
+                    };
+                });
+
+                var checkedCount = 0;
+                var nonCheckedCount = 0;
+                var checkBoxesCount = 0;
+
+                if(element.find('a').eq(0).find('input')){
+                    if(scope.member.indeterminate){
+                        element.find('a').eq(0).find('input').prop('indeterminate', true);
+                        element.attr('aria-checked',"mixed");
+                    }
+                    element.attr('aria-checked',scope.member.isSelected);
+                }
+
+                element.find('a').eq(0).find('input').bind('change',function(){
+                    scope.member.indeterminate = false;
+                    downwardModalUpdate(scope.member);
+                    downwardSelection(element);
+                    upwardSelection(element);
+                    element.attr('aria-checked',scope.member.isSelected);
+                     if (scope.member.onSelect !== undefined) {
+                        scope.member.onSelect(scope.member);
+                    }
+                });
+
+                element.find('a').eq(0).find('input').bind('click',function(){
+                    var elem = angular.element(this);
+                    if(scope.member.indeterminate){
+                        scope.member.indeterminate = false;
+                        scope.member.isSelected = true;
+                        elem.prop('indeterminate', false);
+                        elem.prop('checked', true);
+                        elem.triggerHandler('change');
+                    }
+                });
+
+                var groupNode = false;
+                var checkedTreeNode = false;
+
+                var isCheckboxSelected = function(elem){
+                    checkedTreeNode = false;
+                    checkedTreeNode = angular.element(angular.element(elem).find('a').eq(0))[0].querySelector('input.treeCheckBox').checked;
+                }
+
+                var findCheckbox = function(elem){
+                    return angular.element(angular.element(elem).find('a').eq(0))[0].querySelector('input.treeCheckBox');
+                }
+
+                var updateGrpNodeCheckboxes = function(elem, checked){
+                    angular.element(angular.element(elem).find('a').eq(0))[0].querySelector('input.treeCheckBox').checked = checked;
+                }
+
+                
+                var isGroupNode = function(elem){
+                    groupNode = false;
+                    if(angular.element(angular.element(elem).find('a').eq(0))[0].querySelector('input.grpTreeCheckbox')){
+                        groupNode = true;
+                    }
+                }
+
+                var downwardModalUpdate = function(curMember){
+                    angular.forEach(curMember.child, function(childMember, key) {
+                        childMember.isSelected = curMember.isSelected;
+                        childMember.indeterminate = false;
+                        if(angular.isArray(childMember.child) && scope.member.child.length > 0){
+                            downwardModalUpdate(childMember);
+                        }
+                    });
+                }
+
+                var downwardSelection = function(elem){
+                    if(findCheckbox(elem)){
+                        isCheckboxSelected(elem)
+                    } 
+                    if(angular.element(elem).find('ul').length > 0){
+                        var childNodes = angular.element(elem).find('ul').eq(0).children('li');
+                        for(var i=0; i<childNodes.length; i++){
+                            if(findCheckbox(childNodes[i])){
+                                isGroupNode(childNodes[i]);
+                                angular.element(findCheckbox(childNodes[i])).prop('indeterminate', false);
+                                angular.element(childNodes[i]).attr('aria-checked',checkedTreeNode);
+                                if(groupNode){
+                                    updateGrpNodeCheckboxes(childNodes[i],checkedTreeNode);
+                                }else{
+                                    angular.element(childNodes[i]).scope().member.isSelected = checkedTreeNode;
+                                    angular.element(childNodes[i]).scope().member.indeterminate = false
+                                    angular.element(childNodes[i]).scope().$apply();
+                                }
+                                downwardSelection(childNodes[i]);
+                            }
+                        }
+
+                    }
+                }
+                var upwardSelection = function(elem){
+                    var childNodes = elem.parent().parent().find('ul').eq(0).children('li');
+                    checkedCount = 0;
+                    nonCheckedCount = 0;
+                    checkBoxesCount = 0;    
+                    for(i=0; i<childNodes.length; i++){
+                        if(findCheckbox(childNodes[i])){
+                            isGroupNode(childNodes[i]);
+                            isCheckboxSelected(childNodes[i]);
+                            checkBoxesCount++;
+                            if(checkedTreeNode){
+                                checkedCount++;
+                            }else if(!angular.element(angular.element(angular.element(childNodes[i]).find('a').eq(0))[0].querySelector('input.treeCheckBox')).prop('indeterminate')){
+                                nonCheckedCount++;
+                            }
+                        }
+                    }
+                    var parentNodeScope;
+                    parentNodeScope = angular.element(elem.parent().parent()).scope();
+                    if(findCheckbox(elem.parent().parent())){
+                        if(nonCheckedCount == checkBoxesCount){
+                            angular.element(findCheckbox(elem.parent().parent())).prop('indeterminate', false);
+                            if(parentNodeScope &&  parentNodeScope.member){
+                                parentNodeScope.member.isSelected = false;
+                                parentNodeScope.member.indeterminate = false;
+                            }else{
+                                updateGrpNodeCheckboxes(elem.parent().parent(),false);
+                            }
+                            angular.element(elem.parent().parent()).attr('aria-checked',false);
+                        }else if(checkedCount == checkBoxesCount){
+                            angular.element(findCheckbox(elem.parent().parent())).prop('indeterminate', false);
+                            if(parentNodeScope &&  parentNodeScope.member){
+                                parentNodeScope.member.isSelected = true;
+                                parentNodeScope.member.indeterminate = false;
+                            }else{
+                                updateGrpNodeCheckboxes(elem.parent().parent(),true);
+                            }
+                            angular.element(elem.parent().parent()).attr('aria-checked',true);
+                        }else{
+                            angular.element(findCheckbox(elem.parent().parent())).prop('indeterminate', true);
+                            if(parentNodeScope &&  parentNodeScope.member){
+                                parentNodeScope.member.isSelected = false;
+                                parentNodeScope.member.indeterminate = true;
+                            }else{
+                                updateGrpNodeCheckboxes(elem.parent().parent(),false);
+                            }
+                            angular.element(elem.parent().parent()).attr('aria-checked',"mixed");
+                        }
+                        if(parentNodeScope &&  parentNodeScope.member){
+                            parentNodeScope.$apply();
+                        }        
+                    }
+                    
+                    
+                    
+                    if(elem.parent().parent().attr('role') == "treeitem"){
+                        upwardSelection(elem.parent().parent());
+                    }
+                }
+
+                scope.showChild = function () {
+                        if (!element.hasClass('grouped')) {
+                            if (angular.isArray(scope.member.child) && scope.member.child.length > 0 && (scope.member.divide === undefined || scope.member.child.length < scope.member.divide)) {
+                                scope.groupIt = false;
+                                element.addClass('grouped');
+                                element.append("<b2b-tree-node-checkbox collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-node-checkbox>");
+                                $compile(element.contents())(scope);
+                                if(scope.member.active && scope.member.active === true){
+                                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).removeClass('icon-primary-collapsed');
+                                };
+                                if(scope.member.selected && scope.member.selected === true){
+                                    element.attr('tabindex', 0);
+                                    removeRootTabIndex(element);
+                                };
+                                if(scope.member.active && scope.member.active == undefined){
+                                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-collapsed');
+                                };
+                            } else if (scope.member.child && scope.member.divide && scope.member.child.length > scope.member.divide) {
+                                element.addClass('grouped');
+                                scope.groupIt = true;
+                                var j = 0;
+                                var grpName = '';
+                                if(scope.member.child[0].groupName !== undefined){
+                                    grpName = scope.member.child[0].groupName;
+                                }
+                                else{
+                                    var toSlice = scope.member.child[0].name.search(' ');
+                                    grpName = scope.member.child[0].name.slice(0, toSlice);
+                                }
+
+                                for (i = 0; i < scope.member.child.length; i += scope.member.divide) {
+                                    j = 0;
+                                    for (j = j + i; j < (i + scope.member.divide); j++) {                                        
+                                        if (j === scope.member.child.length) {
+                                            scope.member.child[j - 1].grpChild = grpName + ' ' + (i + 1) + ' - ' + (scope.member.child.length);
+                                            break;
+                                            
+                                            if(scope.member.child[j-1].active && scope.member.child[j-1].active===true){
+                                                scope.member.child[j-1].activeGrp = true;
+                                            };
+                                            
+                                        }
+                                        if (i + scope.member.divide > scope.member.child.length) {
+                                            scope.member.child[j].grpChild = grpName + ' ' + (i + 1) + ' - ' + (scope.member.child.length);
+                                            if(scope.member.child[j].active && scope.member.child[j].active===true){
+                                                scope.member.child[j].activeGrp = true;
+                                            };
+
+                                        } else {
+                                            scope.member.child[j].grpChild = grpName + ' ' + (i + 1) + ' - ' + (i + scope.member.divide);
+                                            if(scope.member.child[j].active && scope.member.child[j].active===true){
+                                                scope.member.child[j].activeGrp = true;
+                                            };
+                                        }
+                                    }
+                                }
+                                if(scope.member.divide){
+                                    element.append("<b2b-tree-node-checkbox collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-node-checkbox>");
+                                } else {
+                                    element.append("<b2b-tree-node-checkbox collection='member.child' group-it='" + scope.groupIt + "'></b2b-tree-node-checkbox>");
+                                }
+                                $compile(element.contents())(scope);
+                                if(scope.member.active && scope.member.active === true){
+                                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).removeClass('icon-primary-collapsed');
+                                };
+                                
+                                if( scope.member.active && scope.member.active == undefined){
+                                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-collapsed');
+                                };
+                            }
+                        }
+                        $timeout(function () {
+                            if(!scope.member.indeterminate){
+                                downwardSelection(element);
+                            }    
+                        });  
+
+                };
+                
+                if(scope.member.active && scope.member.active == true){
+                    scope.showChild();
+                };
+                if(scope.member.active == undefined && !element.find('a').eq(0).hasClass('active') && scope.member.child !== undefined){
+                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-collapsed');
+                }
+                else if(scope.member.child == undefined){
+                    angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-circle');
+                    if(scope.$parent.$index === 0) {
+                        element.find('a').eq(0).append('<span class="first-link"></span>');
+                    };
+                };
+                
+                angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).bind('click', function (evt) {
+                    scope.showChild();
+                    var expandFunc = scope.member.onExpand;
+                    if (element.find('a').eq(0).hasClass('active') && scope.member.onExpand !== undefined) {
+                       var eValue = scope.member.onExpand(scope.member);
+                    }
+                    if (!element.find('a').eq(0).hasClass('active') && scope.member.onCollapse !== undefined) {
+                        scope.member.onCollapse(scope.member);
+                    }
+                });
+
+                angular.element(element[0].querySelectorAll('.treeNodeName')).eq(0).bind('click', function (evt) {
+
+                });
+                
+            }
+        }
+}])
+    .directive('b2bTreeNodeLink', ['keymap', '$timeout', function (keymap, $timeout) {
+        return {
+            restrict: 'A',
+            link: function (scope, element, attr, ctrl) {
+                var rootE, parentE, upE, downE;
+                var closeOthersUp = function (elem) {
+                    
+                    if (elem.find('a').eq(0).hasClass('active')) {
+                        activeToggle(elem);
+                        return;
+                    }
+                    if (elem.hasClass('bg')) {
+                        elem.removeClass('bg');
+                    }
+                    if (elem[0].previousElementSibling !== null) {
+                        closeOthersUp(angular.element(elem[0].previousElementSibling));
+                    }
+                };
+                var closeOthersDown = function (elem) {
+                    
+                    if (elem.find('a').eq(0).hasClass('active')) {
+                        activeToggle(elem);
+                        return;
+                    }
+                    if (elem.hasClass('bg')) {
+                        elem.removeClass('bg');
+                    }
+                    if (elem[0].nextElementSibling !== null) {
+                        closeOthersDown(angular.element(elem[0].nextElementSibling));
+                    }
+                };
+
+                var removeBackgroundUp = function (elem) {
+                    
+                    if (elem.hasClass('b2b-tree-checkbox')) {
+                        return;
+                    } else {
+                        elem.parent().parent().removeClass('bg');
+                        removeBackgroundUp(elem.parent().parent());
+                    }
+                };
+
+                var removeBackgroundDown = function (elem) {
+                    
+                    angular.element(elem[0].querySelector('.bg')).removeClass('bg');
+                };
+
+
+
+                var activeToggle = function (elem) {
+                    var element = elem.find('a').eq(0);
+                    if (element.hasClass('active')) {
+                        elem.removeClass('bg');
+                        if (!angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).hasClass('icon-primary-circle')) {
+                            element.removeClass('active');
+                            elem.attr('aria-expanded', 'false');
+                            angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).removeClass('icon-primary-expanded');
+                            angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-collapsed');
+                        }
+                    } else {
+                        elem.addClass('bg');
+                        if (!angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).hasClass('icon-primary-circle')) {
+                            element.addClass('active');
+                            elem.attr('aria-expanded', 'true');
+                            angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).removeClass('icon-primary-collapsed');
+                            angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).addClass('icon-primary-expanded');
+                        }
+                    }
+                };
+                angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).bind('click', function (evt) {
+                    
+                        if (element[0].previousElementSibling) {
+                            closeOthersUp(angular.element(element[0].previousElementSibling));
+                        }
+                        if (element[0].nextElementSibling) {
+                            closeOthersDown(angular.element(element[0].nextElementSibling));
+                        }
+
+                        activeToggle(element);
+
+                    removeBackgroundDown(element);
+                    removeBackgroundUp(element);
+                    evt.stopPropagation();                    
+                });
+                
+                if (element.parent().parent().hasClass('b2b-tree-checkbox') && (element.parent()[0].previousElementSibling === null)) {
+                    element.attr('tabindex', 0);
+                }
+                
+                var isRoot = function (elem) {
+                    if (elem.parent().parent().eq(0).hasClass('b2b-tree-checkbox')) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                };
+                var findRoot = function (elem) {
+                    if (isRoot(elem)) {
+                        rootE = elem;
+                        return;
+                    }
+                    findRoot(elem.parent());
+                };
+
+                var findPreActive = function (elem) {
+
+                    if (!(elem.hasClass("active"))) {
+                        return;
+                    } else {
+                        var childElems = angular.element(elem[0].nextElementSibling.children);
+                        lastE = angular.element(childElems[childElems.length - 1]);
+                        if (lastE.find('a').eq(0).hasClass('active')) {
+                            findPreActive(lastE.find('a').eq(0));
+                        }
+                        upE = lastE;
+                    }
+                };
+
+                var findUp = function (elem) {
+                    if (isRoot(elem)) {
+                        upE = elem;
+                        return;
+                    }
+                    if (elem[0].previousElementSibling !== null && !angular.element(elem[0].previousElementSibling).hasClass('tree-hide')) {
+                        upE = angular.element(elem[0].previousElementSibling);
+                        if (upE.find('a').eq(0).hasClass('active')) {
+                            findPreActive(upE.find('a').eq(0));
+                        }
+                    } else {
+                        upE = elem.parent().parent();
+                    }
+                };
+
+                var downElement = function (elem) {
+                    if (elem.next().hasClass('tree-hide')) {
+                        downElement(elem.next());
+                    } else {
+                        downE = elem.next();
+                    }
+                }
+                var isBottomElem = false;
+                var downParent = function(liElem){
+                    if(liElem.eq(0).parent().parent().eq(0).hasClass('b2b-tree-checkbox')){
+                        isBottomElem = true;
+                        return;
+                    }
+                    if(liElem.next().length !== 0){
+                        downE = liElem.next().eq(0);
+                        return;
+                    }
+                    else {
+                        downParent(liElem.parent().parent());
+                    }
+                }
+                
+                var findDown = function (elem) {
+                    if (isRoot(elem.parent()) && !elem.hasClass('active')) {
+                        downE = elem.parent();
+                        return;
+                    }
+                    if (elem.hasClass('active')) {
+                        downE = elem.next().find('li').eq(0);
+                        if (downE.hasClass('tree-hide')) {
+                            downElement(downE);
+                        }
+
+                    } else {
+                        downParent(elem.parent());
+                        if(isBottomElem === true){
+                            downE = elem.parent();
+                            isBottomElem = false;
+                        }
+                    }
+                };
+                element.bind('keydown', function (evt) {
+                    switch (evt.keyCode) {
+                    case keymap.KEY.HOME:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        element.attr('tabindex', -1);
+                        findRoot(element);
+                        rootE.eq(0).attr('tabindex', 0);
+                        rootE[0].focus();
+                        break;
+                    case keymap.KEY.LEFT:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        if (!isRoot(element)) {
+                            if(element.find('a').eq(0).hasClass('active')){
+                                angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).triggerHandler('click');
+                                return;
+                            }
+                            element.attr('tabindex', -1);
+                            parentE = element.parent().parent();
+                            parentE.attr('tabindex', 0);
+                            parentE[0].focus();
+                        } else {
+                            if (element.find('a').eq(0).hasClass('active')) {
+                                angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).triggerHandler('click');
+                            }
+                        };
+                        break;
+                    case keymap.KEY.UP:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        element.attr('tabindex', -1);
+                        findUp(element);
+                        upE.eq(0).attr('tabindex', 0);
+                        upE[0].focus();
+                        break;
+                    case keymap.KEY.RIGHT:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        if(angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).hasClass('icon-primary-circle')){
+                            break;
+                        }    
+                        if (!element.find('a').eq(0).hasClass('active')) {
+                            angular.element(element[0].querySelectorAll('i.expandCollapseIcon')).eq(0).triggerHandler('click');
+                        }
+                        else {
+                            element.attr('tabindex', -1);
+                            findDown(element.find('a').eq(0));
+                            downE.eq(0).attr('tabindex', 0);
+                            downE[0].focus();                            
+                        }                        
+                        break;
+                    case keymap.KEY.DOWN:
+                        evt.preventDefault();
+                        element.attr('tabindex', -1);
+                        findDown(element.find('a').eq(0));
+                        downE.eq(0).attr('tabindex', 0);
+                        downE[0].focus();
+                        evt.stopPropagation();
+                        break;
+                    case keymap.KEY.SPACE:
+                    case keymap.KEY.ENTER:
+                        evt.preventDefault();
+                        evt.stopPropagation();
+                        if(angular.isDefined(element.scope().member.isSelected)){
+                            element.scope().member.isSelected = !element.scope().member.isSelected;
+                            element.scope().member.indeterminate = false;
+                            element.scope().$apply();
+                            element.find('a').eq(0).find('input').prop('indeterminate', false);
+                            element.find('a').eq(0).find('input').triggerHandler('change');
+                        }
+                        break;    
+                    default:
+                        break;
+                    }
+                });
+            }
+        };
+    }]);
+/*!
+ * VERSION: 1.7.3
+ * DATE: 2014-01-14
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
+ * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+    "use strict";
+
+    var _doc = document.documentElement,
+        _window = window,
+        _max = function(element, axis) {
+            var dim = (axis === "x") ? "Width" : "Height",
+                scroll = "scroll" + dim,
+                client = "client" + dim,
+                body = document.body;
+            return (element === _window || element === _doc || element === body) ? Math.max(_doc[scroll], body[scroll]) - (_window["inner" + dim] || Math.max(_doc[client], body[client])) : element[scroll] - element["offset" + dim];
+        },
+
+        ScrollToPlugin = window._gsDefine.plugin({
+            propName: "scrollTo",
+            API: 2,
+            version:"1.7.3",
+
+            //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
+            init: function(target, value, tween) {
+                this._wdw = (target === _window);
+                this._target = target;
+                this._tween = tween;
+                if (typeof(value) !== "object") {
+                    value = {y:value}; //if we don't receive an object as the parameter, assume the user intends "y".
+                }
+                this._autoKill = (value.autoKill !== false);
+                this.x = this.xPrev = this.getX();
+                this.y = this.yPrev = this.getY();
+                if (value.x != null) {
+                    this._addTween(this, "x", this.x, (value.x === "max") ? _max(target, "x") : value.x, "scrollTo_x", true);
+                    this._overwriteProps.push("scrollTo_x");
+                } else {
+                    this.skipX = true;
+                }
+                if (value.y != null) {
+                    this._addTween(this, "y", this.y, (value.y === "max") ? _max(target, "y") : value.y, "scrollTo_y", true);
+                    this._overwriteProps.push("scrollTo_y");
+                } else {
+                    this.skipY = true;
+                }
+                return true;
+            },
+
+            //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)
+            set: function(v) {
+                this._super.setRatio.call(this, v);
+
+                var x = (this._wdw || !this.skipX) ? this.getX() : this.xPrev,
+                    y = (this._wdw || !this.skipY) ? this.getY() : this.yPrev,
+                    yDif = y - this.yPrev,
+                    xDif = x - this.xPrev;
+
+                if (this._autoKill) {
+                    //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.
+                    if (!this.skipX && (xDif > 7 || xDif < -7) && x < _max(this._target, "x")) {
+                        this.skipX = true; //if the user scrolls separately, we should stop tweening!
+                    }
+                    if (!this.skipY && (yDif > 7 || yDif < -7) && y < _max(this._target, "y")) {
+                        this.skipY = true; //if the user scrolls separately, we should stop tweening!
+                    }
+                    if (this.skipX && this.skipY) {
+                        this._tween.kill();
+                    }
+                }
+                if (this._wdw) {
+                    _window.scrollTo((!this.skipX) ? this.x : x, (!this.skipY) ? this.y : y);
+                } else {
+                    if (!this.skipY) {
+                        this._target.scrollTop = this.y;
+                    }
+                    if (!this.skipX) {
+                        this._target.scrollLeft = this.x;
+                    }
+                }
+                this.xPrev = this.x;
+                this.yPrev = this.y;
+            }
+
+        }),
+        p = ScrollToPlugin.prototype;
+
+    ScrollToPlugin.max = _max;
+
+    p.getX = function() {
+        return (!this._wdw) ? this._target.scrollLeft : (_window.pageXOffset != null) ? _window.pageXOffset : (_doc.scrollLeft != null) ? _doc.scrollLeft : document.body.scrollLeft;
+    };
+
+    p.getY = function() {
+        return (!this._wdw) ? this._target.scrollTop : (_window.pageYOffset != null) ? _window.pageYOffset : (_doc.scrollTop != null) ? _doc.scrollTop : document.body.scrollTop;
+    };
+
+    p._kill = function(lookup) {
+        if (lookup.scrollTo_x) {
+            this.skipX = true;
+        }
+        if (lookup.scrollTo_y) {
+            this.skipY = true;
+        }
+        return this._super._kill.call(this, lookup);
+    };
+
+}); if (window._gsDefine) { window._gsQueue.pop()(); }
+/*!
+ * VERSION: 1.12.1
+ * DATE: 2014-06-26
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ * 
+ * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin
+ *
+ * @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
+ * This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+    "use strict";
+
+    window._gsDefine("TweenMax", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+
+        var _slice = [].slice,
+            TweenMax = function(target, duration, vars) {
+                TweenLite.call(this, target, duration, vars);
+                this._cycle = 0;
+                this._yoyo = (this.vars.yoyo === true);
+                this._repeat = this.vars.repeat || 0;
+                this._repeatDelay = this.vars.repeatDelay || 0;
+                this._dirty = true; //ensures that if there is any repeat, the totalDuration will get recalculated to accurately report it.
+                this.render = TweenMax.prototype.render; //speed optimization (avoid prototype lookup on this "hot" method)
+            },
+            _tinyNum = 0.0000000001,
+            TweenLiteInternals = TweenLite._internals,
+            _isSelector = TweenLiteInternals.isSelector,
+            _isArray = TweenLiteInternals.isArray,
+            p = TweenMax.prototype = TweenLite.to({}, 0.1, {}),
+            _blankArray = [];
+
+        TweenMax.version = "1.12.1";
+        p.constructor = TweenMax;
+        p.kill()._gc = false;
+        TweenMax.killTweensOf = TweenMax.killDelayedCallsTo = TweenLite.killTweensOf;
+        TweenMax.getTweensOf = TweenLite.getTweensOf;
+        TweenMax.lagSmoothing = TweenLite.lagSmoothing;
+        TweenMax.ticker = TweenLite.ticker;
+        TweenMax.render = TweenLite.render;
+
+        p.invalidate = function() {
+            this._yoyo = (this.vars.yoyo === true);
+            this._repeat = this.vars.repeat || 0;
+            this._repeatDelay = this.vars.repeatDelay || 0;
+            this._uncache(true);
+            return TweenLite.prototype.invalidate.call(this);
+        };
+        
+        p.updateTo = function(vars, resetDuration) {
+            var curRatio = this.ratio, p;
+            if (resetDuration && this._startTime < this._timeline._time) {
+                this._startTime = this._timeline._time;
+                this._uncache(false);
+                if (this._gc) {
+                    this._enabled(true, false);
+                } else {
+                    this._timeline.insert(this, this._startTime - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.
+                }
+            }
+            for (p in vars) {
+                this.vars[p] = vars[p];
+            }
+            if (this._initted) {
+                if (resetDuration) {
+                    this._initted = false;
+                } else {
+                    if (this._gc) {
+                        this._enabled(true, false);
+                    }
+                    if (this._notifyPluginsOfEnabled && this._firstPT) {
+                        TweenLite._onPluginEvent("_onDisable", this); //in case a plugin like MotionBlur must perform some cleanup tasks
+                    }
+                    if (this._time / this._duration > 0.998) { //if the tween has finished (or come extremely close to finishing), we just need to rewind it to 0 and then render it again at the end which forces it to re-initialize (parsing the new vars). We allow tweens that are close to finishing (but haven't quite finished) to work this way too because otherwise, the values are so small when determining where to project the starting values that binary math issues creep in and can make the tween appear to render incorrectly when run backwards. 
+                        var prevTime = this._time;
+                        this.render(0, true, false);
+                        this._initted = false;
+                        this.render(prevTime, true, false);
+                    } else if (this._time > 0) {
+                        this._initted = false;
+                        this._init();
+                        var inv = 1 / (1 - curRatio),
+                            pt = this._firstPT, endValue;
+                        while (pt) {
+                            endValue = pt.s + pt.c; 
+                            pt.c *= inv;
+                            pt.s = endValue - pt.c;
+                            pt = pt._next;
+                        }
+                    }
+                }
+            }
+            return this;
+        };
+                
+        p.render = function(time, suppressEvents, force) {
+            if (!this._initted) if (this._duration === 0 && this.vars.repeat) { //zero duration tweens that render immediately have render() called from TweenLite's constructor, before TweenMax's constructor has finished setting _repeat, _repeatDelay, and _yoyo which are critical in determining totalDuration() so we need to call invalidate() which is a low-kb way to get those set properly.
+                this.invalidate();
+            }
+            var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                prevTime = this._time,
+                prevTotalTime = this._totalTime, 
+                prevCycle = this._cycle,
+                duration = this._duration,
+                prevRawPrevTime = this._rawPrevTime,
+                isComplete, callback, pt, cycleDuration, r, type, pow, rawPrevTime, i;
+            if (time >= totalDur) {
+                this._totalTime = totalDur;
+                this._cycle = this._repeat;
+                if (this._yoyo && (this._cycle & 1) !== 0) {
+                    this._time = 0;
+                    this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                } else {
+                    this._time = duration;
+                    this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;
+                }
+                if (!this._reversed) {
+                    isComplete = true;
+                    callback = "onComplete";
+                }
+                if (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                    if (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.
+                        time = 0;
+                    }
+                    if (time === 0 || prevRawPrevTime < 0 || prevRawPrevTime === _tinyNum) if (prevRawPrevTime !== time) {
+                        force = true;
+                        if (prevRawPrevTime > _tinyNum) {
+                            callback = "onReverseComplete";
+                        }
+                    }
+                    this._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                }
+                
+            } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
+                this._totalTime = this._time = this._cycle = 0;
+                this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                if (prevTotalTime !== 0 || (duration === 0 && prevRawPrevTime > 0 && prevRawPrevTime !== _tinyNum)) {
+                    callback = "onReverseComplete";
+                    isComplete = this._reversed;
+                }
+                if (time < 0) {
+                    this._active = false;
+                    if (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                        if (prevRawPrevTime >= 0) {
+                            force = true;
+                        }
+                        this._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                    }
+                } else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
+                    force = true;
+                }
+            } else {
+                this._totalTime = this._time = time;
+                
+                if (this._repeat !== 0) {
+                    cycleDuration = duration + this._repeatDelay;
+                    this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!)
+                    if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
+                        this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
+                    }
+                    this._time = this._totalTime - (this._cycle * cycleDuration);
+                    if (this._yoyo) if ((this._cycle & 1) !== 0) {
+                        this._time = duration - this._time;
+                    }
+                    if (this._time > duration) {
+                        this._time = duration;
+                    } else if (this._time < 0) {
+                        this._time = 0;
+                    }
+                }
+
+                if (this._easeType) {
+                    r = this._time / duration;
+                    type = this._easeType;
+                    pow = this._easePower;
+                    if (type === 1 || (type === 3 && r >= 0.5)) {
+                        r = 1 - r;
+                    }
+                    if (type === 3) {
+                        r *= 2;
+                    }
+                    if (pow === 1) {
+                        r *= r;
+                    } else if (pow === 2) {
+                        r *= r * r;
+                    } else if (pow === 3) {
+                        r *= r * r * r;
+                    } else if (pow === 4) {
+                        r *= r * r * r * r;
+                    }
+
+                    if (type === 1) {
+                        this.ratio = 1 - r;
+                    } else if (type === 2) {
+                        this.ratio = r;
+                    } else if (this._time / duration < 0.5) {
+                        this.ratio = r / 2;
+                    } else {
+                        this.ratio = 1 - (r / 2);
+                    }
+
+                } else {
+                    this.ratio = this._ease.getRatio(this._time / duration);
+                }
+                
+            }
+                
+            if (prevTime === this._time && !force && prevCycle === this._cycle) {
+                if (prevTotalTime !== this._totalTime) if (this._onUpdate) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.
+                    this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                }
+                return;
+            } else if (!this._initted) {
+                this._init();
+                if (!this._initted || this._gc) { //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example.
+                    return;
+                } else if (!force && this._firstPT && ((this.vars.lazy !== false && this._duration) || (this.vars.lazy && !this._duration))) { //we stick it in the queue for rendering at the very end of the tick - this is a performance optimization because browsers invalidate styles and force a recalculation if you read, write, and then read style data (so it's better to read/read/read/write/write/write than read/write/read/write/read/write). The down side, of course, is that usually you WANT things to render immediately because you may have code running right after that which depends on the change. Like imagine running TweenLite.set(...) and then immediately after that, creating a nother tween that animates the same property to another value; the starting values of that 2nd tween wouldn't be accurate if lazy is true.
+                    this._time = prevTime;
+                    this._totalTime = prevTotalTime;
+                    this._rawPrevTime = prevRawPrevTime;
+                    this._cycle = prevCycle;
+                    TweenLiteInternals.lazyTweens.push(this);
+                    this._lazy = time;
+                    return;
+                }
+                //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.
+                if (this._time && !isComplete) {
+                    this.ratio = this._ease.getRatio(this._time / duration);
+                } else if (isComplete && this._ease._calcEnd) {
+                    this.ratio = this._ease.getRatio((this._time === 0) ? 0 : 1);
+                }
+            }
+            if (this._lazy !== false) {
+                this._lazy = false;
+            }
+
+            if (!this._active) if (!this._paused && this._time !== prevTime && time >= 0) {
+                this._active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.
+            }
+            if (prevTotalTime === 0) {
+                if (this._initted === 2 && time > 0) {
+                    //this.invalidate();
+                    this._init(); //will just apply overwriting since _initted of (2) means it was a from() tween that had immediateRender:true
+                }
+                if (this._startAt) {
+                    if (time >= 0) {
+                        this._startAt.render(time, suppressEvents, force);
+                    } else if (!callback) {
+                        callback = "_dummyGS"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area.
+                    }
+                }
+                if (this.vars.onStart) if (this._totalTime !== 0 || duration === 0) if (!suppressEvents) {
+                    this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                }
+            }
+            
+            pt = this._firstPT;
+            while (pt) {
+                if (pt.f) {
+                    pt.t[pt.p](pt.c * this.ratio + pt.s);
+                } else {
+                    pt.t[pt.p] = pt.c * this.ratio + pt.s;
+                }
+                pt = pt._next;
+            }
+            
+            if (this._onUpdate) {
+                if (time < 0) if (this._startAt && this._startTime) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
+                    this._startAt.render(time, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
+                }
+                if (!suppressEvents) if (this._totalTime !== prevTotalTime || isComplete) {
+                    this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                }
+            }
+            if (this._cycle !== prevCycle) if (!suppressEvents) if (!this._gc) if (this.vars.onRepeat) {
+                this.vars.onRepeat.apply(this.vars.onRepeatScope || this, this.vars.onRepeatParams || _blankArray);
+            }
+            if (callback) if (!this._gc) { //check gc because there's a chance that kill() could be called in an onUpdate
+                if (time < 0 && this._startAt && !this._onUpdate && this._startTime) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
+                    this._startAt.render(time, suppressEvents, force);
+                }
+                if (isComplete) {
+                    if (this._timeline.autoRemoveChildren) {
+                        this._enabled(false, false);
+                    }
+                    this._active = false;
+                }
+                if (!suppressEvents && this.vars[callback]) {
+                    this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                }
+                if (duration === 0 && this._rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) { //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the "time" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless.
+                    this._rawPrevTime = 0;
+                }
+            }
+        };
+        
+//---- STATIC FUNCTIONS -----------------------------------------------------------------------------------------------------------
+        
+        TweenMax.to = function(target, duration, vars) {
+            return new TweenMax(target, duration, vars);
+        };
+        
+        TweenMax.from = function(target, duration, vars) {
+            vars.runBackwards = true;
+            vars.immediateRender = (vars.immediateRender != false);
+            return new TweenMax(target, duration, vars);
+        };
+        
+        TweenMax.fromTo = function(target, duration, fromVars, toVars) {
+            toVars.startAt = fromVars;
+            toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false);
+            return new TweenMax(target, duration, toVars);
+        };
+        
+        TweenMax.staggerTo = TweenMax.allTo = function(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            stagger = stagger || 0;
+            var delay = vars.delay || 0,
+                a = [],
+                finalComplete = function() {
+                    if (vars.onComplete) {
+                        vars.onComplete.apply(vars.onCompleteScope || this, arguments);
+                    }
+                    onCompleteAll.apply(onCompleteAllScope || this, onCompleteAllParams || _blankArray);
+                },
+                l, copy, i, p;
+            if (!_isArray(targets)) {
+                if (typeof(targets) === "string") {
+                    targets = TweenLite.selector(targets) || targets;
+                }
+                if (_isSelector(targets)) {
+                    targets = _slice.call(targets, 0);
+                }
+            }
+            l = targets.length;
+            for (i = 0; i < l; i++) {
+                copy = {};
+                for (p in vars) {
+                    copy[p] = vars[p];
+                }
+                copy.delay = delay;
+                if (i === l - 1 && onCompleteAll) {
+                    copy.onComplete = finalComplete;
+                }
+                a[i] = new TweenMax(targets[i], duration, copy);
+                delay += stagger;
+            }
+            return a;
+        };
+        
+        TweenMax.staggerFrom = TweenMax.allFrom = function(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            vars.runBackwards = true;
+            vars.immediateRender = (vars.immediateRender != false);
+            return TweenMax.staggerTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+        };
+        
+        TweenMax.staggerFromTo = TweenMax.allFromTo = function(targets, duration, fromVars, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            toVars.startAt = fromVars;
+            toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false);
+            return TweenMax.staggerTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+        };
+                
+        TweenMax.delayedCall = function(delay, callback, params, scope, useFrames) {
+            return new TweenMax(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onCompleteScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, onReverseCompleteScope:scope, immediateRender:false, useFrames:useFrames, overwrite:0});
+        };
+        
+        TweenMax.set = function(target, vars) {
+            return new TweenMax(target, 0, vars);
+        };
+        
+        TweenMax.isTweening = function(target) {
+            return (TweenLite.getTweensOf(target, true).length > 0);
+        };
+        
+        var _getChildrenOf = function(timeline, includeTimelines) {
+                var a = [],
+                    cnt = 0,
+                    tween = timeline._first;
+                while (tween) {
+                    if (tween instanceof TweenLite) {
+                        a[cnt++] = tween;
+                    } else {
+                        if (includeTimelines) {
+                            a[cnt++] = tween;
+                        }
+                        a = a.concat(_getChildrenOf(tween, includeTimelines));
+                        cnt = a.length;
+                    }
+                    tween = tween._next;
+                }
+                return a;
+            }, 
+            getAllTweens = TweenMax.getAllTweens = function(includeTimelines) {
+                return _getChildrenOf(Animation._rootTimeline, includeTimelines).concat( _getChildrenOf(Animation._rootFramesTimeline, includeTimelines) );
+            };
+        
+        TweenMax.killAll = function(complete, tweens, delayedCalls, timelines) {
+            if (tweens == null) {
+                tweens = true;
+            }
+            if (delayedCalls == null) {
+                delayedCalls = true;
+            }
+            var a = getAllTweens((timelines != false)),
+                l = a.length,
+                allTrue = (tweens && delayedCalls && timelines),
+                isDC, tween, i;
+            for (i = 0; i < l; i++) {
+                tween = a[i];
+                if (allTrue || (tween instanceof SimpleTimeline) || ((isDC = (tween.target === tween.vars.onComplete)) && delayedCalls) || (tweens && !isDC)) {
+                    if (complete) {
+                        tween.totalTime(tween._reversed ? 0 : tween.totalDuration());
+                    } else {
+                        tween._enabled(false, false);
+                    }
+                }
+            }
+        };
+        
+        TweenMax.killChildTweensOf = function(parent, complete) {
+            if (parent == null) {
+                return;
+            }
+            var tl = TweenLiteInternals.tweenLookup,
+                a, curParent, p, i, l;
+            if (typeof(parent) === "string") {
+                parent = TweenLite.selector(parent) || parent;
+            }
+            if (_isSelector(parent)) {
+                parent = _slice.call(parent, 0);
+            }
+            if (_isArray(parent)) {
+                i = parent.length;
+                while (--i > -1) {
+                    TweenMax.killChildTweensOf(parent[i], complete);
+                }
+                return;
+            }
+            a = [];
+            for (p in tl) {
+                curParent = tl[p].target.parentNode;
+                while (curParent) {
+                    if (curParent === parent) {
+                        a = a.concat(tl[p].tweens);
+                    }
+                    curParent = curParent.parentNode;
+                }
+            }
+            l = a.length;
+            for (i = 0; i < l; i++) {
+                if (complete) {
+                    a[i].totalTime(a[i].totalDuration());
+                }
+                a[i]._enabled(false, false);
+            }
+        };
+
+        var _changePause = function(pause, tweens, delayedCalls, timelines) {
+            tweens = (tweens !== false);
+            delayedCalls = (delayedCalls !== false);
+            timelines = (timelines !== false);
+            var a = getAllTweens(timelines),
+                allTrue = (tweens && delayedCalls && timelines),
+                i = a.length,
+                isDC, tween;
+            while (--i > -1) {
+                tween = a[i];
+                if (allTrue || (tween instanceof SimpleTimeline) || ((isDC = (tween.target === tween.vars.onComplete)) && delayedCalls) || (tweens && !isDC)) {
+                    tween.paused(pause);
+                }
+            }
+        };
+        
+        TweenMax.pauseAll = function(tweens, delayedCalls, timelines) {
+            _changePause(true, tweens, delayedCalls, timelines);
+        };
+        
+        TweenMax.resumeAll = function(tweens, delayedCalls, timelines) {
+            _changePause(false, tweens, delayedCalls, timelines);
+        };
+
+        TweenMax.globalTimeScale = function(value) {
+            var tl = Animation._rootTimeline,
+                t = TweenLite.ticker.time;
+            if (!arguments.length) {
+                return tl._timeScale;
+            }
+            value = value || _tinyNum; //can't allow zero because it'll throw the math off
+            tl._startTime = t - ((t - tl._startTime) * tl._timeScale / value);
+            tl = Animation._rootFramesTimeline;
+            t = TweenLite.ticker.frame;
+            tl._startTime = t - ((t - tl._startTime) * tl._timeScale / value);
+            tl._timeScale = Animation._rootTimeline._timeScale = value;
+            return value;
+        };
+        
+    
+//---- GETTERS / SETTERS ----------------------------------------------------------------------------------------------------------
+        
+        p.progress = function(value) {
+            return (!arguments.length) ? this._time / this.duration() : this.totalTime( this.duration() * ((this._yoyo && (this._cycle & 1) !== 0) ? 1 - value : value) + (this._cycle * (this._duration + this._repeatDelay)), false);
+        };
+        
+        p.totalProgress = function(value) {
+            return (!arguments.length) ? this._totalTime / this.totalDuration() : this.totalTime( this.totalDuration() * value, false);
+        };
+        
+        p.time = function(value, suppressEvents) {
+            if (!arguments.length) {
+                return this._time;
+            }
+            if (this._dirty) {
+                this.totalDuration();
+            }
+            if (value > this._duration) {
+                value = this._duration;
+            }
+            if (this._yoyo && (this._cycle & 1) !== 0) {
+                value = (this._duration - value) + (this._cycle * (this._duration + this._repeatDelay));
+            } else if (this._repeat !== 0) {
+                value += this._cycle * (this._duration + this._repeatDelay);
+            }
+            return this.totalTime(value, suppressEvents);
+        };
+
+        p.duration = function(value) {
+            if (!arguments.length) {
+                return this._duration; //don't set _dirty = false because there could be repeats that haven't been factored into the _totalDuration yet. Otherwise, if you create a repeated TweenMax and then immediately check its duration(), it would cache the value and the totalDuration would not be correct, thus repeats wouldn't take effect.
+            }
+            return Animation.prototype.duration.call(this, value);
+        };
+
+        p.totalDuration = function(value) {
+            if (!arguments.length) {
+                if (this._dirty) {
+                    //instead of Infinity, we use 999999999999 so that we can accommodate reverses
+                    this._totalDuration = (this._repeat === -1) ? 999999999999 : this._duration * (this._repeat + 1) + (this._repeatDelay * this._repeat);
+                    this._dirty = false;
+                }
+                return this._totalDuration;
+            }
+            return (this._repeat === -1) ? this : this.duration( (value - (this._repeat * this._repeatDelay)) / (this._repeat + 1) );
+        };
+        
+        p.repeat = function(value) {
+            if (!arguments.length) {
+                return this._repeat;
+            }
+            this._repeat = value;
+            return this._uncache(true);
+        };
+        
+        p.repeatDelay = function(value) {
+            if (!arguments.length) {
+                return this._repeatDelay;
+            }
+            this._repeatDelay = value;
+            return this._uncache(true);
+        };
+        
+        p.yoyo = function(value) {
+            if (!arguments.length) {
+                return this._yoyo;
+            }
+            this._yoyo = value;
+            return this;
+        };
+        
+        
+        return TweenMax;
+        
+    }, true);
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * TimelineLite
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine("TimelineLite", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+
+        var TimelineLite = function(vars) {
+                SimpleTimeline.call(this, vars);
+                this._labels = {};
+                this.autoRemoveChildren = (this.vars.autoRemoveChildren === true);
+                this.smoothChildTiming = (this.vars.smoothChildTiming === true);
+                this._sortChildren = true;
+                this._onUpdate = this.vars.onUpdate;
+                var v = this.vars,
+                    val, p;
+                for (p in v) {
+                    val = v[p];
+                    if (_isArray(val)) if (val.join("").indexOf("{self}") !== -1) {
+                        v[p] = this._swapSelfInParams(val);
+                    }
+                }
+                if (_isArray(v.tweens)) {
+                    this.add(v.tweens, 0, v.align, v.stagger);
+                }
+            },
+            _tinyNum = 0.0000000001,
+            _isSelector = TweenLite._internals.isSelector,
+            _isArray = TweenLite._internals.isArray,
+            _blankArray = [],
+            _globals = window._gsDefine.globals,
+            _copy = function(vars) {
+                var copy = {}, p;
+                for (p in vars) {
+                    copy[p] = vars[p];
+                }
+                return copy;
+            },
+            _pauseCallback = function(tween, callback, params, scope) {
+                tween._timeline.pause(tween._startTime);
+                if (callback) {
+                    callback.apply(scope || tween._timeline, params || _blankArray);
+                }
+            },
+            _slice = _blankArray.slice,
+            p = TimelineLite.prototype = new SimpleTimeline();
+
+        TimelineLite.version = "1.12.1";
+        p.constructor = TimelineLite;
+        p.kill()._gc = false;
+
+        p.to = function(target, duration, vars, position) {
+            var Engine = (vars.repeat && _globals.TweenMax) || TweenLite;
+            return duration ? this.add( new Engine(target, duration, vars), position) : this.set(target, vars, position);
+        };
+
+        p.from = function(target, duration, vars, position) {
+            return this.add( ((vars.repeat && _globals.TweenMax) || TweenLite).from(target, duration, vars), position);
+        };
+
+        p.fromTo = function(target, duration, fromVars, toVars, position) {
+            var Engine = (toVars.repeat && _globals.TweenMax) || TweenLite;
+            return duration ? this.add( Engine.fromTo(target, duration, fromVars, toVars), position) : this.set(target, toVars, position);
+        };
+
+        p.staggerTo = function(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            var tl = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, onCompleteScope:onCompleteAllScope, smoothChildTiming:this.smoothChildTiming}),
+                i;
+            if (typeof(targets) === "string") {
+                targets = TweenLite.selector(targets) || targets;
+            }
+            if (_isSelector(targets)) { //senses if the targets object is a selector. If it is, we should translate it into an array.
+                targets = _slice.call(targets, 0);
+            }
+            stagger = stagger || 0;
+            for (i = 0; i < targets.length; i++) {
+                if (vars.startAt) {
+                    vars.startAt = _copy(vars.startAt);
+                }
+                tl.to(targets[i], duration, _copy(vars), i * stagger);
+            }
+            return this.add(tl, position);
+        };
+
+        p.staggerFrom = function(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            vars.immediateRender = (vars.immediateRender != false);
+            vars.runBackwards = true;
+            return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+        };
+
+        p.staggerFromTo = function(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+            toVars.startAt = fromVars;
+            toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false);
+            return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+        };
+
+        p.call = function(callback, params, scope, position) {
+            return this.add( TweenLite.delayedCall(0, callback, params, scope), position);
+        };
+
+        p.set = function(target, vars, position) {
+            position = this._parseTimeOrLabel(position, 0, true);
+            if (vars.immediateRender == null) {
+                vars.immediateRender = (position === this._time && !this._paused);
+            }
+            return this.add( new TweenLite(target, 0, vars), position);
+        };
+
+        TimelineLite.exportRoot = function(vars, ignoreDelayedCalls) {
+            vars = vars || {};
+            if (vars.smoothChildTiming == null) {
+                vars.smoothChildTiming = true;
+            }
+            var tl = new TimelineLite(vars),
+                root = tl._timeline,
+                tween, next;
+            if (ignoreDelayedCalls == null) {
+                ignoreDelayedCalls = true;
+            }
+            root._remove(tl, true);
+            tl._startTime = 0;
+            tl._rawPrevTime = tl._time = tl._totalTime = root._time;
+            tween = root._first;
+            while (tween) {
+                next = tween._next;
+                if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) {
+                    tl.add(tween, tween._startTime - tween._delay);
+                }
+                tween = next;
+            }
+            root.add(tl, 0);
+            return tl;
+        };
+
+        p.add = function(value, position, align, stagger) {
+            var curTime, l, i, child, tl, beforeRawTime;
+            if (typeof(position) !== "number") {
+                position = this._parseTimeOrLabel(position, 0, true, value);
+            }
+            if (!(value instanceof Animation)) {
+                if ((value instanceof Array) || (value && value.push && _isArray(value))) {
+                    align = align || "normal";
+                    stagger = stagger || 0;
+                    curTime = position;
+                    l = value.length;
+                    for (i = 0; i < l; i++) {
+                        if (_isArray(child = value[i])) {
+                            child = new TimelineLite({tweens:child});
+                        }
+                        this.add(child, curTime);
+                        if (typeof(child) !== "string" && typeof(child) !== "function") {
+                            if (align === "sequence") {
+                                curTime = child._startTime + (child.totalDuration() / child._timeScale);
+                            } else if (align === "start") {
+                                child._startTime -= child.delay();
+                            }
+                        }
+                        curTime += stagger;
+                    }
+                    return this._uncache(true);
+                } else if (typeof(value) === "string") {
+                    return this.addLabel(value, position);
+                } else if (typeof(value) === "function") {
+                    value = TweenLite.delayedCall(0, value);
+                } else {
+                    throw("Cannot add " + value + " into the timeline; it is not a tween, timeline, function, or string.");
+                }
+            }
+
+            SimpleTimeline.prototype.add.call(this, value, position);
+
+            //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.
+            if (this._gc || this._time === this._duration) if (!this._paused) if (this._duration < this.duration()) {
+                //in case any of the ancestors had completed but should now be enabled...
+                tl = this;
+                beforeRawTime = (tl.rawTime() > value._startTime); //if the tween is placed on the timeline so that it starts BEFORE the current rawTime, we should align the playhead (move the timeline). This is because sometimes users will create a timeline, let it finish, and much later append a tween and expect it to run instead of jumping to its end state. While technically one could argue that it should jump to its end state, that's not what users intuitively expect.
+                while (tl._timeline) {
+                    if (beforeRawTime && tl._timeline.smoothChildTiming) {
+                        tl.totalTime(tl._totalTime, true); //moves the timeline (shifts its startTime) if necessary, and also enables it.
+                    } else if (tl._gc) {
+                        tl._enabled(true, false);
+                    }
+                    tl = tl._timeline;
+                }
+            }
+
+            return this;
+        };
+
+        p.remove = function(value) {
+            if (value instanceof Animation) {
+                return this._remove(value, false);
+            } else if (value instanceof Array || (value && value.push && _isArray(value))) {
+                var i = value.length;
+                while (--i > -1) {
+                    this.remove(value[i]);
+                }
+                return this;
+            } else if (typeof(value) === "string") {
+                return this.removeLabel(value);
+            }
+            return this.kill(null, value);
+        };
+
+        p._remove = function(tween, skipDisable) {
+            SimpleTimeline.prototype._remove.call(this, tween, skipDisable);
+            var last = this._last;
+            if (!last) {
+                this._time = this._totalTime = this._duration = this._totalDuration = 0;
+            } else if (this._time > last._startTime + last._totalDuration / last._timeScale) {
+                this._time = this.duration();
+                this._totalTime = this._totalDuration;
+            }
+            return this;
+        };
+
+        p.append = function(value, offsetOrLabel) {
+            return this.add(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value));
+        };
+
+        p.insert = p.insertMultiple = function(value, position, align, stagger) {
+            return this.add(value, position || 0, align, stagger);
+        };
+
+        p.appendMultiple = function(tweens, offsetOrLabel, align, stagger) {
+            return this.add(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger);
+        };
+
+        p.addLabel = function(label, position) {
+            this._labels[label] = this._parseTimeOrLabel(position);
+            return this;
+        };
+
+        p.addPause = function(position, callback, params, scope) {
+            return this.call(_pauseCallback, ["{self}", callback, params, scope], this, position);
+        };
+
+        p.removeLabel = function(label) {
+            delete this._labels[label];
+            return this;
+        };
+
+        p.getLabelTime = function(label) {
+            return (this._labels[label] != null) ? this._labels[label] : -1;
+        };
+
+        p._parseTimeOrLabel = function(timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) {
+            var i;
+            //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration().
+            if (ignore instanceof Animation && ignore.timeline === this) {
+                this.remove(ignore);
+            } else if (ignore && ((ignore instanceof Array) || (ignore.push && _isArray(ignore)))) {
+                i = ignore.length;
+                while (--i > -1) {
+                    if (ignore[i] instanceof Animation && ignore[i].timeline === this) {
+                        this.remove(ignore[i]);
+                    }
+                }
+            }
+            if (typeof(offsetOrLabel) === "string") {
+                return this._parseTimeOrLabel(offsetOrLabel, (appendIfAbsent && typeof(timeOrLabel) === "number" && this._labels[offsetOrLabel] == null) ? timeOrLabel - this.duration() : 0, appendIfAbsent);
+            }
+            offsetOrLabel = offsetOrLabel || 0;
+            if (typeof(timeOrLabel) === "string" && (isNaN(timeOrLabel) || this._labels[timeOrLabel] != null)) { //if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).
+                i = timeOrLabel.indexOf("=");
+                if (i === -1) {
+                    if (this._labels[timeOrLabel] == null) {
+                        return appendIfAbsent ? (this._labels[timeOrLabel] = this.duration() + offsetOrLabel) : offsetOrLabel;
+                    }
+                    return this._labels[timeOrLabel] + offsetOrLabel;
+                }
+                offsetOrLabel = parseInt(timeOrLabel.charAt(i-1) + "1", 10) * Number(timeOrLabel.substr(i+1));
+                timeOrLabel = (i > 1) ? this._parseTimeOrLabel(timeOrLabel.substr(0, i-1), 0, appendIfAbsent) : this.duration();
+            } else if (timeOrLabel == null) {
+                timeOrLabel = this.duration();
+            }
+            return Number(timeOrLabel) + offsetOrLabel;
+        };
+
+        p.seek = function(position, suppressEvents) {
+            return this.totalTime((typeof(position) === "number") ? position : this._parseTimeOrLabel(position), (suppressEvents !== false));
+        };
+
+        p.stop = function() {
+            return this.paused(true);
+        };
+
+        p.gotoAndPlay = function(position, suppressEvents) {
+            return this.play(position, suppressEvents);
+        };
+
+        p.gotoAndStop = function(position, suppressEvents) {
+            return this.pause(position, suppressEvents);
+        };
+
+        p.render = function(time, suppressEvents, force) {
+            if (this._gc) {
+                this._enabled(true, false);
+            }
+            var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                prevTime = this._time,
+                prevStart = this._startTime,
+                prevTimeScale = this._timeScale,
+                prevPaused = this._paused,
+                tween, isComplete, next, callback, internalForce;
+            if (time >= totalDur) {
+                this._totalTime = this._time = totalDur;
+                if (!this._reversed) if (!this._hasPausedChild()) {
+                    isComplete = true;
+                    callback = "onComplete";
+                    if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0 || this._rawPrevTime === _tinyNum) if (this._rawPrevTime !== time && this._first) {
+                        internalForce = true;
+                        if (this._rawPrevTime > _tinyNum) {
+                            callback = "onReverseComplete";
+                        }
+                    }
+                }
+                this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7.
+
+            } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
+                this._totalTime = this._time = 0;
+                if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime !== _tinyNum && (this._rawPrevTime > 0 || (time < 0 && this._rawPrevTime >= 0)))) {
+                    callback = "onReverseComplete";
+                    isComplete = this._reversed;
+                }
+                if (time < 0) {
+                    this._active = false;
+                    if (this._duration === 0) if (this._rawPrevTime >= 0 && this._first) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                        internalForce = true;
+                    }
+                    this._rawPrevTime = time;
+                } else {
+                    this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+
+                    time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
+                    if (!this._initted) {
+                        internalForce = true;
+                    }
+                }
+
+            } else {
+                this._totalTime = this._time = this._rawPrevTime = time;
+            }
+            if ((this._time === prevTime || !this._first) && !force && !internalForce) {
+                return;
+            } else if (!this._initted) {
+                this._initted = true;
+            }
+
+            if (!this._active) if (!this._paused && this._time !== prevTime && time > 0) {
+                this._active = true;  //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example.
+            }
+
+            if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0) if (!suppressEvents) {
+                this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+            }
+
+            if (this._time >= prevTime) {
+                tween = this._first;
+                while (tween) {
+                    next = tween._next; //record it here because the value could change after rendering...
+                    if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                        break;
+                    } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+                        if (!tween._reversed) {
+                            tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);
+                        } else {
+                            tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);
+                        }
+                    }
+                    tween = next;
+                }
+            } else {
+                tween = this._last;
+                while (tween) {
+                    next = tween._prev; //record it here because the value could change after rendering...
+                    if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                        break;
+                    } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+                        if (!tween._reversed) {
+                            tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);
+                        } else {
+                            tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);
+                        }
+                    }
+                    tween = next;
+                }
+            }
+
+            if (this._onUpdate) if (!suppressEvents) {
+                this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+            }
+
+            if (callback) if (!this._gc) if (prevStart === this._startTime || prevTimeScale !== this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                if (isComplete) {
+                    if (this._timeline.autoRemoveChildren) {
+                        this._enabled(false, false);
+                    }
+                    this._active = false;
+                }
+                if (!suppressEvents && this.vars[callback]) {
+                    this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                }
+            }
+        };
+
+        p._hasPausedChild = function() {
+            var tween = this._first;
+            while (tween) {
+                if (tween._paused || ((tween instanceof TimelineLite) && tween._hasPausedChild())) {
+                    return true;
+                }
+                tween = tween._next;
+            }
+            return false;
+        };
+
+        p.getChildren = function(nested, tweens, timelines, ignoreBeforeTime) {
+            ignoreBeforeTime = ignoreBeforeTime || -9999999999;
+            var a = [],
+                tween = this._first,
+                cnt = 0;
+            while (tween) {
+                if (tween._startTime < ignoreBeforeTime) {
+                    //do nothing
+                } else if (tween instanceof TweenLite) {
+                    if (tweens !== false) {
+                        a[cnt++] = tween;
+                    }
+                } else {
+                    if (timelines !== false) {
+                        a[cnt++] = tween;
+                    }
+                    if (nested !== false) {
+                        a = a.concat(tween.getChildren(true, tweens, timelines));
+                        cnt = a.length;
+                    }
+                }
+                tween = tween._next;
+            }
+            return a;
+        };
+
+        p.getTweensOf = function(target, nested) {
+            var disabled = this._gc,
+                a = [],
+                cnt = 0,
+                tweens, i;
+            if (disabled) {
+                this._enabled(true, true); //getTweensOf() filters out disabled tweens, and we have to mark them as _gc = true when the timeline completes in order to allow clean garbage collection, so temporarily re-enable the timeline here.
+            }
+            tweens = TweenLite.getTweensOf(target);
+            i = tweens.length;
+            while (--i > -1) {
+                if (tweens[i].timeline === this || (nested && this._contains(tweens[i]))) {
+                    a[cnt++] = tweens[i];
+                }
+            }
+            if (disabled) {
+                this._enabled(false, true);
+            }
+            return a;
+        };
+
+        p._contains = function(tween) {
+            var tl = tween.timeline;
+            while (tl) {
+                if (tl === this) {
+                    return true;
+                }
+                tl = tl.timeline;
+            }
+            return false;
+        };
+
+        p.shiftChildren = function(amount, adjustLabels, ignoreBeforeTime) {
+            ignoreBeforeTime = ignoreBeforeTime || 0;
+            var tween = this._first,
+                labels = this._labels,
+                p;
+            while (tween) {
+                if (tween._startTime >= ignoreBeforeTime) {
+                    tween._startTime += amount;
+                }
+                tween = tween._next;
+            }
+            if (adjustLabels) {
+                for (p in labels) {
+                    if (labels[p] >= ignoreBeforeTime) {
+                        labels[p] += amount;
+                    }
+                }
+            }
+            return this._uncache(true);
+        };
+
+        p._kill = function(vars, target) {
+            if (!vars && !target) {
+                return this._enabled(false, false);
+            }
+            var tweens = (!target) ? this.getChildren(true, true, false) : this.getTweensOf(target),
+                i = tweens.length,
+                changed = false;
+            while (--i > -1) {
+                if (tweens[i]._kill(vars, target)) {
+                    changed = true;
+                }
+            }
+            return changed;
+        };
+
+        p.clear = function(labels) {
+            var tweens = this.getChildren(false, true, true),
+                i = tweens.length;
+            this._time = this._totalTime = 0;
+            while (--i > -1) {
+                tweens[i]._enabled(false, false);
+            }
+            if (labels !== false) {
+                this._labels = {};
+            }
+            return this._uncache(true);
+        };
+
+        p.invalidate = function() {
+            var tween = this._first;
+            while (tween) {
+                tween.invalidate();
+                tween = tween._next;
+            }
+            return this;
+        };
+
+        p._enabled = function(enabled, ignoreTimeline) {
+            if (enabled === this._gc) {
+                var tween = this._first;
+                while (tween) {
+                    tween._enabled(enabled, true);
+                    tween = tween._next;
+                }
+            }
+            return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline);
+        };
+
+        p.duration = function(value) {
+            if (!arguments.length) {
+                if (this._dirty) {
+                    this.totalDuration(); //just triggers recalculation
+                }
+                return this._duration;
+            }
+            if (this.duration() !== 0 && value !== 0) {
+                this.timeScale(this._duration / value);
+            }
+            return this;
+        };
+
+        p.totalDuration = function(value) {
+            if (!arguments.length) {
+                if (this._dirty) {
+                    var max = 0,
+                        tween = this._last,
+                        prevStart = 999999999999,
+                        prev, end;
+                    while (tween) {
+                        prev = tween._prev; //record it here in case the tween changes position in the sequence...
+                        if (tween._dirty) {
+                            tween.totalDuration(); //could change the tween._startTime, so make sure the tween's cache is clean before analyzing it.
+                        }
+                        if (tween._startTime > prevStart && this._sortChildren && !tween._paused) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
+                            this.add(tween, tween._startTime - tween._delay);
+                        } else {
+                            prevStart = tween._startTime;
+                        }
+                        if (tween._startTime < 0 && !tween._paused) { //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.
+                            max -= tween._startTime;
+                            if (this._timeline.smoothChildTiming) {
+                                this._startTime += tween._startTime / this._timeScale;
+                            }
+                            this.shiftChildren(-tween._startTime, false, -9999999999);
+                            prevStart = 0;
+                        }
+                        end = tween._startTime + (tween._totalDuration / tween._timeScale);
+                        if (end > max) {
+                            max = end;
+                        }
+                        tween = prev;
+                    }
+                    this._duration = this._totalDuration = max;
+                    this._dirty = false;
+                }
+                return this._totalDuration;
+            }
+            if (this.totalDuration() !== 0) if (value !== 0) {
+                this.timeScale(this._totalDuration / value);
+            }
+            return this;
+        };
+
+        p.usesFrames = function() {
+            var tl = this._timeline;
+            while (tl._timeline) {
+                tl = tl._timeline;
+            }
+            return (tl === Animation._rootFramesTimeline);
+        };
+
+        p.rawTime = function() {
+            return this._paused ? this._totalTime : (this._timeline.rawTime() - this._startTime) * this._timeScale;
+        };
+
+        return TimelineLite;
+
+    }, true);
+    
+
+
+
+
+
+
+
+    
+    
+    
+    
+    
+/*
+ * ----------------------------------------------------------------
+ * TimelineMax
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine("TimelineMax", ["TimelineLite","TweenLite","easing.Ease"], function(TimelineLite, TweenLite, Ease) {
+
+        var TimelineMax = function(vars) {
+                TimelineLite.call(this, vars);
+                this._repeat = this.vars.repeat || 0;
+                this._repeatDelay = this.vars.repeatDelay || 0;
+                this._cycle = 0;
+                this._yoyo = (this.vars.yoyo === true);
+                this._dirty = true;
+            },
+            _tinyNum = 0.0000000001,
+            _blankArray = [],
+            _easeNone = new Ease(null, null, 1, 0),
+            p = TimelineMax.prototype = new TimelineLite();
+
+        p.constructor = TimelineMax;
+        p.kill()._gc = false;
+        TimelineMax.version = "1.12.1";
+
+        p.invalidate = function() {
+            this._yoyo = (this.vars.yoyo === true);
+            this._repeat = this.vars.repeat || 0;
+            this._repeatDelay = this.vars.repeatDelay || 0;
+            this._uncache(true);
+            return TimelineLite.prototype.invalidate.call(this);
+        };
+
+        p.addCallback = function(callback, position, params, scope) {
+            return this.add( TweenLite.delayedCall(0, callback, params, scope), position);
+        };
+
+        p.removeCallback = function(callback, position) {
+            if (callback) {
+                if (position == null) {
+                    this._kill(null, callback);
+                } else {
+                    var a = this.getTweensOf(callback, false),
+                        i = a.length,
+                        time = this._parseTimeOrLabel(position);
+                    while (--i > -1) {
+                        if (a[i]._startTime === time) {
+                            a[i]._enabled(false, false);
+                        }
+                    }
+                }
+            }
+            return this;
+        };
+
+        p.tweenTo = function(position, vars) {
+            vars = vars || {};
+            var copy = {ease:_easeNone, overwrite:(vars.delay ? 2 : 1), useFrames:this.usesFrames(), immediateRender:false},//note: set overwrite to 1 (true/all) by default unless there's a delay so that we avoid a racing situation that could happen if, for example, an onmousemove creates the same tweenTo() over and over again.
+                duration, p, t;
+            for (p in vars) {
+                copy[p] = vars[p];
+            }
+            copy.time = this._parseTimeOrLabel(position);
+            duration = (Math.abs(Number(copy.time) - this._time) / this._timeScale) || 0.001;
+            t = new TweenLite(this, duration, copy);
+            copy.onStart = function() {
+                t.target.paused(true);
+                if (t.vars.time !== t.target.time() && duration === t.duration()) { //don't make the duration zero - if it's supposed to be zero, don't worry because it's already initting the tween and will complete immediately, effectively making the duration zero anyway. If we make duration zero, the tween won't run at all.
+                    t.duration( Math.abs( t.vars.time - t.target.time()) / t.target._timeScale );
+                }
+                if (vars.onStart) { //in case the user had an onStart in the vars - we don't want to overwrite it.
+                    vars.onStart.apply(vars.onStartScope || t, vars.onStartParams || _blankArray);
+                }
+            };
+            return t;
+        };
+
+        p.tweenFromTo = function(fromPosition, toPosition, vars) {
+            vars = vars || {};
+            fromPosition = this._parseTimeOrLabel(fromPosition);
+            vars.startAt = {onComplete:this.seek, onCompleteParams:[fromPosition], onCompleteScope:this};
+            vars.immediateRender = (vars.immediateRender !== false);
+            var t = this.tweenTo(toPosition, vars);
+            return t.duration((Math.abs( t.vars.time - fromPosition) / this._timeScale) || 0.001);
+        };
+
+        p.render = function(time, suppressEvents, force) {
+            if (this._gc) {
+                this._enabled(true, false);
+            }
+            var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                dur = this._duration,
+                prevTime = this._time,
+                prevTotalTime = this._totalTime,
+                prevStart = this._startTime,
+                prevTimeScale = this._timeScale,
+                prevRawPrevTime = this._rawPrevTime,
+                prevPaused = this._paused,
+                prevCycle = this._cycle,
+                tween, isComplete, next, callback, internalForce, cycleDuration;
+            if (time >= totalDur) {
+                if (!this._locked) {
+                    this._totalTime = totalDur;
+                    this._cycle = this._repeat;
+                }
+                if (!this._reversed) if (!this._hasPausedChild()) {
+                    isComplete = true;
+                    callback = "onComplete";
+                    if (this._duration === 0) if (time === 0 || prevRawPrevTime < 0 || prevRawPrevTime === _tinyNum) if (prevRawPrevTime !== time && this._first) {
+                        internalForce = true;
+                        if (prevRawPrevTime > _tinyNum) {
+                            callback = "onReverseComplete";
+                        }
+                    }
+                }
+                this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                if (this._yoyo && (this._cycle & 1) !== 0) {
+                    this._time = time = 0;
+                } else {
+                    this._time = dur;
+                    time = dur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7. We cannot do less then 0.0001 because the same issue can occur when the duration is extremely large like 999999999999 in which case adding 0.00000001, for example, causes it to act like nothing was added.
+                }
+
+            } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
+                if (!this._locked) {
+                    this._totalTime = this._cycle = 0;
+                }
+                this._time = 0;
+                if (prevTime !== 0 || (dur === 0 && prevRawPrevTime !== _tinyNum && (prevRawPrevTime > 0 || (time < 0 && prevRawPrevTime >= 0)) && !this._locked)) { //edge case for checking time < 0 && prevRawPrevTime >= 0: a zero-duration fromTo() tween inside a zero-duration timeline (yeah, very rare)
+                    callback = "onReverseComplete";
+                    isComplete = this._reversed;
+                }
+                if (time < 0) {
+                    this._active = false;
+                    if (dur === 0) if (prevRawPrevTime >= 0 && this._first) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                        internalForce = true;
+                    }
+                    this._rawPrevTime = time;
+                } else {
+                    this._rawPrevTime = (dur || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                    time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
+                    if (!this._initted) {
+                        internalForce = true;
+                    }
+                }
+
+            } else {
+                if (dur === 0 && prevRawPrevTime < 0) { //without this, zero-duration repeating timelines (like with a simple callback nested at the very beginning and a repeatDelay) wouldn't render the first time through.
+                    internalForce = true;
+                }
+                this._time = this._rawPrevTime = time;
+                if (!this._locked) {
+                    this._totalTime = time;
+                    if (this._repeat !== 0) {
+                        cycleDuration = dur + this._repeatDelay;
+                        this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but it gets reported as 0.79999999!)
+                        if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
+                            this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
+                        }
+                        this._time = this._totalTime - (this._cycle * cycleDuration);
+                        if (this._yoyo) if ((this._cycle & 1) !== 0) {
+                            this._time = dur - this._time;
+                        }
+                        if (this._time > dur) {
+                            this._time = dur;
+                            time = dur + 0.0001; //to avoid occasional floating point rounding error
+                        } else if (this._time < 0) {
+                            this._time = time = 0;
+                        } else {
+                            time = this._time;
+                        }
+                    }
+                }
+            }
+
+            if (this._cycle !== prevCycle) if (!this._locked) {
+                /*
+                make sure children at the end/beginning of the timeline are rendered properly. If, for example,
+                a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
+                would get transated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
+                could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So
+                we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
+                ensure that zero-duration tweens at the very beginning or end of the TimelineMax work.
+                */
+                var backwards = (this._yoyo && (prevCycle & 1) !== 0),
+                    wrap = (backwards === (this._yoyo && (this._cycle & 1) !== 0)),
+                    recTotalTime = this._totalTime,
+                    recCycle = this._cycle,
+                    recRawPrevTime = this._rawPrevTime,
+                    recTime = this._time;
+
+                this._totalTime = prevCycle * dur;
+                if (this._cycle < prevCycle) {
+                    backwards = !backwards;
+                } else {
+                    this._totalTime += dur;
+                }
+                this._time = prevTime; //temporarily revert _time so that render() renders the children in the correct order. Without this, tweens won't rewind correctly. We could arhictect things in a "cleaner" way by splitting out the rendering queue into a separate method but for performance reasons, we kept it all inside this method.
+
+                this._rawPrevTime = (dur === 0) ? prevRawPrevTime - 0.0001 : prevRawPrevTime;
+                this._cycle = prevCycle;
+                this._locked = true; //prevents changes to totalTime and skips repeat/yoyo behavior when we recursively call render()
+                prevTime = (backwards) ? 0 : dur;
+                this.render(prevTime, suppressEvents, (dur === 0));
+                if (!suppressEvents) if (!this._gc) {
+                    if (this.vars.onRepeat) {
+                        this.vars.onRepeat.apply(this.vars.onRepeatScope || this, this.vars.onRepeatParams || _blankArray);
+                    }
+                }
+                if (wrap) {
+                    prevTime = (backwards) ? dur + 0.0001 : -0.0001;
+                    this.render(prevTime, true, false);
+                }
+                this._locked = false;
+                if (this._paused && !prevPaused) { //if the render() triggered callback that paused this timeline, we should abort (very rare, but possible)
+                    return;
+                }
+                this._time = recTime;
+                this._totalTime = recTotalTime;
+                this._cycle = recCycle;
+                this._rawPrevTime = recRawPrevTime;
+            }
+
+            if ((this._time === prevTime || !this._first) && !force && !internalForce) {
+                if (prevTotalTime !== this._totalTime) if (this._onUpdate) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.
+                    this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                }
+                return;
+            } else if (!this._initted) {
+                this._initted = true;
+            }
+
+            if (!this._active) if (!this._paused && this._totalTime !== prevTotalTime && time > 0) {
+                this._active = true;  //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example.
+            }
+
+            if (prevTotalTime === 0) if (this.vars.onStart) if (this._totalTime !== 0) if (!suppressEvents) {
+                this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+            }
+
+            if (this._time >= prevTime) {
+                tween = this._first;
+                while (tween) {
+                    next = tween._next; //record it here because the value could change after rendering...
+                    if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                        break;
+                    } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+                        if (!tween._reversed) {
+                            tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);
+                        } else {
+                            tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);
+                        }
+
+                    }
+                    tween = next;
+                }
+            } else {
+                tween = this._last;
+                while (tween) {
+                    next = tween._prev; //record it here because the value could change after rendering...
+                    if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                        break;
+                    } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+                        if (!tween._reversed) {
+                            tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);
+                        } else {
+                            tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);
+                        }
+                    }
+                    tween = next;
+                }
+            }
+
+            if (this._onUpdate) if (!suppressEvents) {
+                this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+            }
+            if (callback) if (!this._locked) if (!this._gc) if (prevStart === this._startTime || prevTimeScale !== this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                if (isComplete) {
+                    if (this._timeline.autoRemoveChildren) {
+                        this._enabled(false, false);
+                    }
+                    this._active = false;
+                }
+                if (!suppressEvents && this.vars[callback]) {
+                    this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                }
+            }
+        };
+
+        p.getActive = function(nested, tweens, timelines) {
+            if (nested == null) {
+                nested = true;
+            }
+            if (tweens == null) {
+                tweens = true;
+            }
+            if (timelines == null) {
+                timelines = false;
+            }
+            var a = [],
+                all = this.getChildren(nested, tweens, timelines),
+                cnt = 0,
+                l = all.length,
+                i, tween;
+            for (i = 0; i < l; i++) {
+                tween = all[i];
+                if (tween.isActive()) {
+                    a[cnt++] = tween;
+                }
+            }
+            return a;
+        };
+
+
+        p.getLabelAfter = function(time) {
+            if (!time) if (time !== 0) { //faster than isNan()
+                time = this._time;
+            }
+            var labels = this.getLabelsArray(),
+                l = labels.length,
+                i;
+            for (i = 0; i < l; i++) {
+                if (labels[i].time > time) {
+                    return labels[i].name;
+                }
+            }
+            return null;
+        };
+
+        p.getLabelBefore = function(time) {
+            if (time == null) {
+                time = this._time;
+            }
+            var labels = this.getLabelsArray(),
+                i = labels.length;
+            while (--i > -1) {
+                if (labels[i].time < time) {
+                    return labels[i].name;
+                }
+            }
+            return null;
+        };
+
+        p.getLabelsArray = function() {
+            var a = [],
+                cnt = 0,
+                p;
+            for (p in this._labels) {
+                a[cnt++] = {time:this._labels[p], name:p};
+            }
+            a.sort(function(a,b) {
+                return a.time - b.time;
+            });
+            return a;
+        };
+
+
+//---- GETTERS / SETTERS -------------------------------------------------------------------------------------------------------
+
+        p.progress = function(value) {
+            return (!arguments.length) ? this._time / this.duration() : this.totalTime( this.duration() * ((this._yoyo && (this._cycle & 1) !== 0) ? 1 - value : value) + (this._cycle * (this._duration + this._repeatDelay)), false);
+        };
+
+        p.totalProgress = function(value) {
+            return (!arguments.length) ? this._totalTime / this.totalDuration() : this.totalTime( this.totalDuration() * value, false);
+        };
+
+        p.totalDuration = function(value) {
+            if (!arguments.length) {
+                if (this._dirty) {
+                    TimelineLite.prototype.totalDuration.call(this); //just forces refresh
+                    //Instead of Infinity, we use 999999999999 so that we can accommodate reverses.
+                    this._totalDuration = (this._repeat === -1) ? 999999999999 : this._duration * (this._repeat + 1) + (this._repeatDelay * this._repeat);
+                }
+                return this._totalDuration;
+            }
+            return (this._repeat === -1) ? this : this.duration( (value - (this._repeat * this._repeatDelay)) / (this._repeat + 1) );
+        };
+
+        p.time = function(value, suppressEvents) {
+            if (!arguments.length) {
+                return this._time;
+            }
+            if (this._dirty) {
+                this.totalDuration();
+            }
+            if (value > this._duration) {
+                value = this._duration;
+            }
+            if (this._yoyo && (this._cycle & 1) !== 0) {
+                value = (this._duration - value) + (this._cycle * (this._duration + this._repeatDelay));
+            } else if (this._repeat !== 0) {
+                value += this._cycle * (this._duration + this._repeatDelay);
+            }
+            return this.totalTime(value, suppressEvents);
+        };
+
+        p.repeat = function(value) {
+            if (!arguments.length) {
+                return this._repeat;
+            }
+            this._repeat = value;
+            return this._uncache(true);
+        };
+
+        p.repeatDelay = function(value) {
+            if (!arguments.length) {
+                return this._repeatDelay;
+            }
+            this._repeatDelay = value;
+            return this._uncache(true);
+        };
+
+        p.yoyo = function(value) {
+            if (!arguments.length) {
+                return this._yoyo;
+            }
+            this._yoyo = value;
+            return this;
+        };
+
+        p.currentLabel = function(value) {
+            if (!arguments.length) {
+                return this.getLabelBefore(this._time + 0.00000001);
+            }
+            return this.seek(value, true);
+        };
+
+        return TimelineMax;
+
+    }, true);
+    
+
+
+
+
+    
+    
+    
+    
+    
+    
+    
+/*
+ * ----------------------------------------------------------------
+ * BezierPlugin
+ * ----------------------------------------------------------------
+ */
+    (function() {
+
+        var _RAD2DEG = 180 / Math.PI,
+            _r1 = [],
+            _r2 = [],
+            _r3 = [],
+            _corProps = {},
+            Segment = function(a, b, c, d) {
+                this.a = a;
+                this.b = b;
+                this.c = c;
+                this.d = d;
+                this.da = d - a;
+                this.ca = c - a;
+                this.ba = b - a;
+            },
+            _correlate = ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",
+            cubicToQuadratic = function(a, b, c, d) {
+                var q1 = {a:a},
+                    q2 = {},
+                    q3 = {},
+                    q4 = {c:d},
+                    mab = (a + b) / 2,
+                    mbc = (b + c) / 2,
+                    mcd = (c + d) / 2,
+                    mabc = (mab + mbc) / 2,
+                    mbcd = (mbc + mcd) / 2,
+                    m8 = (mbcd - mabc) / 8;
+                q1.b = mab + (a - mab) / 4;
+                q2.b = mabc + m8;
+                q1.c = q2.a = (q1.b + q2.b) / 2;
+                q2.c = q3.a = (mabc + mbcd) / 2;
+                q3.b = mbcd - m8;
+                q4.b = mcd + (d - mcd) / 4;
+                q3.c = q4.a = (q3.b + q4.b) / 2;
+                return [q1, q2, q3, q4];
+            },
+            _calculateControlPoints = function(a, curviness, quad, basic, correlate) {
+                var l = a.length - 1,
+                    ii = 0,
+                    cp1 = a[0].a,
+                    i, p1, p2, p3, seg, m1, m2, mm, cp2, qb, r1, r2, tl;
+                for (i = 0; i < l; i++) {
+                    seg = a[ii];
+                    p1 = seg.a;
+                    p2 = seg.d;
+                    p3 = a[ii+1].d;
+
+                    if (correlate) {
+                        r1 = _r1[i];
+                        r2 = _r2[i];
+                        tl = ((r2 + r1) * curviness * 0.25) / (basic ? 0.5 : _r3[i] || 0.5);
+                        m1 = p2 - (p2 - p1) * (basic ? curviness * 0.5 : (r1 !== 0 ? tl / r1 : 0));
+                        m2 = p2 + (p3 - p2) * (basic ? curviness * 0.5 : (r2 !== 0 ? tl / r2 : 0));
+                        mm = p2 - (m1 + (((m2 - m1) * ((r1 * 3 / (r1 + r2)) + 0.5) / 4) || 0));
+                    } else {
+                        m1 = p2 - (p2 - p1) * curviness * 0.5;
+                        m2 = p2 + (p3 - p2) * curviness * 0.5;
+                        mm = p2 - (m1 + m2) / 2;
+                    }
+                    m1 += mm;
+                    m2 += mm;
+
+                    seg.c = cp2 = m1;
+                    if (i !== 0) {
+                        seg.b = cp1;
+                    } else {
+                        seg.b = cp1 = seg.a + (seg.c - seg.a) * 0.6; //instead of placing b on a exactly, we move it inline with c so that if the user specifies an ease like Back.easeIn or Elastic.easeIn which goes BEYOND the beginning, it will do so smoothly.
+                    }
+
+                    seg.da = p2 - p1;
+                    seg.ca = cp2 - p1;
+                    seg.ba = cp1 - p1;
+
+                    if (quad) {
+                        qb = cubicToQuadratic(p1, cp1, cp2, p2);
+                        a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                        ii += 4;
+                    } else {
+                        ii++;
+                    }
+
+                    cp1 = m2;
+                }
+                seg = a[ii];
+                seg.b = cp1;
+                seg.c = cp1 + (seg.d - cp1) * 0.4; //instead of placing c on d exactly, we move it inline with b so that if the user specifies an ease like Back.easeOut or Elastic.easeOut which goes BEYOND the end, it will do so smoothly.
+                seg.da = seg.d - seg.a;
+                seg.ca = seg.c - seg.a;
+                seg.ba = cp1 - seg.a;
+                if (quad) {
+                    qb = cubicToQuadratic(seg.a, cp1, seg.c, seg.d);
+                    a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                }
+            },
+            _parseAnchors = function(values, p, correlate, prepend) {
+                var a = [],
+                    l, i, p1, p2, p3, tmp;
+                if (prepend) {
+                    values = [prepend].concat(values);
+                    i = values.length;
+                    while (--i > -1) {
+                        if (typeof( (tmp = values[i][p]) ) === "string") if (tmp.charAt(1) === "=") {
+                            values[i][p] = prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)); //accommodate relative values. Do it inline instead of breaking it out into a function for speed reasons
+                        }
+                    }
+                }
+                l = values.length - 2;
+                if (l < 0) {
+                    a[0] = new Segment(values[0][p], 0, 0, values[(l < -1) ? 0 : 1][p]);
+                    return a;
+                }
+                for (i = 0; i < l; i++) {
+                    p1 = values[i][p];
+                    p2 = values[i+1][p];
+                    a[i] = new Segment(p1, 0, 0, p2);
+                    if (correlate) {
+                        p3 = values[i+2][p];
+                        _r1[i] = (_r1[i] || 0) + (p2 - p1) * (p2 - p1);
+                        _r2[i] = (_r2[i] || 0) + (p3 - p2) * (p3 - p2);
+                    }
+                }
+                a[i] = new Segment(values[i][p], 0, 0, values[i+1][p]);
+                return a;
+            },
+            bezierThrough = function(values, curviness, quadratic, basic, correlate, prepend) {
+                var obj = {},
+                    props = [],
+                    first = prepend || values[0],
+                    i, p, a, j, r, l, seamless, last;
+                correlate = (typeof(correlate) === "string") ? ","+correlate+"," : _correlate;
+                if (curviness == null) {
+                    curviness = 1;
+                }
+                for (p in values[0]) {
+                    props.push(p);
+                }
+                //check to see if the last and first values are identical (well, within 0.05). If so, make seamless by appending the second element to the very end of the values array and the 2nd-to-last element to the very beginning (we'll remove those segments later)
+                if (values.length > 1) {
+                    last = values[values.length - 1];
+                    seamless = true;
+                    i = props.length;
+                    while (--i > -1) {
+                        p = props[i];
+                        if (Math.abs(first[p] - last[p]) > 0.05) { //build in a tolerance of +/-0.05 to accommodate rounding errors. For example, if you set an object's position to 4.945, Flash will make it 4.9
+                            seamless = false;
+                            break;
+                        }
+                    }
+                    if (seamless) {
+                        values = values.concat(); //duplicate the array to avoid contaminating the original which the user may be reusing for other tweens
+                        if (prepend) {
+                            values.unshift(prepend);
+                        }
+                        values.push(values[1]);
+                        prepend = values[values.length - 3];
+                    }
+                }
+                _r1.length = _r2.length = _r3.length = 0;
+                i = props.length;
+                while (--i > -1) {
+                    p = props[i];
+                    _corProps[p] = (correlate.indexOf(","+p+",") !== -1);
+                    obj[p] = _parseAnchors(values, p, _corProps[p], prepend);
+                }
+                i = _r1.length;
+                while (--i > -1) {
+                    _r1[i] = Math.sqrt(_r1[i]);
+                    _r2[i] = Math.sqrt(_r2[i]);
+                }
+                if (!basic) {
+                    i = props.length;
+                    while (--i > -1) {
+                        if (_corProps[p]) {
+                            a = obj[props[i]];
+                            l = a.length - 1;
+                            for (j = 0; j < l; j++) {
+                                r = a[j+1].da / _r2[j] + a[j].da / _r1[j];
+                                _r3[j] = (_r3[j] || 0) + r * r;
+                            }
+                        }
+                    }
+                    i = _r3.length;
+                    while (--i > -1) {
+                        _r3[i] = Math.sqrt(_r3[i]);
+                    }
+                }
+                i = props.length;
+                j = quadratic ? 4 : 1;
+                while (--i > -1) {
+                    p = props[i];
+                    a = obj[p];
+                    _calculateControlPoints(a, curviness, quadratic, basic, _corProps[p]); //this method requires that _parseAnchors() and _setSegmentRatios() ran first so that _r1, _r2, and _r3 values are populated for all properties
+                    if (seamless) {
+                        a.splice(0, j);
+                        a.splice(a.length - j, j);
+                    }
+                }
+                return obj;
+            },
+            _parseBezierData = function(values, type, prepend) {
+                type = type || "soft";
+                var obj = {},
+                    inc = (type === "cubic") ? 3 : 2,
+                    soft = (type === "soft"),
+                    props = [],
+                    a, b, c, d, cur, i, j, l, p, cnt, tmp;
+                if (soft && prepend) {
+                    values = [prepend].concat(values);
+                }
+                if (values == null || values.length < inc + 1) { throw "invalid Bezier data"; }
+                for (p in values[0]) {
+                    props.push(p);
+                }
+                i = props.length;
+                while (--i > -1) {
+                    p = props[i];
+                    obj[p] = cur = [];
+                    cnt = 0;
+                    l = values.length;
+                    for (j = 0; j < l; j++) {
+                        a = (prepend == null) ? values[j][p] : (typeof( (tmp = values[j][p]) ) === "string" && tmp.charAt(1) === "=") ? prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)) : Number(tmp);
+                        if (soft) if (j > 1) if (j < l - 1) {
+                            cur[cnt++] = (a + cur[cnt-2]) / 2;
+                        }
+                        cur[cnt++] = a;
+                    }
+                    l = cnt - inc + 1;
+                    cnt = 0;
+                    for (j = 0; j < l; j += inc) {
+                        a = cur[j];
+                        b = cur[j+1];
+                        c = cur[j+2];
+                        d = (inc === 2) ? 0 : cur[j+3];
+                        cur[cnt++] = tmp = (inc === 3) ? new Segment(a, b, c, d) : new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+                    }
+                    cur.length = cnt;
+                }
+                return obj;
+            },
+            _addCubicLengths = function(a, steps, resolution) {
+                var inc = 1 / resolution,
+                    j = a.length,
+                    d, d1, s, da, ca, ba, p, i, inv, bez, index;
+                while (--j > -1) {
+                    bez = a[j];
+                    s = bez.a;
+                    da = bez.d - s;
+                    ca = bez.c - s;
+                    ba = bez.b - s;
+                    d = d1 = 0;
+                    for (i = 1; i <= resolution; i++) {
+                        p = inc * i;
+                        inv = 1 - p;
+                        d = d1 - (d1 = (p * p * da + 3 * inv * (p * ca + inv * ba)) * p);
+                        index = j * resolution + i - 1;
+                        steps[index] = (steps[index] || 0) + d * d;
+                    }
+                }
+            },
+            _parseLengthData = function(obj, resolution) {
+                resolution = resolution >> 0 || 6;
+                var a = [],
+                    lengths = [],
+                    d = 0,
+                    total = 0,
+                    threshold = resolution - 1,
+                    segments = [],
+                    curLS = [], //current length segments array
+                    p, i, l, index;
+                for (p in obj) {
+                    _addCubicLengths(obj[p], a, resolution);
+                }
+                l = a.length;
+                for (i = 0; i < l; i++) {
+                    d += Math.sqrt(a[i]);
+                    index = i % resolution;
+                    curLS[index] = d;
+                    if (index === threshold) {
+                        total += d;
+                        index = (i / resolution) >> 0;
+                        segments[index] = curLS;
+                        lengths[index] = total;
+                        d = 0;
+                        curLS = [];
+                    }
+                }
+                return {length:total, lengths:lengths, segments:segments};
+            },
+
+
+
+            BezierPlugin = window._gsDefine.plugin({
+                    propName: "bezier",
+                    priority: -1,
+                    version: "1.3.2",
+                    API: 2,
+                    global:true,
+
+                    //gets called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
+                    init: function(target, vars, tween) {
+                        this._target = target;
+                        if (vars instanceof Array) {
+                            vars = {values:vars};
+                        }
+                        this._func = {};
+                        this._round = {};
+                        this._props = [];
+                        this._timeRes = (vars.timeResolution == null) ? 6 : parseInt(vars.timeResolution, 10);
+                        var values = vars.values || [],
+                            first = {},
+                            second = values[0],
+                            autoRotate = vars.autoRotate || tween.vars.orientToBezier,
+                            p, isFunc, i, j, prepend;
+
+                        this._autoRotate = autoRotate ? (autoRotate instanceof Array) ? autoRotate : [["x","y","rotation",((autoRotate === true) ? 0 : Number(autoRotate) || 0)]] : null;
+                        for (p in second) {
+                            this._props.push(p);
+                        }
+
+                        i = this._props.length;
+                        while (--i > -1) {
+                            p = this._props[i];
+
+                            this._overwriteProps.push(p);
+                            isFunc = this._func[p] = (typeof(target[p]) === "function");
+                            first[p] = (!isFunc) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                            if (!prepend) if (first[p] !== values[0][p]) {
+                                prepend = first;
+                            }
+                        }
+                        this._beziers = (vars.type !== "cubic" && vars.type !== "quadratic" && vars.type !== "soft") ? bezierThrough(values, isNaN(vars.curviness) ? 1 : vars.curviness, false, (vars.type === "thruBasic"), vars.correlate, prepend) : _parseBezierData(values, vars.type, first);
+                        this._segCount = this._beziers[p].length;
+
+                        if (this._timeRes) {
+                            var ld = _parseLengthData(this._beziers, this._timeRes);
+                            this._length = ld.length;
+                            this._lengths = ld.lengths;
+                            this._segments = ld.segments;
+                            this._l1 = this._li = this._s1 = this._si = 0;
+                            this._l2 = this._lengths[0];
+                            this._curSeg = this._segments[0];
+                            this._s2 = this._curSeg[0];
+                            this._prec = 1 / this._curSeg.length;
+                        }
+
+                        if ((autoRotate = this._autoRotate)) {
+                            this._initialRotations = [];
+                            if (!(autoRotate[0] instanceof Array)) {
+                                this._autoRotate = autoRotate = [autoRotate];
+                            }
+                            i = autoRotate.length;
+                            while (--i > -1) {
+                                for (j = 0; j < 3; j++) {
+                                    p = autoRotate[i][j];
+                                    this._func[p] = (typeof(target[p]) === "function") ? target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ] : false;
+                                }
+                                p = autoRotate[i][2];
+                                this._initialRotations[i] = this._func[p] ? this._func[p].call(this._target) : this._target[p];
+                            }
+                        }
+                        this._startRatio = tween.vars.runBackwards ? 1 : 0; //we determine the starting ratio when the tween inits which is always 0 unless the tween has runBackwards:true (indicating it's a from() tween) in which case it's 1.
+                        return true;
+                    },
+
+                    //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)
+                    set: function(v) {
+                        var segments = this._segCount,
+                            func = this._func,
+                            target = this._target,
+                            notStart = (v !== this._startRatio),
+                            curIndex, inv, i, p, b, t, val, l, lengths, curSeg;
+                        if (!this._timeRes) {
+                            curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0;
+                            t = (v - (curIndex * (1 / segments))) * segments;
+                        } else {
+                            lengths = this._lengths;
+                            curSeg = this._curSeg;
+                            v *= this._length;
+                            i = this._li;
+                            //find the appropriate segment (if the currently cached one isn't correct)
+                            if (v > this._l2 && i < segments - 1) {
+                                l = segments - 1;
+                                while (i < l && (this._l2 = lengths[++i]) <= v) {   }
+                                this._l1 = lengths[i-1];
+                                this._li = i;
+                                this._curSeg = curSeg = this._segments[i];
+                                this._s2 = curSeg[(this._s1 = this._si = 0)];
+                            } else if (v < this._l1 && i > 0) {
+                                while (i > 0 && (this._l1 = lengths[--i]) >= v) { }
+                                if (i === 0 && v < this._l1) {
+                                    this._l1 = 0;
+                                } else {
+                                    i++;
+                                }
+                                this._l2 = lengths[i];
+                                this._li = i;
+                                this._curSeg = curSeg = this._segments[i];
+                                this._s1 = curSeg[(this._si = curSeg.length - 1) - 1] || 0;
+                                this._s2 = curSeg[this._si];
+                            }
+                            curIndex = i;
+                            //now find the appropriate sub-segment (we split it into the number of pieces that was defined by "precision" and measured each one)
+                            v -= this._l1;
+                            i = this._si;
+                            if (v > this._s2 && i < curSeg.length - 1) {
+                                l = curSeg.length - 1;
+                                while (i < l && (this._s2 = curSeg[++i]) <= v) {    }
+                                this._s1 = curSeg[i-1];
+                                this._si = i;
+                            } else if (v < this._s1 && i > 0) {
+                                while (i > 0 && (this._s1 = curSeg[--i]) >= v) {    }
+                                if (i === 0 && v < this._s1) {
+                                    this._s1 = 0;
+                                } else {
+                                    i++;
+                                }
+                                this._s2 = curSeg[i];
+                                this._si = i;
+                            }
+                            t = (i + (v - this._s1) / (this._s2 - this._s1)) * this._prec;
+                        }
+                        inv = 1 - t;
+
+                        i = this._props.length;
+                        while (--i > -1) {
+                            p = this._props[i];
+                            b = this._beziers[p][curIndex];
+                            val = (t * t * b.da + 3 * inv * (t * b.ca + inv * b.ba)) * t + b.a;
+                            if (this._round[p]) {
+                                val = Math.round(val);
+                            }
+                            if (func[p]) {
+                                target[p](val);
+                            } else {
+                                target[p] = val;
+                            }
+                        }
+
+                        if (this._autoRotate) {
+                            var ar = this._autoRotate,
+                                b2, x1, y1, x2, y2, add, conv;
+                            i = ar.length;
+                            while (--i > -1) {
+                                p = ar[i][2];
+                                add = ar[i][3] || 0;
+                                conv = (ar[i][4] === true) ? 1 : _RAD2DEG;
+                                b = this._beziers[ar[i][0]];
+                                b2 = this._beziers[ar[i][1]];
+
+                                if (b && b2) { //in case one of the properties got overwritten.
+                                    b = b[curIndex];
+                                    b2 = b2[curIndex];
+
+                                    x1 = b.a + (b.b - b.a) * t;
+                                    x2 = b.b + (b.c - b.b) * t;
+                                    x1 += (x2 - x1) * t;
+                                    x2 += ((b.c + (b.d - b.c) * t) - x2) * t;
+
+                                    y1 = b2.a + (b2.b - b2.a) * t;
+                                    y2 = b2.b + (b2.c - b2.b) * t;
+                                    y1 += (y2 - y1) * t;
+                                    y2 += ((b2.c + (b2.d - b2.c) * t) - y2) * t;
+
+                                    val = notStart ? Math.atan2(y2 - y1, x2 - x1) * conv + add : this._initialRotations[i];
+
+                                    if (func[p]) {
+                                        target[p](val);
+                                    } else {
+                                        target[p] = val;
+                                    }
+                                }
+                            }
+                        }
+                    }
+            }),
+            p = BezierPlugin.prototype;
+
+
+        BezierPlugin.bezierThrough = bezierThrough;
+        BezierPlugin.cubicToQuadratic = cubicToQuadratic;
+        BezierPlugin._autoCSS = true; //indicates that this plugin can be inserted into the "css" object using the autoCSS feature of TweenLite
+        BezierPlugin.quadraticToCubic = function(a, b, c) {
+            return new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+        };
+
+        BezierPlugin._cssRegister = function() {
+            var CSSPlugin = window._gsDefine.globals.CSSPlugin;
+            if (!CSSPlugin) {
+                return;
+            }
+            var _internals = CSSPlugin._internals,
+                _parseToProxy = _internals._parseToProxy,
+                _setPluginRatio = _internals._setPluginRatio,
+                CSSPropTween = _internals.CSSPropTween;
+            _internals._registerComplexSpecialProp("bezier", {parser:function(t, e, prop, cssp, pt, plugin) {
+                if (e instanceof Array) {
+                    e = {values:e};
+                }
+                plugin = new BezierPlugin();
+                var values = e.values,
+                    l = values.length - 1,
+                    pluginValues = [],
+                    v = {},
+                    i, p, data;
+                if (l < 0) {
+                    return pt;
+                }
+                for (i = 0; i <= l; i++) {
+                    data = _parseToProxy(t, values[i], cssp, pt, plugin, (l !== i));
+                    pluginValues[i] = data.end;
+                }
+                for (p in e) {
+                    v[p] = e[p]; //duplicate the vars object because we need to alter some things which would cause problems if the user plans to reuse the same vars object for another tween.
+                }
+                v.values = pluginValues;
+                pt = new CSSPropTween(t, "bezier", 0, 0, data.pt, 2);
+                pt.data = data;
+                pt.plugin = plugin;
+                pt.setRatio = _setPluginRatio;
+                if (v.autoRotate === 0) {
+                    v.autoRotate = true;
+                }
+                if (v.autoRotate && !(v.autoRotate instanceof Array)) {
+                    i = (v.autoRotate === true) ? 0 : Number(v.autoRotate);
+                    v.autoRotate = (data.end.left != null) ? [["left","top","rotation",i,false]] : (data.end.x != null) ? [["x","y","rotation",i,false]] : false;
+                }
+                if (v.autoRotate) {
+                    if (!cssp._transform) {
+                        cssp._enableTransforms(false);
+                    }
+                    data.autoRotate = cssp._target._gsTransform;
+                }
+                plugin._onInitTween(data.proxy, v, cssp._tween);
+                return pt;
+            }});
+        };
+
+        p._roundProps = function(lookup, value) {
+            var op = this._overwriteProps,
+                i = op.length;
+            while (--i > -1) {
+                if (lookup[op[i]] || lookup.bezier || lookup.bezierThrough) {
+                    this._round[op[i]] = value;
+                }
+            }
+        };
+
+        p._kill = function(lookup) {
+            var a = this._props,
+                p, i;
+            for (p in this._beziers) {
+                if (p in lookup) {
+                    delete this._beziers[p];
+                    delete this._func[p];
+                    i = a.length;
+                    while (--i > -1) {
+                        if (a[i] === p) {
+                            a.splice(i, 1);
+                        }
+                    }
+                }
+            }
+            return this._super._kill.call(this, lookup);
+        };
+
+    }());
+
+
+
+
+
+
+    
+    
+    
+    
+    
+    
+    
+    
+/*
+ * ----------------------------------------------------------------
+ * CSSPlugin
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin","TweenLite"], function(TweenPlugin, TweenLite) {
+
+        /** @constructor **/
+        var CSSPlugin = function() {
+                TweenPlugin.call(this, "css");
+                this._overwriteProps.length = 0;
+                this.setRatio = CSSPlugin.prototype.setRatio; //speed optimization (avoid prototype lookup on this "hot" method)
+            },
+            _hasPriority, //turns true whenever a CSSPropTween instance is created that has a priority other than 0. This helps us discern whether or not we should spend the time organizing the linked list or not after a CSSPlugin's _onInitTween() method is called.
+            _suffixMap, //we set this in _onInitTween() each time as a way to have a persistent variable we can use in other methods like _parse() without having to pass it around as a parameter and we keep _parse() decoupled from a particular CSSPlugin instance
+            _cs, //computed style (we store this in a shared variable to conserve memory and make minification tighter
+            _overwriteProps, //alias to the currently instantiating CSSPlugin's _overwriteProps array. We use this closure in order to avoid having to pass a reference around from method to method and aid in minification.
+            _specialProps = {},
+            p = CSSPlugin.prototype = new TweenPlugin("css");
+
+        p.constructor = CSSPlugin;
+        CSSPlugin.version = "1.12.1";
+        CSSPlugin.API = 2;
+        CSSPlugin.defaultTransformPerspective = 0;
+        CSSPlugin.defaultSkewType = "compensated";
+        p = "px"; //we'll reuse the "p" variable to keep file size down
+        CSSPlugin.suffixMap = {top:p, right:p, bottom:p, left:p, width:p, height:p, fontSize:p, padding:p, margin:p, perspective:p, lineHeight:""};
+
+
+        var _numExp = /(?:\d|\-\d|\.\d|\-\.\d)+/g,
+            _relNumExp = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
+            _valuesExp = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like "1px 5px 20px rgb(255,102,51)"
+            _NaNExp = /[^\d\-\.]/g,
+            _suffixExp = /(?:\d|\-|\+|=|#|\.)*/g,
+            _opacityExp = /opacity *= *([^)]*)/i,
+            _opacityValExp = /opacity:([^;]*)/i,
+            _alphaFilterExp = /alpha\(opacity *=.+?\)/i,
+            _rgbhslExp = /^(rgb|hsl)/,
+            _capsExp = /([A-Z])/g,
+            _camelExp = /-([a-z])/gi,
+            _urlExp = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi, //for pulling out urls from url(...) or url("...") strings (some browsers wrap urls in quotes, some don't when reporting things like backgroundImage)
+            _camelFunc = function(s, g) { return g.toUpperCase(); },
+            _horizExp = /(?:Left|Right|Width)/i,
+            _ieGetMatrixExp = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
+            _ieSetMatrixExp = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
+            _commasOutsideParenExp = /,(?=[^\)]*(?:\(|$))/gi, //finds any commas that are not within parenthesis
+            _DEG2RAD = Math.PI / 180,
+            _RAD2DEG = 180 / Math.PI,
+            _forcePT = {},
+            _doc = document,
+            _tempDiv = _doc.createElement("div"),
+            _tempImg = _doc.createElement("img"),
+            _internals = CSSPlugin._internals = {_specialProps:_specialProps}, //provides a hook to a few internal methods that we need to access from inside other plugins
+            _agent = navigator.userAgent,
+            _autoRound,
+            _reqSafariFix, //we won't apply the Safari transform fix until we actually come across a tween that affects a transform property (to maintain best performance).
+
+            _isSafari,
+            _isFirefox, //Firefox has a bug that causes 3D transformed elements to randomly disappear unless a repaint is forced after each update on each element.
+            _isSafariLT6, //Safari (and Android 4 which uses a flavor of Safari) has a bug that prevents changes to "top" and "left" properties from rendering properly if changed on the same frame as a transform UNLESS we set the element's WebkitBackfaceVisibility to hidden (weird, I know). Doing this for Android 3 and earlier seems to actually cause other problems, though (fun!)
+            _ieVers,
+            _supportsOpacity = (function() { //we set _isSafari, _ieVers, _isFirefox, and _supportsOpacity all in one function here to reduce file size slightly, especially in the minified version.
+                var i = _agent.indexOf("Android"),
+                    d = _doc.createElement("div"), a;
+
+                _isSafari = (_agent.indexOf("Safari") !== -1 && _agent.indexOf("Chrome") === -1 && (i === -1 || Number(_agent.substr(i+8, 1)) > 3));
+                _isSafariLT6 = (_isSafari && (Number(_agent.substr(_agent.indexOf("Version/")+8, 1)) < 6));
+                _isFirefox = (_agent.indexOf("Firefox") !== -1);
+
+                if ((/MSIE ([0-9]{1,}[\.0-9]{0,})/).exec(_agent)) {
+                    _ieVers = parseFloat( RegExp.$1 );
+                }
+
+                d.innerHTML = "<a title='' style='top:1px;opacity:.55;'>a</a>";
+                a = d.getElementsByTagName("a")[0];
+                return a ? /^0.55/.test(a.style.opacity) : false;
+            }()),
+            _getIEOpacity = function(v) {
+                return (_opacityExp.test( ((typeof(v) === "string") ? v : (v.currentStyle ? v.currentStyle.filter : v.style.filter) || "") ) ? ( parseFloat( RegExp.$1 ) / 100 ) : 1);
+            },
+            _log = function(s) {//for logging messages, but in a way that won't throw errors in old versions of IE.
+                if (window.console) {
+                    //console.log(s);
+                }
+            },
+            _prefixCSS = "", //the non-camelCase vendor prefix like "-o-", "-moz-", "-ms-", or "-webkit-"
+            _prefix = "", //camelCase vendor prefix like "O", "ms", "Webkit", or "Moz".
+
+            // @private feed in a camelCase property name like "transform" and it will check to see if it is valid as-is or if it needs a vendor prefix. It returns the corrected camelCase property name (i.e. "WebkitTransform" or "MozTransform" or "transform" or null if no such property is found, like if the browser is IE8 or before, "transform" won't be found at all)
+            _checkPropPrefix = function(p, e) {
+                e = e || _tempDiv;
+                var s = e.style,
+                    a, i;
+                if (s[p] !== undefined) {
+                    return p;
+                }
+                p = p.charAt(0).toUpperCase() + p.substr(1);
+                a = ["O","Moz","ms","Ms","Webkit"];
+                i = 5;
+                while (--i > -1 && s[a[i]+p] === undefined) { }
+                if (i >= 0) {
+                    _prefix = (i === 3) ? "ms" : a[i];
+                    _prefixCSS = "-" + _prefix.toLowerCase() + "-";
+                    return _prefix + p;
+                }
+                return null;
+            },
+
+            _getComputedStyle = _doc.defaultView ? _doc.defaultView.getComputedStyle : function() {},
+
+            /**
+             * @private Returns the css style for a particular property of an element. For example, to get whatever the current "left" css value for an element with an ID of "myElement", you could do:
+             * var currentLeft = CSSPlugin.getStyle( document.getElementById("myElement"), "left");
+             *
+             * @param {!Object} t Target element whose style property you want to query
+             * @param {!string} p Property name (like "left" or "top" or "marginTop", etc.)
+             * @param {Object=} cs Computed style object. This just provides a way to speed processing if you're going to get several properties on the same element in quick succession - you can reuse the result of the getComputedStyle() call.
+             * @param {boolean=} calc If true, the value will not be read directly from the element's "style" property (if it exists there), but instead the getComputedStyle() result will be used. This can be useful when you want to ensure that the browser itself is interpreting the value.
+             * @param {string=} dflt Default value that should be returned in the place of null, "none", "auto" or "auto auto".
+             * @return {?string} The current property value
+             */
+            _getStyle = CSSPlugin.getStyle = function(t, p, cs, calc, dflt) {
+                var rv;
+                if (!_supportsOpacity) if (p === "opacity") { //several versions of IE don't use the standard "opacity" property - they use things like filter:alpha(opacity=50), so we parse that here.
+                    return _getIEOpacity(t);
+                }
+                if (!calc && t.style[p]) {
+                    rv = t.style[p];
+                } else if ((cs = cs || _getComputedStyle(t))) {
+                    rv = cs[p] || cs.getPropertyValue(p) || cs.getPropertyValue(p.replace(_capsExp, "-$1").toLowerCase());
+                } else if (t.currentStyle) {
+                    rv = t.currentStyle[p];
+                }
+                return (dflt != null && (!rv || rv === "none" || rv === "auto" || rv === "auto auto")) ? dflt : rv;
+            },
+
+            /**
+             * @private Pass the target element, the property name, the numeric value, and the suffix (like "%", "em", "px", etc.) and it will spit back the equivalent pixel number.
+             * @param {!Object} t Target element
+             * @param {!string} p Property name (like "left", "top", "marginLeft", etc.)
+             * @param {!number} v Value
+             * @param {string=} sfx Suffix (like "px" or "%" or "em")
+             * @param {boolean=} recurse If true, the call is a recursive one. In some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect.
+             * @return {number} value in pixels
+             */
+            _convertToPixels = _internals.convertToPixels = function(t, p, v, sfx, recurse) {
+                if (sfx === "px" || !sfx) { return v; }
+                if (sfx === "auto" || !v) { return 0; }
+                var horiz = _horizExp.test(p),
+                    node = t,
+                    style = _tempDiv.style,
+                    neg = (v < 0),
+                    pix, cache, time;
+                if (neg) {
+                    v = -v;
+                }
+                if (sfx === "%" && p.indexOf("border") !== -1) {
+                    pix = (v / 100) * (horiz ? t.clientWidth : t.clientHeight);
+                } else {
+                    style.cssText = "border:0 solid red;position:" + _getStyle(t, "position") + ";line-height:0;";
+                    if (sfx === "%" || !node.appendChild) {
+                        node = t.parentNode || _doc.body;
+                        cache = node._gsCache;
+                        time = TweenLite.ticker.frame;
+                        if (cache && horiz && cache.time === time) { //performance optimization: we record the width of elements along with the ticker frame so that we can quickly get it again on the same tick (seems relatively safe to assume it wouldn't change on the same tick)
+                            return cache.width * v / 100;
+                        }
+                        style[(horiz ? "width" : "height")] = v + sfx;
+                    } else {
+                        style[(horiz ? "borderLeftWidth" : "borderTopWidth")] = v + sfx;
+                    }
+                    node.appendChild(_tempDiv);
+                    pix = parseFloat(_tempDiv[(horiz ? "offsetWidth" : "offsetHeight")]);
+                    node.removeChild(_tempDiv);
+                    if (horiz && sfx === "%" && CSSPlugin.cacheWidths !== false) {
+                        cache = node._gsCache = node._gsCache || {};
+                        cache.time = time;
+                        cache.width = pix / v * 100;
+                    }
+                    if (pix === 0 && !recurse) {
+                        pix = _convertToPixels(t, p, v, sfx, true);
+                    }
+                }
+                return neg ? -pix : pix;
+            },
+            _calculateOffset = _internals.calculateOffset = function(t, p, cs) { //for figuring out "top" or "left" in px when it's "auto". We need to factor in margin with the offsetLeft/offsetTop
+                if (_getStyle(t, "position", cs) !== "absolute") { return 0; }
+                var dim = ((p === "left") ? "Left" : "Top"),
+                    v = _getStyle(t, "margin" + dim, cs);
+                return t["offset" + dim] - (_convertToPixels(t, p, parseFloat(v), v.replace(_suffixExp, "")) || 0);
+            },
+
+            // @private returns at object containing ALL of the style properties in camelCase and their associated values.
+            _getAllStyles = function(t, cs) {
+                var s = {},
+                    i, tr;
+                if ((cs = cs || _getComputedStyle(t, null))) {
+                    if ((i = cs.length)) {
+                        while (--i > -1) {
+                            s[cs[i].replace(_camelExp, _camelFunc)] = cs.getPropertyValue(cs[i]);
+                        }
+                    } else { //Opera behaves differently - cs.length is always 0, so we must do a for...in loop.
+                        for (i in cs) {
+                            s[i] = cs[i];
+                        }
+                    }
+                } else if ((cs = t.currentStyle || t.style)) {
+                    for (i in cs) {
+                        if (typeof(i) === "string" && s[i] === undefined) {
+                            s[i.replace(_camelExp, _camelFunc)] = cs[i];
+                        }
+                    }
+                }
+                if (!_supportsOpacity) {
+                    s.opacity = _getIEOpacity(t);
+                }
+                tr = _getTransform(t, cs, false);
+                s.rotation = tr.rotation;
+                s.skewX = tr.skewX;
+                s.scaleX = tr.scaleX;
+                s.scaleY = tr.scaleY;
+                s.x = tr.x;
+                s.y = tr.y;
+                if (_supports3D) {
+                    s.z = tr.z;
+                    s.rotationX = tr.rotationX;
+                    s.rotationY = tr.rotationY;
+                    s.scaleZ = tr.scaleZ;
+                }
+                if (s.filters) {
+                    delete s.filters;
+                }
+                return s;
+            },
+
+            // @private analyzes two style objects (as returned by _getAllStyles()) and only looks for differences between them that contain tweenable values (like a number or color). It returns an object with a "difs" property which refers to an object containing only those isolated properties and values for tweening, and a "firstMPT" property which refers to the first MiniPropTween instance in a linked list that recorded all the starting values of the different properties so that we can revert to them at the end or beginning of the tween - we don't want the cascading to get messed up. The forceLookup parameter is an optional generic object with properties that should be forced into the results - this is necessary for className tweens that are overwriting others because imagine a scenario where a rollover/rollout adds/removes a class and the user swipes the mouse over the target SUPER fast, thus nothing actually changed yet and the subsequent comparison of the properties would indicate they match (especially when px rounding is taken into consideration), thus no tweening is necessary even though it SHOULD tween and remove those properties after the tween (otherwise the inline styles will contaminate things). See the className SpecialProp code for details.
+            _cssDif = function(t, s1, s2, vars, forceLookup) {
+                var difs = {},
+                    style = t.style,
+                    val, p, mpt;
+                for (p in s2) {
+                    if (p !== "cssText") if (p !== "length") if (isNaN(p)) if (s1[p] !== (val = s2[p]) || (forceLookup && forceLookup[p])) if (p.indexOf("Origin") === -1) if (typeof(val) === "number" || typeof(val) === "string") {
+                        difs[p] = (val === "auto" && (p === "left" || p === "top")) ? _calculateOffset(t, p) : ((val === "" || val === "auto" || val === "none") && typeof(s1[p]) === "string" && s1[p].replace(_NaNExp, "") !== "") ? 0 : val; //if the ending value is defaulting ("" or "auto"), we check the starting value and if it can be parsed into a number (a string which could have a suffix too, like 700px), then we swap in 0 for "" or "auto" so that things actually tween.
+                        if (style[p] !== undefined) { //for className tweens, we must remember which properties already existed inline - the ones that didn't should be removed when the tween isn't in progress because they were only introduced to facilitate the transition between classes.
+                            mpt = new MiniPropTween(style, p, style[p], mpt);
+                        }
+                    }
+                }
+                if (vars) {
+                    for (p in vars) { //copy properties (except className)
+                        if (p !== "className") {
+                            difs[p] = vars[p];
+                        }
+                    }
+                }
+                return {difs:difs, firstMPT:mpt};
+            },
+            _dimensions = {width:["Left","Right"], height:["Top","Bottom"]},
+            _margins = ["marginLeft","marginRight","marginTop","marginBottom"],
+
+            /**
+             * @private Gets the width or height of an element
+             * @param {!Object} t Target element
+             * @param {!string} p Property name ("width" or "height")
+             * @param {Object=} cs Computed style object (if one exists). Just a speed optimization.
+             * @return {number} Dimension (in pixels)
+             */
+            _getDimension = function(t, p, cs) {
+                var v = parseFloat((p === "width") ? t.offsetWidth : t.offsetHeight),
+                    a = _dimensions[p],
+                    i = a.length;
+                cs = cs || _getComputedStyle(t, null);
+                while (--i > -1) {
+                    v -= parseFloat( _getStyle(t, "padding" + a[i], cs, true) ) || 0;
+                    v -= parseFloat( _getStyle(t, "border" + a[i] + "Width", cs, true) ) || 0;
+                }
+                return v;
+            },
+
+            // @private Parses position-related complex strings like "top left" or "50px 10px" or "70% 20%", etc. which are used for things like transformOrigin or backgroundPosition. Optionally decorates a supplied object (recObj) with the following properties: "ox" (offsetX), "oy" (offsetY), "oxp" (if true, "ox" is a percentage not a pixel value), and "oxy" (if true, "oy" is a percentage not a pixel value)
+            _parsePosition = function(v, recObj) {
+                if (v == null || v === "" || v === "auto" || v === "auto auto") { //note: Firefox uses "auto auto" as default whereas Chrome uses "auto".
+                    v = "0 0";
+                }
+                var a = v.split(" "),
+                    x = (v.indexOf("left") !== -1) ? "0%" : (v.indexOf("right") !== -1) ? "100%" : a[0],
+                    y = (v.indexOf("top") !== -1) ? "0%" : (v.indexOf("bottom") !== -1) ? "100%" : a[1];
+                if (y == null) {
+                    y = "0";
+                } else if (y === "center") {
+                    y = "50%";
+                }
+                if (x === "center" || (isNaN(parseFloat(x)) && (x + "").indexOf("=") === -1)) { //remember, the user could flip-flop the values and say "bottom center" or "center bottom", etc. "center" is ambiguous because it could be used to describe horizontal or vertical, hence the isNaN(). If there's an "=" sign in the value, it's relative.
+                    x = "50%";
+                }
+                if (recObj) {
+                    recObj.oxp = (x.indexOf("%") !== -1);
+                    recObj.oyp = (y.indexOf("%") !== -1);
+                    recObj.oxr = (x.charAt(1) === "=");
+                    recObj.oyr = (y.charAt(1) === "=");
+                    recObj.ox = parseFloat(x.replace(_NaNExp, ""));
+                    recObj.oy = parseFloat(y.replace(_NaNExp, ""));
+                }
+                return x + " " + y + ((a.length > 2) ? " " + a[2] : "");
+            },
+
+            /**
+             * @private Takes an ending value (typically a string, but can be a number) and a starting value and returns the change between the two, looking for relative value indicators like += and -= and it also ignores suffixes (but make sure the ending value starts with a number or +=/-= and that the starting value is a NUMBER!)
+             * @param {(number|string)} e End value which is typically a string, but could be a number
+             * @param {(number|string)} b Beginning value which is typically a string but could be a number
+             * @return {number} Amount of change between the beginning and ending values (relative values that have a "+=" or "-=" are recognized)
+             */
+            _parseChange = function(e, b) {
+                return (typeof(e) === "string" && e.charAt(1) === "=") ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(b);
+            },
+
+            /**
+             * @private Takes a value and a default number, checks if the value is relative, null, or numeric and spits back a normalized number accordingly. Primarily used in the _parseTransform() function.
+             * @param {Object} v Value to be parsed
+             * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+             * @return {number} Parsed value
+             */
+            _parseVal = function(v, d) {
+                return (v == null) ? d : (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) + d : parseFloat(v);
+            },
+
+            /**
+             * @private Translates strings like "40deg" or "40" or 40rad" or "+=40deg" or "270_short" or "-90_cw" or "+=45_ccw" to a numeric radian angle. Of course a starting/default value must be fed in too so that relative values can be calculated properly.
+             * @param {Object} v Value to be parsed
+             * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+             * @param {string=} p property name for directionalEnd (optional - only used when the parsed value is directional ("_short", "_cw", or "_ccw" suffix). We need a way to store the uncompensated value so that at the end of the tween, we set it to exactly what was requested with no directional compensation). Property name would be "rotation", "rotationX", or "rotationY"
+             * @param {Object=} directionalEnd An object that will store the raw end values for directional angles ("_short", "_cw", or "_ccw" suffix). We need a way to store the uncompensated value so that at the end of the tween, we set it to exactly what was requested with no directional compensation.
+             * @return {number} parsed angle in radians
+             */
+            _parseAngle = function(v, d, p, directionalEnd) {
+                var min = 0.000001,
+                    cap, split, dif, result;
+                if (v == null) {
+                    result = d;
+                } else if (typeof(v) === "number") {
+                    result = v;
+                } else {
+                    cap = 360;
+                    split = v.split("_");
+                    dif = Number(split[0].replace(_NaNExp, "")) * ((v.indexOf("rad") === -1) ? 1 : _RAD2DEG) - ((v.charAt(1) === "=") ? 0 : d);
+                    if (split.length) {
+                        if (directionalEnd) {
+                            directionalEnd[p] = d + dif;
+                        }
+                        if (v.indexOf("short") !== -1) {
+                            dif = dif % cap;
+                            if (dif !== dif % (cap / 2)) {
+                                dif = (dif < 0) ? dif + cap : dif - cap;
+                            }
+                        }
+                        if (v.indexOf("_cw") !== -1 && dif < 0) {
+                            dif = ((dif + cap * 9999999999) % cap) - ((dif / cap) | 0) * cap;
+                        } else if (v.indexOf("ccw") !== -1 && dif > 0) {
+                            dif = ((dif - cap * 9999999999) % cap) - ((dif / cap) | 0) * cap;
+                        }
+                    }
+                    result = d + dif;
+                }
+                if (result < min && result > -min) {
+                    result = 0;
+                }
+                return result;
+            },
+
+            _colorLookup = {aqua:[0,255,255],
+                lime:[0,255,0],
+                silver:[192,192,192],
+                black:[0,0,0],
+                maroon:[128,0,0],
+                teal:[0,128,128],
+                blue:[0,0,255],
+                navy:[0,0,128],
+                white:[255,255,255],
+                fuchsia:[255,0,255],
+                olive:[128,128,0],
+                yellow:[255,255,0],
+                orange:[255,165,0],
+                gray:[128,128,128],
+                purple:[128,0,128],
+                green:[0,128,0],
+                red:[255,0,0],
+                pink:[255,192,203],
+                cyan:[0,255,255],
+                transparent:[255,255,255,0]},
+
+            _hue = function(h, m1, m2) {
+                h = (h < 0) ? h + 1 : (h > 1) ? h - 1 : h;
+                return ((((h * 6 < 1) ? m1 + (m2 - m1) * h * 6 : (h < 0.5) ? m2 : (h * 3 < 2) ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * 255) + 0.5) | 0;
+            },
+
+            /**
+             * @private Parses a color (like #9F0, #FF9900, or rgb(255,51,153)) into an array with 3 elements for red, green, and blue. Also handles rgba() values (splits into array of 4 elements of course)
+             * @param {(string|number)} v The value the should be parsed which could be a string like #9F0 or rgb(255,102,51) or rgba(255,0,0,0.5) or it could be a number like 0xFF00CC or even a named color like red, blue, purple, etc.
+             * @return {Array.<number>} An array containing red, green, and blue (and optionally alpha) in that order.
+             */
+            _parseColor = function(v) {
+                var c1, c2, c3, h, s, l;
+                if (!v || v === "") {
+                    return _colorLookup.black;
+                }
+                if (typeof(v) === "number") {
+                    return [v >> 16, (v >> 8) & 255, v & 255];
+                }
+                if (v.charAt(v.length - 1) === ",") { //sometimes a trailing commma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)" - in this example "blue," has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.
+                    v = v.substr(0, v.length - 1);
+                }
+                if (_colorLookup[v]) {
+                    return _colorLookup[v];
+                }
+                if (v.charAt(0) === "#") {
+                    if (v.length === 4) { //for shorthand like #9F0
+                        c1 = v.charAt(1),
+                        c2 = v.charAt(2),
+                        c3 = v.charAt(3);
+                        v = "#" + c1 + c1 + c2 + c2 + c3 + c3;
+                    }
+                    v = parseInt(v.substr(1), 16);
+                    return [v >> 16, (v >> 8) & 255, v & 255];
+                }
+                if (v.substr(0, 3) === "hsl") {
+                    v = v.match(_numExp);
+                    h = (Number(v[0]) % 360) / 360;
+                    s = Number(v[1]) / 100;
+                    l = Number(v[2]) / 100;
+                    c2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s;
+                    c1 = l * 2 - c2;
+                    if (v.length > 3) {
+                        v[3] = Number(v[3]);
+                    }
+                    v[0] = _hue(h + 1 / 3, c1, c2);
+                    v[1] = _hue(h, c1, c2);
+                    v[2] = _hue(h - 1 / 3, c1, c2);
+                    return v;
+                }
+                v = v.match(_numExp) || _colorLookup.transparent;
+                v[0] = Number(v[0]);
+                v[1] = Number(v[1]);
+                v[2] = Number(v[2]);
+                if (v.length > 3) {
+                    v[3] = Number(v[3]);
+                }
+                return v;
+            },
+            _colorExp = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b"; //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.
+
+        for (p in _colorLookup) {
+            _colorExp += "|" + p + "\\b";
+        }
+        _colorExp = new RegExp(_colorExp+")", "gi");
+
+        /**
+         * @private Returns a formatter function that handles taking a string (or number in some cases) and returning a consistently formatted one in terms of delimiters, quantity of values, etc. For example, we may get boxShadow values defined as "0px red" or "0px 0px 10px rgb(255,0,0)" or "0px 0px 20px 20px #F00" and we need to ensure that what we get back is described with 4 numbers and a color. This allows us to feed it into the _parseComplex() method and split the values up appropriately. The neat thing about this _getFormatter() function is that the dflt defines a pattern as well as a default, so for example, _getFormatter("0px 0px 0px 0px #777", true) not only sets the default as 0px for all distances and #777 for the color, but also sets the pattern such that 4 numbers and a color will always get returned.
+         * @param {!string} dflt The default value and pattern to follow. So "0px 0px 0px 0px #777" will ensure that 4 numbers and a color will always get returned.
+         * @param {boolean=} clr If true, the values should be searched for color-related data. For example, boxShadow values typically contain a color whereas borderRadius don't.
+         * @param {boolean=} collapsible If true, the value is a top/left/right/bottom style one that acts like margin or padding, where if only one value is received, it's used for all 4; if 2 are received, the first is duplicated for 3rd (bottom) and the 2nd is duplicated for the 4th spot (left), etc.
+         * @return {Function} formatter function
+         */
+        var _getFormatter = function(dflt, clr, collapsible, multi) {
+                if (dflt == null) {
+                    return function(v) {return v;};
+                }
+                var dColor = clr ? (dflt.match(_colorExp) || [""])[0] : "",
+                    dVals = dflt.split(dColor).join("").match(_valuesExp) || [],
+                    pfx = dflt.substr(0, dflt.indexOf(dVals[0])),
+                    sfx = (dflt.charAt(dflt.length - 1) === ")") ? ")" : "",
+                    delim = (dflt.indexOf(" ") !== -1) ? " " : ",",
+                    numVals = dVals.length,
+                    dSfx = (numVals > 0) ? dVals[0].replace(_numExp, "") : "",
+                    formatter;
+                if (!numVals) {
+                    return function(v) {return v;};
+                }
+                if (clr) {
+                    formatter = function(v) {
+                        var color, vals, i, a;
+                        if (typeof(v) === "number") {
+                            v += dSfx;
+                        } else if (multi && _commasOutsideParenExp.test(v)) {
+                            a = v.replace(_commasOutsideParenExp, "|").split("|");
+                            for (i = 0; i < a.length; i++) {
+                                a[i] = formatter(a[i]);
+                            }
+                            return a.join(",");
+                        }
+                        color = (v.match(_colorExp) || [dColor])[0];
+                        vals = v.split(color).join("").match(_valuesExp) || [];
+                        i = vals.length;
+                        if (numVals > i--) {
+                            while (++i < numVals) {
+                                vals[i] = collapsible ? vals[(((i - 1) / 2) | 0)] : dVals[i];
+                            }
+                        }
+                        return pfx + vals.join(delim) + delim + color + sfx + (v.indexOf("inset") !== -1 ? " inset" : "");
+                    };
+                    return formatter;
+
+                }
+                formatter = function(v) {
+                    var vals, a, i;
+                    if (typeof(v) === "number") {
+                        v += dSfx;
+                    } else if (multi && _commasOutsideParenExp.test(v)) {
+                        a = v.replace(_commasOutsideParenExp, "|").split("|");
+                        for (i = 0; i < a.length; i++) {
+                            a[i] = formatter(a[i]);
+                        }
+                        return a.join(",");
+                    }
+                    vals = v.match(_valuesExp) || [];
+                    i = vals.length;
+                    if (numVals > i--) {
+                        while (++i < numVals) {
+                            vals[i] = collapsible ? vals[(((i - 1) / 2) | 0)] : dVals[i];
+                        }
+                    }
+                    return pfx + vals.join(delim) + sfx;
+                };
+                return formatter;
+            },
+
+            /**
+             * @private returns a formatter function that's used for edge-related values like marginTop, marginLeft, paddingBottom, paddingRight, etc. Just pass a comma-delimited list of property names related to the edges.
+             * @param {!string} props a comma-delimited list of property names in order from top to left, like "marginTop,marginRight,marginBottom,marginLeft"
+             * @return {Function} a formatter function
+             */
+            _getEdgeParser = function(props) {
+                props = props.split(",");
+                return function(t, e, p, cssp, pt, plugin, vars) {
+                    var a = (e + "").split(" "),
+                        i;
+                    vars = {};
+                    for (i = 0; i < 4; i++) {
+                        vars[props[i]] = a[i] = a[i] || a[(((i - 1) / 2) >> 0)];
+                    }
+                    return cssp.parse(t, vars, pt, plugin);
+                };
+            },
+
+            // @private used when other plugins must tween values first, like BezierPlugin or ThrowPropsPlugin, etc. That plugin's setRatio() gets called first so that the values are updated, and then we loop through the MiniPropTweens  which handle copying the values into their appropriate slots so that they can then be applied correctly in the main CSSPlugin setRatio() method. Remember, we typically create a proxy object that has a bunch of uniquely-named properties that we feed to the sub-plugin and it does its magic normally, and then we must interpret those values and apply them to the css because often numbers must get combined/concatenated, suffixes added, etc. to work with css, like boxShadow could have 4 values plus a color.
+            _setPluginRatio = _internals._setPluginRatio = function(v) {
+                this.plugin.setRatio(v);
+                var d = this.data,
+                    proxy = d.proxy,
+                    mpt = d.firstMPT,
+                    min = 0.000001,
+                    val, pt, i, str;
+                while (mpt) {
+                    val = proxy[mpt.v];
+                    if (mpt.r) {
+                        val = Math.round(val);
+                    } else if (val < min && val > -min) {
+                        val = 0;
+                    }
+                    mpt.t[mpt.p] = val;
+                    mpt = mpt._next;
+                }
+                if (d.autoRotate) {
+                    d.autoRotate.rotation = proxy.rotation;
+                }
+                //at the end, we must set the CSSPropTween's "e" (end) value dynamically here because that's what is used in the final setRatio() method.
+                if (v === 1) {
+                    mpt = d.firstMPT;
+                    while (mpt) {
+                        pt = mpt.t;
+                        if (!pt.type) {
+                            pt.e = pt.s + pt.xs0;
+                        } else if (pt.type === 1) {
+                            str = pt.xs0 + pt.s + pt.xs1;
+                            for (i = 1; i < pt.l; i++) {
+                                str += pt["xn"+i] + pt["xs"+(i+1)];
+                            }
+                            pt.e = str;
+                        }
+                        mpt = mpt._next;
+                    }
+                }
+            },
+
+            /**
+             * @private @constructor Used by a few SpecialProps to hold important values for proxies. For example, _parseToProxy() creates a MiniPropTween instance for each property that must get tweened on the proxy, and we record the original property name as well as the unique one we create for the proxy, plus whether or not the value needs to be rounded plus the original value.
+             * @param {!Object} t target object whose property we're tweening (often a CSSPropTween)
+             * @param {!string} p property name
+             * @param {(number|string|object)} v value
+             * @param {MiniPropTween=} next next MiniPropTween in the linked list
+             * @param {boolean=} r if true, the tweened value should be rounded to the nearest integer
+             */
+            MiniPropTween = function(t, p, v, next, r) {
+                this.t = t;
+                this.p = p;
+                this.v = v;
+                this.r = r;
+                if (next) {
+                    next._prev = this;
+                    this._next = next;
+                }
+            },
+
+            /**
+             * @private Most other plugins (like BezierPlugin and ThrowPropsPlugin and others) can only tween numeric values, but CSSPlugin must accommodate special values that have a bunch of extra data (like a suffix or strings between numeric values, etc.). For example, boxShadow has values like "10px 10px 20px 30px rgb(255,0,0)" which would utterly confuse other plugins. This method allows us to split that data apart and grab only the numeric data and attach it to uniquely-named properties of a generic proxy object ({}) so that we can feed that to virtually any plugin to have the numbers tweened. However, we must also keep track of which properties from the proxy go with which CSSPropTween values and instances. So we create a linked list of MiniPropTweens. Each one records a target (the original CSSPropTween), property (like "s" or "xn1" or "xn2") that we're tweening and the unique property name that was used for the proxy (like "boxShadow_xn1" and "boxShadow_xn2") and whether or not they need to be rounded. That way, in the _setPluginRatio() method we can simply copy the values over from the proxy to the CSSPropTween instance(s). Then, when the main CSSPlugin setRatio() method runs and applies the CSSPropTween values accordingly, they're updated nicely. So the external plugin tweens the numbers, _setPluginRatio() copies them over, and setRatio() acts normally, applying css-specific values to the element.
+             * This method returns an object that has the following properties:
+             *  - proxy: a generic object containing the starting values for all the properties that will be tweened by the external plugin.  This is what we feed to the external _onInitTween() as the target
+             *  - end: a generic object containing the ending values for all the properties that will be tweened by the external plugin. This is what we feed to the external plugin's _onInitTween() as the destination values
+             *  - firstMPT: the first MiniPropTween in the linked list
+             *  - pt: the first CSSPropTween in the linked list that was created when parsing. If shallow is true, this linked list will NOT attach to the one passed into the _parseToProxy() as the "pt" (4th) parameter.
+             * @param {!Object} t target object to be tweened
+             * @param {!(Object|string)} vars the object containing the information about the tweening values (typically the end/destination values) that should be parsed
+             * @param {!CSSPlugin} cssp The CSSPlugin instance
+             * @param {CSSPropTween=} pt the next CSSPropTween in the linked list
+             * @param {TweenPlugin=} plugin the external TweenPlugin instance that will be handling tweening the numeric values
+             * @param {boolean=} shallow if true, the resulting linked list from the parse will NOT be attached to the CSSPropTween that was passed in as the "pt" (4th) parameter.
+             * @return An object containing the following properties: proxy, end, firstMPT, and pt (see above for descriptions)
+             */
+            _parseToProxy = _internals._parseToProxy = function(t, vars, cssp, pt, plugin, shallow) {
+                var bpt = pt,
+                    start = {},
+                    end = {},
+                    transform = cssp._transform,
+                    oldForce = _forcePT,
+                    i, p, xp, mpt, firstPT;
+                cssp._transform = null;
+                _forcePT = vars;
+                pt = firstPT = cssp.parse(t, vars, pt, plugin);
+                _forcePT = oldForce;
+                //break off from the linked list so the new ones are isolated.
+                if (shallow) {
+                    cssp._transform = transform;
+                    if (bpt) {
+                        bpt._prev = null;
+                        if (bpt._prev) {
+                            bpt._prev._next = null;
+                        }
+                    }
+                }
+                while (pt && pt !== bpt) {
+                    if (pt.type <= 1) {
+                        p = pt.p;
+                        end[p] = pt.s + pt.c;
+                        start[p] = pt.s;
+                        if (!shallow) {
+                            mpt = new MiniPropTween(pt, "s", p, mpt, pt.r);
+                            pt.c = 0;
+                        }
+                        if (pt.type === 1) {
+                            i = pt.l;
+                            while (--i > 0) {
+                                xp = "xn" + i;
+                                p = pt.p + "_" + xp;
+                                end[p] = pt.data[xp];
+                                start[p] = pt[xp];
+                                if (!shallow) {
+                                    mpt = new MiniPropTween(pt, xp, p, mpt, pt.rxp[xp]);
+                                }
+                            }
+                        }
+                    }
+                    pt = pt._next;
+                }
+                return {proxy:start, end:end, firstMPT:mpt, pt:firstPT};
+            },
+
+
+
+            /**
+             * @constructor Each property that is tweened has at least one CSSPropTween associated with it. These instances store important information like the target, property, starting value, amount of change, etc. They can also optionally have a number of "extra" strings and numeric values named xs1, xn1, xs2, xn2, xs3, xn3, etc. where "s" indicates string and "n" indicates number. These can be pieced together in a complex-value tween (type:1) that has alternating types of data like a string, number, string, number, etc. For example, boxShadow could be "5px 5px 8px rgb(102, 102, 51)". In that value, there are 6 numbers that may need to tween and then pieced back together into a string again with spaces, suffixes, etc. xs0 is special in that it stores the suffix for standard (type:0) tweens, -OR- the first string (prefix) in a complex-value (type:1) CSSPropTween -OR- it can be the non-tweening value in a type:-1 CSSPropTween. We do this to conserve memory.
+             * CSSPropTweens have the following optional properties as well (not defined through the constructor):
+             *  - l: Length in terms of the number of extra properties that the CSSPropTween has (default: 0). For example, for a boxShadow we may need to tween 5 numbers in which case l would be 5; Keep in mind that the start/end values for the first number that's tweened are always stored in the s and c properties to conserve memory. All additional values thereafter are stored in xn1, xn2, etc.
+             *  - xfirst: The first instance of any sub-CSSPropTweens that are tweening properties of this instance. For example, we may split up a boxShadow tween so that there's a main CSSPropTween of type:1 that has various xs* and xn* values associated with the h-shadow, v-shadow, blur, color, etc. Then we spawn a CSSPropTween for each of those that has a higher priority and runs BEFORE the main CSSPropTween so that the values are all set by the time it needs to re-assemble them. The xfirst gives us an easy way to identify the first one in that chain which typically ends at the main one (because they're all prepende to the linked list)
+             *  - plugin: The TweenPlugin instance that will handle the tweening of any complex values. For example, sometimes we don't want to use normal subtweens (like xfirst refers to) to tween the values - we might want ThrowPropsPlugin or BezierPlugin some other plugin to do the actual tweening, so we create a plugin instance and store a reference here. We need this reference so that if we get a request to round values or disable a tween, we can pass along that request.
+             *  - data: Arbitrary data that needs to be stored with the CSSPropTween. Typically if we're going to have a plugin handle the tweening of a complex-value tween, we create a generic object that stores the END values that we're tweening to and the CSSPropTween's xs1, xs2, etc. have the starting values. We store that object as data. That way, we can simply pass that object to the plugin and use the CSSPropTween as the target.
+             *  - setRatio: Only used for type:2 tweens that require custom functionality. In this case, we call the CSSPropTween's setRatio() method and pass the ratio each time the tween updates. This isn't quite as efficient as doing things directly in the CSSPlugin's setRatio() method, but it's very convenient and flexible.
+             * @param {!Object} t Target object whose property will be tweened. Often a DOM element, but not always. It could be anything.
+             * @param {string} p Property to tween (name). For example, to tween element.width, p would be "width".
+             * @param {number} s Starting numeric value
+             * @param {number} c Change in numeric value over the course of the entire tween. For example, if element.width starts at 5 and should end at 100, c would be 95.
+             * @param {CSSPropTween=} next The next CSSPropTween in the linked list. If one is defined, we will define its _prev as the new instance, and the new instance's _next will be pointed at it.
+             * @param {number=} type The type of CSSPropTween where -1 = a non-tweening value, 0 = a standard simple tween, 1 = a complex value (like one that has multiple numbers in a comma- or space-delimited string like border:"1px solid red"), and 2 = one that uses a custom setRatio function that does all of the work of applying the values on each update.
+             * @param {string=} n Name of the property that should be used for overwriting purposes which is typically the same as p but not always. For example, we may need to create a subtween for the 2nd part of a "clip:rect(...)" tween in which case "p" might be xs1 but "n" is still "clip"
+             * @param {boolean=} r If true, the value(s) should be rounded
+             * @param {number=} pr Priority in the linked list order. Higher priority CSSPropTweens will be updated before lower priority ones. The default priority is 0.
+             * @param {string=} b Beginning value. We store this to ensure that it is EXACTLY what it was when the tween began without any risk of interpretation issues.
+             * @param {string=} e Ending value. We store this to ensure that it is EXACTLY what the user defined at the end of the tween without any risk of interpretation issues.
+             */
+            CSSPropTween = _internals.CSSPropTween = function(t, p, s, c, next, type, n, r, pr, b, e) {
+                this.t = t; //target
+                this.p = p; //property
+                this.s = s; //starting value
+                this.c = c; //change value
+                this.n = n || p; //name that this CSSPropTween should be associated to (usually the same as p, but not always - n is what overwriting looks at)
+                if (!(t instanceof CSSPropTween)) {
+                    _overwriteProps.push(this.n);
+                }
+                this.r = r; //round (boolean)
+                this.type = type || 0; //0 = normal tween, -1 = non-tweening (in which case xs0 will be applied to the target's property, like tp.t[tp.p] = tp.xs0), 1 = complex-value SpecialProp, 2 = custom setRatio() that does all the work
+                if (pr) {
+                    this.pr = pr;
+                    _hasPriority = true;
+                }
+                this.b = (b === undefined) ? s : b;
+                this.e = (e === undefined) ? s + c : e;
+                if (next) {
+                    this._next = next;
+                    next._prev = this;
+                }
+            },
+
+            /**
+             * Takes a target, the beginning value and ending value (as strings) and parses them into a CSSPropTween (possibly with child CSSPropTweens) that accommodates multiple numbers, colors, comma-delimited values, etc. For example:
+             * sp.parseComplex(element, "boxShadow", "5px 10px 20px rgb(255,102,51)", "0px 0px 0px red", true, "0px 0px 0px rgb(0,0,0,0)", pt);
+             * It will walk through the beginning and ending values (which should be in the same format with the same number and type of values) and figure out which parts are numbers, what strings separate the numeric/tweenable values, and then create the CSSPropTweens accordingly. If a plugin is defined, no child CSSPropTweens will be created. Instead, the ending values will be stored in the "data" property of the returned CSSPropTween like: {s:-5, xn1:-10, xn2:-20, xn3:255, xn4:0, xn5:0} so that it can be fed to any other plugin and it'll be plain numeric tweens but the recomposition of the complex value will be handled inside CSSPlugin's setRatio().
+             * If a setRatio is defined, the type of the CSSPropTween will be set to 2 and recomposition of the values will be the responsibility of that method.
+             *
+             * @param {!Object} t Target whose property will be tweened
+             * @param {!string} p Property that will be tweened (its name, like "left" or "backgroundColor" or "boxShadow")
+             * @param {string} b Beginning value
+             * @param {string} e Ending value
+             * @param {boolean} clrs If true, the value could contain a color value like "rgb(255,0,0)" or "#F00" or "red". The default is false, so no colors will be recognized (a performance optimization)
+             * @param {(string|number|Object)} dflt The default beginning value that should be used if no valid beginning value is defined or if the number of values inside the complex beginning and ending values don't match
+             * @param {?CSSPropTween} pt CSSPropTween instance that is the current head of the linked list (we'll prepend to this).
+             * @param {number=} pr Priority in the linked list order. Higher priority properties will be updated before lower priority ones. The default priority is 0.
+             * @param {TweenPlugin=} plugin If a plugin should handle the tweening of extra properties, pass the plugin instance here. If one is defined, then NO subtweens will be created for any extra properties (the properties will be created - just not additional CSSPropTween instances to tween them) because the plugin is expected to do so. However, the end values WILL be populated in the "data" property, like {s:100, xn1:50, xn2:300}
+             * @param {function(number)=} setRatio If values should be set in a custom function instead of being pieced together in a type:1 (complex-value) CSSPropTween, define that custom function here.
+             * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parseComplex() call.
+             */
+            _parseComplex = CSSPlugin.parseComplex = function(t, p, b, e, clrs, dflt, pt, pr, plugin, setRatio) {
+                //DEBUG: _log("parseComplex: "+p+", b: "+b+", e: "+e);
+                b = b || dflt || "";
+                pt = new CSSPropTween(t, p, 0, 0, pt, (setRatio ? 2 : 1), null, false, pr, b, e);
+                e += ""; //ensures it's a string
+                var ba = b.split(", ").join(",").split(" "), //beginning array
+                    ea = e.split(", ").join(",").split(" "), //ending array
+                    l = ba.length,
+                    autoRound = (_autoRound !== false),
+                    i, xi, ni, bv, ev, bnums, enums, bn, rgba, temp, cv, str;
+                if (e.indexOf(",") !== -1 || b.indexOf(",") !== -1) {
+                    ba = ba.join(" ").replace(_commasOutsideParenExp, ", ").split(" ");
+                    ea = ea.join(" ").replace(_commasOutsideParenExp, ", ").split(" ");
+                    l = ba.length;
+                }
+                if (l !== ea.length) {
+                    //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                    ba = (dflt || "").split(" ");
+                    l = ba.length;
+                }
+                pt.plugin = plugin;
+                pt.setRatio = setRatio;
+                for (i = 0; i < l; i++) {
+                    bv = ba[i];
+                    ev = ea[i];
+                    bn = parseFloat(bv);
+
+                    //if the value begins with a number (most common). It's fine if it has a suffix like px
+                    if (bn || bn === 0) {
+                        pt.appendXtra("", bn, _parseChange(ev, bn), ev.replace(_relNumExp, ""), (autoRound && ev.indexOf("px") !== -1), true);
+
+                    //if the value is a color
+                    } else if (clrs && (bv.charAt(0) === "#" || _colorLookup[bv] || _rgbhslExp.test(bv))) {
+                        str = ev.charAt(ev.length - 1) === "," ? ")," : ")"; //if there's a comma at the end, retain it.
+                        bv = _parseColor(bv);
+                        ev = _parseColor(ev);
+                        rgba = (bv.length + ev.length > 6);
+                        if (rgba && !_supportsOpacity && ev[3] === 0) { //older versions of IE don't support rgba(), so if the destination alpha is 0, just use "transparent" for the end color
+                            pt["xs" + pt.l] += pt.l ? " transparent" : "transparent";
+                            pt.e = pt.e.split(ea[i]).join("transparent");
+                        } else {
+                            if (!_supportsOpacity) { //old versions of IE don't support rgba().
+                                rgba = false;
+                            }
+                            pt.appendXtra((rgba ? "rgba(" : "rgb("), bv[0], ev[0] - bv[0], ",", true, true)
+                                .appendXtra("", bv[1], ev[1] - bv[1], ",", true)
+                                .appendXtra("", bv[2], ev[2] - bv[2], (rgba ? "," : str), true);
+                            if (rgba) {
+                                bv = (bv.length < 4) ? 1 : bv[3];
+                                pt.appendXtra("", bv, ((ev.length < 4) ? 1 : ev[3]) - bv, str, false);
+                            }
+                        }
+
+                    } else {
+                        bnums = bv.match(_numExp); //gets each group of numbers in the beginning value string and drops them into an array
+
+                        //if no number is found, treat it as a non-tweening value and just append the string to the current xs.
+                        if (!bnums) {
+                            pt["xs" + pt.l] += pt.l ? " " + bv : bv;
+
+                        //loop through all the numbers that are found and construct the extra values on the pt.
+                        } else {
+                            enums = ev.match(_relNumExp); //get each group of numbers in the end value string and drop them into an array. We allow relative values too, like +=50 or -=.5
+                            if (!enums || enums.length !== bnums.length) {
+                                //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                                return pt;
+                            }
+                            ni = 0;
+                            for (xi = 0; xi < bnums.length; xi++) {
+                                cv = bnums[xi];
+                                temp = bv.indexOf(cv, ni);
+                                pt.appendXtra(bv.substr(ni, temp - ni), Number(cv), _parseChange(enums[xi], cv), "", (autoRound && bv.substr(temp + cv.length, 2) === "px"), (xi === 0));
+                                ni = temp + cv.length;
+                            }
+                            pt["xs" + pt.l] += bv.substr(ni);
+                        }
+                    }
+                }
+                //if there are relative values ("+=" or "-=" prefix), we need to adjust the ending value to eliminate the prefixes and combine the values properly.
+                if (e.indexOf("=") !== -1) if (pt.data) {
+                    str = pt.xs0 + pt.data.s;
+                    for (i = 1; i < pt.l; i++) {
+                        str += pt["xs" + i] + pt.data["xn" + i];
+                    }
+                    pt.e = str + pt["xs" + i];
+                }
+                if (!pt.l) {
+                    pt.type = -1;
+                    pt.xs0 = pt.e;
+                }
+                return pt.xfirst || pt;
+            },
+            i = 9;
+
+
+        p = CSSPropTween.prototype;
+        p.l = p.pr = 0; //length (number of extra properties like xn1, xn2, xn3, etc.
+        while (--i > 0) {
+            p["xn" + i] = 0;
+            p["xs" + i] = "";
+        }
+        p.xs0 = "";
+        p._next = p._prev = p.xfirst = p.data = p.plugin = p.setRatio = p.rxp = null;
+
+
+        /**
+         * Appends and extra tweening value to a CSSPropTween and automatically manages any prefix and suffix strings. The first extra value is stored in the s and c of the main CSSPropTween instance, but thereafter any extras are stored in the xn1, xn2, xn3, etc. The prefixes and suffixes are stored in the xs0, xs1, xs2, etc. properties. For example, if I walk through a clip value like "rect(10px, 5px, 0px, 20px)", the values would be stored like this:
+         * xs0:"rect(", s:10, xs1:"px, ", xn1:5, xs2:"px, ", xn2:0, xs3:"px, ", xn3:20, xn4:"px)"
+         * And they'd all get joined together when the CSSPlugin renders (in the setRatio() method).
+         * @param {string=} pfx Prefix (if any)
+         * @param {!number} s Starting value
+         * @param {!number} c Change in numeric value over the course of the entire tween. For example, if the start is 5 and the end is 100, the change would be 95.
+         * @param {string=} sfx Suffix (if any)
+         * @param {boolean=} r Round (if true).
+         * @param {boolean=} pad If true, this extra value should be separated by the previous one by a space. If there is no previous extra and pad is true, it will automatically drop the space.
+         * @return {CSSPropTween} returns itself so that multiple methods can be chained together.
+         */
+        p.appendXtra = function(pfx, s, c, sfx, r, pad) {
+            var pt = this,
+                l = pt.l;
+            pt["xs" + l] += (pad && l) ? " " + pfx : pfx || "";
+            if (!c) if (l !== 0 && !pt.plugin) { //typically we'll combine non-changing values right into the xs to optimize performance, but we don't combine them when there's a plugin that will be tweening the values because it may depend on the values being split apart, like for a bezier, if a value doesn't change between the first and second iteration but then it does on the 3rd, we'll run into trouble because there's no xn slot for that value!
+                pt["xs" + l] += s + (sfx || "");
+                return pt;
+            }
+            pt.l++;
+            pt.type = pt.setRatio ? 2 : 1;
+            pt["xs" + pt.l] = sfx || "";
+            if (l > 0) {
+                pt.data["xn" + l] = s + c;
+                pt.rxp["xn" + l] = r; //round extra property (we need to tap into this in the _parseToProxy() method)
+                pt["xn" + l] = s;
+                if (!pt.plugin) {
+                    pt.xfirst = new CSSPropTween(pt, "xn" + l, s, c, pt.xfirst || pt, 0, pt.n, r, pt.pr);
+                    pt.xfirst.xs0 = 0; //just to ensure that the property stays numeric which helps modern browsers speed up processing. Remember, in the setRatio() method, we do pt.t[pt.p] = val + pt.xs0 so if pt.xs0 is "" (the default), it'll cast the end value as a string. When a property is a number sometimes and a string sometimes, it prevents the compiler from locking in the data type, slowing things down slightly.
+                }
+                return pt;
+            }
+            pt.data = {s:s + c};
+            pt.rxp = {};
+            pt.s = s;
+            pt.c = c;
+            pt.r = r;
+            return pt;
+        };
+
+        /**
+         * @constructor A SpecialProp is basically a css property that needs to be treated in a non-standard way, like if it may contain a complex value like boxShadow:"5px 10px 15px rgb(255, 102, 51)" or if it is associated with another plugin like ThrowPropsPlugin or BezierPlugin. Every SpecialProp is associated with a particular property name like "boxShadow" or "throwProps" or "bezier" and it will intercept those values in the vars object that's passed to the CSSPlugin and handle them accordingly.
+         * @param {!string} p Property name (like "boxShadow" or "throwProps")
+         * @param {Object=} options An object containing any of the following configuration options:
+         *                      - defaultValue: the default value
+         *                      - parser: A function that should be called when the associated property name is found in the vars. This function should return a CSSPropTween instance and it should ensure that it is properly inserted into the linked list. It will receive 4 paramters: 1) The target, 2) The value defined in the vars, 3) The CSSPlugin instance (whose _firstPT should be used for the linked list), and 4) A computed style object if one was calculated (this is a speed optimization that allows retrieval of starting values quicker)
+         *                      - formatter: a function that formats any value received for this special property (for example, boxShadow could take "5px 5px red" and format it to "5px 5px 0px 0px red" so that both the beginning and ending values have a common order and quantity of values.)
+         *                      - prefix: if true, we'll determine whether or not this property requires a vendor prefix (like Webkit or Moz or ms or O)
+         *                      - color: set this to true if the value for this SpecialProp may contain color-related values like rgb(), rgba(), etc.
+         *                      - priority: priority in the linked list order. Higher priority SpecialProps will be updated before lower priority ones. The default priority is 0.
+         *                      - multi: if true, the formatter should accommodate a comma-delimited list of values, like boxShadow could have multiple boxShadows listed out.
+         *                      - collapsible: if true, the formatter should treat the value like it's a top/right/bottom/left value that could be collapsed, like "5px" would apply to all, "5px, 10px" would use 5px for top/bottom and 10px for right/left, etc.
+         *                      - keyword: a special keyword that can [optionally] be found inside the value (like "inset" for boxShadow). This allows us to validate beginning/ending values to make sure they match (if the keyword is found in one, it'll be added to the other for consistency by default).
+         */
+        var SpecialProp = function(p, options) {
+                options = options || {};
+                this.p = options.prefix ? _checkPropPrefix(p) || p : p;
+                _specialProps[p] = _specialProps[this.p] = this;
+                this.format = options.formatter || _getFormatter(options.defaultValue, options.color, options.collapsible, options.multi);
+                if (options.parser) {
+                    this.parse = options.parser;
+                }
+                this.clrs = options.color;
+                this.multi = options.multi;
+                this.keyword = options.keyword;
+                this.dflt = options.defaultValue;
+                this.pr = options.priority || 0;
+            },
+
+            //shortcut for creating a new SpecialProp that can accept multiple properties as a comma-delimited list (helps minification). dflt can be an array for multiple values (we don't do a comma-delimited list because the default value may contain commas, like rect(0px,0px,0px,0px)). We attach this method to the SpecialProp class/object instead of using a private _createSpecialProp() method so that we can tap into it externally if necessary, like from another plugin.
+            _registerComplexSpecialProp = _internals._registerComplexSpecialProp = function(p, options, defaults) {
+                if (typeof(options) !== "object") {
+                    options = {parser:defaults}; //to make backwards compatible with older versions of BezierPlugin and ThrowPropsPlugin
+                }
+                var a = p.split(","),
+                    d = options.defaultValue,
+                    i, temp;
+                defaults = defaults || [d];
+                for (i = 0; i < a.length; i++) {
+                    options.prefix = (i === 0 && options.prefix);
+                    options.defaultValue = defaults[i] || d;
+                    temp = new SpecialProp(a[i], options);
+                }
+            },
+
+            //creates a placeholder special prop for a plugin so that the property gets caught the first time a tween of it is attempted, and at that time it makes the plugin register itself, thus taking over for all future tweens of that property. This allows us to not mandate that things load in a particular order and it also allows us to log() an error that informs the user when they attempt to tween an external plugin-related property without loading its .js file.
+            _registerPluginProp = function(p) {
+                if (!_specialProps[p]) {
+                    var pluginName = p.charAt(0).toUpperCase() + p.substr(1) + "Plugin";
+                    _registerComplexSpecialProp(p, {parser:function(t, e, p, cssp, pt, plugin, vars) {
+                        var pluginClass = (window.GreenSockGlobals || window).com.greensock.plugins[pluginName];
+                        if (!pluginClass) {
+                            _log("Error: " + pluginName + " js file not loaded.");
+                            return pt;
+                        }
+                        pluginClass._cssRegister();
+                        return _specialProps[p].parse(t, e, p, cssp, pt, plugin, vars);
+                    }});
+                }
+            };
+
+
+        p = SpecialProp.prototype;
+
+        /**
+         * Alias for _parseComplex() that automatically plugs in certain values for this SpecialProp, like its property name, whether or not colors should be sensed, the default value, and priority. It also looks for any keyword that the SpecialProp defines (like "inset" for boxShadow) and ensures that the beginning and ending values have the same number of values for SpecialProps where multi is true (like boxShadow and textShadow can have a comma-delimited list)
+         * @param {!Object} t target element
+         * @param {(string|number|object)} b beginning value
+         * @param {(string|number|object)} e ending (destination) value
+         * @param {CSSPropTween=} pt next CSSPropTween in the linked list
+         * @param {TweenPlugin=} plugin If another plugin will be tweening the complex value, that TweenPlugin instance goes here.
+         * @param {function=} setRatio If a custom setRatio() method should be used to handle this complex value, that goes here.
+         * @return {CSSPropTween=} First CSSPropTween in the linked list
+         */
+        p.parseComplex = function(t, b, e, pt, plugin, setRatio) {
+            var kwd = this.keyword,
+                i, ba, ea, l, bi, ei;
+            //if this SpecialProp's value can contain a comma-delimited list of values (like boxShadow or textShadow), we must parse them in a special way, and look for a keyword (like "inset" for boxShadow) and ensure that the beginning and ending BOTH have it if the end defines it as such. We also must ensure that there are an equal number of values specified (we can't tween 1 boxShadow to 3 for example)
+            if (this.multi) if (_commasOutsideParenExp.test(e) || _commasOutsideParenExp.test(b)) {
+                ba = b.replace(_commasOutsideParenExp, "|").split("|");
+                ea = e.replace(_commasOutsideParenExp, "|").split("|");
+            } else if (kwd) {
+                ba = [b];
+                ea = [e];
+            }
+            if (ea) {
+                l = (ea.length > ba.length) ? ea.length : ba.length;
+                for (i = 0; i < l; i++) {
+                    b = ba[i] = ba[i] || this.dflt;
+                    e = ea[i] = ea[i] || this.dflt;
+                    if (kwd) {
+                        bi = b.indexOf(kwd);
+                        ei = e.indexOf(kwd);
+                        if (bi !== ei) {
+                            e = (ei === -1) ? ea : ba;
+                            e[i] += " " + kwd;
+                        }
+                    }
+                }
+                b = ba.join(", ");
+                e = ea.join(", ");
+            }
+            return _parseComplex(t, this.p, b, e, this.clrs, this.dflt, pt, this.pr, plugin, setRatio);
+        };
+
+        /**
+         * Accepts a target and end value and spits back a CSSPropTween that has been inserted into the CSSPlugin's linked list and conforms with all the conventions we use internally, like type:-1, 0, 1, or 2, setting up any extra property tweens, priority, etc. For example, if we have a boxShadow SpecialProp and call:
+         * this._firstPT = sp.parse(element, "5px 10px 20px rgb(2550,102,51)", "boxShadow", this);
+         * It should figure out the starting value of the element's boxShadow, compare it to the provided end value and create all the necessary CSSPropTweens of the appropriate types to tween the boxShadow. The CSSPropTween that gets spit back should already be inserted into the linked list (the 4th parameter is the current head, so prepend to that).
+         * @param {!Object} t Target object whose property is being tweened
+         * @param {Object} e End value as provided in the vars object (typically a string, but not always - like a throwProps would be an object).
+         * @param {!string} p Property name
+         * @param {!CSSPlugin} cssp The CSSPlugin instance that should be associated with this tween.
+         * @param {?CSSPropTween} pt The CSSPropTween that is the current head of the linked list (we'll prepend to it)
+         * @param {TweenPlugin=} plugin If a plugin will be used to tween the parsed value, this is the plugin instance.
+         * @param {Object=} vars Original vars object that contains the data for parsing.
+         * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parse() call.
+         */
+        p.parse = function(t, e, p, cssp, pt, plugin, vars) {
+            return this.parseComplex(t.style, this.format(_getStyle(t, this.p, _cs, false, this.dflt)), this.format(e), pt, plugin);
+        };
+
+        /**
+         * Registers a special property that should be intercepted from any "css" objects defined in tweens. This allows you to handle them however you want without CSSPlugin doing it for you. The 2nd parameter should be a function that accepts 3 parameters:
+         *  1) Target object whose property should be tweened (typically a DOM element)
+         *  2) The end/destination value (could be a string, number, object, or whatever you want)
+         *  3) The tween instance (you probably don't need to worry about this, but it can be useful for looking up information like the duration)
+         *
+         * Then, your function should return a function which will be called each time the tween gets rendered, passing a numeric "ratio" parameter to your function that indicates the change factor (usually between 0 and 1). For example:
+         *
+         * CSSPlugin.registerSpecialProp("myCustomProp", function(target, value, tween) {
+         *      var start = target.style.width;
+         *      return function(ratio) {
+         *              target.style.width = (start + value * ratio) + "px";
+         *              console.log("set width to " + target.style.width);
+         *          }
+         * }, 0);
+         *
+         * Then, when I do this tween, it will trigger my special property:
+         *
+         * TweenLite.to(element, 1, {css:{myCustomProp:100}});
+         *
+         * In the example, of course, we're just changing the width, but you can do anything you want.
+         *
+         * @param {!string} name Property name (or comma-delimited list of property names) that should be intercepted and handled by your function. For example, if I define "myCustomProp", then it would handle that portion of the following tween: TweenLite.to(element, 1, {css:{myCustomProp:100}})
+         * @param {!function(Object, Object, Object, string):function(number)} onInitTween The function that will be called when a tween of this special property is performed. The function will receive 4 parameters: 1) Target object that should be tweened, 2) Value that was passed to the tween, 3) The tween instance itself (rarely used), and 4) The property name that's being tweened. Your function should return a function that should be called on every update of the tween. That function will receive a single parameter that is a "change factor" value (typically between 0 and 1) indicating the amount of change as a ratio. You can use this to determine how to set the values appropriately in your function.
+         * @param {number=} priority Priority that helps the engine determine the order in which to set the properties (default: 0). Higher priority properties will be updated before lower priority ones.
+         */
+        CSSPlugin.registerSpecialProp = function(name, onInitTween, priority) {
+            _registerComplexSpecialProp(name, {parser:function(t, e, p, cssp, pt, plugin, vars) {
+                var rv = new CSSPropTween(t, p, 0, 0, pt, 2, p, false, priority);
+                rv.plugin = plugin;
+                rv.setRatio = onInitTween(t, e, cssp._tween, p);
+                return rv;
+            }, priority:priority});
+        };
+
+
+
+
+
+
+
+
+        //transform-related methods and properties
+        var _transformProps = ("scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective").split(","),
+            _transformProp = _checkPropPrefix("transform"), //the Javascript (camelCase) transform property, like msTransform, WebkitTransform, MozTransform, or OTransform.
+            _transformPropCSS = _prefixCSS + "transform",
+            _transformOriginProp = _checkPropPrefix("transformOrigin"),
+            _supports3D = (_checkPropPrefix("perspective") !== null),
+            Transform = _internals.Transform = function() {
+                this.skewY = 0;
+            },
+
+            /**
+             * Parses the transform values for an element, returning an object with x, y, z, scaleX, scaleY, scaleZ, rotation, rotationX, rotationY, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.
+             * @param {!Object} t target element
+             * @param {Object=} cs computed style object (optional)
+             * @param {boolean=} rec if true, the transform values will be recorded to the target element's _gsTransform object, like target._gsTransform = {x:0, y:0, z:0, scaleX:1...}
+             * @param {boolean=} parse if true, we'll ignore any _gsTransform values that already exist on the element, and force a reparsing of the css (calculated style)
+             * @return {object} object containing all of the transform properties/values like {x:0, y:0, z:0, scaleX:1...}
+             */
+            _getTransform = _internals.getTransform = function(t, cs, rec, parse) {
+                if (t._gsTransform && rec && !parse) {
+                    return t._gsTransform; //if the element already has a _gsTransform, use that. Note: some browsers don't accurately return the calculated style for the transform (particularly for SVG), so it's almost always safest to just use the values we've already applied rather than re-parsing things.
+                }
+                var tm = rec ? t._gsTransform || new Transform() : new Transform(),
+                    invX = (tm.scaleX < 0), //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.
+                    min = 0.00002,
+                    rnd = 100000,
+                    minAngle = 179.99,
+                    minPI = minAngle * _DEG2RAD,
+                    zOrigin = _supports3D ? parseFloat(_getStyle(t, _transformOriginProp, cs, false, "0 0 0").split(" ")[2]) || tm.zOrigin  || 0 : 0,
+                    s, m, i, n, dec, scaleX, scaleY, rotation, skewX, difX, difY, difR, difS;
+                if (_transformProp) {
+                    s = _getStyle(t, _transformPropCSS, cs, true);
+                } else if (t.currentStyle) {
+                    //for older versions of IE, we need to interpret the filter portion that is in the format: progid:DXImageTransform.Microsoft.Matrix(M11=6.123233995736766e-17, M12=-1, M21=1, M22=6.123233995736766e-17, sizingMethod='auto expand') Notice that we need to swap b and c compared to a normal matrix.
+                    s = t.currentStyle.filter.match(_ieGetMatrixExp);
+                    s = (s && s.length === 4) ? [s[0].substr(4), Number(s[2].substr(4)), Number(s[1].substr(4)), s[3].substr(4), (tm.x || 0), (tm.y || 0)].join(",") : "";
+                }
+                //split the matrix values out into an array (m for matrix)
+                m = (s || "").match(/(?:\-|\b)[\d\-\.e]+\b/gi) || [];
+                i = m.length;
+                while (--i > -1) {
+                    n = Number(m[i]);
+                    m[i] = (dec = n - (n |= 0)) ? ((dec * rnd + (dec < 0 ? -0.5 : 0.5)) | 0) / rnd + n : n; //convert strings to Numbers and round to 5 decimal places to avoid issues with tiny numbers. Roughly 20x faster than Number.toFixed(). We also must make sure to round before dividing so that values like 0.9999999999 become 1 to avoid glitches in browser rendering and interpretation of flipped/rotated 3D matrices. And don't just multiply the number by rnd, floor it, and then divide by rnd because the bitwise operations max out at a 32-bit signed integer, thus it could get clipped at a relatively low value (like 22,000.00000 for example).
+                }
+                if (m.length === 16) {
+
+                    //we'll only look at these position-related 6 variables first because if x/y/z all match, it's relatively safe to assume we don't need to re-parse everything which risks losing important rotational information (like rotationX:180 plus rotationY:180 would look the same as rotation:180 - there's no way to know for sure which direction was taken based solely on the matrix3d() values)
+                    var a13 = m[8], a23 = m[9], a33 = m[10],
+                        a14 = m[12], a24 = m[13], a34 = m[14];
+
+                    //we manually compensate for non-zero z component of transformOrigin to work around bugs in Safari
+                    if (tm.zOrigin) {
+                        a34 = -tm.zOrigin;
+                        a14 = a13*a34-m[12];
+                        a24 = a23*a34-m[13];
+                        a34 = a33*a34+tm.zOrigin-m[14];
+                    }
+
+                    //only parse from the matrix if we MUST because not only is it usually unnecessary due to the fact that we store the values in the _gsTransform object, but also because it's impossible to accurately interpret rotationX, rotationY, rotationZ, scaleX, and scaleY if all are applied, so it's much better to rely on what we store. However, we must parse the first time that an object is tweened. We also assume that if the position has changed, the user must have done some styling changes outside of CSSPlugin, thus we force a parse in that scenario.
+                    if (!rec || parse || tm.rotationX == null) {
+                        var a11 = m[0], a21 = m[1], a31 = m[2], a41 = m[3],
+                            a12 = m[4], a22 = m[5], a32 = m[6], a42 = m[7],
+                            a43 = m[11],
+                            angle = Math.atan2(a32, a33),
+                            xFlip = (angle < -minPI || angle > minPI),
+                            t1, t2, t3, cos, sin, yFlip, zFlip;
+                        tm.rotationX = angle * _RAD2DEG;
+                        //rotationX
+                        if (angle) {
+                            cos = Math.cos(-angle);
+                            sin = Math.sin(-angle);
+                            t1 = a12*cos+a13*sin;
+                            t2 = a22*cos+a23*sin;
+                            t3 = a32*cos+a33*sin;
+                            a13 = a12*-sin+a13*cos;
+                            a23 = a22*-sin+a23*cos;
+                            a33 = a32*-sin+a33*cos;
+                            a43 = a42*-sin+a43*cos;
+                            a12 = t1;
+                            a22 = t2;
+                            a32 = t3;
+                        }
+                        //rotationY
+                        angle = Math.atan2(a13, a11);
+                        tm.rotationY = angle * _RAD2DEG;
+                        if (angle) {
+                            yFlip = (angle < -minPI || angle > minPI);
+                            cos = Math.cos(-angle);
+                            sin = Math.sin(-angle);
+                            t1 = a11*cos-a13*sin;
+                            t2 = a21*cos-a23*sin;
+                            t3 = a31*cos-a33*sin;
+                            a23 = a21*sin+a23*cos;
+                            a33 = a31*sin+a33*cos;
+                            a43 = a41*sin+a43*cos;
+                            a11 = t1;
+                            a21 = t2;
+                            a31 = t3;
+                        }
+                        //rotationZ
+                        angle = Math.atan2(a21, a22);
+                        tm.rotation = angle * _RAD2DEG;
+                        if (angle) {
+                            zFlip = (angle < -minPI || angle > minPI);
+                            cos = Math.cos(-angle);
+                            sin = Math.sin(-angle);
+                            a11 = a11*cos+a12*sin;
+                            t2 = a21*cos+a22*sin;
+                            a22 = a21*-sin+a22*cos;
+                            a32 = a31*-sin+a32*cos;
+                            a21 = t2;
+                        }
+
+                        if (zFlip && xFlip) {
+                            tm.rotation = tm.rotationX = 0;
+                        } else if (zFlip && yFlip) {
+                            tm.rotation = tm.rotationY = 0;
+                        } else if (yFlip && xFlip) {
+                            tm.rotationY = tm.rotationX = 0;
+                        }
+
+                        tm.scaleX = ((Math.sqrt(a11 * a11 + a21 * a21) * rnd + 0.5) | 0) / rnd;
+                        tm.scaleY = ((Math.sqrt(a22 * a22 + a23 * a23) * rnd + 0.5) | 0) / rnd;
+                        tm.scaleZ = ((Math.sqrt(a32 * a32 + a33 * a33) * rnd + 0.5) | 0) / rnd;
+                        tm.skewX = 0;
+                        tm.perspective = a43 ? 1 / ((a43 < 0) ? -a43 : a43) : 0;
+                        tm.x = a14;
+                        tm.y = a24;
+                        tm.z = a34;
+                    }
+
+                } else if ((!_supports3D || parse || !m.length || tm.x !== m[4] || tm.y !== m[5] || (!tm.rotationX && !tm.rotationY)) && !(tm.x !== undefined && _getStyle(t, "display", cs) === "none")) { //sometimes a 6-element matrix is returned even when we performed 3D transforms, like if rotationX and rotationY are 180. In cases like this, we still need to honor the 3D transforms. If we just rely on the 2D info, it could affect how the data is interpreted, like scaleY might get set to -1 or rotation could get offset by 180 degrees. For example, do a TweenLite.to(element, 1, {css:{rotationX:180, rotationY:180}}) and then later, TweenLite.to(element, 1, {css:{rotationX:0}}) and without this conditional logic in place, it'd jump to a state of being unrotated when the 2nd tween starts. Then again, we need to honor the fact that the user COULD alter the transforms outside of CSSPlugin, like by manually applying new css, so we try to sense that by looking at x and y because if those changed, we know the changes were made outside CSSPlugin and we force a reinterpretation of the matrix values. Also, in Webkit browsers, if the element's "display" is "none", its calculated style value will always return empty, so if we've already recorded the values in the _gsTransform object, we'll just rely on those.
+                    var k = (m.length >= 6),
+                        a = k ? m[0] : 1,
+                        b = m[1] || 0,
+                        c = m[2] || 0,
+                        d = k ? m[3] : 1;
+                    tm.x = m[4] || 0;
+                    tm.y = m[5] || 0;
+                    scaleX = Math.sqrt(a * a + b * b);
+                    scaleY = Math.sqrt(d * d + c * c);
+                    rotation = (a || b) ? Math.atan2(b, a) * _RAD2DEG : tm.rotation || 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
+                    skewX = (c || d) ? Math.atan2(c, d) * _RAD2DEG + rotation : tm.skewX || 0;
+                    difX = scaleX - Math.abs(tm.scaleX || 0);
+                    difY = scaleY - Math.abs(tm.scaleY || 0);
+                    if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
+                        if (invX) {
+                            scaleX *= -1;
+                            skewX += (rotation <= 0) ? 180 : -180;
+                            rotation += (rotation <= 0) ? 180 : -180;
+                        } else {
+                            scaleY *= -1;
+                            skewX += (skewX <= 0) ? 180 : -180;
+                        }
+                    }
+                    difR = (rotation - tm.rotation) % 180; //note: matching ranges would be very small (+/-0.0001) or very close to 180.
+                    difS = (skewX - tm.skewX) % 180;
+                    //if there's already a recorded _gsTransform in place for the target, we should leave those values in place unless we know things changed for sure (beyond a super small amount). This gets around ambiguous interpretations, like if scaleX and scaleY are both -1, the matrix would be the same as if the rotation was 180 with normal scaleX/scaleY. If the user tweened to particular values, those must be prioritized to ensure animation is consistent.
+                    if (tm.skewX === undefined || difX > min || difX < -min || difY > min || difY < -min || (difR > -minAngle && difR < minAngle && (difR * rnd) | 0 !== 0) || (difS > -minAngle && difS < minAngle && (difS * rnd) | 0 !== 0)) {
+                        tm.scaleX = scaleX;
+                        tm.scaleY = scaleY;
+                        tm.rotation = rotation;
+                        tm.skewX = skewX;
+                    }
+                    if (_supports3D) {
+                        tm.rotationX = tm.rotationY = tm.z = 0;
+                        tm.perspective = parseFloat(CSSPlugin.defaultTransformPerspective) || 0;
+                        tm.scaleZ = 1;
+                    }
+                }
+                tm.zOrigin = zOrigin;
+
+                //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 0 in these cases. The conditional logic here is faster than calling Math.abs(). Also, browsers tend to render a SLIGHTLY rotated object in a fuzzy way, so we need to snap to exactly 0 when appropriate.
+                for (i in tm) {
+                    if (tm[i] < min) if (tm[i] > -min) {
+                        tm[i] = 0;
+                    }
+                }
+                //DEBUG: _log("parsed rotation: "+(tm.rotationX)+", "+(tm.rotationY)+", "+(tm.rotation)+", scale: "+tm.scaleX+", "+tm.scaleY+", "+tm.scaleZ+", position: "+tm.x+", "+tm.y+", "+tm.z+", perspective: "+tm.perspective);
+                if (rec) {
+                    t._gsTransform = tm; //record to the object's _gsTransform which we use so that tweens can control individual properties independently (we need all the properties to accurately recompose the matrix in the setRatio() method)
+                }
+                return tm;
+            },
+
+            //for setting 2D transforms in IE6, IE7, and IE8 (must use a "filter" to emulate the behavior of modern day browser transforms)
+            _setIETransformRatio = function(v) {
+                var t = this.data, //refers to the element's _gsTransform object
+                    ang = -t.rotation * _DEG2RAD,
+                    skew = ang + t.skewX * _DEG2RAD,
+                    rnd = 100000,
+                    a = ((Math.cos(ang) * t.scaleX * rnd) | 0) / rnd,
+                    b = ((Math.sin(ang) * t.scaleX * rnd) | 0) / rnd,
+                    c = ((Math.sin(skew) * -t.scaleY * rnd) | 0) / rnd,
+                    d = ((Math.cos(skew) * t.scaleY * rnd) | 0) / rnd,
+                    style = this.t.style,
+                    cs = this.t.currentStyle,
+                    filters, val;
+                if (!cs) {
+                    return;
+                }
+                val = b; //just for swapping the variables an inverting them (reused "val" to avoid creating another variable in memory). IE's filter matrix uses a non-standard matrix configuration (angle goes the opposite way, and b and c are reversed and inverted)
+                b = -c;
+                c = -val;
+                filters = cs.filter;
+                style.filter = ""; //remove filters so that we can accurately measure offsetWidth/offsetHeight
+                var w = this.t.offsetWidth,
+                    h = this.t.offsetHeight,
+                    clip = (cs.position !== "absolute"),
+                    m = "progid:DXImageTransform.Microsoft.Matrix(M11=" + a + ", M12=" + b + ", M21=" + c + ", M22=" + d,
+                    ox = t.x,
+                    oy = t.y,
+                    dx, dy;
+
+                //if transformOrigin is being used, adjust the offset x and y
+                if (t.ox != null) {
+                    dx = ((t.oxp) ? w * t.ox * 0.01 : t.ox) - w / 2;
+                    dy = ((t.oyp) ? h * t.oy * 0.01 : t.oy) - h / 2;
+                    ox += dx - (dx * a + dy * b);
+                    oy += dy - (dx * c + dy * d);
+                }
+
+                if (!clip) {
+                    m += ", sizingMethod='auto expand')";
+                } else {
+                    dx = (w / 2);
+                    dy = (h / 2);
+                    //translate to ensure that transformations occur around the correct origin (default is center).
+                    m += ", Dx=" + (dx - (dx * a + dy * b) + ox) + ", Dy=" + (dy - (dx * c + dy * d) + oy) + ")";
+                }
+                if (filters.indexOf("DXImageTransform.Microsoft.Matrix(") !== -1) {
+                    style.filter = filters.replace(_ieSetMatrixExp, m);
+                } else {
+                    style.filter = m + " " + filters; //we must always put the transform/matrix FIRST (before alpha(opacity=xx)) to avoid an IE bug that slices part of the object when rotation is applied with alpha.
+                }
+
+                //at the end or beginning of the tween, if the matrix is normal (1, 0, 0, 1) and opacity is 100 (or doesn't exist), remove the filter to improve browser performance.
+                if (v === 0 || v === 1) if (a === 1) if (b === 0) if (c === 0) if (d === 1) if (!clip || m.indexOf("Dx=0, Dy=0") !== -1) if (!_opacityExp.test(filters) || parseFloat(RegExp.$1) === 100) if (filters.indexOf("gradient(" && filters.indexOf("Alpha")) === -1) {
+                    style.removeAttribute("filter");
+                }
+
+                //we must set the margins AFTER applying the filter in order to avoid some bugs in IE8 that could (in rare scenarios) cause them to be ignored intermittently (vibration).
+                if (!clip) {
+                    var mult = (_ieVers < 8) ? 1 : -1, //in Internet Explorer 7 and before, the box model is broken, causing the browser to treat the width/height of the actual rotated filtered image as the width/height of the box itself, but Microsoft corrected that in IE8. We must use a negative offset in IE8 on the right/bottom
+                        marg, prop, dif;
+                    dx = t.ieOffsetX || 0;
+                    dy = t.ieOffsetY || 0;
+                    t.ieOffsetX = Math.round((w - ((a < 0 ? -a : a) * w + (b < 0 ? -b : b) * h)) / 2 + ox);
+                    t.ieOffsetY = Math.round((h - ((d < 0 ? -d : d) * h + (c < 0 ? -c : c) * w)) / 2 + oy);
+                    for (i = 0; i < 4; i++) {
+                        prop = _margins[i];
+                        marg = cs[prop];
+                        //we need to get the current margin in case it is being tweened separately (we want to respect that tween's changes)
+                        val = (marg.indexOf("px") !== -1) ? parseFloat(marg) : _convertToPixels(this.t, prop, parseFloat(marg), marg.replace(_suffixExp, "")) || 0;
+                        if (val !== t[prop]) {
+                            dif = (i < 2) ? -t.ieOffsetX : -t.ieOffsetY; //if another tween is controlling a margin, we cannot only apply the difference in the ieOffsets, so we essentially zero-out the dx and dy here in that case. We record the margin(s) later so that we can keep comparing them, making this code very flexible.
+                        } else {
+                            dif = (i < 2) ? dx - t.ieOffsetX : dy - t.ieOffsetY;
+                        }
+                        style[prop] = (t[prop] = Math.round( val - dif * ((i === 0 || i === 2) ? 1 : mult) )) + "px";
+                    }
+                }
+            },
+
+            _set3DTransformRatio = _internals.set3DTransformRatio = function(v) {
+                var t = this.data, //refers to the element's _gsTransform object
+                    style = this.t.style,
+                    angle = t.rotation * _DEG2RAD,
+                    sx = t.scaleX,
+                    sy = t.scaleY,
+                    sz = t.scaleZ,
+                    perspective = t.perspective,
+                    a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43,
+                    zOrigin, rnd, cos, sin, t1, t2, t3, t4;
+                if (v === 1 || v === 0) if (t.force3D === "auto") if (!t.rotationY && !t.rotationX && sz === 1 && !perspective && !t.z) { //on the final render (which could be 0 for a from tween), if there are no 3D aspects, render in 2D to free up memory and improve performance especially on mobile devices
+                    _set2DTransformRatio.call(this, v);
+                    return;
+                }
+                if (_isFirefox) {
+                    var n = 0.0001;
+                    if (sx < n && sx > -n) { //Firefox has a bug (at least in v25) that causes it to render the transparent part of 32-bit PNG images as black when displayed inside an iframe and the 3D scale is very small and doesn't change sufficiently enough between renders (like if you use a Power4.easeInOut to scale from 0 to 1 where the beginning values only change a tiny amount to begin the tween before accelerating). In this case, we force the scale to be 0.00002 instead which is visually the same but works around the Firefox issue.
+                        sx = sz = 0.00002;
+                    }
+                    if (sy < n && sy > -n) {
+                        sy = sz = 0.00002;
+                    }
+                    if (perspective && !t.z && !t.rotationX && !t.rotationY) { //Firefox has a bug that causes elements to have an odd super-thin, broken/dotted black border on elements that have a perspective set but aren't utilizing 3D space (no rotationX, rotationY, or z).
+                        perspective = 0;
+                    }
+                }
+                if (angle || t.skewX) {
+                    cos = Math.cos(angle);
+                    sin = Math.sin(angle);
+                    a11 = cos;
+                    a21 = sin;
+                    if (t.skewX) {
+                        angle -= t.skewX * _DEG2RAD;
+                        cos = Math.cos(angle);
+                        sin = Math.sin(angle);
+                        if (t.skewType === "simple") { //by default, we compensate skewing on the other axis to make it look more natural, but you can set the skewType to "simple" to use the uncompensated skewing that CSS does
+                            t1 = Math.tan(t.skewX * _DEG2RAD);
+                            t1 = Math.sqrt(1 + t1 * t1);
+                            cos *= t1;
+                            sin *= t1;
+                        }
+                    }
+                    a12 = -sin;
+                    a22 = cos;
+
+                } else if (!t.rotationY && !t.rotationX && sz === 1 && !perspective) { //if we're only translating and/or 2D scaling, this is faster...
+                    style[_transformProp] = "translate3d(" + t.x + "px," + t.y + "px," + t.z +"px)" + ((sx !== 1 || sy !== 1) ? " scale(" + sx + "," + sy + ")" : "");
+                    return;
+                } else {
+                    a11 = a22 = 1;
+                    a12 = a21 = 0;
+                }
+                a33 = 1;
+                a13 = a14 = a23 = a24 = a31 = a32 = a34 = a41 = a42 = 0;
+                a43 = (perspective) ? -1 / perspective : 0;
+                zOrigin = t.zOrigin;
+                rnd = 100000;
+                angle = t.rotationY * _DEG2RAD;
+                if (angle) {
+                    cos = Math.cos(angle);
+                    sin = Math.sin(angle);
+                    a31 = a33*-sin;
+                    a41 = a43*-sin;
+                    a13 = a11*sin;
+                    a23 = a21*sin;
+                    a33 *= cos;
+                    a43 *= cos;
+                    a11 *= cos;
+                    a21 *= cos;
+                }
+                angle = t.rotationX * _DEG2RAD;
+                if (angle) {
+                    cos = Math.cos(angle);
+                    sin = Math.sin(angle);
+                    t1 = a12*cos+a13*sin;
+                    t2 = a22*cos+a23*sin;
+                    t3 = a32*cos+a33*sin;
+                    t4 = a42*cos+a43*sin;
+                    a13 = a12*-sin+a13*cos;
+                    a23 = a22*-sin+a23*cos;
+                    a33 = a32*-sin+a33*cos;
+                    a43 = a42*-sin+a43*cos;
+                    a12 = t1;
+                    a22 = t2;
+                    a32 = t3;
+                    a42 = t4;
+                }
+                if (sz !== 1) {
+                    a13*=sz;
+                    a23*=sz;
+                    a33*=sz;
+                    a43*=sz;
+                }
+                if (sy !== 1) {
+                    a12*=sy;
+                    a22*=sy;
+                    a32*=sy;
+                    a42*=sy;
+                }
+                if (sx !== 1) {
+                    a11*=sx;
+                    a21*=sx;
+                    a31*=sx;
+                    a41*=sx;
+                }
+                if (zOrigin) {
+                    a34 -= zOrigin;
+                    a14 = a13*a34;
+                    a24 = a23*a34;
+                    a34 = a33*a34+zOrigin;
+                }
+                //we round the x, y, and z slightly differently to allow even larger values.
+                a14 = (t1 = (a14 += t.x) - (a14 |= 0)) ? ((t1 * rnd + (t1 < 0 ? -0.5 : 0.5)) | 0) / rnd + a14 : a14;
+                a24 = (t1 = (a24 += t.y) - (a24 |= 0)) ? ((t1 * rnd + (t1 < 0 ? -0.5 : 0.5)) | 0) / rnd + a24 : a24;
+                a34 = (t1 = (a34 += t.z) - (a34 |= 0)) ? ((t1 * rnd + (t1 < 0 ? -0.5 : 0.5)) | 0) / rnd + a34 : a34;
+                style[_transformProp] = "matrix3d(" + [ (((a11 * rnd) | 0) / rnd), (((a21 * rnd) | 0) / rnd), (((a31 * rnd) | 0) / rnd), (((a41 * rnd) | 0) / rnd), (((a12 * rnd) | 0) / rnd), (((a22 * rnd) | 0) / rnd), (((a32 * rnd) | 0) / rnd), (((a42 * rnd) | 0) / rnd), (((a13 * rnd) | 0) / rnd), (((a23 * rnd) | 0) / rnd), (((a33 * rnd) | 0) / rnd), (((a43 * rnd) | 0) / rnd), a14, a24, a34, (perspective ? (1 + (-a34 / perspective)) : 1) ].join(",") + ")";
+            },
+
+            _set2DTransformRatio = _internals.set2DTransformRatio = function(v) {
+                var t = this.data, //refers to the element's _gsTransform object
+                    targ = this.t,
+                    style = targ.style,
+                    ang, skew, rnd, sx, sy;
+                if (t.rotationX || t.rotationY || t.z || t.force3D === true || (t.force3D === "auto" && v !== 1 && v !== 0)) { //if a 3D tween begins while a 2D one is running, we need to kick the rendering over to the 3D method. For example, imagine a yoyo-ing, infinitely repeating scale tween running, and then the object gets rotated in 3D space with a different tween.
+                    this.setRatio = _set3DTransformRatio;
+                    _set3DTransformRatio.call(this, v);
+                    return;
+                }
+                if (!t.rotation && !t.skewX) {
+                    style[_transformProp] = "matrix(" + t.scaleX + ",0,0," + t.scaleY + "," + t.x + "," + t.y + ")";
+                } else {
+                    ang = t.rotation * _DEG2RAD;
+                    skew = ang - t.skewX * _DEG2RAD;
+                    rnd = 100000;
+                    sx = t.scaleX * rnd;
+                    sy = t.scaleY * rnd;
+                    //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 5 decimal places.
+                    style[_transformProp] = "matrix(" + (((Math.cos(ang) * sx) | 0) / rnd) + "," + (((Math.sin(ang) * sx) | 0) / rnd) + "," + (((Math.sin(skew) * -sy) | 0) / rnd) + "," + (((Math.cos(skew) * sy) | 0) / rnd) + "," + t.x + "," + t.y + ")";
+                }
+            };
+
+        _registerComplexSpecialProp("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType", {parser:function(t, e, p, cssp, pt, plugin, vars) {
+            if (cssp._transform) { return pt; } //only need to parse the transform once, and only if the browser supports it.
+            var m1 = cssp._transform = _getTransform(t, _cs, true, vars.parseTransform),
+                style = t.style,
+                min = 0.000001,
+                i = _transformProps.length,
+                v = vars,
+                endRotations = {},
+                m2, skewY, copy, orig, has3D, hasChange, dr;
+            if (typeof(v.transform) === "string" && _transformProp) { //for values like transform:"rotate(60deg) scale(0.5, 0.8)"
+                copy = _tempDiv.style; //don't use the original target because it might be SVG in which case some browsers don't report computed style correctly.
+                copy[_transformProp] = v.transform;
+                copy.display = "block"; //if display is "none", the browser often refuses to report the transform properties correctly.
+                copy.position = "absolute";
+                _doc.body.appendChild(_tempDiv);
+                m2 = _getTransform(_tempDiv, null, false);
+                _doc.body.removeChild(_tempDiv);
+            } else if (typeof(v) === "object") { //for values like scaleX, scaleY, rotation, x, y, skewX, and skewY or transform:{...} (object)
+                m2 = {scaleX:_parseVal((v.scaleX != null) ? v.scaleX : v.scale, m1.scaleX),
+                    scaleY:_parseVal((v.scaleY != null) ? v.scaleY : v.scale, m1.scaleY),
+                    scaleZ:_parseVal(v.scaleZ, m1.scaleZ),
+                    x:_parseVal(v.x, m1.x),
+                    y:_parseVal(v.y, m1.y),
+                    z:_parseVal(v.z, m1.z),
+                    perspective:_parseVal(v.transformPerspective, m1.perspective)};
+                dr = v.directionalRotation;
+                if (dr != null) {
+                    if (typeof(dr) === "object") {
+                        for (copy in dr) {
+                            v[copy] = dr[copy];
+                        }
+                    } else {
+                        v.rotation = dr;
+                    }
+                }
+                m2.rotation = _parseAngle(("rotation" in v) ? v.rotation : ("shortRotation" in v) ? v.shortRotation + "_short" : ("rotationZ" in v) ? v.rotationZ : m1.rotation, m1.rotation, "rotation", endRotations);
+                if (_supports3D) {
+                    m2.rotationX = _parseAngle(("rotationX" in v) ? v.rotationX : ("shortRotationX" in v) ? v.shortRotationX + "_short" : m1.rotationX || 0, m1.rotationX, "rotationX", endRotations);
+                    m2.rotationY = _parseAngle(("rotationY" in v) ? v.rotationY : ("shortRotationY" in v) ? v.shortRotationY + "_short" : m1.rotationY || 0, m1.rotationY, "rotationY", endRotations);
+                }
+                m2.skewX = (v.skewX == null) ? m1.skewX : _parseAngle(v.skewX, m1.skewX);
+
+                //note: for performance reasons, we combine all skewing into the skewX and rotation values, ignoring skewY but we must still record it so that we can discern how much of the overall skew is attributed to skewX vs. skewY. Otherwise, if the skewY would always act relative (tween skewY to 10deg, for example, multiple times and if we always combine things into skewX, we can't remember that skewY was 10 from last time). Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of -10 degrees.
+                m2.skewY = (v.skewY == null) ? m1.skewY : _parseAngle(v.skewY, m1.skewY);
+                if ((skewY = m2.skewY - m1.skewY)) {
+                    m2.skewX += skewY;
+                    m2.rotation += skewY;
+                }
+            }
+
+            if (_supports3D && v.force3D != null) {
+                m1.force3D = v.force3D;
+                hasChange = true;
+            }
+
+            m1.skewType = v.skewType || m1.skewType || CSSPlugin.defaultSkewType;
+
+            has3D = (m1.force3D || m1.z || m1.rotationX || m1.rotationY || m2.z || m2.rotationX || m2.rotationY || m2.perspective);
+            if (!has3D && v.scale != null) {
+                m2.scaleZ = 1; //no need to tween scaleZ.
+            }
+
+            while (--i > -1) {
+                p = _transformProps[i];
+                orig = m2[p] - m1[p];
+                if (orig > min || orig < -min || _forcePT[p] != null) {
+                    hasChange = true;
+                    pt = new CSSPropTween(m1, p, m1[p], orig, pt);
+                    if (p in endRotations) {
+                        pt.e = endRotations[p]; //directional rotations typically have compensated values during the tween, but we need to make sure they end at exactly what the user requested
+                    }
+                    pt.xs0 = 0; //ensures the value stays numeric in setRatio()
+                    pt.plugin = plugin;
+                    cssp._overwriteProps.push(pt.n);
+                }
+            }
+
+            orig = v.transformOrigin;
+            if (orig || (_supports3D && has3D && m1.zOrigin)) { //if anything 3D is happening and there's a transformOrigin with a z component that's non-zero, we must ensure that the transformOrigin's z-component is set to 0 so that we can manually do those calculations to get around Safari bugs. Even if the user didn't specifically define a "transformOrigin" in this particular tween (maybe they did it via css directly).
+                if (_transformProp) {
+                    hasChange = true;
+                    p = _transformOriginProp;
+                    orig = (orig || _getStyle(t, p, _cs, false, "50% 50%")) + ""; //cast as string to avoid errors
+                    pt = new CSSPropTween(style, p, 0, 0, pt, -1, "transformOrigin");
+                    pt.b = style[p];
+                    pt.plugin = plugin;
+                    if (_supports3D) {
+                        copy = m1.zOrigin;
+                        orig = orig.split(" ");
+                        m1.zOrigin = ((orig.length > 2 && !(copy !== 0 && orig[2] === "0px")) ? parseFloat(orig[2]) : copy) || 0; //Safari doesn't handle the z part of transformOrigin correctly, so we'll manually handle it in the _set3DTransformRatio() method.
+                        pt.xs0 = pt.e = orig[0] + " " + (orig[1] || "50%") + " 0px"; //we must define a z value of 0px specifically otherwise iOS 5 Safari will stick with the old one (if one was defined)!
+                        pt = new CSSPropTween(m1, "zOrigin", 0, 0, pt, -1, pt.n); //we must create a CSSPropTween for the _gsTransform.zOrigin so that it gets reset properly at the beginning if the tween runs backward (as opposed to just setting m1.zOrigin here)
+                        pt.b = copy;
+                        pt.xs0 = pt.e = m1.zOrigin;
+                    } else {
+                        pt.xs0 = pt.e = orig;
+                    }
+
+                //for older versions of IE (6-8), we need to manually calculate things inside the setRatio() function. We record origin x and y (ox and oy) and whether or not the values are percentages (oxp and oyp).
+                } else {
+                    _parsePosition(orig + "", m1);
+                }
+            }
+
+            if (hasChange) {
+                cssp._transformType = (has3D || this._transformType === 3) ? 3 : 2; //quicker than calling cssp._enableTransforms();
+            }
+            return pt;
+        }, prefix:true});
+
+        _registerComplexSpecialProp("boxShadow", {defaultValue:"0px 0px 0px 0px #999", prefix:true, color:true, multi:true, keyword:"inset"});
+
+        _registerComplexSpecialProp("borderRadius", {defaultValue:"0px", parser:function(t, e, p, cssp, pt, plugin) {
+            e = this.format(e);
+            var props = ["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],
+                style = t.style,
+                ea1, i, es2, bs2, bs, es, bn, en, w, h, esfx, bsfx, rel, hn, vn, em;
+            w = parseFloat(t.offsetWidth);
+            h = parseFloat(t.offsetHeight);
+            ea1 = e.split(" ");
+            for (i = 0; i < props.length; i++) { //if we're dealing with percentages, we must convert things separately for the horizontal and vertical axis!
+                if (this.p.indexOf("border")) { //older browsers used a prefix
+                    props[i] = _checkPropPrefix(props[i]);
+                }
+                bs = bs2 = _getStyle(t, props[i], _cs, false, "0px");
+                if (bs.indexOf(" ") !== -1) {
+                    bs2 = bs.split(" ");
+                    bs = bs2[0];
+                    bs2 = bs2[1];
+                }
+                es = es2 = ea1[i];
+                bn = parseFloat(bs);
+                bsfx = bs.substr((bn + "").length);
+                rel = (es.charAt(1) === "=");
+                if (rel) {
+                    en = parseInt(es.charAt(0)+"1", 10);
+                    es = es.substr(2);
+                    en *= parseFloat(es);
+                    esfx = es.substr((en + "").length - (en < 0 ? 1 : 0)) || "";
+                } else {
+                    en = parseFloat(es);
+                    esfx = es.substr((en + "").length);
+                }
+                if (esfx === "") {
+                    esfx = _suffixMap[p] || bsfx;
+                }
+                if (esfx !== bsfx) {
+                    hn = _convertToPixels(t, "borderLeft", bn, bsfx); //horizontal number (we use a bogus "borderLeft" property just because the _convertToPixels() method searches for the keywords "Left", "Right", "Top", and "Bottom" to determine of it's a horizontal or vertical property, and we need "border" in the name so that it knows it should measure relative to the element itself, not its parent.
+                    vn = _convertToPixels(t, "borderTop", bn, bsfx); //vertical number
+                    if (esfx === "%") {
+                        bs = (hn / w * 100) + "%";
+                        bs2 = (vn / h * 100) + "%";
+                    } else if (esfx === "em") {
+                        em = _convertToPixels(t, "borderLeft", 1, "em");
+                        bs = (hn / em) + "em";
+                        bs2 = (vn / em) + "em";
+                    } else {
+                        bs = hn + "px";
+                        bs2 = vn + "px";
+                    }
+                    if (rel) {
+                        es = (parseFloat(bs) + en) + esfx;
+                        es2 = (parseFloat(bs2) + en) + esfx;
+                    }
+                }
+                pt = _parseComplex(style, props[i], bs + " " + bs2, es + " " + es2, false, "0px", pt);
+            }
+            return pt;
+        }, prefix:true, formatter:_getFormatter("0px 0px 0px 0px", false, true)});
+        _registerComplexSpecialProp("backgroundPosition", {defaultValue:"0 0", parser:function(t, e, p, cssp, pt, plugin) {
+            var bp = "background-position",
+                cs = (_cs || _getComputedStyle(t, null)),
+                bs = this.format( ((cs) ? _ieVers ? cs.getPropertyValue(bp + "-x") + " " + cs.getPropertyValue(bp + "-y") : cs.getPropertyValue(bp) : t.currentStyle.backgroundPositionX + " " + t.currentStyle.backgroundPositionY) || "0 0"), //Internet Explorer doesn't report background-position correctly - we must query background-position-x and background-position-y and combine them (even in IE10). Before IE9, we must do the same with the currentStyle object and use camelCase
+                es = this.format(e),
+                ba, ea, i, pct, overlap, src;
+            if ((bs.indexOf("%") !== -1) !== (es.indexOf("%") !== -1)) {
+                src = _getStyle(t, "backgroundImage").replace(_urlExp, "");
+                if (src && src !== "none") {
+                    ba = bs.split(" ");
+                    ea = es.split(" ");
+                    _tempImg.setAttribute("src", src); //set the temp <img>'s src to the background-image so that we can measure its width/height
+                    i = 2;
+                    while (--i > -1) {
+                        bs = ba[i];
+                        pct = (bs.indexOf("%") !== -1);
+                        if (pct !== (ea[i].indexOf("%") !== -1)) {
+                            overlap = (i === 0) ? t.offsetWidth - _tempImg.width : t.offsetHeight - _tempImg.height;
+                            ba[i] = pct ? (parseFloat(bs) / 100 * overlap) + "px" : (parseFloat(bs) / overlap * 100) + "%";
+                        }
+                    }
+                    bs = ba.join(" ");
+                }
+            }
+            return this.parseComplex(t.style, bs, es, pt, plugin);
+        }, formatter:_parsePosition});
+        _registerComplexSpecialProp("backgroundSize", {defaultValue:"0 0", formatter:_parsePosition});
+        _registerComplexSpecialProp("perspective", {defaultValue:"0px", prefix:true});
+        _registerComplexSpecialProp("perspectiveOrigin", {defaultValue:"50% 50%", prefix:true});
+        _registerComplexSpecialProp("transformStyle", {prefix:true});
+        _registerComplexSpecialProp("backfaceVisibility", {prefix:true});
+        _registerComplexSpecialProp("userSelect", {prefix:true});
+        _registerComplexSpecialProp("margin", {parser:_getEdgeParser("marginTop,marginRight,marginBottom,marginLeft")});
+        _registerComplexSpecialProp("padding", {parser:_getEdgeParser("paddingTop,paddingRight,paddingBottom,paddingLeft")});
+        _registerComplexSpecialProp("clip", {defaultValue:"rect(0px,0px,0px,0px)", parser:function(t, e, p, cssp, pt, plugin){
+            var b, cs, delim;
+            if (_ieVers < 9) { //IE8 and earlier don't report a "clip" value in the currentStyle - instead, the values are split apart into clipTop, clipRight, clipBottom, and clipLeft. Also, in IE7 and earlier, the values inside rect() are space-delimited, not comma-delimited.
+                cs = t.currentStyle;
+                delim = _ieVers < 8 ? " " : ",";
+                b = "rect(" + cs.clipTop + delim + cs.clipRight + delim + cs.clipBottom + delim + cs.clipLeft + ")";
+                e = this.format(e).split(",").join(delim);
+            } else {
+                b = this.format(_getStyle(t, this.p, _cs, false, this.dflt));
+                e = this.format(e);
+            }
+            return this.parseComplex(t.style, b, e, pt, plugin);
+        }});
+        _registerComplexSpecialProp("textShadow", {defaultValue:"0px 0px 0px #999", color:true, multi:true});
+        _registerComplexSpecialProp("autoRound,strictUnits", {parser:function(t, e, p, cssp, pt) {return pt;}}); //just so that we can ignore these properties (not tween them)
+        _registerComplexSpecialProp("border", {defaultValue:"0px solid #000", parser:function(t, e, p, cssp, pt, plugin) {
+                return this.parseComplex(t.style, this.format(_getStyle(t, "borderTopWidth", _cs, false, "0px") + " " + _getStyle(t, "borderTopStyle", _cs, false, "solid") + " " + _getStyle(t, "borderTopColor", _cs, false, "#000")), this.format(e), pt, plugin);
+            }, color:true, formatter:function(v) {
+                var a = v.split(" ");
+                return a[0] + " " + (a[1] || "solid") + " " + (v.match(_colorExp) || ["#000"])[0];
+            }});
+        _registerComplexSpecialProp("borderWidth", {parser:_getEdgeParser("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}); //Firefox doesn't pick up on borderWidth set in style sheets (only inline).
+        _registerComplexSpecialProp("float,cssFloat,styleFloat", {parser:function(t, e, p, cssp, pt, plugin) {
+            var s = t.style,
+                prop = ("cssFloat" in s) ? "cssFloat" : "styleFloat";
+            return new CSSPropTween(s, prop, 0, 0, pt, -1, p, false, 0, s[prop], e);
+        }});
+
+        //opacity-related
+        var _setIEOpacityRatio = function(v) {
+                var t = this.t, //refers to the element's style property
+                    filters = t.filter || _getStyle(this.data, "filter"),
+                    val = (this.s + this.c * v) | 0,
+                    skip;
+                if (val === 100) { //for older versions of IE that need to use a filter to apply opacity, we should remove the filter if opacity hits 1 in order to improve performance, but make sure there isn't a transform (matrix) or gradient in the filters.
+                    if (filters.indexOf("atrix(") === -1 && filters.indexOf("radient(") === -1 && filters.indexOf("oader(") === -1) {
+                        t.removeAttribute("filter");
+                        skip = (!_getStyle(this.data, "filter")); //if a class is applied that has an alpha filter, it will take effect (we don't want that), so re-apply our alpha filter in that case. We must first remove it and then check.
+                    } else {
+                        t.filter = filters.replace(_alphaFilterExp, "");
+                        skip = true;
+                    }
+                }
+                if (!skip) {
+                    if (this.xn1) {
+                        t.filter = filters = filters || ("alpha(opacity=" + val + ")"); //works around bug in IE7/8 that prevents changes to "visibility" from being applied properly if the filter is changed to a different alpha on the same frame.
+                    }
+                    if (filters.indexOf("pacity") === -1) { //only used if browser doesn't support the standard opacity style property (IE 7 and 8). We omit the "O" to avoid case-sensitivity issues
+                        if (val !== 0 || !this.xn1) { //bugs in IE7/8 won't render the filter properly if opacity is ADDED on the same frame/render as "visibility" changes (this.xn1 is 1 if this tween is an "autoAlpha" tween)
+                            t.filter = filters + " alpha(opacity=" + val + ")"; //we round the value because otherwise, bugs in IE7/8 can prevent "visibility" changes from being applied properly.
+                        }
+                    } else {
+                        t.filter = filters.replace(_opacityExp, "opacity=" + val);
+                    }
+                }
+            };
+        _registerComplexSpecialProp("opacity,alpha,autoAlpha", {defaultValue:"1", parser:function(t, e, p, cssp, pt, plugin) {
+            var b = parseFloat(_getStyle(t, "opacity", _cs, false, "1")),
+                style = t.style,
+                isAutoAlpha = (p === "autoAlpha");
+            if (typeof(e) === "string" && e.charAt(1) === "=") {
+                e = ((e.charAt(0) === "-") ? -1 : 1) * parseFloat(e.substr(2)) + b;
+            }
+            if (isAutoAlpha && b === 1 && _getStyle(t, "visibility", _cs) === "hidden" && e !== 0) { //if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
+                b = 0;
+            }
+            if (_supportsOpacity) {
+                pt = new CSSPropTween(style, "opacity", b, e - b, pt);
+            } else {
+                pt = new CSSPropTween(style, "opacity", b * 100, (e - b) * 100, pt);
+                pt.xn1 = isAutoAlpha ? 1 : 0; //we need to record whether or not this is an autoAlpha so that in the setRatio(), we know to duplicate the setting of the alpha in order to work around a bug in IE7 and IE8 that prevents changes to "visibility" from taking effect if the filter is changed to a different alpha(opacity) at the same time. Setting it to the SAME value first, then the new value works around the IE7/8 bug.
+                style.zoom = 1; //helps correct an IE issue.
+                pt.type = 2;
+                pt.b = "alpha(opacity=" + pt.s + ")";
+                pt.e = "alpha(opacity=" + (pt.s + pt.c) + ")";
+                pt.data = t;
+                pt.plugin = plugin;
+                pt.setRatio = _setIEOpacityRatio;
+            }
+            if (isAutoAlpha) { //we have to create the "visibility" PropTween after the opacity one in the linked list so that they run in the order that works properly in IE8 and earlier
+                pt = new CSSPropTween(style, "visibility", 0, 0, pt, -1, null, false, 0, ((b !== 0) ? "inherit" : "hidden"), ((e === 0) ? "hidden" : "inherit"));
+                pt.xs0 = "inherit";
+                cssp._overwriteProps.push(pt.n);
+                cssp._overwriteProps.push(p);
+            }
+            return pt;
+        }});
+
+
+        var _removeProp = function(s, p) {
+                if (p) {
+                    if (s.removeProperty) {
+                        if (p.substr(0,2) === "ms") { //Microsoft browsers don't conform to the standard of capping the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be "ms-transform" instead of "-ms-transform" for IE9, for example)
+                            p = "M" + p.substr(1);
+                        }
+                        s.removeProperty(p.replace(_capsExp, "-$1").toLowerCase());
+                    } else { //note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
+                        s.removeAttribute(p);
+                    }
+                }
+            },
+            _setClassNameRatio = function(v) {
+                this.t._gsClassPT = this;
+                if (v === 1 || v === 0) {
+                    this.t.setAttribute("class", (v === 0) ? this.b : this.e);
+                    var mpt = this.data, //first MiniPropTween
+                        s = this.t.style;
+                    while (mpt) {
+                        if (!mpt.v) {
+                            _removeProp(s, mpt.p);
+                        } else {
+                            s[mpt.p] = mpt.v;
+                        }
+                        mpt = mpt._next;
+                    }
+                    if (v === 1 && this.t._gsClassPT === this) {
+                        this.t._gsClassPT = null;
+                    }
+                } else if (this.t.getAttribute("class") !== this.e) {
+                    this.t.setAttribute("class", this.e);
+                }
+            };
+        _registerComplexSpecialProp("className", {parser:function(t, e, p, cssp, pt, plugin, vars) {
+            var b = t.getAttribute("class") || "", //don't use t.className because it doesn't work consistently on SVG elements; getAttribute("class") and setAttribute("class", value") is more reliable.
+                cssText = t.style.cssText,
+                difData, bs, cnpt, cnptLookup, mpt;
+            pt = cssp._classNamePT = new CSSPropTween(t, p, 0, 0, pt, 2);
+            pt.setRatio = _setClassNameRatio;
+            pt.pr = -11;
+            _hasPriority = true;
+            pt.b = b;
+            bs = _getAllStyles(t, _cs);
+            //if there's a className tween already operating on the target, force it to its end so that the necessary inline styles are removed and the class name is applied before we determine the end state (we don't want inline styles interfering that were there just for class-specific values)
+            cnpt = t._gsClassPT;
+            if (cnpt) {
+                cnptLookup = {};
+                mpt = cnpt.data; //first MiniPropTween which stores the inline styles - we need to force these so that the inline styles don't contaminate things. Otherwise, there's a small chance that a tween could start and the inline values match the destination values and they never get cleaned.
+                while (mpt) {
+                    cnptLookup[mpt.p] = 1;
+                    mpt = mpt._next;
+                }
+                cnpt.setRatio(1);
+            }
+            t._gsClassPT = pt;
+            pt.e = (e.charAt(1) !== "=") ? e : b.replace(new RegExp("\\s*\\b" + e.substr(2) + "\\b"), "") + ((e.charAt(0) === "+") ? " " + e.substr(2) : "");
+            if (cssp._tween._duration) { //if it's a zero-duration tween, there's no need to tween anything or parse the data. In fact, if we switch classes temporarily (which we must do for proper parsing) and the class has a transition applied, it could cause a quick flash to the end state and back again initially in some browsers.
+                t.setAttribute("class", pt.e);
+                difData = _cssDif(t, bs, _getAllStyles(t), vars, cnptLookup);
+                t.setAttribute("class", b);
+                pt.data = difData.firstMPT;
+                t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).
+                pt = pt.xfirst = cssp.parse(t, difData.difs, pt, plugin); //we record the CSSPropTween as the xfirst so that we can handle overwriting propertly (if "className" gets overwritten, we must kill all the properties associated with the className part of the tween, so we can loop through from xfirst to the pt itself)
+            }
+            return pt;
+        }});
+
+
+        var _setClearPropsRatio = function(v) {
+            if (v === 1 || v === 0) if (this.data._totalTime === this.data._totalDuration && this.data.data !== "isFromStart") { //this.data refers to the tween. Only clear at the END of the tween (remember, from() tweens make the ratio go from 1 to 0, so we can't just check that and if the tween is the zero-duration one that's created internally to render the starting values in a from() tween, ignore that because otherwise, for example, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in).
+                var s = this.t.style,
+                    transformParse = _specialProps.transform.parse,
+                    a, p, i, clearTransform;
+                if (this.e === "all") {
+                    s.cssText = "";
+                    clearTransform = true;
+                } else {
+                    a = this.e.split(",");
+                    i = a.length;
+                    while (--i > -1) {
+                        p = a[i];
+                        if (_specialProps[p]) {
+                            if (_specialProps[p].parse === transformParse) {
+                                clearTransform = true;
+                            } else {
+                                p = (p === "transformOrigin") ? _transformOriginProp : _specialProps[p].p; //ensures that special properties use the proper browser-specific property name, like "scaleX" might be "-webkit-transform" or "boxShadow" might be "-moz-box-shadow"
+                            }
+                        }
+                        _removeProp(s, p);
+                    }
+                }
+                if (clearTransform) {
+                    _removeProp(s, _transformProp);
+                    if (this.t._gsTransform) {
+                        delete this.t._gsTransform;
+                    }
+                }
+
+            }
+        };
+        _registerComplexSpecialProp("clearProps", {parser:function(t, e, p, cssp, pt) {
+            pt = new CSSPropTween(t, p, 0, 0, pt, 2);
+            pt.setRatio = _setClearPropsRatio;
+            pt.e = e;
+            pt.pr = -10;
+            pt.data = cssp._tween;
+            _hasPriority = true;
+            return pt;
+        }});
+
+        p = "bezier,throwProps,physicsProps,physics2D".split(",");
+        i = p.length;
+        while (i--) {
+            _registerPluginProp(p[i]);
+        }
+
+
+
+
+
+
+
+
+        p = CSSPlugin.prototype;
+        p._firstPT = null;
+
+        //gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc.
+        p._onInitTween = function(target, vars, tween) {
+            if (!target.nodeType) { //css is only for dom elements
+                return false;
+            }
+            this._target = target;
+            this._tween = tween;
+            this._vars = vars;
+            _autoRound = vars.autoRound;
+            _hasPriority = false;
+            _suffixMap = vars.suffixMap || CSSPlugin.suffixMap;
+            _cs = _getComputedStyle(target, "");
+            _overwriteProps = this._overwriteProps;
+            var style = target.style,
+                v, pt, pt2, first, last, next, zIndex, tpt, threeD;
+            if (_reqSafariFix) if (style.zIndex === "") {
+                v = _getStyle(target, "zIndex", _cs);
+                if (v === "auto" || v === "") {
+                    //corrects a bug in [non-Android] Safari that prevents it from repainting elements in their new positions if they don't have a zIndex set. We also can't just apply this inside _parseTransform() because anything that's moved in any way (like using "left" or "top" instead of transforms like "x" and "y") can be affected, so it is best to ensure that anything that's tweening has a z-index. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly. Plus zIndex is less memory-intensive.
+                    this._addLazySet(style, "zIndex", 0);
+                }
+            }
+
+            if (typeof(vars) === "string") {
+                first = style.cssText;
+                v = _getAllStyles(target, _cs);
+                style.cssText = first + ";" + vars;
+                v = _cssDif(target, v, _getAllStyles(target)).difs;
+                if (!_supportsOpacity && _opacityValExp.test(vars)) {
+                    v.opacity = parseFloat( RegExp.$1 );
+                }
+                vars = v;
+                style.cssText = first;
+            }
+            this._firstPT = pt = this.parse(target, vars, null);
+
+            if (this._transformType) {
+                threeD = (this._transformType === 3);
+                if (!_transformProp) {
+                    style.zoom = 1; //helps correct an IE issue.
+                } else if (_isSafari) {
+                    _reqSafariFix = true;
+                    //if zIndex isn't set, iOS Safari doesn't repaint things correctly sometimes (seemingly at random).
+                    if (style.zIndex === "") {
+                        zIndex = _getStyle(target, "zIndex", _cs);
+                        if (zIndex === "auto" || zIndex === "") {
+                            this._addLazySet(style, "zIndex", 0);
+                        }
+                    }
+                    //Setting WebkitBackfaceVisibility corrects 3 bugs:
+                    // 1) [non-Android] Safari skips rendering changes to "top" and "left" that are made on the same frame/render as a transform update.
+                    // 2) iOS Safari sometimes neglects to repaint elements in their new positions. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly.
+                    // 3) Safari sometimes displayed odd artifacts when tweening the transform (or WebkitTransform) property, like ghosts of the edges of the element remained. Definitely a browser bug.
+                    //Note: we allow the user to override the auto-setting by defining WebkitBackfaceVisibility in the vars of the tween.
+                    if (_isSafariLT6) {
+                        this._addLazySet(style, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (threeD ? "visible" : "hidden"));
+                    }
+                }
+                pt2 = pt;
+                while (pt2 && pt2._next) {
+                    pt2 = pt2._next;
+                }
+                tpt = new CSSPropTween(target, "transform", 0, 0, null, 2);
+                this._linkCSSP(tpt, null, pt2);
+                tpt.setRatio = (threeD && _supports3D) ? _set3DTransformRatio : _transformProp ? _set2DTransformRatio : _setIETransformRatio;
+                tpt.data = this._transform || _getTransform(target, _cs, true);
+                _overwriteProps.pop(); //we don't want to force the overwrite of all "transform" tweens of the target - we only care about individual transform properties like scaleX, rotation, etc. The CSSPropTween constructor automatically adds the property to _overwriteProps which is why we need to pop() here.
+            }
+
+            if (_hasPriority) {
+                //reorders the linked list in order of pr (priority)
+                while (pt) {
+                    next = pt._next;
+                    pt2 = first;
+                    while (pt2 && pt2.pr > pt.pr) {
+                        pt2 = pt2._next;
+                    }
+                    if ((pt._prev = pt2 ? pt2._prev : last)) {
+                        pt._prev._next = pt;
+                    } else {
+                        first = pt;
+                    }
+                    if ((pt._next = pt2)) {
+                        pt2._prev = pt;
+                    } else {
+                        last = pt;
+                    }
+                    pt = next;
+                }
+                this._firstPT = first;
+            }
+            return true;
+        };
+
+
+        p.parse = function(target, vars, pt, plugin) {
+            var style = target.style,
+                p, sp, bn, en, bs, es, bsfx, esfx, isStr, rel;
+            for (p in vars) {
+                es = vars[p]; //ending value string
+                sp = _specialProps[p]; //SpecialProp lookup.
+                if (sp) {
+                    pt = sp.parse(target, es, p, this, pt, plugin, vars);
+
+                } else {
+                    bs = _getStyle(target, p, _cs) + "";
+                    isStr = (typeof(es) === "string");
+                    if (p === "color" || p === "fill" || p === "stroke" || p.indexOf("Color") !== -1 || (isStr && _rgbhslExp.test(es))) { //Opera uses background: to define color sometimes in addition to backgroundColor:
+                        if (!isStr) {
+                            es = _parseColor(es);
+                            es = ((es.length > 3) ? "rgba(" : "rgb(") + es.join(",") + ")";
+                        }
+                        pt = _parseComplex(style, p, bs, es, true, "transparent", pt, 0, plugin);
+
+                    } else if (isStr && (es.indexOf(" ") !== -1 || es.indexOf(",") !== -1)) {
+                        pt = _parseComplex(style, p, bs, es, true, null, pt, 0, plugin);
+
+                    } else {
+                        bn = parseFloat(bs);
+                        bsfx = (bn || bn === 0) ? bs.substr((bn + "").length) : ""; //remember, bs could be non-numeric like "normal" for fontWeight, so we should default to a blank suffix in that case.
+
+                        if (bs === "" || bs === "auto") {
+                            if (p === "width" || p === "height") {
+                                bn = _getDimension(target, p, _cs);
+                                bsfx = "px";
+                            } else if (p === "left" || p === "top") {
+                                bn = _calculateOffset(target, p, _cs);
+                                bsfx = "px";
+                            } else {
+                                bn = (p !== "opacity") ? 0 : 1;
+                                bsfx = "";
+                            }
+                        }
+
+                        rel = (isStr && es.charAt(1) === "=");
+                        if (rel) {
+                            en = parseInt(es.charAt(0) + "1", 10);
+                            es = es.substr(2);
+                            en *= parseFloat(es);
+                            esfx = es.replace(_suffixExp, "");
+                        } else {
+                            en = parseFloat(es);
+                            esfx = isStr ? es.substr((en + "").length) || "" : "";
+                        }
+
+                        if (esfx === "") {
+                            esfx = (p in _suffixMap) ? _suffixMap[p] : bsfx; //populate the end suffix, prioritizing the map, then if none is found, use the beginning suffix.
+                        }
+
+                        es = (en || en === 0) ? (rel ? en + bn : en) + esfx : vars[p]; //ensures that any += or -= prefixes are taken care of. Record the end value before normalizing the suffix because we always want to end the tween on exactly what they intended even if it doesn't match the beginning value's suffix.
+
+                        //if the beginning/ending suffixes don't match, normalize them...
+                        if (bsfx !== esfx) if (esfx !== "") if (en || en === 0) if (bn) { //note: if the beginning value (bn) is 0, we don't need to convert units!
+                            bn = _convertToPixels(target, p, bn, bsfx);
+                            if (esfx === "%") {
+                                bn /= _convertToPixels(target, p, 100, "%") / 100;
+                                if (vars.strictUnits !== true) { //some browsers report only "px" values instead of allowing "%" with getComputedStyle(), so we assume that if we're tweening to a %, we should start there too unless strictUnits:true is defined. This approach is particularly useful for responsive designs that use from() tweens.
+                                    bs = bn + "%";
+                                }
+
+                            } else if (esfx === "em") {
+                                bn /= _convertToPixels(target, p, 1, "em");
+
+                            //otherwise convert to pixels.
+                            } else if (esfx !== "px") {
+                                en = _convertToPixels(target, p, en, esfx);
+                                esfx = "px"; //we don't use bsfx after this, so we don't need to set it to px too.
+                            }
+                            if (rel) if (en || en === 0) {
+                                es = (en + bn) + esfx; //the changes we made affect relative calculations, so adjust the end value here.
+                            }
+                        }
+
+                        if (rel) {
+                            en += bn;
+                        }
+
+                        if ((bn || bn === 0) && (en || en === 0)) { //faster than isNaN(). Also, previously we required en !== bn but that doesn't really gain much performance and it prevents _parseToProxy() from working properly if beginning and ending values match but need to get tweened by an external plugin anyway. For example, a bezier tween where the target starts at left:0 and has these points: [{left:50},{left:0}] wouldn't work properly because when parsing the last point, it'd match the first (current) one and a non-tweening CSSPropTween would be recorded when we actually need a normal tween (type:0) so that things get updated during the tween properly.
+                            pt = new CSSPropTween(style, p, bn, en - bn, pt, 0, p, (_autoRound !== false && (esfx === "px" || p === "zIndex")), 0, bs, es);
+                            pt.xs0 = esfx;
+                            //DEBUG: _log("tween "+p+" from "+pt.b+" ("+bn+esfx+") to "+pt.e+" with suffix: "+pt.xs0);
+                        } else if (style[p] === undefined || !es && (es + "" === "NaN" || es == null)) {
+                            _log("invalid " + p + " tween value: " + vars[p]);
+                        } else {
+                            pt = new CSSPropTween(style, p, en || bn || 0, 0, pt, -1, p, false, 0, bs, es);
+                            pt.xs0 = (es === "none" && (p === "display" || p.indexOf("Style") !== -1)) ? bs : es; //intermediate value should typically be set immediately (end value) except for "display" or things like borderTopStyle, borderBottomStyle, etc. which should use the beginning value during the tween.
+                            //DEBUG: _log("non-tweening value "+p+": "+pt.xs0);
+                        }
+                    }
+                }
+                if (plugin) if (pt && !pt.plugin) {
+                    pt.plugin = plugin;
+                }
+            }
+            return pt;
+        };
+
+
+        //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+        p.setRatio = function(v) {
+            var pt = this._firstPT,
+                min = 0.000001,
+                val, str, i;
+
+            //at the end of the tween, we set the values to exactly what we received in order to make sure non-tweening values (like "position" or "float" or whatever) are set and so that if the beginning/ending suffixes (units) didn't match and we normalized to px, the value that the user passed in is used here. We check to see if the tween is at its beginning in case it's a from() tween in which case the ratio will actually go from 1 to 0 over the course of the tween (backwards).
+            if (v === 1 && (this._tween._time === this._tween._duration || this._tween._time === 0)) {
+                while (pt) {
+                    if (pt.type !== 2) {
+                        pt.t[pt.p] = pt.e;
+                    } else {
+                        pt.setRatio(v);
+                    }
+                    pt = pt._next;
+                }
+
+            } else if (v || !(this._tween._time === this._tween._duration || this._tween._time === 0) || this._tween._rawPrevTime === -0.000001) {
+                while (pt) {
+                    val = pt.c * v + pt.s;
+                    if (pt.r) {
+                        val = Math.round(val);
+                    } else if (val < min) if (val > -min) {
+                        val = 0;
+                    }
+                    if (!pt.type) {
+                        pt.t[pt.p] = val + pt.xs0;
+                    } else if (pt.type === 1) { //complex value (one that typically has multiple numbers inside a string, like "rect(5px,10px,20px,25px)"
+                        i = pt.l;
+                        if (i === 2) {
+                            pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2;
+                        } else if (i === 3) {
+                            pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3;
+                        } else if (i === 4) {
+                            pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4;
+                        } else if (i === 5) {
+                            pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4 + pt.xn4 + pt.xs5;
+                        } else {
+                            str = pt.xs0 + val + pt.xs1;
+                            for (i = 1; i < pt.l; i++) {
+                                str += pt["xn"+i] + pt["xs"+(i+1)];
+                            }
+                            pt.t[pt.p] = str;
+                        }
+
+                    } else if (pt.type === -1) { //non-tweening value
+                        pt.t[pt.p] = pt.xs0;
+
+                    } else if (pt.setRatio) { //custom setRatio() for things like SpecialProps, external plugins, etc.
+                        pt.setRatio(v);
+                    }
+                    pt = pt._next;
+                }
+
+            //if the tween is reversed all the way back to the beginning, we need to restore the original values which may have different units (like % instead of px or em or whatever).
+            } else {
+                while (pt) {
+                    if (pt.type !== 2) {
+                        pt.t[pt.p] = pt.b;
+                    } else {
+                        pt.setRatio(v);
+                    }
+                    pt = pt._next;
+                }
+            }
+        };
+
+        /**
+         * @private
+         * Forces rendering of the target's transforms (rotation, scale, etc.) whenever the CSSPlugin's setRatio() is called.
+         * Basically, this tells the CSSPlugin to create a CSSPropTween (type 2) after instantiation that runs last in the linked
+         * list and calls the appropriate (3D or 2D) rendering function. We separate this into its own method so that we can call
+         * it from other plugins like BezierPlugin if, for example, it needs to apply an autoRotation and this CSSPlugin
+         * doesn't have any transform-related properties of its own. You can call this method as many times as you
+         * want and it won't create duplicate CSSPropTweens.
+         *
+         * @param {boolean} threeD if true, it should apply 3D tweens (otherwise, just 2D ones are fine and typically faster)
+         */
+        p._enableTransforms = function(threeD) {
+            this._transformType = (threeD || this._transformType === 3) ? 3 : 2;
+            this._transform = this._transform || _getTransform(this._target, _cs, true); //ensures that the element has a _gsTransform property with the appropriate values.
+        };
+
+        var lazySet = function(v) {
+            this.t[this.p] = this.e;
+            this.data._linkCSSP(this, this._next, null, true); //we purposefully keep this._next even though it'd make sense to null it, but this is a performance optimization, as this happens during the while (pt) {} loop in setRatio() at the bottom of which it sets pt = pt._next, so if we null it, the linked list will be broken in that loop.
+        };
+        /** @private Gives us a way to set a value on the first render (and only the first render). **/
+        p._addLazySet = function(t, p, v) {
+            var pt = this._firstPT = new CSSPropTween(t, p, 0, 0, this._firstPT, 2);
+            pt.e = v;
+            pt.setRatio = lazySet;
+            pt.data = this;
+        };
+
+        /** @private **/
+        p._linkCSSP = function(pt, next, prev, remove) {
+            if (pt) {
+                if (next) {
+                    next._prev = pt;
+                }
+                if (pt._next) {
+                    pt._next._prev = pt._prev;
+                }
+                if (pt._prev) {
+                    pt._prev._next = pt._next;
+                } else if (this._firstPT === pt) {
+                    this._firstPT = pt._next;
+                    remove = true; //just to prevent resetting this._firstPT 5 lines down in case pt._next is null. (optimized for speed)
+                }
+                if (prev) {
+                    prev._next = pt;
+                } else if (!remove && this._firstPT === null) {
+                    this._firstPT = pt;
+                }
+                pt._next = next;
+                pt._prev = prev;
+            }
+            return pt;
+        };
+
+        //we need to make sure that if alpha or autoAlpha is killed, opacity is too. And autoAlpha affects the "visibility" property.
+        p._kill = function(lookup) {
+            var copy = lookup,
+                pt, p, xfirst;
+            if (lookup.autoAlpha || lookup.alpha) {
+                copy = {};
+                for (p in lookup) { //copy the lookup so that we're not changing the original which may be passed elsewhere.
+                    copy[p] = lookup[p];
+                }
+                copy.opacity = 1;
+                if (copy.autoAlpha) {
+                    copy.visibility = 1;
+                }
+            }
+            if (lookup.className && (pt = this._classNamePT)) { //for className tweens, we need to kill any associated CSSPropTweens too; a linked list starts at the className's "xfirst".
+                xfirst = pt.xfirst;
+                if (xfirst && xfirst._prev) {
+                    this._linkCSSP(xfirst._prev, pt._next, xfirst._prev._prev); //break off the prev
+                } else if (xfirst === this._firstPT) {
+                    this._firstPT = pt._next;
+                }
+                if (pt._next) {
+                    this._linkCSSP(pt._next, pt._next._next, xfirst._prev);
+                }
+                this._classNamePT = null;
+            }
+            return TweenPlugin.prototype._kill.call(this, copy);
+        };
+
+
+
+        //used by cascadeTo() for gathering all the style properties of each child element into an array for comparison.
+        var _getChildStyles = function(e, props, targets) {
+                var children, i, child, type;
+                if (e.slice) {
+                    i = e.length;
+                    while (--i > -1) {
+                        _getChildStyles(e[i], props, targets);
+                    }
+                    return;
+                }
+                children = e.childNodes;
+                i = children.length;
+                while (--i > -1) {
+                    child = children[i];
+                    type = child.type;
+                    if (child.style) {
+                        props.push(_getAllStyles(child));
+                        if (targets) {
+                            targets.push(child);
+                        }
+                    }
+                    if ((type === 1 || type === 9 || type === 11) && child.childNodes.length) {
+                        _getChildStyles(child, props, targets);
+                    }
+                }
+            };
+
+        /**
+         * Typically only useful for className tweens that may affect child elements, this method creates a TweenLite
+         * and then compares the style properties of all the target's child elements at the tween's start and end, and
+         * if any are different, it also creates tweens for those and returns an array containing ALL of the resulting
+         * tweens (so that you can easily add() them to a TimelineLite, for example). The reason this functionality is
+         * wrapped into a separate static method of CSSPlugin instead of being integrated into all regular className tweens
+         * is because it creates entirely new tweens that may have completely different targets than the original tween,
+         * so if they were all lumped into the original tween instance, it would be inconsistent with the rest of the API
+         * and it would create other problems. For example:
+         *  - If I create a tween of elementA, that tween instance may suddenly change its target to include 50 other elements (unintuitive if I specifically defined the target I wanted)
+         *  - We can't just create new independent tweens because otherwise, what happens if the original/parent tween is reversed or pause or dropped into a TimelineLite for tight control? You'd expect that tween's behavior to affect all the others.
+         *  - Analyzing every style property of every child before and after the tween is an expensive operation when there are many children, so this behavior shouldn't be imposed on all className tweens by default, especially since it's probably rare that this extra functionality is needed.
+         *
+         * @param {Object} target object to be tweened
+         * @param {number} Duration in seconds (or frames for frames-based tweens)
+         * @param {Object} Object containing the end values, like {className:"newClass", ease:Linear.easeNone}
+         * @return {Array} An array of TweenLite instances
+         */
+        CSSPlugin.cascadeTo = function(target, duration, vars) {
+            var tween = TweenLite.to(target, duration, vars),
+                results = [tween],
+                b = [],
+                e = [],
+                targets = [],
+                _reservedProps = TweenLite._internals.reservedProps,
+                i, difs, p;
+            target = tween._targets || tween.target;
+            _getChildStyles(target, b, targets);
+            tween.render(duration, true);
+            _getChildStyles(target, e);
+            tween.render(0, true);
+            tween._enabled(true);
+            i = targets.length;
+            while (--i > -1) {
+                difs = _cssDif(targets[i], b[i], e[i]);
+                if (difs.firstMPT) {
+                    difs = difs.difs;
+                    for (p in vars) {
+                        if (_reservedProps[p]) {
+                            difs[p] = vars[p];
+                        }
+                    }
+                    results.push( TweenLite.to(targets[i], duration, difs) );
+                }
+            }
+            return results;
+        };
+
+        TweenPlugin.activate([CSSPlugin]);
+        return CSSPlugin;
+
+    }, true);
+
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+/*
+ * ----------------------------------------------------------------
+ * RoundPropsPlugin
+ * ----------------------------------------------------------------
+ */
+    (function() {
+
+        var RoundPropsPlugin = window._gsDefine.plugin({
+                propName: "roundProps",
+                priority: -1,
+                API: 2,
+
+                //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
+                init: function(target, value, tween) {
+                    this._tween = tween;
+                    return true;
+                }
+
+            }),
+            p = RoundPropsPlugin.prototype;
+
+        p._onInitAllProps = function() {
+            var tween = this._tween,
+                rp = (tween.vars.roundProps instanceof Array) ? tween.vars.roundProps : tween.vars.roundProps.split(","),
+                i = rp.length,
+                lookup = {},
+                rpt = tween._propLookup.roundProps,
+                prop, pt, next;
+            while (--i > -1) {
+                lookup[rp[i]] = 1;
+            }
+            i = rp.length;
+            while (--i > -1) {
+                prop = rp[i];
+                pt = tween._firstPT;
+                while (pt) {
+                    next = pt._next; //record here, because it may get removed
+                    if (pt.pg) {
+                        pt.t._roundProps(lookup, true);
+                    } else if (pt.n === prop) {
+                        this._add(pt.t, prop, pt.s, pt.c);
+                        //remove from linked list
+                        if (next) {
+                            next._prev = pt._prev;
+                        }
+                        if (pt._prev) {
+                            pt._prev._next = next;
+                        } else if (tween._firstPT === pt) {
+                            tween._firstPT = next;
+                        }
+                        pt._next = pt._prev = null;
+                        tween._propLookup[prop] = rpt;
+                    }
+                    pt = next;
+                }
+            }
+            return false;
+        };
+
+        p._add = function(target, p, s, c) {
+            this._addTween(target, p, s, s + c, p, true);
+            this._overwriteProps.push(p);
+        };
+
+    }());
+
+
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * AttrPlugin
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine.plugin({
+        propName: "attr",
+        API: 2,
+        version: "0.3.2",
+
+        //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
+        init: function(target, value, tween) {
+            var p, start, end;
+            if (typeof(target.setAttribute) !== "function") {
+                return false;
+            }
+            this._target = target;
+            this._proxy = {};
+            this._start = {}; // we record start and end values exactly as they are in case they're strings (not numbers) - we need to be able to revert to them cleanly.
+            this._end = {};
+            for (p in value) {
+                this._start[p] = this._proxy[p] = start = target.getAttribute(p);
+                end = this._addTween(this._proxy, p, parseFloat(start), value[p], p);
+                this._end[p] = end ? end.s + end.c : value[p];
+                this._overwriteProps.push(p);
+            }
+            return true;
+        },
+
+        //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)
+        set: function(ratio) {
+            this._super.setRatio.call(this, ratio);
+            var props = this._overwriteProps,
+                i = props.length,
+                lookup = (ratio === 1) ? this._end : ratio ? this._proxy : this._start,
+                p;
+            while (--i > -1) {
+                p = props[i];
+                this._target.setAttribute(p, lookup[p] + "");
+            }
+        }
+
+    });
+
+
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * DirectionalRotationPlugin
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine.plugin({
+        propName: "directionalRotation",
+        API: 2,
+        version: "0.2.0",
+
+        //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
+        init: function(target, value, tween) {
+            if (typeof(value) !== "object") {
+                value = {rotation:value};
+            }
+            this.finals = {};
+            var cap = (value.useRadians === true) ? Math.PI * 2 : 360,
+                min = 0.000001,
+                p, v, start, end, dif, split;
+            for (p in value) {
+                if (p !== "useRadians") {
+                    split = (value[p] + "").split("_");
+                    v = split[0];
+                    start = parseFloat( (typeof(target[p]) !== "function") ? target[p] : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]() );
+                    end = this.finals[p] = (typeof(v) === "string" && v.charAt(1) === "=") ? start + parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) : Number(v) || 0;
+                    dif = end - start;
+                    if (split.length) {
+                        v = split.join("_");
+                        if (v.indexOf("short") !== -1) {
+                            dif = dif % cap;
+                            if (dif !== dif % (cap / 2)) {
+                                dif = (dif < 0) ? dif + cap : dif - cap;
+                            }
+                        }
+                        if (v.indexOf("_cw") !== -1 && dif < 0) {
+                            dif = ((dif + cap * 9999999999) % cap) - ((dif / cap) | 0) * cap;
+                        } else if (v.indexOf("ccw") !== -1 && dif > 0) {
+                            dif = ((dif - cap * 9999999999) % cap) - ((dif / cap) | 0) * cap;
+                        }
+                    }
+                    if (dif > min || dif < -min) {
+                        this._addTween(target, p, start, start + dif, p);
+                        this._overwriteProps.push(p);
+                    }
+                }
+            }
+            return true;
+        },
+
+        //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)
+        set: function(ratio) {
+            var pt;
+            if (ratio !== 1) {
+                this._super.setRatio.call(this, ratio);
+            } else {
+                pt = this._firstPT;
+                while (pt) {
+                    if (pt.f) {
+                        pt.t[pt.p](this.finals[pt.p]);
+                    } else {
+                        pt.t[pt.p] = this.finals[pt.p];
+                    }
+                    pt = pt._next;
+                }
+            }
+        }
+
+    })._autoCSS = true;
+
+
+
+
+
+
+
+    
+    
+    
+    
+/*
+ * ----------------------------------------------------------------
+ * EasePack
+ * ----------------------------------------------------------------
+ */
+    window._gsDefine("easing.Back", ["easing.Ease"], function(Ease) {
+        
+        var w = (window.GreenSockGlobals || window),
+            gs = w.com.greensock,
+            _2PI = Math.PI * 2,
+            _HALF_PI = Math.PI / 2,
+            _class = gs._class,
+            _create = function(n, f) {
+                var C = _class("easing." + n, function(){}, true),
+                    p = C.prototype = new Ease();
+                p.constructor = C;
+                p.getRatio = f;
+                return C;
+            },
+            _easeReg = Ease.register || function(){}, //put an empty function in place just as a safety measure in case someone loads an OLD version of TweenLite.js where Ease.register doesn't exist.
+            _wrap = function(name, EaseOut, EaseIn, EaseInOut, aliases) {
+                var C = _class("easing."+name, {
+                    easeOut:new EaseOut(),
+                    easeIn:new EaseIn(),
+                    easeInOut:new EaseInOut()
+                }, true);
+                _easeReg(C, name);
+                return C;
+            },
+            EasePoint = function(time, value, next) {
+                this.t = time;
+                this.v = value;
+                if (next) {
+                    this.next = next;
+                    next.prev = this;
+                    this.c = next.v - value;
+                    this.gap = next.t - time;
+                }
+            },
+
+            //Back
+            _createBack = function(n, f) {
+                var C = _class("easing." + n, function(overshoot) {
+                        this._p1 = (overshoot || overshoot === 0) ? overshoot : 1.70158;
+                        this._p2 = this._p1 * 1.525;
+                    }, true),
+                    p = C.prototype = new Ease();
+                p.constructor = C;
+                p.getRatio = f;
+                p.config = function(overshoot) {
+                    return new C(overshoot);
+                };
+                return C;
+            },
+
+            Back = _wrap("Back",
+                _createBack("BackOut", function(p) {
+                    return ((p = p - 1) * p * ((this._p1 + 1) * p + this._p1) + 1);
+                }),
+                _createBack("BackIn", function(p) {
+                    return p * p * ((this._p1 + 1) * p - this._p1);
+                }),
+                _createBack("BackInOut", function(p) {
+                    return ((p *= 2) < 1) ? 0.5 * p * p * ((this._p2 + 1) * p - this._p2) : 0.5 * ((p -= 2) * p * ((this._p2 + 1) * p + this._p2) + 2);
+                })
+            ),
+
+
+            //SlowMo
+            SlowMo = _class("easing.SlowMo", function(linearRatio, power, yoyoMode) {
+                power = (power || power === 0) ? power : 0.7;
+                if (linearRatio == null) {
+                    linearRatio = 0.7;
+                } else if (linearRatio > 1) {
+                    linearRatio = 1;
+                }
+                this._p = (linearRatio !== 1) ? power : 0;
+                this._p1 = (1 - linearRatio) / 2;
+                this._p2 = linearRatio;
+                this._p3 = this._p1 + this._p2;
+                this._calcEnd = (yoyoMode === true);
+            }, true),
+            p = SlowMo.prototype = new Ease(),
+            SteppedEase, RoughEase, _createElastic;
+
+        p.constructor = SlowMo;
+        p.getRatio = function(p) {
+            var r = p + (0.5 - p) * this._p;
+            if (p < this._p1) {
+                return this._calcEnd ? 1 - ((p = 1 - (p / this._p1)) * p) : r - ((p = 1 - (p / this._p1)) * p * p * p * r);
+            } else if (p > this._p3) {
+                return this._calcEnd ? 1 - (p = (p - this._p3) / this._p1) * p : r + ((p - r) * (p = (p - this._p3) / this._p1) * p * p * p);
+            }
+            return this._calcEnd ? 1 : r;
+        };
+        SlowMo.ease = new SlowMo(0.7, 0.7);
+
+        p.config = SlowMo.config = function(linearRatio, power, yoyoMode) {
+            return new SlowMo(linearRatio, power, yoyoMode);
+        };
+
+
+        //SteppedEase
+        SteppedEase = _class("easing.SteppedEase", function(steps) {
+                steps = steps || 1;
+                this._p1 = 1 / steps;
+                this._p2 = steps + 1;
+            }, true);
+        p = SteppedEase.prototype = new Ease();
+        p.constructor = SteppedEase;
+        p.getRatio = function(p) {
+            if (p < 0) {
+                p = 0;
+            } else if (p >= 1) {
+                p = 0.999999999;
+            }
+            return ((this._p2 * p) >> 0) * this._p1;
+        };
+        p.config = SteppedEase.config = function(steps) {
+            return new SteppedEase(steps);
+        };
+
+
+        //RoughEase
+        RoughEase = _class("easing.RoughEase", function(vars) {
+            vars = vars || {};
+            var taper = vars.taper || "none",
+                a = [],
+                cnt = 0,
+                points = (vars.points || 20) | 0,
+                i = points,
+                randomize = (vars.randomize !== false),
+                clamp = (vars.clamp === true),
+                template = (vars.template instanceof Ease) ? vars.template : null,
+                strength = (typeof(vars.strength) === "number") ? vars.strength * 0.4 : 0.4,
+                x, y, bump, invX, obj, pnt;
+            while (--i > -1) {
+                x = randomize ? Math.random() : (1 / points) * i;
+                y = template ? template.getRatio(x) : x;
+                if (taper === "none") {
+                    bump = strength;
+                } else if (taper === "out") {
+                    invX = 1 - x;
+                    bump = invX * invX * strength;
+                } else if (taper === "in") {
+                    bump = x * x * strength;
+                } else if (x < 0.5) {  //"both" (start)
+                    invX = x * 2;
+                    bump = invX * invX * 0.5 * strength;
+                } else {                //"both" (end)
+                    invX = (1 - x) * 2;
+                    bump = invX * invX * 0.5 * strength;
+                }
+                if (randomize) {
+                    y += (Math.random() * bump) - (bump * 0.5);
+                } else if (i % 2) {
+                    y += bump * 0.5;
+                } else {
+                    y -= bump * 0.5;
+                }
+                if (clamp) {
+                    if (y > 1) {
+                        y = 1;
+                    } else if (y < 0) {
+                        y = 0;
+                    }
+                }
+                a[cnt++] = {x:x, y:y};
+            }
+            a.sort(function(a, b) {
+                return a.x - b.x;
+            });
+
+            pnt = new EasePoint(1, 1, null);
+            i = points;
+            while (--i > -1) {
+                obj = a[i];
+                pnt = new EasePoint(obj.x, obj.y, pnt);
+            }
+
+            this._prev = new EasePoint(0, 0, (pnt.t !== 0) ? pnt : pnt.next);
+        }, true);
+        p = RoughEase.prototype = new Ease();
+        p.constructor = RoughEase;
+        p.getRatio = function(p) {
+            var pnt = this._prev;
+            if (p > pnt.t) {
+                while (pnt.next && p >= pnt.t) {
+                    pnt = pnt.next;
+                }
+                pnt = pnt.prev;
+            } else {
+                while (pnt.prev && p <= pnt.t) {
+                    pnt = pnt.prev;
+                }
+            }
+            this._prev = pnt;
+            return (pnt.v + ((p - pnt.t) / pnt.gap) * pnt.c);
+        };
+        p.config = function(vars) {
+            return new RoughEase(vars);
+        };
+        RoughEase.ease = new RoughEase();
+
+
+        //Bounce
+        _wrap("Bounce",
+            _create("BounceOut", function(p) {
+                if (p < 1 / 2.75) {
+                    return 7.5625 * p * p;
+                } else if (p < 2 / 2.75) {
+                    return 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                } else if (p < 2.5 / 2.75) {
+                    return 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                }
+                return 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+            }),
+            _create("BounceIn", function(p) {
+                if ((p = 1 - p) < 1 / 2.75) {
+                    return 1 - (7.5625 * p * p);
+                } else if (p < 2 / 2.75) {
+                    return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + 0.75);
+                } else if (p < 2.5 / 2.75) {
+                    return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + 0.9375);
+                }
+                return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + 0.984375);
+            }),
+            _create("BounceInOut", function(p) {
+                var invert = (p < 0.5);
+                if (invert) {
+                    p = 1 - (p * 2);
+                } else {
+                    p = (p * 2) - 1;
+                }
+                if (p < 1 / 2.75) {
+                    p = 7.5625 * p * p;
+                } else if (p < 2 / 2.75) {
+                    p = 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                } else if (p < 2.5 / 2.75) {
+                    p = 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                } else {
+                    p = 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+                }
+                return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5;
+            })
+        );
+
+
+        //CIRC
+        _wrap("Circ",
+            _create("CircOut", function(p) {
+                return Math.sqrt(1 - (p = p - 1) * p);
+            }),
+            _create("CircIn", function(p) {
+                return -(Math.sqrt(1 - (p * p)) - 1);
+            }),
+            _create("CircInOut", function(p) {
+                return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1);
+            })
+        );
+
+
+        //Elastic
+        _createElastic = function(n, f, def) {
+            var C = _class("easing." + n, function(amplitude, period) {
+                    this._p1 = amplitude || 1;
+                    this._p2 = period || def;
+                    this._p3 = this._p2 / _2PI * (Math.asin(1 / this._p1) || 0);
+                }, true),
+                p = C.prototype = new Ease();
+            p.constructor = C;
+            p.getRatio = f;
+            p.config = function(amplitude, period) {
+                return new C(amplitude, period);
+            };
+            return C;
+        };
+        _wrap("Elastic",
+            _createElastic("ElasticOut", function(p) {
+                return this._p1 * Math.pow(2, -10 * p) * Math.sin( (p - this._p3) * _2PI / this._p2 ) + 1;
+            }, 0.3),
+            _createElastic("ElasticIn", function(p) {
+                return -(this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ));
+            }, 0.3),
+            _createElastic("ElasticInOut", function(p) {
+                return ((p *= 2) < 1) ? -0.5 * (this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2)) : this._p1 * Math.pow(2, -10 *(p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ) *0.5 + 1;
+            }, 0.45)
+        );
+
+
+        //Expo
+        _wrap("Expo",
+            _create("ExpoOut", function(p) {
+                return 1 - Math.pow(2, -10 * p);
+            }),
+            _create("ExpoIn", function(p) {
+                return Math.pow(2, 10 * (p - 1)) - 0.001;
+            }),
+            _create("ExpoInOut", function(p) {
+                return ((p *= 2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
+            })
+        );
+
+
+        //Sine
+        _wrap("Sine",
+            _create("SineOut", function(p) {
+                return Math.sin(p * _HALF_PI);
+            }),
+            _create("SineIn", function(p) {
+                return -Math.cos(p * _HALF_PI) + 1;
+            }),
+            _create("SineInOut", function(p) {
+                return -0.5 * (Math.cos(Math.PI * p) - 1);
+            })
+        );
+
+        _class("easing.EaseLookup", {
+                find:function(s) {
+                    return Ease.map[s];
+                }
+            }, true);
+
+        //register the non-standard eases
+        _easeReg(w.SlowMo, "SlowMo", "ease,");
+        _easeReg(RoughEase, "RoughEase", "ease,");
+        _easeReg(SteppedEase, "SteppedEase", "ease,");
+
+        return Back;
+        
+    }, true);
+
+
+}); 
+
+
+
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * Base classes like TweenLite, SimpleTimeline, Ease, Ticker, etc.
+ * ----------------------------------------------------------------
+ */
+(function(window) {
+
+        "use strict";
+        var _globals = window.GreenSockGlobals || window;
+        if (_globals.TweenLite) {
+            return; //in case the core set of classes is already loaded, don't instantiate twice.
+        }
+        var _namespace = function(ns) {
+                var a = ns.split("."),
+                    p = _globals, i;
+                for (i = 0; i < a.length; i++) {
+                    p[a[i]] = p = p[a[i]] || {};
+                }
+                return p;
+            },
+            gs = _namespace("com.greensock"),
+            _tinyNum = 0.0000000001,
+            _slice = [].slice,
+            _emptyFunc = function() {},
+            _isArray = (function() { //works around issues in iframe environments where the Array global isn't shared, thus if the object originates in a different window/iframe, "(obj instanceof Array)" will evaluate false. We added some speed optimizations to avoid Object.prototype.toString.call() unless it's absolutely necessary because it's VERY slow (like 20x slower)
+                var toString = Object.prototype.toString,
+                    array = toString.call([]);
+                return function(obj) {
+                    return obj != null && (obj instanceof Array || (typeof(obj) === "object" && !!obj.push && toString.call(obj) === array));
+                };
+            }()),
+            a, i, p, _ticker, _tickerActive,
+            _defLookup = {},
+
+            /**
+             * @constructor
+             * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition.
+             * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is
+             * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin
+             * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally.
+             *
+             * Every definition will be added to a "com.greensock" global object (typically window, but if a window.GreenSockGlobals object is found,
+             * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere,
+             * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so
+             * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything
+             * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock
+             * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could
+             * sandbox the banner one like:
+             *
+             * <script>
+             *     var gs = window.GreenSockGlobals = {}; //the newer version we're about to load could now be referenced in a "gs" object, like gs.TweenLite.to(...). Use whatever alias you want as long as it's unique, "gs" or "banner" or whatever.
+             * </script>
+             * <script src="js/greensock/v1.7/TweenMax.js"></script>
+             * <script>
+             *     window.GreenSockGlobals = null; //reset it back to null so that the next load of TweenMax affects the window and we can reference things directly like TweenLite.to(...)
+             * </script>
+             * <script src="js/greensock/v1.6/TweenMax.js"></script>
+             * <script>
+             *     gs.TweenLite.to(...); //would use v1.7
+             *     TweenLite.to(...); //would use v1.6
+             * </script>
+             *
+             * @param {!string} ns The namespace of the class definition, leaving off "com.greensock." as that's assumed. For example, "TweenLite" or "plugins.CSSPlugin" or "easing.Back".
+             * @param {!Array.<string>} dependencies An array of dependencies (described as their namespaces minus "com.greensock." prefix). For example ["TweenLite","plugins.TweenPlugin","core.Animation"]
+             * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition.
+             * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object)
+             */
+            Definition = function(ns, dependencies, func, global) {
+                this.sc = (_defLookup[ns]) ? _defLookup[ns].sc : []; //subclasses
+                _defLookup[ns] = this;
+                this.gsClass = null;
+                this.func = func;
+                var _classes = [];
+                this.check = function(init) {
+                    var i = dependencies.length,
+                        missing = i,
+                        cur, a, n, cl;
+                    while (--i > -1) {
+                        if ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) {
+                            _classes[i] = cur.gsClass;
+                            missing--;
+                        } else if (init) {
+                            cur.sc.push(this);
+                        }
+                    }
+                    if (missing === 0 && func) {
+                        a = ("com.greensock." + ns).split(".");
+                        n = a.pop();
+                        cl = _namespace(a.join("."))[n] = this.gsClass = func.apply(func, _classes);
+
+                        //exports to multiple environments
+                        if (global) {
+                            _globals[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.)
+                            if (typeof(define) === "function" && define.amd){ //AMD
+                                define((window.GreenSockAMDPath ? window.GreenSockAMDPath + "/" : "") + ns.split(".").join("/"), [], function() { return cl; });
+                            } else if (typeof(module) !== "undefined" && module.exports){ //node
+                                module.exports = cl;
+                            }
+                        }
+                        for (i = 0; i < this.sc.length; i++) {
+                            this.sc[i].check();
+                        }
+                    }
+                };
+                this.check(true);
+            },
+
+            //used to create Definition instances (which basically registers a class that has dependencies).
+            _gsDefine = window._gsDefine = function(ns, dependencies, func, global) {
+                return new Definition(ns, dependencies, func, global);
+            },
+
+            //a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class).
+            _class = gs._class = function(ns, func, global) {
+                func = func || function() {};
+                _gsDefine(ns, [], function(){ return func; }, global);
+                return func;
+            };
+
+        _gsDefine.globals = _globals;
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * Ease
+ * ----------------------------------------------------------------
+ */
+        var _baseParams = [0, 0, 1, 1],
+            _blankArray = [],
+            Ease = _class("easing.Ease", function(func, extraParams, type, power) {
+                this._func = func;
+                this._type = type || 0;
+                this._power = power || 0;
+                this._params = extraParams ? _baseParams.concat(extraParams) : _baseParams;
+            }, true),
+            _easeMap = Ease.map = {},
+            _easeReg = Ease.register = function(ease, names, types, create) {
+                var na = names.split(","),
+                    i = na.length,
+                    ta = (types || "easeIn,easeOut,easeInOut").split(","),
+                    e, name, j, type;
+                while (--i > -1) {
+                    name = na[i];
+                    e = create ? _class("easing."+name, null, true) : gs.easing[name] || {};
+                    j = ta.length;
+                    while (--j > -1) {
+                        type = ta[j];
+                        _easeMap[name + "." + type] = _easeMap[type + name] = e[type] = ease.getRatio ? ease : ease[type] || new ease();
+                    }
+                }
+            };
+
+        p = Ease.prototype;
+        p._calcEnd = false;
+        p.getRatio = function(p) {
+            if (this._func) {
+                this._params[0] = p;
+                return this._func.apply(null, this._params);
+            }
+            var t = this._type,
+                pw = this._power,
+                r = (t === 1) ? 1 - p : (t === 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2;
+            if (pw === 1) {
+                r *= r;
+            } else if (pw === 2) {
+                r *= r * r;
+            } else if (pw === 3) {
+                r *= r * r * r;
+            } else if (pw === 4) {
+                r *= r * r * r * r;
+            }
+            return (t === 1) ? 1 - r : (t === 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2);
+        };
+
+        //create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut)
+        a = ["Linear","Quad","Cubic","Quart","Quint,Strong"];
+        i = a.length;
+        while (--i > -1) {
+            p = a[i]+",Power"+i;
+            _easeReg(new Ease(null,null,1,i), p, "easeOut", true);
+            _easeReg(new Ease(null,null,2,i), p, "easeIn" + ((i === 0) ? ",easeNone" : ""));
+            _easeReg(new Ease(null,null,3,i), p, "easeInOut");
+        }
+        _easeMap.linear = gs.easing.Linear.easeIn;
+        _easeMap.swing = gs.easing.Quad.easeInOut; //for jQuery folks
+
+
+/*
+ * ----------------------------------------------------------------
+ * EventDispatcher
+ * ----------------------------------------------------------------
+ */
+        var EventDispatcher = _class("events.EventDispatcher", function(target) {
+            this._listeners = {};
+            this._eventTarget = target || this;
+        });
+        p = EventDispatcher.prototype;
+
+        p.addEventListener = function(type, callback, scope, useParam, priority) {
+            priority = priority || 0;
+            var list = this._listeners[type],
+                index = 0,
+                listener, i;
+            if (list == null) {
+                this._listeners[type] = list = [];
+            }
+            i = list.length;
+            while (--i > -1) {
+                listener = list[i];
+                if (listener.c === callback && listener.s === scope) {
+                    list.splice(i, 1);
+                } else if (index === 0 && listener.pr < priority) {
+                    index = i + 1;
+                }
+            }
+            list.splice(index, 0, {c:callback, s:scope, up:useParam, pr:priority});
+            if (this === _ticker && !_tickerActive) {
+                _ticker.wake();
+            }
+        };
+
+        p.removeEventListener = function(type, callback) {
+            var list = this._listeners[type], i;
+            if (list) {
+                i = list.length;
+                while (--i > -1) {
+                    if (list[i].c === callback) {
+                        list.splice(i, 1);
+                        return;
+                    }
+                }
+            }
+        };
+
+        p.dispatchEvent = function(type) {
+            var list = this._listeners[type],
+                i, t, listener;
+            if (list) {
+                i = list.length;
+                t = this._eventTarget;
+                while (--i > -1) {
+                    listener = list[i];
+                    if (listener.up) {
+                        listener.c.call(listener.s || t, {type:type, target:t});
+                    } else {
+                        listener.c.call(listener.s || t);
+                    }
+                }
+            }
+        };
+
+
+/*
+ * ----------------------------------------------------------------
+ * Ticker
+ * ----------------------------------------------------------------
+ */
+        var _reqAnimFrame = window.requestAnimationFrame,
+            _cancelAnimFrame = window.cancelAnimationFrame,
+            _getTime = Date.now || function() {return new Date().getTime();},
+            _lastUpdate = _getTime();
+
+        //now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill.
+        a = ["ms","moz","webkit","o"];
+        i = a.length;
+        while (--i > -1 && !_reqAnimFrame) {
+            _reqAnimFrame = window[a[i] + "RequestAnimationFrame"];
+            _cancelAnimFrame = window[a[i] + "CancelAnimationFrame"] || window[a[i] + "CancelRequestAnimationFrame"];
+        }
+
+        _class("Ticker", function(fps, useRAF) {
+            var _self = this,
+                _startTime = _getTime(),
+                _useRAF = (useRAF !== false && _reqAnimFrame),
+                _lagThreshold = 500,
+                _adjustedLag = 33,
+                _fps, _req, _id, _gap, _nextTime,
+                _tick = function(manual) {
+                    var elapsed = _getTime() - _lastUpdate,
+                        overlap, dispatch;
+                    if (elapsed > _lagThreshold) {
+                        _startTime += elapsed - _adjustedLag;
+                    }
+                    _lastUpdate += elapsed;
+                    _self.time = (_lastUpdate - _startTime) / 1000;
+                    overlap = _self.time - _nextTime;
+                    if (!_fps || overlap > 0 || manual === true) {
+                        _self.frame++;
+                        _nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap);
+                        dispatch = true;
+                    }
+                    if (manual !== true) { //make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.
+                        _id = _req(_tick);
+                    }
+                    if (dispatch) {
+                        _self.dispatchEvent("tick");
+                    }
+                };
+
+            EventDispatcher.call(_self);
+            _self.time = _self.frame = 0;
+            _self.tick = function() {
+                _tick(true);
+            };
+
+            _self.lagSmoothing = function(threshold, adjustedLag) {
+                _lagThreshold = threshold || (1 / _tinyNum); //zero should be interpreted as basically unlimited
+                _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);
+            };
+
+            _self.sleep = function() {
+                if (_id == null) {
+                    return;
+                }
+                if (!_useRAF || !_cancelAnimFrame) {
+                    clearTimeout(_id);
+                } else {
+                    _cancelAnimFrame(_id);
+                }
+                _req = _emptyFunc;
+                _id = null;
+                if (_self === _ticker) {
+                    _tickerActive = false;
+                }
+            };
+
+            _self.wake = function() {
+                if (_id !== null) {
+                    _self.sleep();
+                } else if (_self.frame > 10) { //don't trigger lagSmoothing if we're just waking up, and make sure that at least 10 frames have elapsed because of the iOS bug that we work around below with the 1.5-second setTimout().
+                    _lastUpdate = _getTime() - _lagThreshold + 5;
+                }
+                _req = (_fps === 0) ? _emptyFunc : (!_useRAF || !_reqAnimFrame) ? function(f) { return setTimeout(f, ((_nextTime - _self.time) * 1000 + 1) | 0); } : _reqAnimFrame;
+                if (_self === _ticker) {
+                    _tickerActive = true;
+                }
+                _tick(2);
+            };
+
+            _self.fps = function(value) {
+                if (!arguments.length) {
+                    return _fps;
+                }
+                _fps = value;
+                _gap = 1 / (_fps || 60);
+                _nextTime = this.time + _gap;
+                _self.wake();
+            };
+
+            _self.useRAF = function(value) {
+                if (!arguments.length) {
+                    return _useRAF;
+                }
+                _self.sleep();
+                _useRAF = value;
+                _self.fps(_fps);
+            };
+            _self.fps(fps);
+
+            //a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1.5-second timeout that automatically falls back to setTimeout() if it senses this condition.
+            setTimeout(function() {
+                if (_useRAF && (!_id || _self.frame < 5)) {
+                    _self.useRAF(false);
+                }
+            }, 1500);
+        });
+
+        p = gs.Ticker.prototype = new gs.events.EventDispatcher();
+        p.constructor = gs.Ticker;
+
+
+/*
+ * ----------------------------------------------------------------
+ * Animation
+ * ----------------------------------------------------------------
+ */
+        var Animation = _class("core.Animation", function(duration, vars) {
+                this.vars = vars = vars || {};
+                this._duration = this._totalDuration = duration || 0;
+                this._delay = Number(vars.delay) || 0;
+                this._timeScale = 1;
+                this._active = (vars.immediateRender === true);
+                this.data = vars.data;
+                this._reversed = (vars.reversed === true);
+
+                if (!_rootTimeline) {
+                    return;
+                }
+                if (!_tickerActive) { //some browsers (like iOS 6 Safari) shut down JavaScript execution when the tab is disabled and they [occasionally] neglect to start up requestAnimationFrame again when returning - this code ensures that the engine starts up again properly.
+                    _ticker.wake();
+                }
+
+                var tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline;
+                tl.add(this, tl._time);
+
+                if (this.vars.paused) {
+                    this.paused(true);
+                }
+            });
+
+        _ticker = Animation.ticker = new gs.Ticker();
+        p = Animation.prototype;
+        p._dirty = p._gc = p._initted = p._paused = false;
+        p._totalTime = p._time = 0;
+        p._rawPrevTime = -1;
+        p._next = p._last = p._onUpdate = p._timeline = p.timeline = null;
+        p._paused = false;
+
+
+        //some browsers (like iOS) occasionally drop the requestAnimationFrame event when the user switches to a different tab and then comes back again, so we use a 2-second setTimeout() to sense if/when that condition occurs and then wake() the ticker.
+        var _checkTimeout = function() {
+                if (_tickerActive && _getTime() - _lastUpdate > 2000) {
+                    _ticker.wake();
+                }
+                setTimeout(_checkTimeout, 2000);
+            };
+        _checkTimeout();
+
+
+        p.play = function(from, suppressEvents) {
+            if (from != null) {
+                this.seek(from, suppressEvents);
+            }
+            return this.reversed(false).paused(false);
+        };
+
+        p.pause = function(atTime, suppressEvents) {
+            if (atTime != null) {
+                this.seek(atTime, suppressEvents);
+            }
+            return this.paused(true);
+        };
+
+        p.resume = function(from, suppressEvents) {
+            if (from != null) {
+                this.seek(from, suppressEvents);
+            }
+            return this.paused(false);
+        };
+
+        p.seek = function(time, suppressEvents) {
+            return this.totalTime(Number(time), suppressEvents !== false);
+        };
+
+        p.restart = function(includeDelay, suppressEvents) {
+            return this.reversed(false).paused(false).totalTime(includeDelay ? -this._delay : 0, (suppressEvents !== false), true);
+        };
+
+        p.reverse = function(from, suppressEvents) {
+            if (from != null) {
+                this.seek((from || this.totalDuration()), suppressEvents);
+            }
+            return this.reversed(true).paused(false);
+        };
+
+        p.render = function(time, suppressEvents, force) {
+            //stub - we override this method in subclasses.
+        };
+
+        p.invalidate = function() {
+            return this;
+        };
+
+        p.isActive = function() {
+            var tl = this._timeline, //the 2 root timelines won't have a _timeline; they're always active.
+                startTime = this._startTime,
+                rawTime;
+            return (!tl || (!this._gc && !this._paused && tl.isActive() && (rawTime = tl.rawTime()) >= startTime && rawTime < startTime + this.totalDuration() / this._timeScale));
+        };
+
+        p._enabled = function (enabled, ignoreTimeline) {
+            if (!_tickerActive) {
+                _ticker.wake();
+            }
+            this._gc = !enabled;
+            this._active = this.isActive();
+            if (ignoreTimeline !== true) {
+                if (enabled && !this.timeline) {
+                    this._timeline.add(this, this._startTime - this._delay);
+                } else if (!enabled && this.timeline) {
+                    this._timeline._remove(this, true);
+                }
+            }
+            return false;
+        };
+
+
+        p._kill = function(vars, target) {
+            return this._enabled(false, false);
+        };
+
+        p.kill = function(vars, target) {
+            this._kill(vars, target);
+            return this;
+        };
+
+        p._uncache = function(includeSelf) {
+            var tween = includeSelf ? this : this.timeline;
+            while (tween) {
+                tween._dirty = true;
+                tween = tween.timeline;
+            }
+            return this;
+        };
+
+        p._swapSelfInParams = function(params) {
+            var i = params.length,
+                copy = params.concat();
+            while (--i > -1) {
+                if (params[i] === "{self}") {
+                    copy[i] = this;
+                }
+            }
+            return copy;
+        };
+
+//----Animation getters/setters --------------------------------------------------------
+
+        p.eventCallback = function(type, callback, params, scope) {
+            if ((type || "").substr(0,2) === "on") {
+                var v = this.vars;
+                if (arguments.length === 1) {
+                    return v[type];
+                }
+                if (callback == null) {
+                    delete v[type];
+                } else {
+                    v[type] = callback;
+                    v[type + "Params"] = (_isArray(params) && params.join("").indexOf("{self}") !== -1) ? this._swapSelfInParams(params) : params;
+                    v[type + "Scope"] = scope;
+                }
+                if (type === "onUpdate") {
+                    this._onUpdate = callback;
+                }
+            }
+            return this;
+        };
+
+        p.delay = function(value) {
+            if (!arguments.length) {
+                return this._delay;
+            }
+            if (this._timeline.smoothChildTiming) {
+                this.startTime( this._startTime + value - this._delay );
+            }
+            this._delay = value;
+            return this;
+        };
+
+        p.duration = function(value) {
+            if (!arguments.length) {
+                this._dirty = false;
+                return this._duration;
+            }
+            this._duration = this._totalDuration = value;
+            this._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration.
+            if (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) {
+                this.totalTime(this._totalTime * (value / this._duration), true);
+            }
+            return this;
+        };
+
+        p.totalDuration = function(value) {
+            this._dirty = false;
+            return (!arguments.length) ? this._totalDuration : this.duration(value);
+        };
+
+        p.time = function(value, suppressEvents) {
+            if (!arguments.length) {
+                return this._time;
+            }
+            if (this._dirty) {
+                this.totalDuration();
+            }
+            return this.totalTime((value > this._duration) ? this._duration : value, suppressEvents);
+        };
+
+        p.totalTime = function(time, suppressEvents, uncapped) {
+            if (!_tickerActive) {
+                _ticker.wake();
+            }
+            if (!arguments.length) {
+                return this._totalTime;
+            }
+            if (this._timeline) {
+                if (time < 0 && !uncapped) {
+                    time += this.totalDuration();
+                }
+                if (this._timeline.smoothChildTiming) {
+                    if (this._dirty) {
+                        this.totalDuration();
+                    }
+                    var totalDuration = this._totalDuration,
+                        tl = this._timeline;
+                    if (time > totalDuration && !uncapped) {
+                        time = totalDuration;
+                    }
+                    this._startTime = (this._paused ? this._pauseTime : tl._time) - ((!this._reversed ? time : totalDuration - time) / this._timeScale);
+                    if (!tl._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.
+                        this._uncache(false);
+                    }
+                    //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The startTime of that child would get pushed out, but one of the ancestors may have completed.
+                    if (tl._timeline) {
+                        while (tl._timeline) {
+                            if (tl._timeline._time !== (tl._startTime + tl._totalTime) / tl._timeScale) {
+                                tl.totalTime(tl._totalTime, true);
+                            }
+                            tl = tl._timeline;
+                        }
+                    }
+                }
+                if (this._gc) {
+                    this._enabled(true, false);
+                }
+                if (this._totalTime !== time || this._duration === 0) {
+                    this.render(time, suppressEvents, false);
+                    if (_lazyTweens.length) { //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.
+                        _lazyRender();
+                    }
+                }
+            }
+            return this;
+        };
+
+        p.progress = p.totalProgress = function(value, suppressEvents) {
+            return (!arguments.length) ? this._time / this.duration() : this.totalTime(this.duration() * value, suppressEvents);
+        };
+
+        p.startTime = function(value) {
+            if (!arguments.length) {
+                return this._startTime;
+            }
+            if (value !== this._startTime) {
+                this._startTime = value;
+                if (this.timeline) if (this.timeline._sortChildren) {
+                    this.timeline.add(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.
+                }
+            }
+            return this;
+        };
+
+        p.timeScale = function(value) {
+            if (!arguments.length) {
+                return this._timeScale;
+            }
+            value = value || _tinyNum; //can't allow zero because it'll throw the math off
+            if (this._timeline && this._timeline.smoothChildTiming) {
+                var pauseTime = this._pauseTime,
+                    t = (pauseTime || pauseTime === 0) ? pauseTime : this._timeline.totalTime();
+                this._startTime = t - ((t - this._startTime) * this._timeScale / value);
+            }
+            this._timeScale = value;
+            return this._uncache(false);
+        };
+
+        p.reversed = function(value) {
+            if (!arguments.length) {
+                return this._reversed;
+            }
+            if (value != this._reversed) {
+                this._reversed = value;
+                this.totalTime(((this._timeline && !this._timeline.smoothChildTiming) ? this.totalDuration() - this._totalTime : this._totalTime), true);
+            }
+            return this;
+        };
+
+        p.paused = function(value) {
+            if (!arguments.length) {
+                return this._paused;
+            }
+            if (value != this._paused) if (this._timeline) {
+                if (!_tickerActive && !value) {
+                    _ticker.wake();
+                }
+                var tl = this._timeline,
+                    raw = tl.rawTime(),
+                    elapsed = raw - this._pauseTime;
+                if (!value && tl.smoothChildTiming) {
+                    this._startTime += elapsed;
+                    this._uncache(false);
+                }
+                this._pauseTime = value ? raw : null;
+                this._paused = value;
+                this._active = this.isActive();
+                if (!value && elapsed !== 0 && this._initted && this.duration()) {
+                    this.render((tl.smoothChildTiming ? this._totalTime : (raw - this._startTime) / this._timeScale), true, true); //in case the target's properties changed via some other tween or manual update by the user, we should force a render.
+                }
+            }
+            if (this._gc && !value) {
+                this._enabled(true, false);
+            }
+            return this;
+        };
+
+
+/*
+ * ----------------------------------------------------------------
+ * SimpleTimeline
+ * ----------------------------------------------------------------
+ */
+        var SimpleTimeline = _class("core.SimpleTimeline", function(vars) {
+            Animation.call(this, 0, vars);
+            this.autoRemoveChildren = this.smoothChildTiming = true;
+        });
+
+        p = SimpleTimeline.prototype = new Animation();
+        p.constructor = SimpleTimeline;
+        p.kill()._gc = false;
+        p._first = p._last = null;
+        p._sortChildren = false;
+
+        p.add = p.insert = function(child, position, align, stagger) {
+            var prevTween, st;
+            child._startTime = Number(position || 0) + child._delay;
+            if (child._paused) if (this !== child._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order).
+                child._pauseTime = child._startTime + ((this.rawTime() - child._startTime) / child._timeScale);
+            }
+            if (child.timeline) {
+                child.timeline._remove(child, true); //removes from existing timeline so that it can be properly added to this one.
+            }
+            child.timeline = child._timeline = this;
+            if (child._gc) {
+                child._enabled(true, true);
+            }
+            prevTween = this._last;
+            if (this._sortChildren) {
+                st = child._startTime;
+                while (prevTween && prevTween._startTime > st) {
+                    prevTween = prevTween._prev;
+                }
+            }
+            if (prevTween) {
+                child._next = prevTween._next;
+                prevTween._next = child;
+            } else {
+                child._next = this._first;
+                this._first = child;
+            }
+            if (child._next) {
+                child._next._prev = child;
+            } else {
+                this._last = child;
+            }
+            child._prev = prevTween;
+            if (this._timeline) {
+                this._uncache(true);
+            }
+            return this;
+        };
+
+        p._remove = function(tween, skipDisable) {
+            if (tween.timeline === this) {
+                if (!skipDisable) {
+                    tween._enabled(false, true);
+                }
+                tween.timeline = null;
+
+                if (tween._prev) {
+                    tween._prev._next = tween._next;
+                } else if (this._first === tween) {
+                    this._first = tween._next;
+                }
+                if (tween._next) {
+                    tween._next._prev = tween._prev;
+                } else if (this._last === tween) {
+                    this._last = tween._prev;
+                }
+
+                if (this._timeline) {
+                    this._uncache(true);
+                }
+            }
+            return this;
+        };
+
+        p.render = function(time, suppressEvents, force) {
+            var tween = this._first,
+                next;
+            this._totalTime = this._time = this._rawPrevTime = time;
+            while (tween) {
+                next = tween._next; //record it here because the value could change after rendering...
+                if (tween._active || (time >= tween._startTime && !tween._paused)) {
+                    if (!tween._reversed) {
+                        tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);
+                    } else {
+                        tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force);
+                    }
+                }
+                tween = next;
+            }
+        };
+
+        p.rawTime = function() {
+            if (!_tickerActive) {
+                _ticker.wake();
+            }
+            return this._totalTime;
+        };
+
+/*
+ * ----------------------------------------------------------------
+ * TweenLite
+ * ----------------------------------------------------------------
+ */
+        var TweenLite = _class("TweenLite", function(target, duration, vars) {
+                Animation.call(this, duration, vars);
+                this.render = TweenLite.prototype.render; //speed optimization (avoid prototype lookup on this "hot" method)
+
+                if (target == null) {
+                    throw "Cannot tween a null target.";
+                }
+
+                this.target = target = (typeof(target) !== "string") ? target : TweenLite.selector(target) || target;
+
+                var isSelector = (target.jquery || (target.length && target !== window && target[0] && (target[0] === window || (target[0].nodeType && target[0].style && !target.nodeType)))),
+                    overwrite = this.vars.overwrite,
+                    i, targ, targets;
+
+                this._overwrite = overwrite = (overwrite == null) ? _overwriteLookup[TweenLite.defaultOverwrite] : (typeof(overwrite) === "number") ? overwrite >> 0 : _overwriteLookup[overwrite];
+
+                if ((isSelector || target instanceof Array || (target.push && _isArray(target))) && typeof(target[0]) !== "number") {
+                    this._targets = targets = _slice.call(target, 0);
+                    this._propLookup = [];
+                    this._siblings = [];
+                    for (i = 0; i < targets.length; i++) {
+                        targ = targets[i];
+                        if (!targ) {
+                            targets.splice(i--, 1);
+                            continue;
+                        } else if (typeof(targ) === "string") {
+                            targ = targets[i--] = TweenLite.selector(targ); //in case it's an array of strings
+                            if (typeof(targ) === "string") {
+                                targets.splice(i+1, 1); //to avoid an endless loop (can't imagine why the selector would return a string, but just in case)
+                            }
+                            continue;
+                        } else if (targ.length && targ !== window && targ[0] && (targ[0] === window || (targ[0].nodeType && targ[0].style && !targ.nodeType))) { //in case the user is passing in an array of selector objects (like jQuery objects), we need to check one more level and pull things out if necessary. Also note that <select> elements pass all the criteria regarding length and the first child having style, so we must also check to ensure the target isn't an HTML node itself.
+                            targets.splice(i--, 1);
+                            this._targets = targets = targets.concat(_slice.call(targ, 0));
+                            continue;
+                        }
+                        this._siblings[i] = _register(targ, this, false);
+                        if (overwrite === 1) if (this._siblings[i].length > 1) {
+                            _applyOverwrite(targ, this, null, 1, this._siblings[i]);
+                        }
+                    }
+
+                } else {
+                    this._propLookup = {};
+                    this._siblings = _register(target, this, false);
+                    if (overwrite === 1) if (this._siblings.length > 1) {
+                        _applyOverwrite(target, this, null, 1, this._siblings);
+                    }
+                }
+                if (this.vars.immediateRender || (duration === 0 && this._delay === 0 && this.vars.immediateRender !== false)) {
+                    this._time = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
+                    this.render(-this._delay);
+                }
+            }, true),
+            _isSelector = function(v) {
+                return (v.length && v !== window && v[0] && (v[0] === window || (v[0].nodeType && v[0].style && !v.nodeType))); //we cannot check "nodeType" if the target is window from within an iframe, otherwise it will trigger a security error in some browsers like Firefox.
+            },
+            _autoCSS = function(vars, target) {
+                var css = {},
+                    p;
+                for (p in vars) {
+                    if (!_reservedProps[p] && (!(p in target) || p === "transform" || p === "x" || p === "y" || p === "width" || p === "height" || p === "className" || p === "border") && (!_plugins[p] || (_plugins[p] && _plugins[p]._autoCSS))) { //note: <img> elements contain read-only "x" and "y" properties. We should also prioritize editing css width/height rather than the element's properties.
+                        css[p] = vars[p];
+                        delete vars[p];
+                    }
+                }
+                vars.css = css;
+            };
+
+        p = TweenLite.prototype = new Animation();
+        p.constructor = TweenLite;
+        p.kill()._gc = false;
+
+//----TweenLite defaults, overwrite management, and root updates ----------------------------------------------------
+
+        p.ratio = 0;
+        p._firstPT = p._targets = p._overwrittenProps = p._startAt = null;
+        p._notifyPluginsOfEnabled = p._lazy = false;
+
+        TweenLite.version = "1.12.1";
+        TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
+        TweenLite.defaultOverwrite = "auto";
+        TweenLite.ticker = _ticker;
+        TweenLite.autoSleep = true;
+        TweenLite.lagSmoothing = function(threshold, adjustedLag) {
+            _ticker.lagSmoothing(threshold, adjustedLag);
+        };
+        TweenLite.selector = window.$ || window.jQuery || function(e) { if (window.$) { TweenLite.selector = window.$; return window.$(e); } return window.document ? window.document.getElementById((e.charAt(0) === "#") ? e.substr(1) : e) : e; };
+
+        var _lazyTweens = [],
+            _lazyLookup = {},
+            _internals = TweenLite._internals = {isArray:_isArray, isSelector:_isSelector, lazyTweens:_lazyTweens}, //gives us a way to expose certain private values to other GreenSock classes without contaminating tha main TweenLite object.
+            _plugins = TweenLite._plugins = {},
+            _tweenLookup = _internals.tweenLookup = {},
+            _tweenLookupNum = 0,
+            _reservedProps = _internals.reservedProps = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, onCompleteScope:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onUpdateScope:1, onStart:1, onStartParams:1, onStartScope:1, onReverseComplete:1, onReverseCompleteParams:1, onReverseCompleteScope:1, onRepeat:1, onRepeatParams:1, onRepeatScope:1, easeParams:1, yoyo:1, immediateRender:1, repeat:1, repeatDelay:1, data:1, paused:1, reversed:1, autoCSS:1, lazy:1},
+            _overwriteLookup = {none:0, all:1, auto:2, concurrent:3, allOnStart:4, preexisting:5, "true":1, "false":0},
+            _rootFramesTimeline = Animation._rootFramesTimeline = new SimpleTimeline(),
+            _rootTimeline = Animation._rootTimeline = new SimpleTimeline(),
+            _lazyRender = function() {
+                var i = _lazyTweens.length;
+                _lazyLookup = {};
+                while (--i > -1) {
+                    a = _lazyTweens[i];
+                    if (a && a._lazy !== false) {
+                        a.render(a._lazy, false, true);
+                        a._lazy = false;
+                    }
+                }
+                _lazyTweens.length = 0;
+            };
+
+        _rootTimeline._startTime = _ticker.time;
+        _rootFramesTimeline._startTime = _ticker.frame;
+        _rootTimeline._active = _rootFramesTimeline._active = true;
+        setTimeout(_lazyRender, 1); //on some mobile devices, there isn't a "tick" before code runs which means any lazy renders wouldn't run before the next official "tick".
+
+        Animation._updateRoot = TweenLite.render = function() {
+                var i, a, p;
+                if (_lazyTweens.length) { //if code is run outside of the requestAnimationFrame loop, there may be tweens queued AFTER the engine refreshed, so we need to ensure any pending renders occur before we refresh again.
+                    _lazyRender();
+                }
+                _rootTimeline.render((_ticker.time - _rootTimeline._startTime) * _rootTimeline._timeScale, false, false);
+                _rootFramesTimeline.render((_ticker.frame - _rootFramesTimeline._startTime) * _rootFramesTimeline._timeScale, false, false);
+                if (_lazyTweens.length) {
+                    _lazyRender();
+                }
+                if (!(_ticker.frame % 120)) { //dump garbage every 120 frames...
+                    for (p in _tweenLookup) {
+                        a = _tweenLookup[p].tweens;
+                        i = a.length;
+                        while (--i > -1) {
+                            if (a[i]._gc) {
+                                a.splice(i, 1);
+                            }
+                        }
+                        if (a.length === 0) {
+                            delete _tweenLookup[p];
+                        }
+                    }
+                    //if there are no more tweens in the root timelines, or if they're all paused, make the _timer sleep to reduce load on the CPU slightly
+                    p = _rootTimeline._first;
+                    if (!p || p._paused) if (TweenLite.autoSleep && !_rootFramesTimeline._first && _ticker._listeners.tick.length === 1) {
+                        while (p && p._paused) {
+                            p = p._next;
+                        }
+                        if (!p) {
+                            _ticker.sleep();
+                        }
+                    }
+                }
+            };
+
+        _ticker.addEventListener("tick", Animation._updateRoot);
+
+        var _register = function(target, tween, scrub) {
+                var id = target._gsTweenID, a, i;
+                if (!_tweenLookup[id || (target._gsTweenID = id = "t" + (_tweenLookupNum++))]) {
+                    _tweenLookup[id] = {target:target, tweens:[]};
+                }
+                if (tween) {
+                    a = _tweenLookup[id].tweens;
+                    a[(i = a.length)] = tween;
+                    if (scrub) {
+                        while (--i > -1) {
+                            if (a[i] === tween) {
+                                a.splice(i, 1);
+                            }
+                        }
+                    }
+                }
+                return _tweenLookup[id].tweens;
+            },
+
+            _applyOverwrite = function(target, tween, props, mode, siblings) {
+                var i, changed, curTween, l;
+                if (mode === 1 || mode >= 4) {
+                    l = siblings.length;
+                    for (i = 0; i < l; i++) {
+                        if ((curTween = siblings[i]) !== tween) {
+                            if (!curTween._gc) if (curTween._enabled(false, false)) {
+                                changed = true;
+                            }
+                        } else if (mode === 5) {
+                            break;
+                        }
+                    }
+                    return changed;
+                }
+                //NOTE: Add 0.0000000001 to overcome floating point errors that can cause the startTime to be VERY slightly off (when a tween's time() is set for example)
+                var startTime = tween._startTime + _tinyNum,
+                    overlaps = [],
+                    oCount = 0,
+                    zeroDur = (tween._duration === 0),
+                    globalStart;
+                i = siblings.length;
+                while (--i > -1) {
+                    if ((curTween = siblings[i]) === tween || curTween._gc || curTween._paused) {
+                        //ignore
+                    } else if (curTween._timeline !== tween._timeline) {
+                        globalStart = globalStart || _checkOverlap(tween, 0, zeroDur);
+                        if (_checkOverlap(curTween, globalStart, zeroDur) === 0) {
+                            overlaps[oCount++] = curTween;
+                        }
+                    } else if (curTween._startTime <= startTime) if (curTween._startTime + curTween.totalDuration() / curTween._timeScale > startTime) if (!((zeroDur || !curTween._initted) && startTime - curTween._startTime <= 0.0000000002)) {
+                        overlaps[oCount++] = curTween;
+                    }
+                }
+
+                i = oCount;
+                while (--i > -1) {
+                    curTween = overlaps[i];
+                    if (mode === 2) if (curTween._kill(props, target)) {
+                        changed = true;
+                    }
+                    if (mode !== 2 || (!curTween._firstPT && curTween._initted)) {
+                        if (curTween._enabled(false, false)) { //if all property tweens have been overwritten, kill the tween.
+                            changed = true;
+                        }
+                    }
+                }
+                return changed;
+            },
+
+            _checkOverlap = function(tween, reference, zeroDur) {
+                var tl = tween._timeline,
+                    ts = tl._timeScale,
+                    t = tween._startTime;
+                while (tl._timeline) {
+                    t += tl._startTime;
+                    ts *= tl._timeScale;
+                    if (tl._paused) {
+                        return -100;
+                    }
+                    tl = tl._timeline;
+                }
+                t /= ts;
+                return (t > reference) ? t - reference : ((zeroDur && t === reference) || (!tween._initted && t - reference < 2 * _tinyNum)) ? _tinyNum : ((t += tween.totalDuration() / tween._timeScale / ts) > reference + _tinyNum) ? 0 : t - reference - _tinyNum;
+            };
+
+
+//---- TweenLite instance methods -----------------------------------------------------------------------------
+
+        p._init = function() {
+            var v = this.vars,
+                op = this._overwrittenProps,
+                dur = this._duration,
+                immediate = !!v.immediateRender,
+                ease = v.ease,
+                i, initPlugins, pt, p, startVars;
+            if (v.startAt) {
+                if (this._startAt) {
+                    this._startAt.render(-1, true); //if we've run a startAt previously (when the tween instantiated), we should revert it so that the values re-instantiate correctly particularly for relative tweens. Without this, a TweenLite.fromTo(obj, 1, {x:"+=100"}, {x:"-=100"}), for example, would actually jump to +=200 because the startAt would run twice, doubling the relative change.
+                    this._startAt.kill();
+                }
+                startVars = {};
+                for (p in v.startAt) { //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, 1, from, to).fromTo(e, 1, to, from);
+                    startVars[p] = v.startAt[p];
+                }
+                startVars.overwrite = false;
+                startVars.immediateRender = true;
+                startVars.lazy = (immediate && v.lazy !== false);
+                startVars.startAt = startVars.delay = null; //no nesting of startAt objects allowed (otherwise it could cause an infinite loop).
+                this._startAt = TweenLite.to(this.target, 0, startVars);
+                if (immediate) {
+                    if (this._time > 0) {
+                        this._startAt = null; //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in TimelineLite/Max instances where immediateRender was false (which is the default in the convenience methods like from()).
+                    } else if (dur !== 0) {
+                        return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a TimelineLite or TimelineMax, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.
+                    }
+                }
+            } else if (v.runBackwards && dur !== 0) {
+                //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)
+                if (this._startAt) {
+                    this._startAt.render(-1, true);
+                    this._startAt.kill();
+                    this._startAt = null;
+                } else {
+                    pt = {};
+                    for (p in v) { //copy props into a new object and skip any reserved props, otherwise onComplete or onUpdate or onStart could fire. We should, however, permit autoCSS to go through.
+                        if (!_reservedProps[p] || p === "autoCSS") {
+                            pt[p] = v[p];
+                        }
+                    }
+                    pt.overwrite = 0;
+                    pt.data = "isFromStart"; //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.
+                    pt.lazy = (immediate && v.lazy !== false);
+                    pt.immediateRender = immediate; //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)
+                    this._startAt = TweenLite.to(this.target, 0, pt);
+                    if (!immediate) {
+                        this._startAt._init(); //ensures that the initial values are recorded
+                        this._startAt._enabled(false); //no need to have the tween render on the next cycle. Disable it because we'll always manually control the renders of the _startAt tween.
+                    } else if (this._time === 0) {
+                        return;
+                    }
+                }
+            }
+            if (!ease) {
+                this._ease = TweenLite.defaultEase;
+            } else if (ease instanceof Ease) {
+                this._ease = (v.easeParams instanceof Array) ? ease.config.apply(ease, v.easeParams) : ease;
+            } else {
+                this._ease = (typeof(ease) === "function") ? new Ease(ease, v.easeParams) : _easeMap[ease] || TweenLite.defaultEase;
+            }
+            this._easeType = this._ease._type;
+            this._easePower = this._ease._power;
+            this._firstPT = null;
+
+            if (this._targets) {
+                i = this._targets.length;
+                while (--i > -1) {
+                    if ( this._initProps( this._targets[i], (this._propLookup[i] = {}), this._siblings[i], (op ? op[i] : null)) ) {
+                        initPlugins = true;
+                    }
+                }
+            } else {
+                initPlugins = this._initProps(this.target, this._propLookup, this._siblings, op);
+            }
+
+            if (initPlugins) {
+                TweenLite._onPluginEvent("_onInitAllProps", this); //reorders the array in order of priority. Uses a static TweenPlugin method in order to minimize file size in TweenLite
+            }
+            if (op) if (!this._firstPT) if (typeof(this.target) !== "function") { //if all tweening properties have been overwritten, kill the tween. If the target is a function, it's probably a delayedCall so let it live.
+                this._enabled(false, false);
+            }
+            if (v.runBackwards) {
+                pt = this._firstPT;
+                while (pt) {
+                    pt.s += pt.c;
+                    pt.c = -pt.c;
+                    pt = pt._next;
+                }
+            }
+            this._onUpdate = v.onUpdate;
+            this._initted = true;
+        };
+
+        p._initProps = function(target, propLookup, siblings, overwrittenProps) {
+            var p, i, initPlugins, plugin, pt, v;
+            if (target == null) {
+                return false;
+            }
+
+            if (_lazyLookup[target._gsTweenID]) {
+                _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)
+            }
+
+            if (!this.vars.css) if (target.style) if (target !== window && target.nodeType) if (_plugins.css) if (this.vars.autoCSS !== false) { //it's so common to use TweenLite/Max to animate the css of DOM elements, we assume that if the target is a DOM element, that's what is intended (a convenience so that users don't have to wrap things in css:{}, although we still recommend it for a slight performance boost and better specificity). Note: we cannot check "nodeType" on the window inside an iframe.
+                _autoCSS(this.vars, target);
+            }
+            for (p in this.vars) {
+                v = this.vars[p];
+                if (_reservedProps[p]) {
+                    if (v) if ((v instanceof Array) || (v.push && _isArray(v))) if (v.join("").indexOf("{self}") !== -1) {
+                        this.vars[p] = v = this._swapSelfInParams(v, this);
+                    }
+
+                } else if (_plugins[p] && (plugin = new _plugins[p]())._onInitTween(target, this.vars[p], this)) {
+
+                    //t - target        [object]
+                    //p - property      [string]
+                    //s - start         [number]
+                    //c - change        [number]
+                    //f - isFunction    [boolean]
+                    //n - name          [string]
+                    //pg - isPlugin     [boolean]
+                    //pr - priority     [number]
+                    this._firstPT = pt = {_next:this._firstPT, t:plugin, p:"setRatio", s:0, c:1, f:true, n:p, pg:true, pr:plugin._priority};
+                    i = plugin._overwriteProps.length;
+                    while (--i > -1) {
+                        propLookup[plugin._overwriteProps[i]] = this._firstPT;
+                    }
+                    if (plugin._priority || plugin._onInitAllProps) {
+                        initPlugins = true;
+                    }
+                    if (plugin._onDisable || plugin._onEnable) {
+                        this._notifyPluginsOfEnabled = true;
+                    }
+
+                } else {
+                    this._firstPT = propLookup[p] = pt = {_next:this._firstPT, t:target, p:p, f:(typeof(target[p]) === "function"), n:p, pg:false, pr:0};
+                    pt.s = (!pt.f) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                    pt.c = (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) : (Number(v) - pt.s) || 0;
+                }
+                if (pt) if (pt._next) {
+                    pt._next._prev = pt;
+                }
+            }
+
+            if (overwrittenProps) if (this._kill(overwrittenProps, target)) { //another tween may have tried to overwrite properties of this tween before init() was called (like if two tweens start at the same time, the one created second will run first)
+                return this._initProps(target, propLookup, siblings, overwrittenProps);
+            }
+            if (this._overwrite > 1) if (this._firstPT) if (siblings.length > 1) if (_applyOverwrite(target, this, propLookup, this._overwrite, siblings)) {
+                this._kill(propLookup, target);
+                return this._initProps(target, propLookup, siblings, overwrittenProps);
+            }
+            if (this._firstPT) if ((this.vars.lazy !== false && this._duration) || (this.vars.lazy && !this._duration)) { //zero duration tweens don't lazy render by default; everything else does.
+                _lazyLookup[target._gsTweenID] = true;
+            }
+            return initPlugins;
+        };
+
+        p.render = function(time, suppressEvents, force) {
+            var prevTime = this._time,
+                duration = this._duration,
+                prevRawPrevTime = this._rawPrevTime,
+                isComplete, callback, pt, rawPrevTime;
+            if (time >= duration) {
+                this._totalTime = this._time = duration;
+                this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;
+                if (!this._reversed ) {
+                    isComplete = true;
+                    callback = "onComplete";
+                }
+                if (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                    if (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.
+                        time = 0;
+                    }
+                    if (time === 0 || prevRawPrevTime < 0 || prevRawPrevTime === _tinyNum) if (prevRawPrevTime !== time) {
+                        force = true;
+                        if (prevRawPrevTime > _tinyNum) {
+                            callback = "onReverseComplete";
+                        }
+                    }
+                    this._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                }
+
+            } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
+                this._totalTime = this._time = 0;
+                this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                if (prevTime !== 0 || (duration === 0 && prevRawPrevTime > 0 && prevRawPrevTime !== _tinyNum)) {
+                    callback = "onReverseComplete";
+                    isComplete = this._reversed;
+                }
+                if (time < 0) {
+                    this._active = false;
+                    if (duration === 0) if (this._initted || !this.vars.lazy || force) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                        if (prevRawPrevTime >= 0) {
+                            force = true;
+                        }
+                        this._rawPrevTime = rawPrevTime = (!suppressEvents || time || prevRawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
+                    }
+                } else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
+                    force = true;
+                }
+            } else {
+                this._totalTime = this._time = time;
+
+                if (this._easeType) {
+                    var r = time / duration, type = this._easeType, pow = this._easePower;
+                    if (type === 1 || (type === 3 && r >= 0.5)) {
+                        r = 1 - r;
+                    }
+                    if (type === 3) {
+                        r *= 2;
+                    }
+                    if (pow === 1) {
+                        r *= r;
+                    } else if (pow === 2) {
+                        r *= r * r;
+                    } else if (pow === 3) {
+                        r *= r * r * r;
+                    } else if (pow === 4) {
+                        r *= r * r * r * r;
+                    }
+
+                    if (type === 1) {
+                        this.ratio = 1 - r;
+                    } else if (type === 2) {
+                        this.ratio = r;
+                    } else if (time / duration < 0.5) {
+                        this.ratio = r / 2;
+                    } else {
+                        this.ratio = 1 - (r / 2);
+                    }
+
+                } else {
+                    this.ratio = this._ease.getRatio(time / duration);
+                }
+            }
+
+            if (this._time === prevTime && !force) {
+                return;
+            } else if (!this._initted) {
+                this._init();
+                if (!this._initted || this._gc) { //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example.
+                    return;
+                } else if (!force && this._firstPT && ((this.vars.lazy !== false && this._duration) || (this.vars.lazy && !this._duration))) {
+                    this._time = this._totalTime = prevTime;
+                    this._rawPrevTime = prevRawPrevTime;
+                    _lazyTweens.push(this);
+                    this._lazy = time;
+                    return;
+                }
+                //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.
+                if (this._time && !isComplete) {
+                    this.ratio = this._ease.getRatio(this._time / duration);
+                } else if (isComplete && this._ease._calcEnd) {
+                    this.ratio = this._ease.getRatio((this._time === 0) ? 0 : 1);
+                }
+            }
+            if (this._lazy !== false) { //in case a lazy render is pending, we should flush it because the new render is occuring now (imagine a lazy tween instantiating and then immediately the user calls tween.seek(tween.duration()), skipping to the end - the end render would be forced, and then if we didn't flush the lazy render, it'd fire AFTER the seek(), rendering it at the wrong time.
+                this._lazy = false;
+            }
+            if (!this._active) if (!this._paused && this._time !== prevTime && time >= 0) {
+                this._active = true;  //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.
+            }
+            if (prevTime === 0) {
+                if (this._startAt) {
+                    if (time >= 0) {
+                        this._startAt.render(time, suppressEvents, force);
+                    } else if (!callback) {
+                        callback = "_dummyGS"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area.
+                    }
+                }
+                if (this.vars.onStart) if (this._time !== 0 || duration === 0) if (!suppressEvents) {
+                    this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                }
+            }
+
+            pt = this._firstPT;
+            while (pt) {
+                if (pt.f) {
+                    pt.t[pt.p](pt.c * this.ratio + pt.s);
+                } else {
+                    pt.t[pt.p] = pt.c * this.ratio + pt.s;
+                }
+                pt = pt._next;
+            }
+
+            if (this._onUpdate) {
+                if (time < 0) if (this._startAt && this._startTime) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
+                    this._startAt.render(time, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
+                }
+                if (!suppressEvents) if (this._time !== prevTime || isComplete) {
+                    this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                }
+            }
+
+            if (callback) if (!this._gc) { //check _gc because there's a chance that kill() could be called in an onUpdate
+                if (time < 0 && this._startAt && !this._onUpdate && this._startTime) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
+                    this._startAt.render(time, suppressEvents, force);
+                }
+                if (isComplete) {
+                    if (this._timeline.autoRemoveChildren) {
+                        this._enabled(false, false);
+                    }
+                    this._active = false;
+                }
+                if (!suppressEvents && this.vars[callback]) {
+                    this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                }
+                if (duration === 0 && this._rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) { //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the "time" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless.
+                    this._rawPrevTime = 0;
+                }
+            }
+
+        };
+
+        p._kill = function(vars, target) {
+            if (vars === "all") {
+                vars = null;
+            }
+            if (vars == null) if (target == null || target === this.target) {
+                this._lazy = false;
+                return this._enabled(false, false);
+            }
+            target = (typeof(target) !== "string") ? (target || this._targets || this.target) : TweenLite.selector(target) || target;
+            var i, overwrittenProps, p, pt, propLookup, changed, killProps, record;
+            if ((_isArray(target) || _isSelector(target)) && typeof(target[0]) !== "number") {
+                i = target.length;
+                while (--i > -1) {
+                    if (this._kill(vars, target[i])) {
+                        changed = true;
+                    }
+                }
+            } else {
+                if (this._targets) {
+                    i = this._targets.length;
+                    while (--i > -1) {
+                        if (target === this._targets[i]) {
+                            propLookup = this._propLookup[i] || {};
+                            this._overwrittenProps = this._overwrittenProps || [];
+                            overwrittenProps = this._overwrittenProps[i] = vars ? this._overwrittenProps[i] || {} : "all";
+                            break;
+                        }
+                    }
+                } else if (target !== this.target) {
+                    return false;
+                } else {
+                    propLookup = this._propLookup;
+                    overwrittenProps = this._overwrittenProps = vars ? this._overwrittenProps || {} : "all";
+                }
+
+                if (propLookup) {
+                    killProps = vars || propLookup;
+                    record = (vars !== overwrittenProps && overwrittenProps !== "all" && vars !== propLookup && (typeof(vars) !== "object" || !vars._tempKill)); //_tempKill is a super-secret way to delete a particular tweening property but NOT have it remembered as an official overwritten property (like in BezierPlugin)
+                    for (p in killProps) {
+                        if ((pt = propLookup[p])) {
+                            if (pt.pg && pt.t._kill(killProps)) {
+                                changed = true; //some plugins need to be notified so they can perform cleanup tasks first
+                            }
+                            if (!pt.pg || pt.t._overwriteProps.length === 0) {
+                                if (pt._prev) {
+                                    pt._prev._next = pt._next;
+                                } else if (pt === this._firstPT) {
+                                    this._firstPT = pt._next;
+                                }
+                                if (pt._next) {
+                                    pt._next._prev = pt._prev;
+                                }
+                                pt._next = pt._prev = null;
+                            }
+                            delete propLookup[p];
+                        }
+                        if (record) {
+                            overwrittenProps[p] = 1;
+                        }
+                    }
+                    if (!this._firstPT && this._initted) { //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.
+                        this._enabled(false, false);
+                    }
+                }
+            }
+            return changed;
+        };
+
+        p.invalidate = function() {
+            if (this._notifyPluginsOfEnabled) {
+                TweenLite._onPluginEvent("_onDisable", this);
+            }
+            this._firstPT = null;
+            this._overwrittenProps = null;
+            this._onUpdate = null;
+            this._startAt = null;
+            this._initted = this._active = this._notifyPluginsOfEnabled = this._lazy = false;
+            this._propLookup = (this._targets) ? {} : [];
+            return this;
+        };
+
+        p._enabled = function(enabled, ignoreTimeline) {
+            if (!_tickerActive) {
+                _ticker.wake();
+            }
+            if (enabled && this._gc) {
+                var targets = this._targets,
+                    i;
+                if (targets) {
+                    i = targets.length;
+                    while (--i > -1) {
+                        this._siblings[i] = _register(targets[i], this, true);
+                    }
+                } else {
+                    this._siblings = _register(this.target, this, true);
+                }
+            }
+            Animation.prototype._enabled.call(this, enabled, ignoreTimeline);
+            if (this._notifyPluginsOfEnabled) if (this._firstPT) {
+                return TweenLite._onPluginEvent((enabled ? "_onEnable" : "_onDisable"), this);
+            }
+            return false;
+        };
+
+
+//----TweenLite static methods -----------------------------------------------------
+
+        TweenLite.to = function(target, duration, vars) {
+            return new TweenLite(target, duration, vars);
+        };
+
+        TweenLite.from = function(target, duration, vars) {
+            vars.runBackwards = true;
+            vars.immediateRender = (vars.immediateRender != false);
+            return new TweenLite(target, duration, vars);
+        };
+
+        TweenLite.fromTo = function(target, duration, fromVars, toVars) {
+            toVars.startAt = fromVars;
+            toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false);
+            return new TweenLite(target, duration, toVars);
+        };
+
+        TweenLite.delayedCall = function(delay, callback, params, scope, useFrames) {
+            return new TweenLite(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onCompleteScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, onReverseCompleteScope:scope, immediateRender:false, useFrames:useFrames, overwrite:0});
+        };
+
+        TweenLite.set = function(target, vars) {
+            return new TweenLite(target, 0, vars);
+        };
+
+        TweenLite.getTweensOf = function(target, onlyActive) {
+            if (target == null) { return []; }
+            target = (typeof(target) !== "string") ? target : TweenLite.selector(target) || target;
+            var i, a, j, t;
+            if ((_isArray(target) || _isSelector(target)) && typeof(target[0]) !== "number") {
+                i = target.length;
+                a = [];
+                while (--i > -1) {
+                    a = a.concat(TweenLite.getTweensOf(target[i], onlyActive));
+                }
+                i = a.length;
+                //now get rid of any duplicates (tweens of arrays of objects could cause duplicates)
+                while (--i > -1) {
+                    t = a[i];
+                    j = i;
+                    while (--j > -1) {
+                        if (t === a[j]) {
+                            a.splice(i, 1);
+                        }
+                    }
+                }
+            } else {
+                a = _register(target).concat();
+                i = a.length;
+                while (--i > -1) {
+                    if (a[i]._gc || (onlyActive && !a[i].isActive())) {
+                        a.splice(i, 1);
+                    }
+                }
+            }
+            return a;
+        };
+
+        TweenLite.killTweensOf = TweenLite.killDelayedCallsTo = function(target, onlyActive, vars) {
+            if (typeof(onlyActive) === "object") {
+                vars = onlyActive; //for backwards compatibility (before "onlyActive" parameter was inserted)
+                onlyActive = false;
+            }
+            var a = TweenLite.getTweensOf(target, onlyActive),
+                i = a.length;
+            while (--i > -1) {
+                a[i]._kill(vars, target);
+            }
+        };
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * TweenPlugin   (could easily be split out as a separate file/class, but included for ease of use (so that people don't need to include another <script> call before loading plugins which is easy to forget)
+ * ----------------------------------------------------------------
+ */
+        var TweenPlugin = _class("plugins.TweenPlugin", function(props, priority) {
+                    this._overwriteProps = (props || "").split(",");
+                    this._propName = this._overwriteProps[0];
+                    this._priority = priority || 0;
+                    this._super = TweenPlugin.prototype;
+                }, true);
+
+        p = TweenPlugin.prototype;
+        TweenPlugin.version = "1.10.1";
+        TweenPlugin.API = 2;
+        p._firstPT = null;
+
+        p._addTween = function(target, prop, start, end, overwriteProp, round) {
+            var c, pt;
+            if (end != null && (c = (typeof(end) === "number" || end.charAt(1) !== "=") ? Number(end) - start : parseInt(end.charAt(0) + "1", 10) * Number(end.substr(2)))) {
+                this._firstPT = pt = {_next:this._firstPT, t:target, p:prop, s:start, c:c, f:(typeof(target[prop]) === "function"), n:overwriteProp || prop, r:round};
+                if (pt._next) {
+                    pt._next._prev = pt;
+                }
+                return pt;
+            }
+        };
+
+        p.setRatio = function(v) {
+            var pt = this._firstPT,
+                min = 0.000001,
+                val;
+            while (pt) {
+                val = pt.c * v + pt.s;
+                if (pt.r) {
+                    val = Math.round(val);
+                } else if (val < min) if (val > -min) { //prevents issues with converting very small numbers to strings in the browser
+                    val = 0;
+                }
+                if (pt.f) {
+                    pt.t[pt.p](val);
+                } else {
+                    pt.t[pt.p] = val;
+                }
+                pt = pt._next;
+            }
+        };
+
+        p._kill = function(lookup) {
+            var a = this._overwriteProps,
+                pt = this._firstPT,
+                i;
+            if (lookup[this._propName] != null) {
+                this._overwriteProps = [];
+            } else {
+                i = a.length;
+                while (--i > -1) {
+                    if (lookup[a[i]] != null) {
+                        a.splice(i, 1);
+                    }
+                }
+            }
+            while (pt) {
+                if (lookup[pt.n] != null) {
+                    if (pt._next) {
+                        pt._next._prev = pt._prev;
+                    }
+                    if (pt._prev) {
+                        pt._prev._next = pt._next;
+                        pt._prev = null;
+                    } else if (this._firstPT === pt) {
+                        this._firstPT = pt._next;
+                    }
+                }
+                pt = pt._next;
+            }
+            return false;
+        };
+
+        p._roundProps = function(lookup, value) {
+            var pt = this._firstPT;
+            while (pt) {
+                if (lookup[this._propName] || (pt.n != null && lookup[ pt.n.split(this._propName + "_").join("") ])) { //some properties that are very plugin-specific add a prefix named after the _propName plus an underscore, so we need to ignore that extra stuff here.
+                    pt.r = value;
+                }
+                pt = pt._next;
+            }
+        };
+
+        TweenLite._onPluginEvent = function(type, tween) {
+            var pt = tween._firstPT,
+                changed, pt2, first, last, next;
+            if (type === "_onInitAllProps") {
+                //sorts the PropTween linked list in order of priority because some plugins need to render earlier/later than others, like MotionBlurPlugin applies its effects after all x/y/alpha tweens have rendered on each frame.
+                while (pt) {
+                    next = pt._next;
+                    pt2 = first;
+                    while (pt2 && pt2.pr > pt.pr) {
+                        pt2 = pt2._next;
+                    }
+                    if ((pt._prev = pt2 ? pt2._prev : last)) {
+                        pt._prev._next = pt;
+                    } else {
+                        first = pt;
+                    }
+                    if ((pt._next = pt2)) {
+                        pt2._prev = pt;
+                    } else {
+                        last = pt;
+                    }
+                    pt = next;
+                }
+                pt = tween._firstPT = first;
+            }
+            while (pt) {
+                if (pt.pg) if (typeof(pt.t[type]) === "function") if (pt.t[type]()) {
+                    changed = true;
+                }
+                pt = pt._next;
+            }
+            return changed;
+        };
+
+        TweenPlugin.activate = function(plugins) {
+            var i = plugins.length;
+            while (--i > -1) {
+                if (plugins[i].API === TweenPlugin.API) {
+                    _plugins[(new plugins[i]())._propName] = plugins[i];
+                }
+            }
+            return true;
+        };
+
+        //provides a more concise way to define plugins that have no dependencies besides TweenPlugin and TweenLite, wrapping common boilerplate stuff into one function (added in 1.9.0). You don't NEED to use this to define a plugin - the old way still works and can be useful in certain (rare) situations.
+        _gsDefine.plugin = function(config) {
+            if (!config || !config.propName || !config.init || !config.API) { throw "illegal plugin definition."; }
+            var propName = config.propName,
+                priority = config.priority || 0,
+                overwriteProps = config.overwriteProps,
+                map = {init:"_onInitTween", set:"setRatio", kill:"_kill", round:"_roundProps", initAll:"_onInitAllProps"},
+                Plugin = _class("plugins." + propName.charAt(0).toUpperCase() + propName.substr(1) + "Plugin",
+                    function() {
+                        TweenPlugin.call(this, propName, priority);
+                        this._overwriteProps = overwriteProps || [];
+                    }, (config.global === true)),
+                p = Plugin.prototype = new TweenPlugin(propName),
+                prop;
+            p.constructor = Plugin;
+            Plugin.API = config.API;
+            for (prop in map) {
+                if (typeof(config[prop]) === "function") {
+                    p[map[prop]] = config[prop];
+                }
+            }
+            Plugin.version = config.version;
+            TweenPlugin.activate([Plugin]);
+            return Plugin;
+        };
+
+
+        //now run through all the dependencies discovered and if any are missing, log that to the console as a warning. This is why it's best to have TweenLite load last - it can check all the dependencies for you.
+        a = window._gsQueue;
+        if (a) {
+            for (i = 0; i < a.length; i++) {
+                a[i]();
+            }
+            for (p in _defLookup) {
+                if (!_defLookup[p].func) {
+                    //window.console.log("GSAP encountered missing dependency: com.greensock." + p);
+                }
+            }
+        }
+
+        _tickerActive = false; //ensures that the first official animation forces a ticker.tick() to update the time when it is instantiated
+
+})(window);
+
+angular.module('b2b.att.collapse', ['b2b.att.transition'])
+
+// The collapsible directive indicates a block of html that will expand and collapse
+.directive('b2bCollapse', ['$transition', function($transition) {
+    // CSS transitions don't work with height: auto, so we have to manually change the height to a
+    // specific value and then once the animation completes, we can reset the height to auto.
+    // Unfortunately if you do this while the CSS transitions are specified (i.e. in the CSS class
+    // "collapse") then you trigger a change to height 0 in between.
+    // The fix is to remove the "collapse" CSS class while changing the height back to auto - phew!
+
+    var props = {
+        open: {
+            marginTop: null,
+            marginBottom: null,
+            paddingTop: null,
+            paddingBottom: null,
+            display: 'block'
+        },
+        closed: {
+            marginTop: 0,
+            marginBottom: 0,
+            paddingTop: 0,
+            paddingBottom: 0,
+            display: 'none'
+        }
+    };
+
+    var fixUpHeight = function(scope, element, height) {
+        // We remove the collapse CSS class to prevent a transition when we change to height: auto
+        element.removeClass('b2bCollapse');
+        element.css({height: height});
+        //adjusting for any margin or padding
+        if (height === 0) {
+            element.css(props.closed);
+        } else {
+            element.css(props.open);
+        }
+        // It appears that  reading offsetWidth makes the browser realise that we have changed the
+        // height already :-/
+        var x = element[0].offsetWidth;
+        element.addClass('b2bCollapse');
+    };
+
+    return {
+        link: function(scope, element, attrs) {
+            var isCollapsed;
+            var initialAnimSkip = true;
+            scope.$watch(function() {
+                return element[0].scrollHeight;
+            }, function(value) {
+                //The listener is called when scrollHeight changes
+                //It actually does on 2 scenarios: 
+                // 1. Parent is set to display none
+                // 2. angular bindings inside are resolved
+                //When we have a change of scrollHeight we are setting again the correct height if the group is opened
+                if (element[0].scrollHeight !== 0) {
+                    if (!isCollapsed) {
+                        if (initialAnimSkip) {
+                            fixUpHeight(scope, element, element[0].scrollHeight + 'px');
+                        } else {
+                            fixUpHeight(scope, element, 'auto');
+                            element.css({overflow: 'visible'});
+                        }
+                    }
+                }
+            });
+
+            scope.$watch(attrs.b2bCollapse, function(value) {
+                if (value) {
+                    collapse();
+                } else {
+                    expand();
+                }
+            });
+
+
+            var currentTransition;
+            var doTransition = function(change) {
+                if (currentTransition) {
+                    currentTransition.cancel();
+                }
+                currentTransition = $transition(element, change);
+                currentTransition.then(
+                        function() {
+                            currentTransition = undefined;
+                        },
+                        function() {
+                            currentTransition = undefined;
+                        }
+                );
+                return currentTransition;
+            };
+
+            var expand = function() {
+                scope.postTransition = true; 
+                if (initialAnimSkip) {
+                    initialAnimSkip = false;
+                    if (!isCollapsed) {
+                        fixUpHeight(scope, element, 'auto');
+                    }
+                } else {
+                    //doTransition({ height : element[0].scrollHeight + 'px' })
+                    doTransition(angular.extend({height: element[0].scrollHeight + 'px'}, props.open))
+                            .then(function() {
+                                // This check ensures that we don't accidentally update the height if the user has closed
+                                // the group while the animation was still running
+                                if (!isCollapsed) {
+                                    fixUpHeight(scope, element, 'auto');
+                                }
+                            });
+                }
+                isCollapsed = false;
+            };
+
+            var collapse = function() {
+                isCollapsed = true;
+                if (initialAnimSkip) {
+                    initialAnimSkip = false;
+                    fixUpHeight(scope, element, 0);
+                } else {
+                    fixUpHeight(scope, element, element[0].scrollHeight + 'px');
+                    doTransition(angular.extend({height: 0}, props.closed)).then(function() {
+                        scope.postTransition = false;
+                    });
+                    element.css({overflow: 'hidden'});
+                }
+            };
+        }
+    };
+}]);
+angular.module('b2b.att.position', [])
+
+.factory('$position', ['$document', '$window', function ($document, $window) {
+    function getStyle(el, cssprop) {
+        if (el.currentStyle) { //IE
+            return el.currentStyle[cssprop];
+        } else if ($window.getComputedStyle) {
+            return $window.getComputedStyle(el)[cssprop];
+        }
+        // finally try and get inline style
+        return el.style[cssprop];
+    }
+
+    /**
+     * Checks if a given element is statically positioned
+     * @param element - raw DOM element
+     */
+    function isStaticPositioned(element) {
+        return (getStyle(element, "position") || 'static') === 'static';
+    }
+
+    /**
+     * returns the closest, non-statically positioned parentOffset of a given element
+     * @param element
+     */
+    var parentOffsetEl = function (element) {
+        var docDomEl = $document[0];
+        var offsetParent = element.offsetParent || docDomEl;
+        while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent)) {
+            offsetParent = offsetParent.offsetParent;
+        }
+        return offsetParent || docDomEl;
+    };
+
+    return {
+        /**
+         * Provides read-only equivalent of jQuery's position function:
+         * http://api.jquery.com/position/
+         */
+        position: function (element) {
+            var elBCR = this.offset(element);
+            var offsetParentBCR = {
+                top: 0,
+                left: 0
+            };
+            var offsetParentEl = parentOffsetEl(element[0]);
+            if (offsetParentEl !== $document[0]) {
+                offsetParentBCR = this.offset(angular.element(offsetParentEl));
+                offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;
+                offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;
+            }
+
+            return {
+                width: element.prop('offsetWidth'),
+                height: element.prop('offsetHeight'),
+                top: elBCR.top - offsetParentBCR.top,
+                left: elBCR.left - offsetParentBCR.left
+            };
+        },
+
+        /**
+         * Provides read-only equivalent of jQuery's offset function:
+         * http://api.jquery.com/offset/
+         */
+        offset: function (element) {
+            var boundingClientRect = element[0].getBoundingClientRect();
+            return {
+                width: element.prop('offsetWidth'),
+                height: element.prop('offsetHeight'),
+                top: boundingClientRect.top + ($window.pageYOffset || $document[0].body.scrollTop || $document[0].documentElement.scrollTop),
+                left: boundingClientRect.left + ($window.pageXOffset || $document[0].body.scrollLeft || $document[0].documentElement.scrollLeft)
+            };
+        },
+        
+         /**
+         * Provides functionality to check whether an element is in view port.
+         */
+        isElementInViewport: function (element) {
+            if (element) {
+                var rect = element[0].getBoundingClientRect();
+                return (
+                    rect.top >= 0 &&
+                    rect.left >= 0 &&
+                    rect.bottom <= ($window.innerHeight || $document[0].documentElement.clientHeight) &&
+                    rect.right <= ($window.innerWidth || $document[0].documentElement.clientWidth)
+                );
+            } else {
+                return false;
+            }
+        }
+    };
+}])
+
+.factory('$isElement', [function () {
+    var isElement = function (currentElem, targetElem, alternateElem) {
+        if (currentElem[0] === targetElem[0]) {
+            return true;
+        } else if (currentElem[0] === alternateElem[0]) {
+            return false;
+        } else {
+            return isElement((currentElem.parent()[0] && currentElem.parent()) || targetElem, targetElem, alternateElem);
+        }
+    };
+
+    return isElement;
+}])
+
+.directive('attPosition', ['$position', function ($position) {
+    return {
+        restrict: 'A',
+        link: function (scope, elem, attr) {
+            scope.$watchCollection(function () {
+                return $position.position(elem);
+            }, function (value) {
+                scope[attr.attPosition] = value;
+            });
+        }
+    };
+}]);
+
+angular.module('b2b.att.transition', [])
+
+.factory('$transition', ['$q', '$timeout', '$rootScope', function($q, $timeout, $rootScope) {
+
+  var $transition = function(element, trigger, options) {
+    options = options || {};
+    var deferred = $q.defer();
+    var endEventName = $transition[options.animation ? "animationEndEventName" : "transitionEndEventName"];
+
+    var transitionEndHandler = function() {
+      $rootScope.$apply(function() {
+        element.unbind(endEventName, transitionEndHandler);
+        deferred.resolve(element);
+      });
+    };
+
+    if (endEventName) {
+      element.bind(endEventName, transitionEndHandler);
+    }
+
+    // Wrap in a timeout to allow the browser time to update the DOM before the transition is to occur
+    $timeout(function() {
+      if ( angular.isString(trigger) ) {
+        element.addClass(trigger);
+      } else if ( angular.isFunction(trigger) ) {
+        trigger(element);
+      } else if ( angular.isObject(trigger) ) {
+        element.css(trigger);
+      }
+      //If browser does not support transitions, instantly resolve
+      if ( !endEventName ) {
+        deferred.resolve(element);
+      }
+    }, 100);
+
+    // Add our custom cancel function to the promise that is returned
+    // We can call this if we are about to run a new transition, which we know will prevent this transition from ending,
+    // i.e. it will therefore never raise a transitionEnd event for that transition
+    deferred.promise.cancel = function() {
+      if ( endEventName ) {
+        element.unbind(endEventName, transitionEndHandler);
+      }
+      deferred.reject('Transition cancelled');
+    };
+
+    return deferred.promise;
+  };
+
+  // Work out the name of the transitionEnd event
+  var transElement = document.createElement('trans');
+  var transitionEndEventNames = {
+    'WebkitTransition': 'webkitTransitionEnd',
+    'MozTransition': 'transitionend',
+    'OTransition': 'oTransitionEnd',
+    'transition': 'transitionend'
+  };
+  var animationEndEventNames = {
+    'WebkitTransition': 'webkitAnimationEnd',
+    'MozTransition': 'animationend',
+    'OTransition': 'oAnimationEnd',
+    'transition': 'animationend'
+  };
+  function findEndEventName(endEventNames) {
+    for (var name in endEventNames){
+      if (transElement.style[name] !== undefined) {
+        return endEventNames[name];
+      }
+    }
+  }
+  $transition.transitionEndEventName = findEndEventName(transitionEndEventNames);
+  $transition.animationEndEventName = findEndEventName(animationEndEventNames);
+  return $transition;
+}])
+
+.factory('$scrollTo', ['$window', function($window) {
+    var $scrollTo = function(offsetLeft, offsetTop, duration) {
+        TweenMax.to($window, duration || 1, {scrollTo: {y: offsetTop, x: offsetLeft}, ease: Power4.easeOut});
+    };
+    return $scrollTo;
+}])
+.factory('animation', function(){
+    return TweenMax;
+})
+.factory('$progressBar', function(){
+
+   //Provides a function to pass in code for closure purposes
+   var loadingAnimationCreator = function(onUpdateCallback){
+
+      //Use closure to setup some resuable code
+      var loadingAnimation = function(callback, duration){
+          TweenMax.to({}, duration, {
+              onUpdateParams: ["{self}"],
+              onUpdate: onUpdateCallback,
+              onComplete: callback
+          });
+      };
+      //Returns a function that takes a callback function and a duration for the animation
+      return (function(){
+        return loadingAnimation;
+      })();
+    };
+
+  return loadingAnimationCreator;
+})
+.factory('$height', function(){
+  var heightAnimation = function(element,duration,height,alpha){
+    TweenMax.to(element,
+      duration,
+      {height:height, autoAlpha:alpha},
+      0);
+  };
+  return heightAnimation;
+});
+angular.module('b2b.att.utilities', ['ngSanitize'])
+.constant('b2bUtilitiesConfig', {
+    prev: '37',
+    up: '38',
+    next: '39',
+    down: '40',
+    type: 'list',
+    columns: 1,
+    enableSearch: false,
+    searchTimer: 200,
+    circularTraversal: false
+})
+.constant('b2bWhenScrollEndsConstants', {
+    'threshold': 100,
+    'width': 0,
+    'height': 0
+})
+// All breakpoints ranges from >= min and < max
+.constant('b2bAwdBreakpoints', {
+    breakpoints: {
+        mobile: {
+            min: 1,
+            max: 768
+        },
+        tablet: {
+            min: 768,
+            max: 1025
+        },
+        desktop: {
+            min: 1025,
+            max: 1920
+        }
+    }
+})
+.filter('groupBy', function ($timeout) {
+    //Custom GroupBy Filter for treeNav, returns key string and value.childarray as set of grouped elements
+    return function (data, key) {
+        if (!key) return data;
+        var outputPropertyName = '__groupBy__' + key;
+        if (!data[outputPropertyName]) {
+            var result = {};
+            for (var i = 0; i < data.length; i++) {
+                if (!result[data[i][key]])
+                    result[data[i][key]] = {};
+                if (!result[data[i][key]].childArray) {
+                    result[data[i][key]].childArray = [];
+                }
+                result[data[i][key]].childArray.push(data[i]);
+                if (data[i].activeGrp && data[i].activeGrp == true) {
+                    console.log('make ' + data[i].grpChild + ' active');
+                    result[data[i][key]].showGroup = true;
+                }
+            }
+            Object.defineProperty(result, 'length', {enumerable: false,value: Object.keys(result).length});
+            Object.defineProperty(data, outputPropertyName, {enumerable: false,configurable: true,writable:false,value:result});
+            $timeout(function(){delete data[outputPropertyName];},0,false);
+        }
+        return data[outputPropertyName];
+    };
+})
+.filter('searchObjectPropertiesFilter', [function() {
+    return function(items, searchText, attrs) {
+        if(!searchText){
+            return items;
+        }
+        var filtered = [];
+        searchText = searchText.toLowerCase();
+        angular.forEach(items, function(item) {
+            angular.forEach(attrs, function(attr) {
+                if (item.hasOwnProperty(attr) && item[attr].toLowerCase().includes(searchText)) {
+                    filtered.push(item);
+                    return;
+                }
+            });
+        });
+        return filtered;
+    };
+}])
+.filter('unsafe',[ '$sce', function ($sce) { 
+    return function(val){ 
+       return $sce.trustAsHtml(val); 
+    }; 
+}])
+.filter('b2bHighlight', function () {
+    function escapeRegexp(queryToEscape) {
+        return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
+    }
+    return function (matchItem, query, className) {
+        return query && matchItem ? matchItem.replace(new RegExp(escapeRegexp(query), 'gi'), '<span class=\"' + className + '\">$&</span>') : matchItem;
+    }
+})
+/*License (MIT)
+Copyright © 2013 Matt Diamond
+https://github.com/cwilso/AudioRecorder/blob/master/js/recorderjs/recorder.js
+*/
+.factory('b2bRecorder', function() {
+
+    var Recorder = function(source, cfg) {
+        var WORKER_PATH = 'recorderWorker.js';
+        var config = cfg || {};
+        var bufferLen = config.bufferLen || 4096;
+        this.context = source.context;
+        if(!this.context.createScriptProcessor) {
+            this.node = this.context.createJavacriptProcessor(bufferLen, 2, 2);
+        } else {
+            this.node = this.context.createScriptProcessor(bufferLen, 2, 2);
+        }
+        var workerCode = 'function init(a){sampleRate=a.sampleRate}function record(a){recBuffersL.push(a[0]),recBuffersR.push(a[1]),recLength+=a[0].length}function exportWAV(a){var b=mergeBuffers(recBuffersL,recLength),c=mergeBuffers(recBuffersR,recLength),d=interleave(b,c),e=encodeWAV(d),f=new Blob([e],{type:a});this.postMessage(f)}function exportMonoWAV(a){var b=mergeBuffers(recBuffersL,recLength),c=encodeWAV(b,!0),d=new Blob([c],{type:a});this.postMessage(d)}function getBuffers(){var a=[];a.push(mergeBuffers(recBuffersL,recLength)),a.push(mergeBuffers(recBuffersR,recLength)),this.postMessage(a)}function clear(){recLength=0,recBuffersL=[],recBuffersR=[]}function mergeBuffers(a,b){for(var c=new Float32Array(b),d=0,e=0;e<a.length;e++)c.set(a[e],d),d+=a[e].length;return c}function interleave(a,b){for(var c=a.length+b.length,d=new Float32Array(c),e=0,f=0;e<c;)d[e++]=a[f],d[e++]=b[f],f++;return d}function floatTo16BitPCM(a,b,c){for(var d=0;d<c.length;d++,b+=2){var e=Math.max(-1,Math.min(1,c[d]));a.setInt16(b,e<0?32768*e:32767*e,!0)}}function writeString(a,b,c){for(var d=0;d<c.length;d++)a.setUint8(b+d,c.charCodeAt(d))}function encodeWAV(a,b){var c=new ArrayBuffer(44+2*a.length),d=new DataView(c);return writeString(d,0,"RIFF"),d.setUint32(4,32+2*a.length,!0),writeString(d,8,"WAVE"),writeString(d,12,"fmt "),d.setUint32(16,16,!0),d.setUint16(20,1,!0),d.setUint16(22,b?1:2,!0),d.setUint32(24,sampleRate,!0),d.setUint32(28,4*sampleRate,!0),d.setUint16(32,4,!0),d.setUint16(34,16,!0),writeString(d,36,"data"),d.setUint32(40,2*a.length,!0),floatTo16BitPCM(d,44,a),d}var recLength=0,recBuffersL=[],recBuffersR=[],sampleRate;this.onmessage=function(a){switch(a.data.command){case"init":init(a.data.config);break;case"record":record(a.data.buffer);break;case"exportWAV":exportWAV(a.data.type);break;case"exportMonoWAV":exportMonoWAV(a.data.type);break;case"getBuffers":getBuffers();break;case"clear":clear()}};';
+        var blob = new Blob([workerCode]);
+
+        var worker = new Worker(window.URL.createObjectURL(blob)); //TODO: Use a blob instead
+        worker.postMessage({
+            command: 'init',
+            config: {
+                sampleRate: this.context.sampleRate
+            }
+        });
+        var recording = false,
+            currCallback;
+
+        this.node.onaudioprocess = function(e) {
+            if (!recording) return;
+            worker.postMessage({
+                command: 'record',
+                buffer: [
+                    e.inputBuffer.getChannelData(0),
+                    e.inputBuffer.getChannelData(1)
+                ]
+            });
+        };
+
+        this.configure = function(cfg) {
+            for (var prop in cfg) {//TODO: look into using angular.extend() here
+                if (cfg.hasOwnProperty(prop)) {
+                    config[prop] = cfg[prop];
+                }
+            }
+        };
+
+        this.record = function() {
+            recording = true;
+        };
+
+        this.stop = function() {
+            recording = false;
+        };
+
+        this.clear = function() {
+            worker.postMessage({ command: 'clear' });
+            window.URL.revokeObjectURL(blob);
+        };
+
+        this.getBuffers = function(cb) {
+            currCallback = cb || config.callback;
+            worker.postMessage({ command: 'getBuffers' });
+        };
+
+        this.exportWAV = function(cb, type) {
+            currCallback = cb || config.callback;
+            type = type || config.type || 'audio/wav';
+            if (!currCallback) throw new Error('[b2bRecorder]: Callback not set!');
+            worker.postMessage({
+                command: 'exportWAV',
+                type: type
+            });
+        };
+
+        this.exportMonoWAV = function(cb, type) {
+            currCallback = cb || config.callback;
+            type = type || config.type || 'audio/wav';
+            if (!currCallback) throw new Error('[b2bRecorder]: Callback not set!');
+            worker.postMessage({
+                command: 'exportMonoWAV',
+                type: type
+            });
+        };
+
+        worker.onmessage = function(e) {
+            var blob = e.data;
+            currCallback(blob);
+        };
+
+        source.connect(this.node);
+        this.node.connect(this.context.destination); // if the script node is not connected to an output the "onaudioprocess" event is not triggerd in Chrome
+
+    };
+
+    return Recorder;
+
+})
+.factory('b2bViewport', function() {
+  /* Source: https://gist.github.com/bjankord/2399828 */
+  var _viewportWidth = function() {
+    var vpw;
+    var webkit = (!(window.webkitConvertPointFromNodeToPage == null));
+    
+    // Webkit:
+    if ( webkit ) {
+      var vpwtest = document.createElement( "div" );
+      // Sets test div to width 100%, !important overrides any other misc. box model styles that may be set in the CSS
+      vpwtest.style.cssText = "width:100% !important; margin:0 !important; padding:0 !important; border:none !important;";
+      document.documentElement.insertBefore( vpwtest, document.documentElement.firstChild );
+      vpw = vpwtest.offsetWidth;
+      document.documentElement.removeChild( vpwtest );
+    }
+    // IE 6-8:
+    else if ( window.innerWidth === undefined ) { 
+      vpw = document.documentElement.clientWidth; 
+    }
+    // Other:
+    else{
+      vpw =  window.innerWidth;
+    }
+
+    return (vpw);
+  }
+  return {
+    viewportWidth: _viewportWidth
+  };
+})
+.directive('b2bWhenScrollEnds', function(b2bWhenScrollEndsConstants, $log) {
+    return {
+        restrict: 'A',
+        link: function (scope, element, attrs) {
+            /**
+            * Exposed Attributes:
+            *       threshold - integer - number of pixels before scrollbar hits end that callback is called
+            *       width - integer - override for element's width (px)
+            *       height - integer - override for element's height (px)
+            *       axis - string - x/y for scroll bar axis
+            */
+            var threshold = parseInt(attrs.threshold, 10) || b2bWhenScrollEndsConstants.threshold;
+
+            if (!attrs.axis || attrs.axis === '') {
+                $log.warn('axis attribute must be defined for b2bWhenScrollEnds.');
+                return;
+            }
+
+            if (attrs.axis === 'x') {
+                visibleWidth = parseInt(attrs.width, 10) || b2bWhenScrollEndsConstants.width;
+                if (element.css('width')) {
+                    visibleWidth = element.css('width').split('px')[0];  
+                }
+
+                element[0].addEventListener('scroll', function() {
+                    var scrollableWidth = element.prop('scrollWidth');
+                    if (scrollableWidth === undefined) {
+                        scrollableWidth = 1;
+                    }
+                    var hiddenContentWidth = scrollableWidth - visibleWidth;
+
+                    if (hiddenContentWidth - element[0].scrollLeft <= threshold) {
+                        /* Scroll almost at bottom, load more rows */
+                        scope.$apply(attrs.b2bWhenScrollEnds);
+                    }
+                });
+            } else if (attrs.axis === 'y') {
+                visibleHeight = parseInt(attrs.height, 10) || b2bWhenScrollEndsConstants.height;
+                if (element.css('width')) {
+                    visibleHeight = element.css('height').split('px')[0]; 
+                }
+
+                element[0].addEventListener('scroll', function() {
+                    var scrollableHeight = element.prop('scrollHeight');
+                    if (scrollableHeight === undefined) {
+                        scrollableHeight = 1;
+                    }
+                    var hiddenContentHeight = scrollableHeight - visibleHeight;
+
+                    if (hiddenContentHeight - element[0].scrollTop <= threshold) {
+                        /* Scroll almost at bottom, load more rows */
+                        scope.$apply(attrs.b2bWhenScrollEnds);
+                    }
+                });
+            }
+        }
+    };
+})
+
+.factory('$windowBind', ['$window', '$timeout', function($window, $timeout) {
+    var win = angular.element($window);
+    var _scroll = function (flag, callbackFunc, scope) {
+        scope.$watch(flag, function (val) {
+            $timeout(function () {
+                if (val) {
+                    win.bind('scroll', callbackFunc);
+                } else {
+                    win.unbind('scroll', callbackFunc);
+                }
+            });
+        });
+    };
+
+    var throttle = function(type, name, obj) {
+        obj = obj || window;
+        var running = false;
+        var func = function() {
+            if (running) { return; }
+            running = true;
+             requestAnimationFrame(function() {
+                obj.dispatchEvent(new CustomEvent(name));
+                running = false;
+            });
+        };
+        obj.addEventListener(type, func);
+    };
+
+    var _resize = function(callbackFunc, scope) {
+        throttle("resize", "optimizedResize");
+        window.addEventListener("optimizedResize", function(event) {
+            callbackFunc();
+            //win.bind(event, callbackFunc);
+            if (!scope.$$phase) {
+                scope.$digest();
+            }
+        });
+    };
+
+    var _click = function (flag, callbackFunc, scope) {
+        scope.$watch(flag, function (val) {
+            $timeout(function () {
+                if (val) {
+                    win.bind('click', callbackFunc);
+                } else {
+                    win.unbind('click', callbackFunc);
+                }
+            });
+        });
+    };
+
+    var _event = function (event, flag, callbackFunc, scope, timeoutFlag, timeoutValue) {
+        if (timeoutFlag) {
+            if (!(timeoutValue)) {
+                timeoutValue = 0;
+            }
+            scope.$watch(flag, function (newVal, oldVal) {
+                if (newVal !== oldVal) {
+                    $timeout(function () {
+                        if (newVal) {
+                            win.bind(event, callbackFunc);
+                        } else {
+                            win.unbind(event, callbackFunc);
+                        }
+                    }, timeoutValue);
+                }
+            });
+        } else {
+            scope.$watch(flag, function (newVal, oldVal) {
+                if (newVal !== oldVal) {
+                    if (newVal) {
+                        win.bind(event, callbackFunc);
+                    } else {
+                        win.unbind(event, callbackFunc);
+                    }
+                }
+            });
+        }
+    };
+
+    return {
+        click: _click,
+        scroll: _scroll,
+        event: _event, 
+        resize: _resize
+    };
+}])
+
+.factory('keymap', function () {
+    return {
+        KEY: {
+            TAB: 9,
+            ENTER: 13,
+            ESC: 27,
+            SPACE: 32,
+            LEFT: 37,
+            UP: 38,
+            RIGHT: 39,
+            DOWN: 40,
+            SHIFT: 16,
+            CTRL: 17,
+            ALT: 18,
+            PAGE_UP: 33,
+            PAGE_DOWN: 34,
+            HOME: 36,
+            END: 35,
+            BACKSPACE: 8,
+            DELETE: 46,
+            COMMAND: 91
+        },
+        MAP: { 91 : "COMMAND", 8 : "BACKSPACE" , 9 : "TAB" , 13 : "ENTER" , 16 : "SHIFT" , 17 : "CTRL" , 18 : "ALT" , 19 : "PAUSEBREAK" , 20 : "CAPSLOCK" , 27 : "ESC" , 32 : "SPACE" , 33 : "PAGE_UP", 34 : "PAGE_DOWN" , 35 : "END" , 36 : "HOME" , 37 : "LEFT" , 38 : "UP" , 39 : "RIGHT" , 40 : "DOWN" , 43 : "+" , 44 : "PRINTSCREEN" , 45 : "INSERT" , 46 : "DELETE", 48 : "0" , 49 : "1" , 50 : "2" , 51 : "3" , 52 : "4" , 53 : "5" , 54 : "6" , 55 : "7" , 56 : "8" , 57 : "9" , 59 : ";", 61 : "=" , 65 : "A" , 66 : "B" , 67 : "C" , 68 : "D" , 69 : "E" , 70 : "F" , 71 : "G" , 72 : "H" , 73 : "I" , 74 : "J" , 75 : "K" , 76 : "L", 77 : "M" , 78 : "N" , 79 : "O" , 80 : "P" , 81 : "Q" , 82 : "R" , 83 : "S" , 84 : "T" , 85 : "U" , 86 : "V" , 87 : "W" , 88 : "X" , 89 : "Y" , 90 : "Z", 96 : "0" , 97 : "1" , 98 : "2" , 99 : "3" , 100 : "4" , 101 : "5" , 102 : "6" , 103 : "7" , 104 : "8" , 105 : "9", 106 : "*" , 107 : "+" , 109 : "-" , 110 : "." , 111 : "/", 112 : "F1" , 113 : "F2" , 114 : "F3" , 115 : "F4" , 116 : "F5" , 117 : "F6" , 118 : "F7" , 119 : "F8" , 120 : "F9" , 121 : "F10" , 122 : "F11" , 123 : "F12", 144 : "NUMLOCK" , 145 : "SCROLLLOCK" , 186 : ";" , 187 : "=" , 188 : "," , 189 : "-" , 190 : "." , 191 : "/" , 192 : "`" , 219 : "[" , 220 : "\\" , 221 : "]" , 222 : "'"
+        },
+        isControl: function (e) {
+            var k = e.keyCode;
+            switch (k) {
+            case this.KEY.COMMAND:
+            case this.KEY.SHIFT:
+            case this.KEY.CTRL:
+            case this.KEY.ALT:
+                return true;
+            default:;
+            }
+
+            if (e.metaKey) {
+                return true;
+            }
+
+            return false;
+        },
+        isFunctionKey: function (k) {
+            k = k.keyCode ? k.keyCode : k;
+            return k >= 112 && k <= 123;
+        },
+        isVerticalMovement: function (k) {
+            return ~[this.KEY.UP, this.KEY.DOWN].indexOf(k);
+        },
+        isHorizontalMovement: function (k) {
+            return ~[this.KEY.LEFT, this.KEY.RIGHT, this.KEY.BACKSPACE, this.KEY.DELETE].indexOf(k);
+        },
+        isAllowedKey: function (k) {
+            return (~[this.KEY.SPACE, this.KEY.ESC, this.KEY.ENTER].indexOf(k)) || this.isHorizontalMovement(k) || this.isVerticalMovement(k);
+        },
+        isNumericKey: function (e) {
+            var k = e.keyCode;
+            if ((k >= 48 && k <= 57) || (k >= 96 && k <= 105)) {
+                return true;
+            } else {
+                return false;
+            }
+        },
+        isAlphaNumericKey: function (e) {
+            var k = e.keyCode;
+            if ((k >= 48 && k <= 57) || (k >= 96 && k <= 105) || (k >= 65 && k <= 90)) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+    };
+})
+
+.factory('$isElement', [function () {
+    var isElement = function (currentElem, targetElem, alternateElem) {
+        if (currentElem[0] === targetElem[0]) {
+            return true;
+        } else if (currentElem[0] === alternateElem[0]) {
+            return false;
+        } else {
+            return isElement((currentElem.parent()[0] && currentElem.parent()) || targetElem, targetElem, alternateElem);
+        }
+    };
+
+    return isElement;
+}])
+
+.factory('events', function () {
+    var _stopPropagation = function (evt) {
+        if (evt.stopPropagation) {
+            evt.stopPropagation();
+        } else {
+            evt.returnValue = false;
+        }
+    };
+    var _preventDefault = function (evt) {
+        if (evt.preventDefault) {
+            evt.preventDefault();
+        } else {
+            evt.returnValue = false;
+        }
+    }
+    return {
+        stopPropagation: _stopPropagation,
+        preventDefault: _preventDefault
+    };
+})
+
+
+.factory('$documentBind', ['$document', '$timeout', function ($document, $timeout) {
+    var _click = function (flag, callbackFunc, scope) {
+        scope.$watch(flag, function (val) {
+            $timeout(function () {
+                if (val) {
+                    $document.bind('click', callbackFunc);
+                } else {
+                    $document.unbind('click', callbackFunc);
+                }
+            });
+        });
+    };
+
+    var _scroll = function (flag, callbackFunc, scope) {
+        scope.$watch(flag, function (val) {
+            $timeout(function () {
+                if (val) {
+                    $document.bind('scroll', callbackFunc);
+                } else {
+                    $document.unbind('scroll', callbackFunc);
+                }
+            });
+        });
+    };
+
+    var _event = function (event, flag, callbackFunc, scope, timeoutFlag, timeoutValue) {
+        if (timeoutFlag) {
+            if (!(timeoutValue)) {
+                timeoutValue = 0;
+            }
+            scope.$watch(flag, function (newVal, oldVal) {
+                if (newVal !== oldVal) {
+                    $timeout(function () {
+                        if (newVal) {
+                            $document.bind(event, callbackFunc);
+                        } else {
+                            $document.unbind(event, callbackFunc);
+                        }
+                    }, timeoutValue);
+                }
+            });
+        } else {
+            scope.$watch(flag, function (newVal, oldVal) {
+                if (newVal !== oldVal) {
+                    if (newVal) {
+                        $document.bind(event, callbackFunc);
+                    } else {
+                        $document.unbind(event, callbackFunc);
+                    }
+                }
+            });
+        }
+    };
+
+    return {
+        click: _click,
+        scroll: _scroll,
+        event: _event
+    };
+}])
+
+.directive('b2bOnlyNums', function (keymap) {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elm, attrs, ctrl) {
+            var maxChars = attrs.b2bOnlyNums ? attrs.b2bOnlyNums : 4;
+            elm.on('keydown', function (event) {
+                if ((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105)) {
+                    // check for maximum characters allowed
+                    if (elm.val().length < maxChars){
+                        return true;
+                    } else {
+                        event.preventDefault();
+                        return false;
+                    }
+                } else if ([8, 9, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) {
+                    // to allow backspace, tab, enter, escape, arrows
+                    return true;
+                } else if (event.altKey || event.ctrlKey) {
+                    // to allow alter, control, and shift keys
+                    return true;
+                } else {
+                    // to stop others
+                    event.preventDefault();
+                    return false;
+                }
+            });
+
+            var validateString = function (value) {
+                if (angular.isUndefined(value) || value === null || value === '') {
+                    return ctrl.$modelValue;
+                }
+                return value;
+            };
+            ctrl.$parsers.unshift(validateString);
+        }
+    }
+})
+
+.directive('b2bKeyupClick', [ function () {
+    return {
+        restrict: 'A',
+        link: function (scope, elem, attr) {
+            var keyCode = [];
+            attr.$observe('b2bKeyupClick', function (value) {
+                if (value) {
+                    keyCode = value.split(',');
+                }
+            });
+            elem.bind('keydown keyup', function (ev) {
+                var keyCodeCondition = function () {
+                    var flag = false;
+                    if (!(ev.keyCode)) {
+                        if (ev.which) {
+                            ev.keyCode = ev.which;
+                        } else if (ev.charCode) {
+                            ev.keyCode = ev.charCode;
+                        }
+                    }
+                    if ((ev.keyCode && keyCode.indexOf(ev.keyCode.toString()) > -1)) {
+                        flag = true;
+                    }
+                    return flag;
+                };
+                if (ev.type === 'keydown' && keyCodeCondition()) {
+                    ev.preventDefault();
+                }
+                else if (ev.type === 'keyup' && keyCodeCondition()) {
+                    elem[0].click();
+                }
+            });
+        }
+    };
+}])
+
+.factory('b2bDOMHelper', function() {
+
+    var _isTabable = function(node) {
+        var element = angular.element(node);
+        var tagName = element[0].tagName.toUpperCase();
+
+        if (isHidden(element)) {
+            return false;
+        }
+        if (element.attr('tabindex') !== undefined) {
+            return (parseInt(element.attr('tabindex'), 10) >= 0);
+        }
+        if (tagName === 'A' || tagName === 'AREA' || tagName === 'BUTTON' || tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {
+            if (tagName === 'A' || tagName === 'AREA') {
+                // anchors/areas without href are not focusable
+                return (element[0].href !== '');
+            }
+            return !(element[0].disabled || element[0].readOnly);
+        }
+        return false;
+    };
+
+    function isValidChild(child) {
+        return child.nodeType == 1 && child.nodeName != 'SCRIPT' && child.nodeName != 'STYLE';
+    }
+    
+    function isHidden(obj) {
+        var elem = angular.element(obj);
+        var elemStyle = undefined;
+        if(obj instanceof HTMLElement){
+            elemStyle = window.getComputedStyle(obj);
+        }
+        else {
+            elemStyle = window.getComputedStyle(obj[0]);
+        }
+        return elem.hasClass('ng-hide') || elem.css('display') === 'none' || elemStyle.display === 'none' || elemStyle.visibility === 'hidden' || elem.css('visibility') === 'hidden';
+    }
+
+    function hasValidParent(obj) {
+        return (isValidChild(obj) && obj.parentElement.nodeName !== 'BODY');
+    }
+
+    function traverse(obj, fromTop) {
+        var obj = obj || document.getElementsByTagName('body')[0];
+        if (isValidChild(obj) && _isTabable(obj)) {
+            return obj;
+        }
+        // If object is hidden, skip it's children
+        if (isValidChild(obj) && isHidden(obj)) {
+            return undefined;
+        } 
+        // If object is hidden, skip it's children
+        if (angular.element(obj).hasClass('ng-hide')) {
+            return undefined;
+        }  
+        if (obj.hasChildNodes()) {
+            var child;
+            if (fromTop) {
+                child = obj.firstChild;
+            } else {
+                child = obj.lastChild;
+            }
+            while(child) {
+                var res =  traverse(child, fromTop);
+                if(res){
+                    return res;
+                }
+                else{
+                    if (fromTop) {
+                        child = child.nextSibling;
+                    } else {
+                        child = child.previousSibling;
+                    }
+                }
+            }
+        }
+        else{
+            return undefined;
+        }
+    }
+
+    var _previousElement = function(el, isFocusable){
+
+        var elem = el;
+        if (el.hasOwnProperty('length')) {
+            elem = el[0];
+        }
+
+        var parent = elem.parentElement;
+        var previousElem = undefined;
+
+        if(isFocusable) {
+            if (hasValidParent(elem)) {
+                var siblings = angular.element(parent).children();
+                if (siblings.length > 0) {
+                    // Good practice to splice out the elem from siblings if there, saving some time.
+                    // We allow for a quick check for jumping to parent first before removing. 
+                    if (siblings[0] === elem) {
+                        // If we are looking at immidiate parent and elem is first child, we need to go higher
+                        var e = _previousElement(angular.element(elem).parent(), isFocusable);
+                        if (_isTabable(e)) {
+                            return e;
+                        }
+                    } else {
+                        // I need to filter myself and any nodes next to me from the siblings
+                        var indexOfElem = Array.prototype.indexOf.call(siblings, elem);
+                        siblings = Array.prototype.filter.call(siblings, function(item, itemIndex) {
+                            if (!angular.equals(elem, item) && itemIndex < indexOfElem) {
+                                return true;
+                            }
+                        });
+                    }
+                    // We need to search backwards
+                    for (var i = 0; i <= siblings.length-1; i++) {//for (var i = siblings.length-1; i >= 0; i--) {
+                        var ret = traverse(siblings[i], false);
+                        if (ret !== undefined) {
+                            return ret;
+                        }
+                    }
+
+                    var e = _previousElement(angular.element(elem).parent(), isFocusable);
+                    if (_isTabable(e)) {
+                        return e;
+                    }
+                }
+            }
+        } else {
+            var siblings = angular.element(parent).children();
+            if (siblings.length > 1) {
+                // Since indexOf is on Array.prototype and parent.children is a NodeList, we have to use call()
+                var index = Array.prototype.indexOf.call(siblings, elem);
+                previousElem = siblings[index-1];
+            }
+        }
+        return previousElem;
+    };
+
+    var _lastTabableElement = function(el) {
+        /* This will return the first tabable element from the parent el */
+        var elem = el;
+        if (el.hasOwnProperty('length')) {
+            elem = el[0];
+        }
+
+        return traverse(elem, false);
+    };
+
+    var _firstTabableElement = function(el) {
+        /* This will return the first tabable element from the parent el */
+        var elem = el;
+        if (el.hasOwnProperty('length')) {
+            elem = el[0];
+        }
+
+        return traverse(elem, true);
+    };
+
+    var _isInDOM = function(obj) {
+      return document.documentElement.contains(obj);
+    }
+
+    return {
+        firstTabableElement: _firstTabableElement,
+        lastTabableElement: _lastTabableElement,
+        previousElement: _previousElement,
+        isInDOM: _isInDOM,
+        isTabable: _isTabable,
+        isHidden: isHidden
+    };
+})
+
+.factory('trapFocusInElement', ['$document', '$isElement', 'DOMHelper', 'keymap', function ($document, $isElement, DOMHelper, keymap) {
+    var elementStack = [];
+    var stackHead = undefined;
+    var trapFocusInElement = function (flag) {
+        var bodyElements = $document.find('body').children();
+
+        var firstTabableElement = angular.element(DOMHelper.firstTabableElement(stackHead));
+        var lastTabableElement = angular.element(DOMHelper.lastTabableElement(stackHead));
+
+        var trapKeyboardFocusInFirstElement = function (e) {
+            if (!e.keyCode) {
+                e.keyCode = e.which;
+            }
+
+            if (e.shiftKey === true && e.keyCode === keymap.KEY.TAB) {
+                lastTabableElement[0].focus();
+                e.preventDefault(e);
+                e.stopPropagation(e);
+            }
+
+        };
+
+        var trapKeyboardFocusInLastElement = function (e) {
+            if (!e.keyCode) {
+                e.keyCode = e.which;
+            }
+
+            if (e.shiftKey === false && e.keyCode === keymap.KEY.TAB) {
+                firstTabableElement[0].focus();
+                e.preventDefault(e);
+                e.stopPropagation(e);
+            }
+        };
+
+        if (flag) {
+            for (var i = 0; i < bodyElements.length; i++) {
+                if (bodyElements[i] !== stackHead[0]) {
+                    bodyElements.eq(i).attr('aria-hidden', true);
+                }
+            }
+            firstTabableElement.bind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.bind('keydown', trapKeyboardFocusInLastElement);
+        } else {
+            for (var j = 0; j < bodyElements.length; j++) {
+                if (bodyElements[j] !== stackHead[0]) {
+                    bodyElements.eq(j).removeAttr('aria-hidden');
+                }
+            }
+            firstTabableElement.unbind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.unbind('keydown', trapKeyboardFocusInLastElement);
+        }
+    };
+    var toggleTrapFocusInElement = function (flag, element) {
+        if (angular.isDefined(flag) && angular.isDefined(element)) {
+            if (angular.isUndefined(stackHead)) {
+                stackHead = element;
+                trapFocusInElement(flag);
+            } else {
+                if (flag) {
+                    trapFocusInElement(false);
+                    elementStack.push(stackHead);
+                    stackHead = element;
+                    trapFocusInElement(true);
+                } else {
+                    if (stackHead.prop('$$hashKey') === element.prop('$$hashKey')) {
+                        trapFocusInElement(false);
+                        stackHead = elementStack.pop();
+                        if (angular.isDefined(stackHead)) {
+                            trapFocusInElement(true);
+                        }
+                    }
+                }
+            }
+        }
+    };
+
+    return toggleTrapFocusInElement;
+}])
+
+.factory('DOMHelper', function () {
+
+    var _isTabable = function (node) {
+        var element = angular.element(node);
+        var tagName = element[0].tagName.toUpperCase();
+
+        if (isHidden(element)) {
+            return false;
+        }
+        if (element.attr('tabindex') !== undefined) {
+            return (parseInt(element.attr('tabindex'), 10) >= 0);
+        }
+        if (tagName === 'A' || tagName === 'AREA' || tagName === 'BUTTON' || tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {
+            if (tagName === 'A' || tagName === 'AREA') {
+                // anchors/areas without href are not focusable
+                return (element[0].href !== '');
+            }
+            return !(element[0].disabled || element[0].readOnly);
+        }
+        return false;
+    };
+
+    function isValidChild(child) {
+        return child.nodeType == 1 && child.nodeName != 'SCRIPT' && child.nodeName != 'STYLE';
+    }
+
+    function isHidden(obj) {
+        var elem = angular.element(obj);
+        var style;
+        try {
+            style = window.getComputedStyle(obj);
+        }
+        catch(err) {
+            style = window.getComputedStyle(obj[0]);
+        }
+
+        // getComputedStyle() for Zepto object returns null
+        if (style === null){
+            return elem.hasClass('ng-hide') || elem.css('display') === 'none';
+        }
+
+        return elem.hasClass('ng-hide') || elem.css('display') === 'none' || style.display === 'none' || style.display === 'hidden';
+    }
+
+    function traverse(obj, fromTop) {
+        var obj = obj || document.getElementsByTagName('body')[0];
+
+        if (isValidChild(obj) && _isTabable(obj)) {
+            return obj;
+        }
+
+        // If object is hidden, skip it's children
+        if (isValidChild(obj) && isHidden(obj)) {
+            return undefined;
+        }
+        // If object is hidden, skip it's children
+        if (angular.element(obj).hasClass('ng-hide')) {
+            return undefined;
+        }
+
+        if (obj.hasChildNodes()) {
+            var child;
+            if (fromTop) {
+                child = obj.firstChild;
+            } else {
+                child = obj.lastChild;
+            }
+            while (child) {
+                var res = traverse(child, fromTop);
+                if (res) {
+                    return res;
+                } else {
+                    if (fromTop) {
+                        child = child.nextSibling;
+                    } else {
+                        child = child.previousSibling;
+                    }
+                }
+            }
+        } else {
+            return undefined;
+        }
+    }
+
+    var _lastTabableElement = function (el) {
+        /* This will return the last tabable element from the parent el */
+        var elem = el;
+        if (el.hasOwnProperty('length')) {
+            elem = el[0];
+        }
+
+        return traverse(elem, false);
+    };
+
+    var _firstTabableElement = function (el) {
+        /* This will return the first tabable element from the parent el */
+        var elem = el;
+        if (el.hasOwnProperty('length')) {
+            elem = el[0];
+        }
+
+        return traverse(elem, true);
+    };
+
+    return {
+        firstTabableElement: _firstTabableElement,
+        lastTabableElement: _lastTabableElement,
+        isTabable: _isTabable
+    };
+})
+
+.factory('windowOrientation', ['$window', function ($window) {
+    var _isPotrait = function () {
+        if ($window.innerHeight > $window.innerWidth) {
+            return true;
+        } else {
+            return false;
+        }
+    };
+    var _isLandscape = function () {
+        if ($window.innerHeight < $window.innerWidth) {
+            return true;
+        } else {
+            return false;
+        }
+    };
+
+    return {
+        isPotrait: _isPotrait,
+        isLandscape: _isLandscape
+    };
+}])
+
+.directive('b2bNextElement', function() {
+  return {
+    restrict: 'A',
+    transclude: false,
+    link: function (scope, elem, attr, ctrls) {
+
+        var keys = attr.b2bNextElement.split(',');
+
+        elem.bind('keydown', function (e) {
+            var nextElement = elem.next();
+            if(e.keyCode == 39 || e.keyCode == 40){ // if e.keyCode in keys
+                if(nextElement.length) {
+                    e.preventDefault();
+                    nextElement[0].focus();
+                }
+            }
+        });
+    }
+  }
+})
+
+.directive('b2bAccessibilityClick', [function () {
+    return {
+        restrict: 'A',
+        link: function (scope, elem, attr, ctrl) {
+            var keyCode = [];
+            attr.$observe('b2bAccessibilityClick', function (value) {
+                if (value) {
+                    keyCode = value.split(',');
+                }
+            });
+            elem.bind('keydown keypress', function (ev) {
+                var keyCodeCondition = function () {
+                    var flag = false;
+                    if (!(ev.keyCode)) {
+                        if (ev.which) {
+                            ev.keyCode = ev.which; 
+                        } else if (ev.charCode) {
+                            ev.keyCode = ev.charCode;
+                        }
+                    }
+                    if ((ev.keyCode && keyCode.indexOf(ev.keyCode.toString()) > -1)) {
+                        flag = true;
+                    }
+                    return flag;
+                };
+                if (keyCode.length > 0 && keyCodeCondition()) {
+                    elem[0].click();
+                    ev.preventDefault();
+                }
+            });
+        }
+    };
+}])
+
+.directive('b2bReset', ['$compile', function ($compile) {
+        return {
+            restrict: 'A',
+            require: ['?ngModel', 'b2bReset'],
+            controller: ['$scope', function ($scope) {
+                var resetButton = angular.element('<button type="button" class="reset-field" tabindex="-1" aria-label="Click to reset" aria-hidden="true" role="button"></button>');
+
+                this.getResetButton = function () {
+                    return resetButton;
+                };
+            }],
+            link: function (scope, element, attrs, ctrls) {
+
+                var ngModelCtrl = ctrls[0];
+                var ctrl = ctrls[1];
+
+                var resetButton = ctrl.getResetButton();
+
+
+                resetButton.on('click', function () {
+                    element[0].value = '';
+
+                    if (ngModelCtrl) {
+                        if (attrs.b2bReset) {
+                            ngModelCtrl.$setViewValue(attrs.b2bReset);
+                        } else {
+                            ngModelCtrl.$setViewValue('');
+                        }
+                        element[0].value = ngModelCtrl.$viewValue;
+                        ngModelCtrl.$render();
+                        scope.$digest();
+                    }
+                    element[0].focus();
+                    element[0].select();
+                });
+
+                var addResetButton = function () {
+                    element.after(resetButton);
+                    element.unbind('focus input', addResetButton);
+                };
+
+                element.bind('focus input', addResetButton);
+            }
+        };
+    }])
+
+.directive('b2bPrevElement', ['b2bDOMHelper', 'keymap', function (b2bDOMHelper, keymap) {
+  return {
+    restrict: 'A',
+    transclude: false,
+    link: function (scope, elem, attr) {
+
+        elem.bind('keydown', function (e) {
+            if(e.keyCode == 37 || e.keyCode == 38){
+                var prev = b2bDOMHelper.previousElement(elem, false);
+                if(prev !== undefined) {
+                    e.preventDefault();
+                    prev.focus();
+                }
+            }
+        });
+    }
+  }
+}])
+/**
+ * @param {integer} delay - Timeout before first and last focusable elements are found
+ * @param {boolean} trigger - A variable on scope that will trigger refinding first/last focusable elements 
+ */
+.directive('b2bTrapFocusInsideElement', ['$timeout', 'b2bDOMHelper', 'keymap', 'events', function ($timeout, b2bDOMHelper, keymap, events) {
+    return {
+        restrict: 'A',
+        transclude: false,
+        link: function (scope, elem, attr) {
+
+            var delay = parseInt(attr.delay, 10) || 10;
+
+            /* Before opening modal, find the focused element */
+            var firstTabableElement = undefined,
+                lastTabableElement = undefined;
+                
+            function init() {
+                $timeout(function () {
+                    firstTabableElement = b2bDOMHelper.firstTabableElement(elem);
+                    lastTabableElement = b2bDOMHelper.lastTabableElement(elem);
+                    angular.element(firstTabableElement).bind('keydown', firstTabableElementKeyhandler);
+                    angular.element(lastTabableElement).bind('keydown', lastTabableElementKeyhandler);
+                }, delay, false);
+            }
+
+            if (attr.trigger !== undefined) {
+                scope.$watch('trigger', function() {
+                    if (scope.trigger) {
+                        init();
+                    }
+                });
+            }
+
+            var firstTabableElementKeyhandler = function(e) {
+                if (!e.keyCode) {
+                    e.keyCode = e.which;
+                }
+                if (e.keyCode === keymap.KEY.TAB && e.shiftKey) {
+                    if (attr.trapFocusInsideElement === 'true') {
+                        var temp = b2bDOMHelper.lastTabableElement(elem);
+                        if (lastTabableElement !== temp) {
+                            // Unbind keydown handler on lastTabableElement
+                            angular.element(lastTabableElement).unbind('keydown', lastTabableElementKeyhandler);
+                            lastTabableElement = temp;
+                            angular.element(lastTabableElement).bind('keydown', lastTabableElementKeyhandler);
+                        }
+                    }
+                    lastTabableElement.focus();
+                    events.preventDefault(e);
+                    events.stopPropagation(e);
+                }
+            };
+
+            var lastTabableElementKeyhandler = function(e) {
+                if (!e.keyCode) {
+                    e.keyCode = e.which;
+                }
+                if (e.keyCode === keymap.KEY.TAB && !e.shiftKey) {
+                    if (attr.trapFocusInsideElement === 'true') {
+                        var temp = b2bDOMHelper.firstTabableElement(elem);
+                        if (firstTabableElement !== temp) {
+                            // Unbind keydown handler on firstTabableElement
+                            angular.element(firstTabableElement).unbind('keydown', firstTabableElementKeyhandler);
+                            firstTabableElement = temp;
+                            angular.element(firstTabableElement).bind('keydown', firstTabableElementKeyhandler);
+                        }
+                    }
+                    firstTabableElement.focus();
+                    events.preventDefault(e);
+                    events.stopPropagation(e);
+                }
+            };
+
+            init();
+        }
+    };
+}])
+
+.factory('trapFocusInElement', ['$document', '$isElement', 'DOMHelper', 'keymap', '$interval', function ($document, $isElement, DOMHelper, keymap, $interval) {
+    var elementStack = [];
+    var stackHead = undefined;
+    var stopInterval = undefined;
+    var intervalRequired = false;
+    var interval = 1000;
+    var firstTabableElement, lastTabableElement;
+
+    var trapKeyboardFocusInFirstElement = function (e) {
+        if (!e.keyCode) {
+            e.keyCode = e.which;
+        }
+
+        if (e.shiftKey === true && e.keyCode === keymap.KEY.TAB) {
+            lastTabableElement[0].focus();
+            e.preventDefault(e);
+            e.stopPropagation(e);
+        }
+
+    };
+
+    var trapKeyboardFocusInLastElement = function (e) {
+        if (!e.keyCode) {
+            e.keyCode = e.which;
+        }
+
+        if (e.shiftKey === false && e.keyCode === keymap.KEY.TAB) {
+            firstTabableElement[0].focus();
+            e.preventDefault(e);
+            e.stopPropagation(e);
+        }
+    };
+
+    var trapFocusInElement = function (flag, firstTabableElementParam, lastTabableElementParam) {
+        var bodyElements = $document.find('body').children();
+
+        firstTabableElement = firstTabableElementParam ? firstTabableElementParam : angular.element(DOMHelper.firstTabableElement(stackHead));
+        lastTabableElement = lastTabableElementParam ? lastTabableElementParam : angular.element(DOMHelper.lastTabableElement(stackHead));
+
+        if (flag) {
+            for (var i = 0; i < bodyElements.length; i++) {
+                if (bodyElements[i] !== stackHead[0]) {
+                    bodyElements.eq(i).attr('aria-hidden', true);
+                }
+            }
+            firstTabableElement.bind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.bind('keydown', trapKeyboardFocusInLastElement);
+        } else {
+            for (var j = 0; j < bodyElements.length; j++) {
+                if (bodyElements[j] !== stackHead[0]) {
+                    bodyElements.eq(j).removeAttr('aria-hidden');
+                }
+            }
+            firstTabableElement.unbind('keydown', trapKeyboardFocusInFirstElement);
+            lastTabableElement.unbind('keydown', trapKeyboardFocusInLastElement);
+        }
+
+        if (intervalRequired && flag) {
+            stopInterval = $interval(function () {
+                var firstTabableElementTemp = angular.element(DOMHelper.firstTabableElement(stackHead));
+                var lastTabableElementTemp = angular.element(DOMHelper.lastTabableElement(stackHead));
+                if (firstTabableElementTemp[0] !== firstTabableElement[0] || lastTabableElementTemp[0] !== lastTabableElement[0]) {
+                    $interval.cancel(stopInterval);
+                    stopInterval = undefined;
+                    trapFocusInElement(false, firstTabableElement, lastTabableElement);
+                    trapFocusInElement(true, firstTabableElementTemp, lastTabableElementTemp);
+                }
+            }, interval);
+        } else {
+            if (stopInterval) {
+                $interval.cancel(stopInterval);
+                stopInterval = undefined;
+            }
+        }
+    };
+    var toggleTrapFocusInElement = function (flag, element, intervalRequiredParam, intervalParam) {
+        intervalRequired = intervalRequiredParam ? intervalRequiredParam : intervalRequired;
+        interval = intervalParam ? intervalParam : interval;
+        if (angular.isDefined(flag) && angular.isDefined(element)) {
+            if (flag && angular.isUndefined(stackHead)) {
+                stackHead = element;
+                trapFocusInElement(flag);
+            } else {
+                if (flag) {
+                    trapFocusInElement(false);
+                    elementStack.push(stackHead);
+                    stackHead = element;
+                    trapFocusInElement(true);
+                } else {
+                    if (angular.isDefined(stackHead) && (stackHead[0] === element[0])) {
+                        trapFocusInElement(false);
+                        stackHead = elementStack.pop();
+                        if (angular.isDefined(stackHead)) {
+                            trapFocusInElement(true);
+                        }
+                    }
+                }
+            }
+        } else {
+            if (angular.isDefined(stackHead)) {
+                trapFocusInElement(false, firstTabableElement, lastTabableElement);
+                trapFocusInElement(true);
+            }
+        }
+    };
+
+    return toggleTrapFocusInElement;
+}])
+
+.directive('b2bSetNextFocusOn', ['b2bDOMHelper', '$timeout', function(b2bDOMHelper, $timeout) {
+    return {
+        restrict: 'A',
+        scope: true,
+        link: function (scope, elem, attr) {
+            elem.bind('click', function(){
+                var firstFocusableElement = undefined; 
+                var containerElem = undefined; 
+                var containerArray = [];
+                var timeout = parseInt(attr.setNextFocusTimeout, 0) | 100;
+                var index = parseInt(attr.b2bSetNextFocusIndex, 0) | 0;
+
+                 /*
+                  *Fix for IE7 and lower 
+                  *polyfill src: https://github.com/HubSpot/pace/issues/102
+                  */
+                if (!document.querySelectorAll) {
+                    document.querySelectorAll = function (selectors) {
+                        var style = document.createElement('style'), elements = [], element;
+                        document.documentElement.firstChild.appendChild(style);
+                        document._qsa = [];
+
+                        style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';
+                        window.scrollBy(0, 0);
+                        style.parentNode.removeChild(style);
+
+                        while (document._qsa.length) {
+                            element = document._qsa.shift();
+                            element.style.removeAttribute('x-qsa');
+                            elements.push(element);
+                        }
+                        document._qsa = null;
+                        return elements;
+                    };
+                }
+
+                if (attr.b2bSetNextFocusOn === '') {
+                    return;
+                } else {
+                    containerArray = attr.b2bSetNextFocusOn.split(' ');
+                }
+                $timeout(function(){
+                    var i = 0;
+                    do { // cycles thru containerArray until finds a match in DOM to set focus to
+                        containerElem = document.querySelectorAll(containerArray[i])[index]; 
+                        i++;
+                    } while ( (!containerElem) && (i < containerArray.length) );
+                    if(containerElem){
+                        if (!angular.isDefined(firstFocusableElement)) { 
+                            firstFocusableElement = b2bDOMHelper.firstTabableElement(containerElem); 
+                        }
+                        firstFocusableElement.focus(); 
+                    }
+                }, timeout, false)
+            });
+        }
+
+    };
+}])
+
+.directive('b2bInputAllow', [function() {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            var regexExpression = null;
+            attr.$observe('b2bInputAllow', function (value) {
+                if (value) {
+                    regexExpression = new RegExp(value);
+                }
+            });
+            var isValid = function(str) {
+                if (regexExpression !== null) {
+                    return regexExpression.test(str);
+                }
+                return false;
+            };
+            elem.bind('keypress', function($event) {
+                var charcode = String.fromCharCode($event.which || $event.keyCode);
+                if (!isValid(charcode)) {
+                    $event.preventDefault();
+                    $event.stopPropagation();
+                }
+            });
+            elem.bind('input', function (evt) {
+                var inputString = ctrl.$viewValue;
+                if (isValid(inputString)) {
+                    ctrl.$setViewValue(inputString);
+                    ctrl.$render();
+                    scope.$apply();
+                }
+            });
+        }
+    };
+}])
+
+.directive('b2bInputDeny', [function() {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            var regexExpression = null;
+            attr.$observe('b2bInputDeny', function (value) {
+                if (value) {
+                    regexExpression = new RegExp(value, 'g');
+                }
+            });
+            elem.bind('input', function () {
+                var inputString = ctrl.$viewValue && ctrl.$viewValue.replace(regexExpression, '');
+                if (inputString !== ctrl.$viewValue) {
+                    ctrl.$setViewValue(inputString);
+                    ctrl.$render();
+                    scope.$apply();
+                }
+            });
+        }
+    };
+}])
+
+.directive('b2bDragonInput', [function() {
+    return {
+        restrict: 'A',
+        require: 'ngModel',
+        link: function (scope, elem, attr, ctrl) {
+            elem.on('focus keyup', function(){
+                elem.triggerHandler('change');
+            });
+        }
+    };
+}])
+
+.directive('b2bKey', ['b2bUtilitiesConfig', '$timeout', 'keymap', function (b2bUtilitiesConfig, $timeout, keymap) {
+    return {
+        restrict: 'EA',
+        controller: ['$scope', '$element', '$attrs', function ($scope, $element,attr) {
+            this.childElements = [];
+            this.disableNodes = {};
+            this.enableSearch = attr.enableSearch !== undefined ? true : b2bUtilitiesConfig.enableSearch;
+            this.circularTraversal = attr.circularTraversal !== undefined ? true : b2bUtilitiesConfig.circularTraversal;
+            this.counter = -1;
+            if (this.enableSearch) {
+                this.searchKeys = [];
+            }
+            var searchString = '';
+
+            var selfCtrl = this;
+
+            this.childElementsList = [];
+
+            this.b2bKeyID = "";
+
+            if (angular.isDefined(attr.b2bKey)) {
+                this.b2bKeyID = attr.b2bKey;
+            }
+
+            this.calculateChildElementsList = function () {
+                return $element[0].querySelectorAll("[b2b-key-item='" + this.b2bKeyID + "']:not([disabled])");
+            };
+
+            this.resetChildElementsList = function () {
+                return $timeout(function () {
+                    selfCtrl.childElementsList = selfCtrl.calculateChildElementsList();
+                });
+            };
+
+            this.resetChildElementsList();
+
+            $scope.$on('b2b-key-reset-child-elements-list', function () {
+                selfCtrl.resetChildElementsList();
+            });
+
+
+            this.registerElement = function (childElement, searchKey) {
+                this.childElements.push(childElement);
+                if (this.enableSearch) {
+                    this.searchKeys.push(searchKey);
+                }
+                var count = this.childElements.length - 1;
+                this.maxLength = count + 1;
+                return count;
+            };
+            this.toggleDisable = function (count, state) {
+                this.disableNodes[count] = state;
+            };
+            this.searchElement = function (searchExp) {
+                var regex = new RegExp("\\b" + searchExp, "gi");
+                var position = this.searchKeys.regexIndexOf(regex, this.counter + 1, true);
+                if (position > -1) {
+                    this.counter = position;
+                    this.moveFocus(this.counter);
+                }
+            };
+            this.startTimer = function (time) {
+                if (searchString === '') {
+                    $timeout(function () {
+                        searchString = '';
+                    }, time);
+                }
+            };
+            this.resetCounter = function (count) {
+                this.counter = count;
+            };
+            this.moveNext = function (count) {
+                this.counter = (this.counter + count) < this.maxLength ? this.counter + count : (this.circularTraversal ? 0 : this.counter);
+                if (this.disableNodes[this.counter]) {
+                    if ((this.counter + count) < this.maxLength) {
+                        this.moveNext(count);
+                    }
+                } else {
+                    this.moveFocus(this.counter);
+                }
+            };
+            this.movePrev = function (count) {
+                this.counter = (this.counter - count) > -1 ? this.counter - count : (this.circularTraversal ? this.maxLength-1 : this.counter);
+                if (this.disableNodes[this.counter]) {
+                    if ((this.counter - count) > -1) {
+                        this.movePrev(count);
+                    }
+                } else {
+                    this.moveFocus(this.counter);
+                }
+            };
+            this.moveFocus = function (index) {
+                this.childElements[index][0].focus();
+            };
+
+            this.keyDownHandler = function (ev, count) {
+                if (angular.isDefined(count) && !isNaN(count) && count !== this.counter) {
+                    this.resetCounter(count);
+                }
+                if (!ev.keyCode) {
+                    if (ev.which) {
+                        ev.keyCode = ev.which;
+                    } else if (ev.charCode) {
+                        ev.keyCode = ev.charCode;
+                    }
+                }
+                if (ev.keyCode) {
+                    if (this.prev && this.prev.indexOf(ev.keyCode.toString()) > -1) {
+                        this.movePrev(1);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (this.next && this.next.indexOf(ev.keyCode.toString()) > -1) {
+                        this.moveNext(1);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (this.up && this.up.indexOf(ev.keyCode.toString()) > -1) {
+                        if (this.type === 'table') {
+                            this.movePrev(this.columns);
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        }
+                    } else if (this.down && this.down.indexOf(ev.keyCode.toString()) > -1) {
+                        if (this.type === 'table') {
+                            this.moveNext(this.columns);
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        }
+                    } else if (ev.keyCode === keymap.KEY.HOME) {
+                        var firstIndex = 0;
+                        while (this.disableNodes[firstIndex] !== false) {
+                            firstIndex++;
+                        };
+                        var count = this.counter - firstIndex;
+                        this.movePrev(count);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode === keymap.KEY.END) {
+                        var lastIndex = this.childElements.length - 1;
+                        while (this.disableNodes[lastIndex] !== false) {
+                            lastIndex--;
+                        };
+                        var count = lastIndex - this.counter;
+                        this.moveNext(count);
+                        ev.preventDefault();
+                        ev.stopPropagation();
+                    } else if (ev.keyCode >= 48 && ev.keyCode <= 105) {
+                        if (this.enableSearch) {
+                            this.startTimer(b2bUtilitiesConfig.searchTimer);
+                            searchString = searchString + (keymap.MAP[ev.keyCode] || '');
+                            this.searchElement(searchString);
+                            ev.preventDefault();
+                            ev.stopPropagation();
+                        }
+                    }
+                }
+            };
+        }],
+        link: function (scope, elem, attr, ctrl) {
+            ctrl.prev = attr.prev ? attr.prev.split(',') : b2bUtilitiesConfig.prev.split(',');
+            ctrl.next = attr.next ? attr.next.split(',') : b2bUtilitiesConfig.next.split(',');
+            ctrl.type = attr.type ? attr.type : b2bUtilitiesConfig.type;
+            if (ctrl.type === 'table') {
+                ctrl.up = attr.up ? attr.up.split(',') : b2bUtilitiesConfig.up.split(',');
+                ctrl.down = attr.down ? attr.down.split(',') : b2bUtilitiesConfig.down.split(',');
+                ctrl.columns = attr.columns ? parseInt(attr.columns, 10) : b2bUtilitiesConfig.columns;
+            }
+
+            elem.bind('keydown', function (ev) {
+                ctrl.keyDownHandler(ev);
+            });
+        }
+    };
+}])
+
+.directive('b2bKeyItem', [function () {
+    return {
+        restrict: 'EA',
+        link: function (scope, elem, attr, ctrl) {
+            var parentCtrl = (elem.parent() && elem.parent().controller('b2bKey')) || undefined;
+            if (angular.isDefined(parentCtrl)) {
+                var count = parentCtrl.registerElement(elem, attr.searchKey);
+                elem.bind('keydown', function (ev) {
+                    parentCtrl.keyDownHandler(ev, count);
+                });
+                scope.$watch(attr.b2bKeyItem, function (value) {
+                    value = value === undefined ? true : value;
+                    parentCtrl.toggleDisable(count, !value); 
+                });
+                scope.$on('$destroy', function () {
+                    parentCtrl.toggleDisable(count, true);
+                });
+            }
+        }
+    };
+}])
+
+.directive('b2bElementFocus', [function () {
+    return {
+        restrict: 'A',
+        link: function (scope, elem, attr, ctrl) {
+            scope.$watch(attr.b2bElementFocus, function (value) {
+                if (value === true) {
+                    elem[0].focus();
+                }
+            });
+        }
+    };
+}])
+
+
+.directive('b2bAppendElement', ['$compile', function ($compile) {
+    return {
+        restrict: 'A',
+        link: function (scope, elem, attr, ctrl) {
+            var parameters = attr.b2bAppendElement.split(':');
+            if (parameters.length === 1) {
+                elem.append(scope.$eval(parameters[0]));
+            } else if (parameters.length === 2) {
+                if (parameters[1] === 'compile') {
+                    var element = angular.element('<span>' + scope.$eval(parameters[0]) + '</span>');
+                    elem.append($compile(element)(scope));
+                }
+            }
+
+        }
+    };
+}])
+
+.directive('b2bKeyItemRefreshInNgRepeat', [function () {
+    return {
+        restrict: 'EA',
+        require: '^^b2bKey',
+        link: function (scope, elem, attr, parentCtrl) {
+            if (angular.isDefined(parentCtrl)) {
+
+                var attrToObserve = 'attrToObserve';
+
+                if (attr.b2bKeyItemRefreshInNgRepeat) {
+                    attrToObserve = 'b2bKeyItemRefreshInNgRepeat';
+                }
+
+                attr.$observe(attrToObserve, function (newVal, oldVal) {
+                    if (newVal && newVal !== oldVal) {
+                        parentCtrl.resetChildElementsList();
+                    }
+                });
+            }
+        }
+    };
+}])
+
+.filter('b2bMultiSepartorHighlight', function($sce) {
+        return function(text, searchText, searchSeperator) {
+            var splitText = function(string) {
+                if(angular.isDefined(searchSeperator)){
+                    if (string.indexOf(searchSeperator) > -1) {
+                        return string.split(searchSeperator);
+                    } else {
+                        return string
+                    }
+                }else{
+                    return string;
+                }
+            }
+            if (text) {
+                var newText = splitText(text);
+                var newPhrase = splitText(searchText);
+                if (angular.isArray(newPhrase)) {
+                    for (var i = 0; i < newText.length; i++) {
+                        if (i <= 0) {
+                            text = newText[i].replace(new RegExp('(' + newPhrase[i] + ')', 'gi'),
+                                '<span class="b2b-search-hightlight">$1</span>');
+                        } else {
+                            text = text + searchSeperator + ' ' + (newPhrase[i] ? newText[i].replace(new RegExp('(' + newPhrase[i] + ')', 'gi'),
+                                '<span class="b2b-search-hightlight">$1</span>') : newText[i]);
+                        }
+                    }
+                } else {
+                    text = text.replace(new RegExp('(' + searchText + ')', 'gi'),
+                        '<span class="b2b-search-hightlight">$1</span>');
+                }
+            }
+            return $sce.trustAsHtml(text)
+        }
+    })
+    
+    .factory('b2bUserAgent', [function() {
+        var _isMobile = function() {
+            return /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+        };
+        var _notMobile = function() {
+            return !/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+        };
+        var _isIE = function() {
+            return /msie|trident/i.test(navigator.userAgent);
+        };
+        var _isFF = function() {
+            return /Firefox/.test(navigator.userAgent);
+        };
+        var _isChrome = function() {
+            return /Google Inc/.test(navigator.vendor);
+        };
+        var _isSafari = function() {
+            return /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
+        };
+
+        return {
+            isMobile: _isMobile,
+            notMobile: _notMobile,
+            isIE: _isIE,
+            isFF: _isFF,
+            isChrome: _isChrome,
+            isSafari: _isSafari
+        };
+    }])
+    .run(['$document', 'b2bUserAgent', function($document, b2bUserAgent) {
+        var html = $document.find('html').eq(0);
+        if (b2bUserAgent.isIE()) {
+            html.addClass('isIE');
+        } else {
+            html.removeClass('isIE');
+        }
+    }]);
+    
+
+(function () {
+    String.prototype.toSnakeCase = function () {
+        return this.replace(/([A-Z])/g, function ($1) {
+            return "-" + $1.toLowerCase();
+        });
+    };
+    var concat = function (character, times) {
+        character = character || '';
+        times = (!isNaN(times) && times) || 0;
+        var finalChar = '';
+        for (var i = 0; i < times; i++) {
+            finalChar += character;
+        }
+        return finalChar;
+    };
+
+    // direction: true for left and false for right
+    var pad = function (actualString, width, character, direction) {
+        actualString = actualString || '';
+        width = (!isNaN(width) && width) || 0;
+        character = character || '';
+        if (width > actualString.length) {
+            if (direction) {
+                return concat(character, (width - actualString.length)) + actualString;
+            } else {
+                return actualString + concat(character, (width - actualString.length));
+            }
+        }
+        return actualString;
+    };
+
+    String.prototype.lPad = function (width, character) {
+        return pad(this, width, character, true);
+    };
+
+    String.prototype.rPad = function (width, character) {
+        return pad(this, width, character, false);
+    };
+
+    if (!Array.prototype.indexOf) {
+        Array.prototype.indexOf = function (val) {
+            for (var index = 0; index < this.length; index++) {
+                if (this[index] === val) {
+                    return index;
+                }
+            }
+            return -1;
+        };
+    }
+
+    if (!Array.prototype.regexIndexOf) {
+        Object.defineProperty(Array.prototype, 'regexIndexOf', {
+            enumerable: false,
+            value: function (regex, startIndex, loop) {
+                startIndex = startIndex && startIndex > -1 ? startIndex : 0;
+                for (var index = startIndex; index < this.length; index++) {
+                    if (this[index].toString().match(regex)) {
+                        return index;
+                    }
+                }
+                if (loop) {
+                    for (var index = 0; index < startIndex; index++) {
+                        if (this[index].toString().match(regex)) {
+                            return index;
+                        }
+                    }
+                }
+                return -1;
+            }
+        })
+    }
+})();
+angular.module("b2bTemplate/audioPlayer/audioPlayer.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/audioPlayer/audioPlayer.html",
+    "<div class=\"b2b-audio\">\n" +
+    "   <audio preload=\"auto\">\n" +
+    "       <source ng-src=\"{{audio.mp3 | trustedAudioUrl}}\" type=\"audio/mp3\"></source>\n" +
+    "       <i>Your browser does not support the audio element.</i>\n" +
+    "    </audio>\n" +
+    "\n" +
+    "    <div audio-play-pause-icon class=\"controls-wrapper\" ng-click=\"toggleAudio()\" tabindex=\"0\" b2b-accessibility-click=\"13,32\" role=\"button\" aria-label=\"{{isPlayInProgress?'pause':'play'}}\">\n" +
+    "       <i class=\"icoControls-pointer\" ng-show='!isPlayInProgress'></i>\n" +
+    "       <i class=\"icoControls-pause\" ng-show='isPlayInProgress'></i>\n" +
+    "    </div>\n" +
+    "\n" +
+    "    <div class=\"seek-bar-container-wrapper\">\n" +
+    "       <b2b-seek-bar min=\"0\" max=\"{{audio.duration}}\" step=\"1\" skip-interval=\"{{audio.timeShiftInSeconds}}\" no-aria-label ng-model=\"audio.currentTime\" on-drag-init=\"isAudioDragging=true\" on-drag-end=\"setAudioPosition(audio.currentTime)\"></b2b-seek-bar>\n" +
+    "       <div class=\"timing-container\">\n" +
+    "           <span class=\"timing-container-left\">{{timeFormatter(audio.currentTime)}}</span>\n" +
+    "           <span class=\"timing-container-right\">{{timeFormatter(audio.duration)}}</span>\n" +
+    "           <div class=\"timing-container-spacer\"></div>\n" +
+    "       </div>\n" +
+    "    </div>\n" +
+    "       \n" +
+    "    <b2b-flyout>\n" +
+    "       <div tabindex=\"0\" b2b-accessibility-click=\"13,32\" role=\"button\" aria-label=\"Volume pop-over. Volume set at {{audio.currentVolume}}%\" class=\"controls-wrapper audio-volume-control\" b2b-flyout-toggler>\n" +
+    "           <i class=\"icoControls-mutespeakers\" ng-show=\"audio.currentVolume === 0\"></i>\n" +
+    "           <i class=\"icoControls-volumedown\" ng-show=\"audio.currentVolume > 0 && audio.currentVolume <= 50\"></i>\n" +
+    "           <i class=\"icoControls-volumeup\" ng-show=\"audio.currentVolume > 50\"></i>\n" +
+    "       </div> \n" +
+    "       \n" +
+    "       <b2b-flyout-content horizontal-placement=\"center\" flyout-style=\"width:70px; height:190px;\" vertical-placement=\"above\">\n" +
+    "           <div class=\"b2b-audio-popover text-center\">\n" +
+    "               <span>Max</span>\n" +
+    "               <b2b-seek-bar min=\"0\" max=\"100\" step=\"1\" skip-interval=\"10\" vertical data-ng-model=\"audio.currentVolume\" class='volume-popover'></b2b-seek-bar>\n" +
+    "               <div class=\"min-label\">Min</div>\n" +
+    "           </div>\n" +
+    "       </b2b-flyout-content>\n" +
+    "   </b2b-flyout>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/audioRecorder/audioRecorder.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/audioRecorder/audioRecorder.html",
+    "<div class=\"b2b-audio-recorder row\">\n" +
+    "   <div class=\"b2b-elapsed-time span11\">\n" +
+    "       <div ng-if=\"isRecording\">\n" +
+    "           <span style=\"padding-right: 25px;\">{{config.whileRecordingMessage}}</span>\n" +
+    "           <span>{{timeFormatter(elapsedTime)}}</span>\n" +
+    "       </div>\n" +
+    "       <span ng-if=\"!isRecording\">{{config.startRecordingMessage}}</span>\n" +
+    "   </div>      \n" +
+    "   <div class=\"b2b-controls\" title=\"{{isRecording ? 'Stop' : 'REC'}}\" b2b-accessibility-click=\"13,32\" ng-click=\"toggleRecording()\" role=\"button\">\n" +
+    "           <i ng-if=\"isRecording\" class=\"icoControls-stop\" ></i>\n" +
+    "           <i ng-if=\"!isRecording\" class=\"icoControls-record\"></i>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/backToTop/backToTop.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/backToTop/backToTop.html",
+    "<button class=\"btn-arrow b2b-backtotop-button\" type=\"button\" aria-label=\"Back to top\">\n" +
+    "    <div class=\"btn-secondary b2b-top-btn\">\n" +
+    "        <i class=\"icoControls-upPRIMARY\" role=\"img\"></i>\n" +
+    "    </div>\n" +
+    "</button>\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/boardstrip/b2bAddBoard.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/boardstrip/b2bAddBoard.html",
+    "<div tabindex=\"0\" role=\"menuitem\" b2b-accessibility-click=\"13,32\" ng-click=\"addBoard()\" aria-label=\"Add Board\" class=\"boardstrip-item--add\">\n" +
+    "    <div class=\"centered\"><i aria-hidden=\"true\" class=\"icoControls-add-maximize\"></i> Add board</div>\n" +
+    "</div> ");
+}]);
+
+angular.module("b2bTemplate/boardstrip/b2bBoard.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/boardstrip/b2bBoard.html",
+    "<li b2b-board-navigation tabindex=\"-1\" role=\"menuitem\" aria-label=\"{{boardLabel}} {{getCurrentIndex()===boardIndex?'selected':''}}\" b2b-accessibility-click=\"13,32\" ng-click=\"selectBoard(boardIndex)\" class=\"board-item\" ng-class=\"{'selected': getCurrentIndex()===boardIndex}\">\n" +
+    "    <div ng-transclude></div>\n" +
+    "    <div class=\"board-caret\" ng-if=\"getCurrentIndex()===boardIndex\">\n" +
+    "        <div class=\"board-caret-indicator\"></div>\n" +
+    "        <div class=\"board-caret-arrow-up\"></div>\n" +
+    "    </div>\n" +
+    "</li>");
+}]);
+
+angular.module("b2bTemplate/boardstrip/b2bBoardstrip.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/boardstrip/b2bBoardstrip.html",
+    "<div class=\"b2b-boardstrip\">\n" +
+    "   <div class=\"boardstrip-reel\" role=\"menu\">\n" +
+    "       <div class=\"prev-items\">\n" +
+    "           <!-- <i tabindex=\"{{isPrevBoard() ? 0 : -1}}\" ng-class=\"{'disabled': !isPrevBoard()}\" role=\"menuitem\" aria-label=\"See previous boards\" b2b-accessibility-click=\"13,32\" ng-click=\"prevBoard()\" class=\"arrow icoControls-left\"></i> -->\n" +
+    "           <button class=\"btn-arrow arrow\" b2b-accessibility-click=\"13,32\" ng-click=\"prevBoard()\" ng-disabled=\"!isPrevBoard()\">\n" +
+    "               <div class=\"btn btn-small btn-alt\"><i class=\"icon-primary-left\"></i>\n" +
+    "               </div>\n" +
+    "               <span class=\"offscreen-text\">Previous boards</span>\n" +
+    "           </button>\n" +
+    "       </div>\n" +
+    "       <div b2b-add-board on-add-board=\"onAddBoard()\"></div>\n" +
+    "       <div class=\"board-viewport\"><ul role=\"menu\" class=\"boardstrip-container\" ng-transclude></ul></div>\n" +
+    "       <div class=\"next-items\">\n" +
+    "           <!-- <i tabindex=\"{{isNextBoard() ? 0 : -1}}\" ng-class=\"{'disabled': !isNextBoard()}\" role=\"menuitem\" aria-label=\"See next boards\" b2b-accessibility-click=\"13,32\" ng-click=\"nextBoard()\" class=\"arrow icoControls-right\"></i> -->\n" +
+    "           <button class=\"btn-arrow arrow\" b2b-accessibility-click=\"13,32\" ng-click=\"nextBoard()\" ng-disabled=\"!isNextBoard()\">\n" +
+    "               <div class=\"btn btn-small btn-alt\"><i class=\"icon-primary-right\"></i>\n" +
+    "               </div>\n" +
+    "               <span class=\"offscreen-text\">Next boards</span>\n" +
+    "           </button>\n" +
+    "       </div>\n" +
+    "   </div>\n" +
+    "</div>\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/calendar/datepicker-popup.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/calendar/datepicker-popup.html",
+    "<div id=\"datepicker\" class=\"datepicker dropdown-menu\" ng-class=\"{'datepicker-dropdown datepicker-orient-top': !inline, 'datepicker-orient-left': !inline && orientation === 'left', 'datepicker-orient-right': !inline && orientation === 'right'}\" ng-style=\"{position: inline && 'relative', 'z-index': inline && '0', top: !inline && position.top + 'px' || 0, left: !inline && position.left + 'px'}\" style=\"display: block;\" aria-hidden=\"false\" role=\"dialog\" tabindex=\"-1\" b2b-key type=\"table\" columns=\"7\">\n" +
+    "    <div class=\"datepicker-days\" style=\"display: block;\">\n" +
+    "        <div ng-repeat=\"header in headers\" class=\"text-left\" style=\"width: 100%;\" b2b-append-element=\"header\"></div>\n" +
+    "        <table class=\"table-condensed\">\n" +
+    "            <thead>\n" +
+    "                <tr>\n" +
+    "                    <th id=\"prev\" class=\"prev\" tabindex=\"0\" b2b-accessibility-click=\"13\" aria-label=\"Previous Month\" role=\"button\" b2b-element-focus=\"!disablePrev && getFocus\" ng-style=\"{visibility: visibilityPrev}\" ng-click=\"!disablePrev && move(-1,$event)\"><i class=\"icon-primary-left\" aria-hidden=\"true\"></i></th>\n" +
+    "                    <th id=\"month\" tabindex=\"-1\" aria-label=\"{{title}}\" class=\"datepicker-switch\" colspan=\"{{rows[0].length - 2}}\">{{title}}</th>\n" +
+    "                    <th id=\"next\" class=\"next\" tabindex=\"0\" b2b-accessibility-click=\"13\" b2b-element-focus=\"disablePrev && getFocus\" aria-label=\"Next Month\" role=\"button\" ng-style=\"{visibility: visibilityNext}\" ng-click=\"!disableNext && move(1,$event)\"><i class=\"icon-primary-right\" aria-hidden=\"true\"></i></th>\n" +
+    "                </tr>\n" +
+    "                <tr ng-show=\"labels.length > 0\">\n" +
+    "                    <th id=\"{{label.post}}\" class=\"dow\" ng-repeat=\"label in labels\" aria-hidden=\"true\"><span aria-hidden=\"true\">{{label.pre}}</span></th>\n" +
+    "                </tr>\n" +
+    "            </thead>\n" +
+    "            <tbody>\n" +
+    "                <tr ng-repeat=\"row in rows\">\n" +
+    "                    <td headers=\"{{dt.header}}\" b2b-key-item=\"dt.focusable\" b2b-accessibility-click=\"13\" b2b-element-focus=\"disablePrev && disableNext && getFocus && (dt.selected || dt.firstFocus || dt.fromDate || dt.dateRange)\" tabindex=\"{{(!(dt.focusable && (dt.selected || dt.firstFocus || dt.fromDate || currFocus)) && -1) || 0}}\" aria-hidden=\"{{(!dt.focusable && true) || false}}\" role=\"{{(dt.focusable && 'gridcell') || ''}}\" aria-label=\"{{(dt.focusable && dt.date | date : 'EEEE, MMMM d') || ''}}\" aria-selected=\"{{(dt.focusable && (dt.selected || dt.dateRange) && true) || false}}\" ng-repeat=\"dt in row\" class=\"day magic\" ng-class=\"{'active': dt.focusable && dt.selected && !dt.dateRange, 'start-date': dt.focusable && dt.fromDate && dt.dateRange, 'between-date': dt.focusable && !dt.fromDate && !dt.selected && dt.dateRange, 'end-date': dt.focusable && dt.selected && dt.dateRange, 'old': dt.oldMonth, 'new': dt.nextMonth, 'disabled': dt.disabled, 'due-date': dt.dueDate, 'late-fee': dt.pastDue}\" ng-focus=\"currFocus=true; trapFocus();\" ng-blur=\"currFocus=false; trapFocus();\" title=\"{{(dt.focusable && dt.pastDue && legendMessage) || ''}}\" ng-click=\"!ngDisabled && !dt.disabled && select(dt.date)\">\n" +
+    "                        <div aria-hidden=\"true\" tabindex=\"-1\" class=\"show-date\" ng-if=\"!(dt.oldMonth || dt.nextMonth)\">{{dt.label}}</div>{{(dt.focusable && dt.date | date : 'EEEE, MMMM d yyyy') || ''}}{{(dt.focusable && dt.dueDate && '. Bill-due-date.. ') || ''}}{{(dt.focusable && dt.pastDue && legendMessage) || ''}}</td>\n" +
+    "                </tr>\n" +
+    "            </tbody>\n" +
+    "            <tfoot>\n" +
+    "                <tr ng-repeat=\"footer in footers\">\n" +
+    "                    <th colspan=\"7\" class=\"text-left\" style=\"width: 278px;\" b2b-append-element=\"footer\"></th>\n" +
+    "                </tr>\n" +
+    "            </tfoot>\n" +
+    "        </table>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/calendar/datepicker.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/calendar/datepicker.html",
+    "<div>\n" +
+    "    <span class=\"icon-primary-calendar span12\" ng-class=\"{'disabled': ngDisabled}\" ng-transclude></span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/coachmark/coachmark.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/coachmark/coachmark.html",
+    "<div class=\"b2b-coachmark-container\" tabindex=\"-1\" role=\"dialog\" aria-label=\"{{currentCoachmark.contentHeader}} {{currentCoachmark.content}} {{currentCoachmark.offscreenText}}\" ng-style=\"{'top':coackmarkElPos.top,'left':coackmarkElPos.left}\" aria-describeby=\"{{currentCoachmark}}\">\n" +
+    "   <i class=\"b2b-coachmark-caret\"></i>\n" +
+    "   <div class=\"b2b-coachmark-header\">\n" +
+    "       <div class=\"b2b-coachmark-countlabel\"><span ng-if=\"coachmarkIndex !== 0\">{{coachmarkIndex}} of {{(coachmarks.length-1)}}<span></div>\n" +
+    "       <div class=\"corner-button\">\n" +
+    "           <button type=\"button\" ng-focus=\"closeButtonFocus()\" class=\"close\" title=\"close\" aria-label=\"Close\" ng-click=\"closeCoachmark()\"></button>\n" +
+    "       </div>\n" +
+    "   </div>\n" +
+    "   <div class=\"b2b-coachmark-content\">   \n" +
+    "       <i class=\"icon-misc-dimmer\"></i>\n" +
+    "       <div class=\"b2b-coachmark-content-header\"><span class=\"offscreen-text\">{{currentCoachmark.offscreenText}}</span>{{currentCoachmark.contentHeader}}</div>\n" +
+    "       <div class=\"b2b-coachmark-description\">{{currentCoachmark.content}}</div>\n" +
+    "       <div class=\"b2b-coachmark-btn-group\">\n" +
+    "           <a class=\"b2b-coachmark-link\" href=\"javascript:void(0)\" ng-if=\"currentCoachmark.linkLabel !== '' && currentCoachmark.linkLabel !== undefined\" ng-click=\"actionCoachmark(currentCoachmark.linkLabel)\">{{currentCoachmark.linkLabel}}</a>\n" +
+    "           <button class=\"btn btn-alt\" ng-if=\"currentCoachmark.buttonLabel !== '' && currentCoachmark.buttonLabel !== undefined\" ng-click=\"actionCoachmark(currentCoachmark.buttonLabel)\">{{currentCoachmark.buttonLabel}}</button>\n" +
+    "       </div>  \n" +
+    "   </div>  \n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/dropdowns/b2bDropdownDesktop.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/dropdowns/b2bDropdownDesktop.html",
+    "<span b2b-key prev=\"38\" next=\"40\" enable-search ng-class=\"{'large': (dropdownSize === 'large'), 'disabled': (disabled), 'selectWrap': (isInputDropdown), 'selectorModule': (dropdownType === 'menu'), 'linkSelectorModule': (dropdownType === 'link-menu')}\">\n" +
+    "    <input b2b-dropdown-toggle b2b-dropdown-validation ng-disabled=\"disabled\" type=\"text\" id=\"{{dropdownId}}\" name=\"{{dropdownName}}\" class=\"awd-select isWrapped\" ng-required=\"dropdownRequired\" ng-model=\"currentSelected.text\" role=\"combobox\" aria-owns=\"listbox{{$id}}\" aria-expanded=\"{{toggleFlag}}\" ng-click=\"toggleDropdown()\" ng-focus=\"focused=true\" ng-blur=\"setBlur(); focused=false\" ng-class=\"{'active': toggleFlag, 'closed': !toggleFlag, 'large': (dropdownSize === 'large'), 'focused':focused}\" style=\"width:100%;\" value=\"{{currentSelected.text}}\" ng-show=\"isInputDropdown\" aria-describedby=\"{{dropdownDescribedBy}}\" readonly=\"readonly\">\n" +
+    "    <button type=\"button\" b2b-dropdown-toggle ng-disabled=\"disabled\" class=\"selectModule\" aria-label=\"{{labelText}} {{currentSelected.label}}\" aria-expanded=\"{{toggleFlag}}\" aria-haspopup=\"true\" ng-click=\"toggleDropdown()\" ng-blur=\"setBlur()\" ng-class=\"{'active opened': toggleFlag, 'closed': !toggleFlag, 'large': (dropdownSize === 'large')}\" ng-bind-html=\"currentSelected.text\" ng-show=\"!isInputDropdown\"></button>\n" +
+    "    <div ng-class=\"{'selectWrapper': (isInputDropdown), 'moduleWrapper': (!isInputDropdown)}\">\n" +
+    "        <ul id=\"listbox{{$id}}\" role=\"{{isInputDropdown?'listbox':'menu'}}\" ng-class=\"{'awd-select-list': (isInputDropdown), 'awd-module-list': (!isInputDropdown)}\" tabindex=\"-1\" ng-show=\"toggleFlag\" aria-label=\"Choose options\"></ul>\n" +
+    "        <ul class=\"module-optinalcta\" ng-if=\"toggleFlag && optionalCta\" tabindex=\"-1\" aria-hidden=\"false\">\n" +
+    "            <li class=\"module-list-item\" tabindex=\"-1\" role=\"menuitem\" value=\"\" aria-label=\"Optinal CTA\" aria-selected=\"true\">\n" +
+    "                <span class=\"module-data\" b2b-append-element=\"optionalCta\"></span>\n" +
+    "            </li>\n" +
+    "        </ul>\n" +
+    "</div>\n" +
+    "<i class=\"icon-primary-down\" aria-hidden=\"true\"></i>\n" +
+    "</span>    ");
+}]);
+
+angular.module("b2bTemplate/dropdowns/b2bDropdownGroupDesktop.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/dropdowns/b2bDropdownGroupDesktop.html",
+    "<li b2b-dropdown-group-desktop class=\"optgroup-wrapper\">{{groupHeader}}\n" +
+    "    <ul class=\"optgroup\" role=\"group\" aria-label=\"{{groupHeader}}\"></ul>\n" +
+    "</li>");
+}]);
+
+angular.module("b2bTemplate/dropdowns/b2bDropdownListDesktop.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/dropdowns/b2bDropdownListDesktop.html",
+    "<li b2b-dropdown-list-desktop b2b-key-item b2b-accessibility-click=\"13\" aria-selected=\"{{currentSelected.value === dropdownListValue}}\" ng-class=\"{'awd-select-list-item': (isInputDropdown), 'module-list-item': (!isInputDropdown)}\" tabindex=\"0\" role=\"{{isInputDropdown?'option':'menuitem'}}\" ng-click=\"selectDropdownItem()\"></li>");
+}]);
+
+angular.module("b2bTemplate/fileUpload/fileUpload.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/fileUpload/fileUpload.html",
+    "<label class=\"b2b-file-container\">\n" +
+    "   <span class=\"b2b-upload-link\" ng-transclude></span>\n" +
+    "   <input type=\"file\" b2b-file-change>\n" +
+    "</label>");
+}]);
+
+angular.module("b2bTemplate/flyout/flyout.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/flyout/flyout.html",
+    "<span class=\"b2b-flyout\"  b2b-flyout-trap-focus-inside>\n" +
+    "    <span ng-transclude></span>\n" +
+    "</span>");
+}]);
+
+angular.module("b2bTemplate/flyout/flyoutContent.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/flyout/flyoutContent.html",
+    "<div class=\"b2b-flyout-container\" aria-live=\"polite\" aria-atomic=\"false\" ng-class=\"{'b2b-flyout-left':horizontalPlacement==='left',\n" +
+    "                'b2b-flyout-center':horizontalPlacement==='center', \n" +
+    "                'b2b-flyout-right':horizontalPlacement==='right',\n" +
+    "                'b2b-flyout-centerLeft':horizontalPlacement==='centerLeft',\n" +
+    "                'b2b-flyout-centerRight':horizontalPlacement==='centerRight',  \n" +
+    "                'b2b-flyout-above':verticalPlacement==='above', \n" +
+    "                'b2b-flyout-below':verticalPlacement==='below',\n" +
+    "                'open-flyout': openFlyout,\n" +
+    "                'b2b-close-flyout': !openFlyout}\">\n" +
+    "    <i class=\"b2b-flyout-caret\" ng-class=\"{'open-flyout': openFlyout, \n" +
+    "                                   'b2b-flyout-caret-above':verticalPlacement==='above',\n" +
+    "                                   'b2b-flyout-caret-below':verticalPlacement==='below'}\"></i>\n" +
+    "    <span ng-transclude></span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/footer/footer_column_switch_tpl.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/footer/footer_column_switch_tpl.html",
+    "<div class=\"footer-columns \" ng-class=\"{'five-column':footerColumns===5, 'four-column':footerColumns===4, 'three-column':footerColumns===3}\" ng-repeat=\"item in footerLinkItems\">\n" +
+    "    <h3 class=\"b2b-footer-header\">{{item.categoryName}}</h3>\n" +
+    "    <ul>\n" +
+    "        <li ng-repeat=\"i in item.values\">\n" +
+    "            <a href=\"{{i.href}}\" title=\"{{item.categoryName}} - {{i.displayLink}}\">{{i.displayLink}}</a>  \n" +
+    "        </li>\n" +
+    "    </ul>\n" +
+    "\n" +
+    "</div>\n" +
+    "\n" +
+    "<div ng-transclude></div>\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/horizontalTable/horizontalTable.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/horizontalTable/horizontalTable.html",
+    "<div class=\"b2b-horizontal-table\">\n" +
+    "    <div class=\"b2b-horizontal-table-arrows row span12\">\n" +
+    "       <div class=\"span4\">\n" +
+    "           <button class=\"btn-arrow left\" type=\"button\" ng-click=\"moveViewportLeft()\" ddh-accessibility-click=\"13,32\" ng-disabled=\"disableLeft\"><div class=\"btn btn-alt\"><i class=\"icon-primary-left\"></i></div>Previous Set</button>\n" +
+    "        </div>\n" +
+    "        \n" +
+    "        <span class=\"span5 b2b-horizontal-table-column-info\" aria-live=\"polite\" tabindex=\"-1\">\n" +
+    "           Displaying {{getColumnSet()[0]}} - {{getColumnSet()[1]}} of {{numOfCols}} (total) columns\n" +
+    "        </span>\n" +
+    "        \n" +
+    "        <div class=\"span3\">\n" +
+    "           <button class=\"btn-arrow right\" ng-click=\"moveViewportRight()\" ddh-accessibility-click=\"13,32\" ng-disabled=\"disableRight\" type=\"button\">Next Set<div class=\"btn btn-alt\"><i class=\"icon-primary-right\"></i></div></button>\n" +
+    "       </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-horizontal-table-inner-container\">\n" +
+    "        <span ng-transclude></span>\n" +
+    "    </div>\n" +
+    "</div>\n" +
+    "\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/hourPicker/b2bHourpicker.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/hourPicker/b2bHourpicker.html",
+    "<div class=\"hp-container\">\n" +
+    "    <div class=\"hp-selected\">\n" +
+    "        <div b2b-hourpicker-value=\"$index\" days=\"value.days\" start-time=\"value.startTime\" start-meridiem=\"value.startMeridiem\" end-time=\"value.endTime\" end-meridiem=\"value.endMeridiem\" ng-repeat=\"value in finalHourpickerValues\"></div>\n" +
+    "    </div>\n" +
+    "    <div b2b-hourpicker-panel></div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/hourPicker/b2bHourpickerPanel.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/hourPicker/b2bHourpickerPanel.html",
+    "<form name=\"{{'hourpickerForm' + $id}}\">\n" +
+    "    <div class=\"hp-checkbox\" role=\"group\">\n" +
+    "        <label class=\"checkbox\" for=\"checkbox_{{dayOption.title}}_{{$id}}\" aria-label=\"{{dayOption.title}}\" ng-repeat=\"dayOption in hourpicker.dayOptions\">\n" +
+    "            <input type=\"checkbox\" id=\"checkbox_{{dayOption.title}}_{{$id}}\" name=\"{{'hourpickerDays' + $id}}\" ng-model=\"hourpickerPanelValue.days[$index].value\" ng-disabled=\"dayOption.disabled\" /><i class=\"skin\"></i><span>{{dayOption.label}}</span>\n" +
+    "        </label>\n" +
+    "    </div>\n" +
+    "    <div class=\"row hp-dropdowns\">\n" +
+    "        <div class=\"span4\">\n" +
+    "            <label for=\"{{'hourpickerStartTime' + $id}}\">From</label>\n" +
+    "            <select id=\"{{'hourpickerStartTime' + $parent.$id}}\" b2b-dropdown type=\"\" ng-model=\"hourpickerPanelValue.startTime\">\n" +
+    "                <option b2b-dropdown-list value=\"\">From</option>\n" +
+    "                <option b2b-dropdown-list option-repeat=\"startTimeOption in hourpicker.startTimeOptions\" value=\"{{startTimeOption}}\">{{startTimeOption}}</option>\n" +
+    "            </select>\n" +
+    "        </div>\n" +
+    "        <div class=\"span8 radio-buttons\" role=\"radiogroup\" aria-label=\"Select AM or PM\">\n" +
+    "            <label class=\"radio\" for=\"hourpickerStartMeridiem_AM_{{$id}}\">\n" +
+    "                <input type=\"radio\" id=\"hourpickerStartMeridiem_AM_{{$id}}\" name=\"{{'hourpickerStartMeridiem' + $id}}\" value=\"am\" ng-model=\"hourpickerPanelValue.startMeridiem\" /><i class=\"skin\"></i><span>AM</span>\n" +
+    "            </label>\n" +
+    "            <label class=\"radio\" for=\"hourpickerStartMeridiem_PM_{{$id}}\">\n" +
+    "                <input type=\"radio\" id=\"hourpickerStartMeridiem_PM_{{$id}}\" name=\"{{'hourpickerStartMeridiem' + $id}}\" value=\"pm\" ng-model=\"hourpickerPanelValue.startMeridiem\" /><i class=\"skin\"></i><span>PM</span>\n" +
+    "            </label>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"row hp-dropdowns\">\n" +
+    "        <div class=\"span4\">\n" +
+    "            <label for=\"{{'hourpickerEndTime' + $id}}\">To</label>\n" +
+    "            <select id=\"{{'hourpickerEndTime' + $parent.$id}}\" b2b-dropdown ng-model=\"hourpickerPanelValue.endTime\">\n" +
+    "                <option b2b-dropdown-list value=\"\">To</option>\n" +
+    "                <option b2b-dropdown-list option-repeat=\"endTimeOption in hourpicker.endTimeOptions\" value=\"{{endTimeOption}}\">{{endTimeOption}}</option>\n" +
+    "            </select>\n" +
+    "        </div>\n" +
+    "        <div class=\"span8 radio-buttons\" role=\"radiogroup\" aria-label=\"Select AM or PM\">\n" +
+    "            <label class=\"radio\" for=\"hourpickerEndMeridiem_AM_{{$id}}\">\n" +
+    "                <input type=\"radio\" id=\"hourpickerEndMeridiem_AM_{{$id}}\" name=\"{{'hourpickerEndMeridiem' + $id}}\" value=\"am\" ng-model=\"hourpickerPanelValue.endMeridiem\" /><i class=\"skin\"></i><span>AM</span>\n" +
+    "            </label>\n" +
+    "            <label class=\"radio\" for=\"hourpickerEndMeridiem_PM_{{$id}}\">\n" +
+    "                <input type=\"radio\" id=\"hourpickerEndMeridiem_PM_{{$id}}\" name=\"{{'hourpickerEndMeridiem' + $id}}\" value=\"pm\" ng-model=\"hourpickerPanelValue.endMeridiem\" /><i class=\"skin\"></i><span>PM</span>\n" +
+    "            </label>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"row hp-buttons\">\n" +
+    "        <div class=\"span12\">\n" +
+    "            <div style=\"float:right\">\n" +
+    "                <button class=\"btn btn-secondary btn-small\" ng-click=\"resetHourpickerPanelValue()\">Clear</button>\n" +
+    "                <button class=\"btn btn-alt btn-small\" ng-disabled = \"disableAddBtn\" ng-click=\"updateHourpickerValue()\">{{hourpicker.editMode > -1 ? 'Update' : 'Add'}}</button>\n" +
+    "            </div>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "</form>");
+}]);
+
+angular.module("b2bTemplate/hourPicker/b2bHourpickerValue.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/hourPicker/b2bHourpickerValue.html",
+    "<div class=\"selected-days\">\n" +
+    "    <span class=\"day\">{{hourpickerValue.days}} &nbsp; {{hourpickerValue.startTime}} {{hourpickerValue.startMeridiem}} - {{hourpickerValue.endTime}} {{hourpickerValue.endMeridiem}}</span>\n" +
+    "    <span style=\"float:right\">\n" +
+    "        <i class=\"icon-misc-pen\" role=\"button\" title=\"Edit {{hourpickerValue.days}} &nbsp; {{hourpickerValue.startTime}} {{hourpickerValue.startMeridiem}} - {{hourpickerValue.endTime}} {{hourpickerValue.endMeridiem}}\" tabindex=\"0\" b2b-accessibility-click=\"13,32\" ng-click=\"editHourpickerValue(hourpickerValue.index)\"></i>\n" +
+    "        <i class=\"icon-misc-trash\" role=\"button\" title=\"Delete {{hourpickerValue.days}} &nbsp; {{hourpickerValue.startTime}} {{hourpickerValue.startMeridiem}} - {{hourpickerValue.endTime}} {{hourpickerValue.endMeridiem}}\" tabindex=\"0\" b2b-accessibility-click=\"13,32\" ng-click=\"deleteHourpickerValue(hourpickerValue.index)\"></i>\n" +
+    "    </span>\n" +
+    "    <div style=\"clear:both\"></div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/leftNavigation/leftNavigation.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/leftNavigation/leftNavigation.html",
+  "<div class=\"b2b-nav-menu\" ng-init=\"(showmenu = true)\" ng-class=\"{false: 'left-menu-collapsed'}[showmenu]\">\n" +
+    "    <div class=\"b2b-subnav-container\">\n" +
+    "        <ul class=\"b2b-subnav-content\">\n" +
+    "			 <li>" +
+    "				<div ng-class=\"{true: 'leftmenu-arrow-expand', false: 'leftmenu-arrow-collapse'}[showmenu]\">"+	
+    "					<a ng-click=\"toggleDrawer(showmenu);(showmenu = !showmenu) \" class=\"text-right\">" +
+    "					<i ng-class=\"{true: 'icon-controls-left', false: 'icon-controls-right'}[showmenu]\">&nbsp;</i></a>" +
+    "				</div>"+			
+    "			</li>" +
+    "            <li ng-repeat=\"menu in menuData\" ui-sref=\"{{menu.state}}\">" +
+    "    			<span ng-class=\"{true: 'menu-icon', false: 'menu-icon-collapse'}[showmenu]\"><span class=\"{{menu.imageSrc}}\"></span>&nbsp;&nbsp;</span>" +
+    "				<a ng-class=\"{expand: isOpen($index)}\" ng-if=\"showmenu\"  aria-label=\"{{menu.name}}\" title=\" \" aria-expanded=\"{{(idx==$index)?true:false;}}\" href=\"javascript:void(0);\">" +
+    "					{{menu.name}}" +
+    " 					<i aria-hidden=\"true\" ng-if=\"(menu.menuItems.length > 0)\" class=\"b2b-icon-primary-plus-minus\"ng-class=\"idx==$index ? 'icon-primary-expanded' : 'icon-primary-collapsed'\"></i>" +
+    "				</a>\n" +
+    "				<div role=\"region\" aria-hidden=\"{{(isOpen($index))?false:true;}}\">\n" +
+    "               	<ul ng-class=\"{expand: idx==$index}\">\n" +
+    "                  	  <li ng-repeat=\"menuItem in menu.menuItems\" ng-click=\"liveLink($event, $index, $parent.$index)\"><a aria-hidden=\"{{!(idx==$parent.$index)}}\" aria-label=\"{{menuItem.name}}\" title=\" \" href=\"{{menuItem.href}}\" tabindex=\"{{(idx==$parent.$index)?0:-1;}}\" ng-class=\"{active: itemIdx==$index && navIdx==$parent.$index}\">{{menuItem.name}}</a></li>\n" +
+    "              		</ul>\n" +
+    "				</div>\n" +
+    "            </li>\n" +
+    "        </ul>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/listbox/listbox.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/listbox/listbox.html",
+    "<div class=\"b2b-list-box\" tabindex=\"0\" role=\"listbox\" ng-transclude>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/modalsAndAlerts/b2b-backdrop.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/modalsAndAlerts/b2b-backdrop.html",
+    "<div class=\"b2b-modal-backdrop fade in hidden-by-modal\" aria-hidden=\"true\" tabindex=\"-1\"></div>");
+}]);
+
+angular.module("b2bTemplate/modalsAndAlerts/b2b-window.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/modalsAndAlerts/b2b-window.html",
+    "<div class=\"modalwrapper active {{windowClass}}\" ng-class=\"{'modal-landscape': isModalLandscape}\" role=\"{{isNotifDialog?'alertdialog':'dialog'}}\" tabindex=\"-1\" aria-labelledby=\"{{title}}\" aria-describedby=\"{{content}}\">\n" +
+    "    <div class=\"modal fade in {{sizeClass}}\" ng-transclude></div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/monthSelector/monthSelector-popup.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/monthSelector/monthSelector-popup.html",
+    "<div id=\"monthselector{{$id}}\" class=\"datepicker dropdown-menu monthselector\" \n" +
+    "     ng-class=\"{'datepicker-dropdown datepicker-orient-top': !inline, 'datepicker-orient-left': !inline && orientation === 'left', 'datepicker-orient-right': !inline && orientation === 'right'}\" \n" +
+    "     ng-style=\"{position: inline && 'relative', 'z-index': inline && '0', top: !inline && position.top + 'px' || 0, left: !inline && position.left + 'px'}\" \n" +
+    "     style=\"display: block;\" aria-hidden=\"false\" role=\"dialog presentation\" tabindex=\"-1\">\n" +
+    "    <div class=\"datepicker-days\" style=\"display: block;\">\n" +
+    "        <span class=\"offscreen-text\" aria-live=\"polite\" aria-atomic=\"true\">{{title}} displaying</span>\n" +
+    "        <table class=\"table-condensed\" role=\"grid\">\n" +
+    "            <thead>\n" +
+    "                <tr ng-repeat=\"header in headers\">\n" +
+    "                    <th colspan=\"7\" class=\"text-left\" style=\"width: 278px;\" b2b-append-element=\"header\"></th>\n" +
+    "                </tr>\n" +
+    "                <tr>\n" +
+    "                    <th id=\"prev{{$id}}\" role=\"button\" tabindex=\"0\" b2b-accessibility-click=\"13\" aria-label=\"Previous Year\" ng-class=\"{'prev': !disablePrev}\" ng-style=\"{visibility: visibilityPrev}\" ng-click=\"!disablePrev && move(-1,$event)\"><i class=\"icon-primary-left\"></i></th>\n" +
+    "                    <th id=\"year{{$id}}\" role=\"heading\" tabindex=\"-1\" aria-label=\"{{title}}\" class=\"datepicker-switch b2b-monthSelector-label\" colspan=\"{{rows[0].length - 2}}\">{{title}}</th>\n" +
+    "                    <th id=\"next{{$id}}\" role=\"button\" tabindex=\"0\" b2b-accessibility-click=\"13\" aria-label=\"Next Year\" ng-class=\"{'next': !disableNext}\" ng-style=\"{visibility: visibilityNext}\" ng-click=\"!disableNext && move(1,$event)\"><i class=\"icon-primary-right\"></i></th>\n" +
+    "                </tr>\n" +
+    "                <tr ng-show=\"labels.length > 0\">\n" +
+    "                    <th id=\"{{label.post}}\" class=\"dow\" ng-repeat=\"label in labels\" aria-hidden=\"true\"><span aria-hidden=\"true\">{{label.pre}}</span></th>\n" +
+    "                </tr>\n" +
+    "            </thead>\n" +
+    "            <tbody b2b-key type=\"table\" columns=\"4\" >\n" +
+    "                <tr ng-repeat=\"row in rows\">\n" +
+    "                    <td headers=\"{{dt.header}}\" b2b-key-item=\"dt.focusable\" b2b-accessibility-click=\"13,32\" tabindex=\"{{(!(dt.focusable && (dt.selected || dt.firstFocus || currFocus)) && -1) || 0}}\" aria-hidden=\"{{(!dt.focusable && true) || false}}\" role=\"{{(dt.focusable && 'gridcell') || ''}}\" aria-label=\"{{(dt.focusable && dt.date | date : 'MMMM, y') || ''}}\" aria-selected=\"{{(dt.focusable && (dt.selected || dt.dateRange) && true) || false}}\" ng-repeat=\"dt in row\" class=\"day magic\" ng-class=\"{'active': dt.focusable && dt.selected && !dt.dateRange, 'start-date': dt.focusable && dt.fromDate && dt.dateRange, 'between-date': dt.focusable && !dt.fromDate && !dt.selected && dt.dateRange, 'end-date': dt.focusable && dt.selected && dt.dateRange, 'old': dt.oldMonth, 'new': dt.nextMonth, 'disabled': dt.disabled, 'due-date': dt.dueDate, 'late-fee': dt.pastDue}\" ng-focus=\"currFocus=true\" ng-blur=\"currFocus=false\" title=\"{{(dt.focusable && dt.pastDue && legendMessage) || ''}}\" b2b-element-focus=\"inline && dt.focusable && dt.selected && !dt.dateRange\" ng-click=\"!ngDisabled && !dt.disabled && select(dt.date)\">\n" +
+    "                        <div aria-hidden=\"true\"  tabindex=\"-1\" class=\"show-date\" ng-if=\"!(dt.oldMonth || dt.nextMonth)\">{{dt.label | limitTo: 3}}</div>\n" +
+    "                    </td>\n" +
+    "                </tr>\n" +
+    "            </tbody>\n" +
+    "            <tfoot>\n" +
+    "                <tr ng-repeat=\"footer in footers\">\n" +
+    "                    <th colspan=\"7\" class=\"text-left\" b2b-append-element=\"footer\"></th>\n" +
+    "                </tr>\n" +
+    "            </tfoot>\n" +
+    "        </table>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/monthSelector/monthSelector.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/monthSelector/monthSelector.html",
+    "<div>\n" +
+    "    <span class=\"icon-primary-calendar span12\" ng-class=\"{'disabled': ngDisabled}\" ng-transclude></span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/monthSelector/monthSelectorLink.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/monthSelector/monthSelectorLink.html",
+    "<div>\n" +
+    "    <span class=\"span12\" ng-transclude></span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/pagination/b2b-pagination.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/pagination/b2b-pagination.html",
+    "<div class=\"b2b-pager\">\n" +
+    "    <div ng-if=\"notMobile && totalPages > 1\">\n" +
+    "        <a tabindex=\"{{currentPage <= 1 ? -1 : 0 }}\" class=\"b2b-pager__item--prev\" b2b-accessibility-click=\"13,32\" title=\"Previous Page\" ng-click=\"prev($event)\" ng-if=\"totalPages > 10\" ng-class=\"currentPage <= 1 ? 'b2b-pager__item--prev-disabled': '' \">\n" +
+    "            <i class=\"icon-primary-left\"></i>\n" +
+    "        </a>\n" +
+    "        <a tabindex=\"{{currentPage === 1 ? -1 : 0}}\" ng-class=\"{'b2b-pager__item--noclick': currentPage === 1}\" aria-selected=\"{{checkSelectedPage(page)}}\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page 1{{checkSelectedPage(page) ? ' selected' : '' }}\" ng-if=\"totalPages > 10 && currentPage > 6\" b2b-accessibility-click=\"13,32\" ng-click=\"selectPage(1, $event)\">\n" +
+    "            1<span class=\"offscreen-text\" ng-if=\"currentPage === 1\"> is selected</span>\n" +
+    "        </a>\n" +
+    "        <a tabindex=\"{{currentPage === 2 ? -1 : 0}}\" aria-selected=\"{{checkSelectedPage(page)}}\" ng-class=\"{'b2b-pager__item--noclick': currentPage === 2}\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page 2{{checkSelectedPage(page) ? ' selected' : '' }}\" ng-if=\"totalPages > 10 && currentPage > 6\" b2b-accessibility-click=\"13,32\" ng-click=\"selectPage(2, $event)\">2<span class=\"offscreen-text\" ng-if=\"currentPage === 2\"> is selected</span></a>\n" +
+    "\n" +
+    "        <span class=\"b2b-pager__item\" ng-if=\"totalPages > 10 && currentPage > 6\">...</span>\n" +
+    "\n" +
+    "        <a tabindex=\"{{checkSelectedPage(page) ? -1 : 0}}\" href=\"javascript:void(0)\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page {{page}}\" b2b-element-focus=\"isFocused(page)\" ng-repeat=\"page in pages\" ng-class=\"{'b2b-pager__item--active': checkSelectedPage(page), 'b2b-pager__item--noclick': checkSelectedPage(page)}\" b2b-accessibility-click=\"13,32\" ng-click=\"!checkSelectedPage(page) && selectPage(page, $event)\">{{page}}<span class=\"offscreen-text\" ng-if=\"currentPage === page\"> is selected</span></a>\n" +
+    "\n" +
+    "        <span class=\"b2b-pager__item\" ng-if=\"totalPages > 10 && currentPage <= totalPages - 5\">...</span>\n" +
+    "\n" +
+    "        <a tabindex=\"{{checkSelectedPage(page) ? -1 : 0}}\" href=\"javascript:void(0)\" ng-class=\"{'b2b-pager__item--noclick': checkSelectedPage(page)}\" aria-selected=\"{{checkSelectedPage(page)}}\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page {{totalPages-1}}\" ng-if=\"totalPages > 10 && currentPage <= totalPages - 5\" b2b-accessibility-click=\"13,32\" ng-click=\"selectPage(totalPages-1, $event)\">{{totalPages-1}}<span class=\"offscreen-text\" ng-if=\"currentPage === totalPages-1\"> is selected</span></a>\n" +
+    "\n" +
+    "        <a tabindex=\"{{currentPage === totalPages ? -1 : 0}}\" href=\"javascript:void(0)\" ng-class=\"{'b2b-pager__item--noclick': currentPage === totalPages}\" aria-selected=\"{{checkSelectedPage(page)}}\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page {{totalPages}}\" ng-if=\"totalPages > 10 && currentPage <= totalPages - 5\" b2b-accessibility-click=\"13,32\" ng-click=\"selectPage(totalPages, $event)\">{{totalPages}}<span class=\"offscreen-text\" ng-if=\"currentPage === totalPages\"> is selected</span></a>\n" +
+    "\n" +
+    "        <a tabindex=\"{{currentPage >= totalPages ? -1 : 0 }}\" href=\"javascript:void(0)\" class=\"b2b-pager__item--next\" b2b-accessibility-click=\"13,32\" title=\"Next Page\" ng-click=\"next($event)\" ng-if=\"totalPages > 10\" ng-class=\"currentPage >= totalPages ? 'b2b-pager__item--next-disabled' :'' \">\n" +
+    "            <i class=\"icon-primary-right\"></i>\n" +
+    "        </a>\n" +
+    "        \n" +
+    "        <span class=\"fieldLabel\" ng-show=\"totalPages > 10 && showInput === true\">    \n" +
+    "            <label for=\"{{inputId}}\">Go to Page:</label>\n" +
+    "            <input id=\"{{inputId}}\" class=\"b2b-pager__item--input\" type=\"number\" ng-blur=\"onfocusOut($event)\" ng-focus=\"onfocusIn($event)\" ng-keypress=\"gotoKeyClick($event)\" b2b-only-nums=\"4\" ng-model=\"$parent.gotoPage\" />\n" +
+    "            <button class=\"btn-arrow\" ng-click=\"gotoBtnClick()\" ng-disabled=\"$parent.gotoPage !== 0 || $parent.gotoPage !== undefined\" aria-label=\"Go to\">\n" +
+    "                <div class=\"btn btn-small btn-secondary\">\n" +
+    "                    <i class=\"icon-primary-right\"></i>\n" +
+    "                </div>\n" +
+    "            </button>\n" +
+    "        </span>\n" +
+    "    </div>\n" +
+    "    <div ng-if=\"isMobile && totalPages > 1\" ng-swipe-right=\"prev()\" ng-swipe-left=\"next()\" ng-class=\"isMobile ? 'b2b-mobile-view': '' \">\n" +
+    "        <a tabindex=\"{{checkSelectedPage(page) ? -1 : 0}}\" href=\"javascript:void(0)\" class=\"b2b-pager__item b2b-pager__item--link\" title=\"Page {{page}}\" b2b-element-focus=\"isFocused(page)\" ng-repeat=\"page in pages\" ng-class=\"{'b2b-pager__item--active': checkSelectedPage(page), fade1: ($index == 0 && currentPage > meanVal+1),  fade2: ($index == 1 && currentPage > meanVal+1), fadesl: ($index == pages.length-2 && currentPage < totalPages - meanVal),  fadel: ($last && currentPage < totalPages - meanVal), 'b2b-pager__item--noclick': checkSelectedPage(page)}\" b2b-accessibility-click=\"13,32\" ng-click=\"selectPage(page, $event)\">{{page}}</a>\n" +
+    "    </div>\n" +
+    "</div>\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/paneSelector/paneSelector.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/paneSelector/paneSelector.html",
+    "<div class=\"panes\" ng-transclude></div>");
+}]);
+
+angular.module("b2bTemplate/paneSelector/paneSelectorPane.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/paneSelector/paneSelectorPane.html",
+    "<div class=\"pane-block\" ng-transclude></div>");
+}]);
+
+angular.module("b2bTemplate/profileCard/profileCard-addUser.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/profileCard/profileCard-addUser.html",
+    "<div  class=\"span3 b2b-profile-card b2b-add-user\">\n" +
+    "    <div class=\"atcenter\">\n" +
+    "        <div class=\"circle\"><i class=\"icon-primary-add-maximize\"></i></div>\n" +
+    "        <div>Create new user</div>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/profileCard/profileCard.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/profileCard/profileCard.html",
+    "<div class=\"span3 b2b-profile-card\">\n" +
+    "    <div class=\"top-block\">\n" +
+    "       <div class=\"profile-image\">\n" +
+    "            <img ng-if=\"image\" profile-name=\"{{profile.name}}\" ng-src=\"{{profile.img}}\" alt=\"{{profile.name}}\">\n" +
+    "            <span ng-if=\"!image\" class=\"default-img\">{{initials}}</span>\n" +
+    "\n" +
+    "            <h4 class=\"name\">{{profile.name}}</h4>\n" +
+    "\n" +
+    "            <p class=\"status\">\n" +
+    "                <span class=\"status-icon\" ng-class=\"{'status-green':colorIcon==='green','status-red':colorIcon==='red','status-blue':colorIcon==='blue','status-yellow':colorIcon==='yellow'}\">   \n" +
+    "                </span>\n" +
+    "                <span>{{profile.state}}<span ng-if=\"badge\" class=\"status-badge\">Admin</span></span>\n" +
+    "            </p>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"bottom-block\">\n" +
+    "         <div class=\"profile-details\">\n" +
+    "            <label>Username</label>\n" +
+    "            <div ng-if=\"shouldClip(profile.userName)\" ng-mouseover=\"showUserNameTooltip = true;\" ng-mouseleave=\"showUserNameTooltip = false;\">\n" +
+    "                <div ng-if=\"shouldClip(profile.userName)\" class=\"tooltip\" b2b-tooltip show-tooltip=\"showUserNameTooltip\">\n" +
+    "                    {{profile.userName.slice(0, 25)+'...'}}\n" +
+    "                    <div class=\"arrow\"></div>\n" +
+    "                    <div class=\"tooltip-wrapper\" role=\"tooltip\" aria-live=\"polite\" aria-atomic=\"false\" style=\"z-index:1111\">\n" +
+    "                        <div class=\"tooltip-size-control\">\n" +
+    "                            <div class=\"helpertext\" tabindex=\"-1\" role=\"tooltip\">\n" +
+    "                                {{profile.userName}}\n" +
+    "                            </div>\n" +
+    "                        </div>\n" +
+    "                    </div>\n" +
+    "                </div>\n" +
+    "            </div>\n" +
+    "            <div ng-if=\"!shouldClip(profile.userName)\">\n" +
+    "                {{profile.userName}}\n" +
+    "            </div>\n" +
+    "            <label>Email</label>\n" +
+    "            <div ng-if=\"shouldClip(profile.email)\" ng-mouseover=\"showEmailTooltip = true;\" ng-mouseleave=\"showEmailTooltip = false;\">\n" +
+    "                <div ng-if=\"shouldClip(profile.email)\" class=\"tooltip\" data-placement=\"bottom\" b2b-tooltip show-tooltip=\"showEmailTooltip\">\n" +
+    "                    {{profile.email.slice(0, 25)+'...'}}\n" +
+    "                    <div class=\"arrow\"></div>\n" +
+    "                    <div class=\"tooltip-wrapper\" role=\"tooltip\" aria-live=\"polite\" aria-atomic=\"false\" style=\"z-index:1111\">\n" +
+    "                        <div class=\"tooltip-size-control\">\n" +
+    "                            <div class=\"helpertext\" tabindex=\"-1\" role=\"tooltip\">\n" +
+    "                                {{profile.email}}\n" +
+    "                            </div>\n" +
+    "                        </div>\n" +
+    "                    </div>\n" +
+    "                </div>\n" +
+    "            </div>\n" +
+    "            <div ng-if=\"!shouldClip(profile.email)\">\n" +
+    "                {{profile.email}}\n" +
+    "            </div>\n" +
+    "            <label>Role</label>\n" +
+    "            <div ng-if=\"shouldClip(profile.role)\" ng-mouseover=\"showRoleTooltip = true;\" ng-mouseleave=\"showRoleTooltip = false;\">\n" +
+    "                <div ng-if=\"shouldClip(profile.role)\" class=\"tooltip\" b2b-tooltip show-tooltip=\"showRoleTooltip\">\n" +
+    "                    {{profile.role.slice(0, 25)+'...'}}\n" +
+    "                    <div class=\"tooltip-wrapper\" role=\"tooltip\" aria-live=\"polite\" aria-atomic=\"false\" style=\"z-index:1111\">\n" +
+    "                        <div class=\"tooltip-size-control\">\n" +
+    "                            <div class=\"helpertext\" tabindex=\"-1\" role=\"tooltip\">\n" +
+    "                                {{profile.role}}\n" +
+    "                            </div>\n" +
+    "                        </div>\n" +
+    "                    </div>\n" +
+    "                </div>\n" +
+    "            </div>\n" +
+    "            <div ng-if=\"!shouldClip(profile.role)\">\n" +
+    "                {{profile.role}}\n" +
+    "            </div>\n" +
+    "            <label>Last login</label>\n" +
+    "            <div ng-if=\"shouldClip(profile.lastLogin)\" ng-mouseover=\"showLastLoginTooltip = true;\" ng-mouseleave=\"showLastLoginTooltip = false;\">\n" +
+    "                <div ng-if=\"shouldClip(profile.lastLogin)\" class=\"tooltip\" b2b-tooltip show-tooltip=\"showLastLoginTooltip\">\n" +
+    "                    {{profile.lastLogin.slice(0, 25)+'...'}}\n" +
+    "                    <div class=\"tooltip-wrapper\" role=\"tooltip\" aria-live=\"polite\" aria-atomic=\"false\" style=\"z-index:1111\">\n" +
+    "                        <div class=\"tooltip-size-control\">\n" +
+    "                            <div class=\"helpertext\" tabindex=\"-1\" role=\"tooltip\">\n" +
+    "                                {{profile.lastLogin}}\n" +
+    "                            </div>\n" +
+    "                        </div>\n" +
+    "                    </div>\n" +
+    "                </div>\n" +
+    "            </div>\n" +
+    "            <div ng-if=\"!shouldClip(profile.lastLogin)\">\n" +
+    "                {{profile.lastLogin}}\n" +
+    "            </div>\n" +
+    "         </div>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/searchField/searchField.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/searchField/searchField.html",
+    "<div class=\"search-bar\">\n" +
+    "    <div class='input-container' ng-blur=\"blurInput()\">\n" +
+    "        <input type=\"text\" class=\"innershadow b2b-search-input-field\" id=\"{{configObj.labelId}}\" b2b-search-input ng-model=\"inputModel\" ng-disabled=\"disabled\" b2b-reset ng-keydown=\"selectionIndex($event)\" placeholder=\"{{configObj.ghostText}}\" style=\"width:100%\" maxlength=\"{{configObj.maxLength}}\" title=\"{{inputModel}}\" aria-label=\"{{inputModel.length>0?inputModel:configObj.ghostText}}\"  aria-live=\"assertive\"/>\n" +
+    "            <button class=\"btn-search\" ng-disabled=\"disabled\" ng-click=\"startSearch()\" b2b-accessibility-click=\"13,32\" aria-label=\"Search\" ng-focus=\"showListFlag = false\" type=\"button\"><i class=\"icoControls-magnifyingglass\"></i></button>\n" +
+    "    </div>\n" +
+    "    <div class=\"search-suggestion-wrapper\" ng-if=\"filterList.length >=0\" ng-show=\"showListFlag\">\n" +
+    "        <ul class=\"search-suggestion-list\" role=\"listbox\">      \n" +
+    "            <li class=\"no-result\" ng-if=\"filterList.length == 0 && configObj.display\">{{configObj.resultText}}</li>\n" +
+    "            <li class=\"search-suggestion-item\" ng-if=\"filterList.length\" ng-repeat=\"item in filterList | limitTo:configObj.noOfItemsDisplay track by $index\" ng-bind-html=\"item.title | b2bMultiSepartorHighlight:inputModel:configObj.searchSeperator\" ng-class=\"{active:isActive($index,filterList.length)}\" ng-click=\"selectItem($index,item.title)\">\n" +
+    "                {{item.title}}     \n" +
+    "            </li>\n" +
+    "        </ul>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/seekBar/seekBar.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/seekBar/seekBar.html",
+    "<div class=\"b2b-seek-bar-container\" ng-class=\"{vertical:verticalSeekBar}\">\n" +
+    "    <div class=\"b2b-seek-bar-track-container\">\n" +
+    "        <div class=\"b2b-seek-bar-track\"></div>\n" +
+    "        <div class=\"b2b-seek-bar-track-fill\"></div>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-seek-bar-knob-container\" role=\"menu\"  >\n" +
+    "        <div class=\"b2b-seek-bar-knob\" tabindex=\"0\" role=\"menuitem\"></div>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/slider/slider.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/slider/slider.html",
+    "<div class=\"b2b-slider-container\" ng-class=\"{'vertical':verticalSlider}\">\n" +
+    "    <div class=\"slider-track-container\">\n" +
+    "        <div class=\"slider-track\"></div>\n" +
+    "        <div class=\"slider-track-fill\" ng-style=\"{backgroundColor:trackFillColor}\"></div>\n" +
+    "    </div>\n" +
+    "    <div class=\"slider-knob-container\" ng-class=\"{'slider-knob-hidden':hideKnob}\">\n" +
+    "        <div class=\"slider-knob\" role=\"slider\" aria-valuemin=\"{{min}}\" aria-valuemax=\"{{max}}\" aria-labelledby=\"{{labelId}}\" aria-valuenow=\"{{currentModelValue}}\" aria-valuetext=\"{{currentModelValue}}{{postAriaLabel}}\" aria-orientation=\"{{verticalSlider ? 'vertical' : 'horizontal'}}\"></div>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/spinButton/spinButton.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/spinButton/spinButton.html",
+    "<div class=\"btn-group btn-spinbutton-toggle\" ng-class=\"{'disabled': disabledFlag}\">\n" +
+    "    <button type=\"button\" tabindex=\"{{isMobile?'0':'-1'}}\" aria-hidden=\"{{notMobile}}\" class=\"btn btn-secondary btn-prev icon-primary-subtractminimize\" ng-click=\"minus();focusInputSpinButton($event)\" aria-label=\"Remove {{step}}\" aria-controls=\"{{spinButtonId}}\" ng-class=\"{'disabled': isMinusDisabled()}\" ng-disabled=\"isMinusDisabled()\" aria-disabled=\"{{isMinusDisabled()}}\" role=\"spinbutton\"></button>\n" +
+    "    <input class=\"btn pull-left\" id=\"{{spinButtonId}}\" type=\"tel\" b2b-only-nums=\"3\" maxlength=\"3\" min={{min}} max={{max}} data-max-value=\"{{max}}\" ng-model=\"inputValue[inputModelKey]\" value=\"{{inputValue[inputModelKey]}}\" aria-live=\"polite\" aria-valuenow=\"{{inputValue[inputModelKey]}}\" aria-valuemin=\"{{min}}\" aria-valuemax=\"{{max}}\" ng-disabled=\"disabledFlag\">\n" +
+    "    <button type=\"button\" tabindex=\"{{isMobile?'0':'-1'}}\" aria-hidden=\"{{notMobile}}\" class=\"btn btn-secondary btn-next icon-primary-add-maximize\" ng-click=\"plus();focusInputSpinButton($event)\" aria-label=\"Add {{step}}\" aria-controls=\"{{spinButtonId}}\" ng-class=\"{'disabled': isPlusDisabled()}\" ng-disabled=\"isPlusDisabled()\" aria-disabled=\"{{isPlusDisabled()}}\" role=\"spinbutton\"></button>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/statusTracker/statusTracker.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/statusTracker/statusTracker.html",
+    "<div class=\"b2b-status-tracker row\">\n" +
+    "   <button tabindex=\"0\" ng-disabled=\"currentViewIndex === 0\" ng-if=\"statuses.length > b2bStatusTrackerConfig.maxViewItems\" class=\"btn-arrow\" type=\"button\" aria-label=\"Previous status\" ng-click=\"previousStatus()\">\n" +
+    "       <div class=\"btn btn-small btn-secondary\">\n" +
+    "           <i class=\"icon-primary-left\"></i>\n" +
+    "       </div>\n" +
+    "   </button>\n" +
+    "   <div ng-repeat=\"status in statuses\" class=\"b2b-status-tracker-step\" ng-class=\"{ 'complete' : status.complete, 'current' : currentStatus($index)}\" ng-show=\"isInViewport($index)\">\n" +
+    "       <p class=\"b2b-status-tracker-heading\">{{status.heading}}</p>\n" +
+    "       <div class=\"progress\">\n" +
+    "           <div class=\"progress-bar\">\n" +
+    "               <span class=\"hidden-spoken\">\n" +
+    "                   {{status.complete ? 'Complete' : 'Incomplete'}}\n" +
+    "               </span>\n" +
+    "           </div>\n" +
+    "       </div>\n" +
+    "       <div class=\"b2b-status-tracker-estimate\">\n" +
+    "           <i ng-show=\"status.estimate !== '' && status.estimate !== undefined\" ng-class=\"status.complete ? 'icoControls-approval' : 'icon-misc-time'\"></i> {{status.complete ? 'Complete' : status.estimate}}\n" +
+    "           &nbsp;\n" +
+    "       </div>\n" +
+    "       \n" +
+    "       <div class=\"b2b-status-tracker-description\">\n" +
+    "           {{status.description}}\n" +
+    "       </div>\n" +
+    "   </div>\n" +
+    "   <button tabindex=\"0\" ng-disabled=\"currentViewIndex + b2bStatusTrackerConfig.maxViewItems === statuses.length\" ng-if=\"statuses.length > b2bStatusTrackerConfig.maxViewItems\" class=\"btn-arrow\" type=\"button\" aria-label=\"Next status\" ng-click=\"nextStatus()\">\n" +
+    "       <div class=\"btn btn-small btn-secondary\">\n" +
+    "           <i class=\"icon-primary-right\"></i>\n" +
+    "       </div>\n" +
+    "   </button>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/stepTracker/stepTracker.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/stepTracker/stepTracker.html",
+    "<div class=\"b2b-step-tracker\">\n" +
+    "    <button class=\"btn-arrow b2b-left-arrow\" ng-click=\"previousStatus()\" ng-disabled=\"currentViewIndex === 0\" ng-if=\"stepsItemsObject.length > b2bStepTrackerConfig.maxViewItems\" aria-label=\"Previous step\">\n" +
+    "       <div class=\"btn btn-left btn-small btn-secondary\"><i class=\"icon-primary-left\"></i></div>\n" +
+    "   </button>\n" +
+    "    <button class=\"btn-arrow b2b-right-arrow\" ng-click=\"nextStatus()\" ng-disabled=\"currentViewIndex + b2bStepTrackerConfig.maxViewItems === stepsItemsObject.length\" ng-if=\"stepsItemsObject.length > b2bStepTrackerConfig.maxViewItems\" aria-label=\"Next step\">\n" +
+    "       <div class=\"btn btn-small btn-right btn-secondary\"><i class=\"icon-primary-right\"></i></div>\n" +
+    "   </button>\n" +
+    "    <ul class=\"b2b-steps\">\n" +
+    "        <li ng-class=\"{'b2b-step-done':$index < currentIndex - 1 ,'b2b-step-on':$index == currentIndex - 1}\" \n" +
+    "            ng-repeat=\"stepsItem in stepsItemsObject\" ng-show=\"isInViewport($index)\">\n" +
+    "           <p class=\"b2b-step-text\" data-sm-text=\"{{stepsItem.dataMobile}}\" data-large-text=\"{{stepsItem.dataDesktop}}\">{{stepsItem.text}}</p>\n" +
+    "            <span class=\"hidden-spoken\">\n" +
+    "                {{($index < currentIndex - 1)? 'Complete. '+stepsItem.text+' '+stepsItem.dataMobile:''}} \n" +
+    "                {{($index == currentIndex - 1)? 'In Progress. '+stepsItem.text+' '+stepsItem.dataMobile:''}} \n" +
+    "                {{($index > currentIndex - 1)? 'Incomplete. '+stepsItem.text+' '+stepsItem.dataMobile:''}}\n" +
+    "            </span>\n" +
+    "        </li>\n" +
+    "    </ul>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/switches/switches-spanish.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/switches/switches-spanish.html",
+    "<div class=\"switch-overlay\" aria-hidden=\"true\">\n" +
+    "    <span class=\"btn-slider-on\"><span class=\"hidden-spoken\">seleccione para hacer </span><i class=\"activo\">activo</i></span>\n" +
+    "    <span class=\"switch-handle\"></span>\n" +
+    "    <span class=\"btn-slider-off\"><span class=\"hidden-spoken\">seleccione para hacer </span><i class=\"inactivo\">inactivo</i></span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/switches/switches.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/switches/switches.html",
+    "<div class=\"switch-overlay\" aria-hidden=\"true\">\n" +
+    "    <span class=\"btn-slider-on\">On</span>\n" +
+    "    <span class=\"switch-handle\"></span>\n" +
+    "    <span class=\"btn-slider-off\">Off</span>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/tableMessages/tableMessage.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tableMessages/tableMessage.html",
+    "<div class=\"b2b-table-message\">\n" +
+    "    <div class=\"b2b-message\" ng-if=\"msgType === 'noMatchingResults'\">\n" +
+    "        <div class=\"b2b-magnify-glass\"></div>\n" +
+    "        <div>\n" +
+    "            <div ng-transclude></div>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-message\" ng-if=\"msgType == 'infoCouldNotLoad'\">\n" +
+    "        <div class=\"icon-primary-alert b2b-alert\" aria-label=\"Oops! The information could not load at this time. Please click link to refresh the page.\"></div>\n" +
+    "        <div>Oops!</div>\n" +
+    "        <div>The information could not load at this time.</div>\n" +
+    "        <div>Please <a href=\"javascript:void(0)\" title=\"Refresh the page\" ng-click=\"refreshAction($event)\">refresh the page</a>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-message\" ng-if=\"msgType == 'magnifySearch'\">\n" +
+    "        <div class=\"b2b-magnify-glass\"></div>\n" +
+    "        <div>\n" +
+    "            <p class=\"b2b-message-title\">Please input values to\n" +
+    "                <br/> begin your search.</p>\n" +
+    "        </div>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-message\" ng-if=\"msgType === 'loadingTable'\">\n" +
+    "        <div class=\"icon-primary-spinner-ddh b2b-loading-dots\"></div>\n" +
+    "        <div ng-transclude></div>\n" +
+    "    </div>\n" +
+    "</div>\n" +
+    "");
+}]);
+
+angular.module("b2bTemplate/tableScrollbar/tableScrollbar.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tableScrollbar/tableScrollbar.html",
+    "<div class=\"b2b-table-scrollbar\">\n" +
+    "    <div class=\"b2b-scrollbar-arrows\">\n" +
+    "        <button class=\"btn-arrow  b2b-scrollbar-arrow-left\" type=\"button\" ng-attr-aria-label=\"{{disableLeft ? 'Scroll Left Disabled' : 'Scroll Left'}}\" ng-click=\"scrollLeft()\" ng-disabled=\"disableLeft\"><div class=\"btn btn-alt\"><i class=\"icon-primary-left\"></i></div></button>\n" +
+    "        <button class=\"btn-arrow b2b-scrollbar-arrow-right\" ng-attr-aria-label=\"{{disableRight ? 'Scroll Right Disabled' : 'Scroll Right'}}\" ng-click=\"scrollRight()\" ng-disabled=\"disableRight\" type=\"button\"><div class=\"btn btn-alt\"><i class=\"icon-primary-right\"></i></div></button>\n" +
+    "    </div>\n" +
+    "    <div class=\"b2b-table-inner-container\">\n" +
+    "        <span ng-transclude></span>\n" +
+    "    </div>\n" +
+    "</div>");
+}]);
+
+angular.module("b2bTemplate/tables/b2bTable.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tables/b2bTable.html",
+    "<table ng-class=\"{'striped': responsive, 'complex-table': responsive && active}\" ng-transclude></table>");
+}]);
+
+angular.module("b2bTemplate/tables/b2bTableBody.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tables/b2bTableBody.html",
+    "<td ng-hide=\"isHidden()\" ng-transclude></td>");
+}]);
+
+angular.module("b2bTemplate/tables/b2bTableHeaderSortable.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tables/b2bTableHeaderSortable.html",
+    "<th scope=\"col\" role=\"columnheader\" aria-sort=\"{{sortPattern !== 'null' && 'none' || sortPattern}}\" aria-label=\"{{headerName}} {{sortable !== 'false' && ': activate to sort' || ' '}} {{sortPattern !== 'null' && '' || sortPattern}}\" tabindex=\"{{sortable !== 'false' && '0' || '-1'}}\" b2b-accessibility-click=\"13,32\" ng-click=\"(sortable !== 'false') && sort();\" ng-hide=\"isHidden()\">\n" +
+    "    <span ng-transclude></span>\n" +
+    "    <i ng-class=\"{'icon-primary-arrows-sort-arrow active': sortPattern === 'ascending', 'icon-primary-arrows-sort-arrow active down': sortPattern === 'descending'}\"></i>\n" +
+    "</th>");
+}]);
+
+angular.module("b2bTemplate/tables/b2bTableHeaderUnsortable.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tables/b2bTableHeaderUnsortable.html",
+    "<th scope=\"col\" ng-hide=\"isHidden()\" ng-transclude></th>");
+}]);
+
+angular.module("b2bTemplate/tabs/b2bTab.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tabs/b2bTab.html",
+    "<li role=\"tab\" aria-selected=\"{{isTabActive()}}\" aria-controls=\"{{tabPanelId}}\" class=\"tab\" \n" +
+    "    ng-class=\"{'active': isTabActive()}\" ng-click=\"clickTab()\" ng-hide=\"tabItem.disabled\">\n" +
+    "    <a href=\"javascript:void(0)\"  tabindex=\"{{(isTabActive() && tabItem.disabled)?-1:0}}\"\n" +
+    "       ng-disabled=\"tabItem.disabled\" aria-expanded=\"{{(isTabActive() && !tabItem.disabled)}}\" \n" +
+    "       b2b-accessibility-click=\"13,32\" ng-transclude></a>\n" +
+    "    <span class=\"hidden-spoken\" ng-if=\"isTabActive()\">Active tab</span>\n" +
+    "</li>");
+}]);
+
+angular.module("b2bTemplate/tabs/b2bTabset.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/tabs/b2bTabset.html",
+    "<ul class=\"tabs promo-tabs\" role=\"tablist\" ng-transclude></ul>");
+}]);
+
+angular.module("b2bTemplate/treeNav/groupedTree.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNav/groupedTree.html",
+    "<ul role=\"group\">\n" +
+    "    <li aria-expanded=\"{{(member.active?true:false)}}\" role=\"treeitem\" aria-label=\"{{key}}\" ng-repeat='(key,value) in collection | groupBy : \"grpChild\"' b2b-tree-link><a class=\"grp\" ng-class=\"{'active': value.showGroup == true}\" tabindex=\"-1\" href='javascript:void(0);'>{{(key)?key:''}}<span class=\"b2b-tree-node-icon\"><i ng-class=\"{'icon-primary-expanded': value.showGroup == true, 'icon-primary-collapsed': value.showGroup == undefined || value.showGroup == false }\"></i></span></a>\n" +
+    "        <ul role=\"group\">\n" +
+    "            <b2b-member ng-repeat='member in value.childArray' member='member' time-delay='{{timeDelay}}' group-it='groupIt'></b2b-member>\n" +
+    "        </ul>\n" +
+    "    </li>\n" +
+    "</ul>");
+}]);
+
+angular.module("b2bTemplate/treeNav/treeMember.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNav/treeMember.html",
+    "<li role=\"treeitem\" aria-expanded=\"{{(member.active?true:false)}}\" aria-label=\"{{member.tooltipContent ? member.tooltipContent : member.name}}\" aria-describedby=\"description_{{$id}}\" ng-class=\"{'bg':member.selected}\"  b2b-tree-link>\n" +
+    "    <a tabindex=\"-1\" title=\"{{member.tooltipContent ? member.tooltipContent : member.name}}\" href=\"javascript:void(0)\" ng-class=\"{'active':member.active,'b2b-locked-node':member.locked}\">       <span class=\"b2b-tree-node-name\">{{member.name}}</span>\n" +
+    "        <span class=\"{{!member.child?'end':''}} b2b-tree-node-icon\">\n" +
+    "            <i class=\"b2b-tree-expandCollapse-icon\" ng-class=\"{'icon-primary-expanded':member.active}\"></i>\n" +
+    "        </span>\n" +
+    "         <div id=\"description_{{$id}}\" class=\"offscreen-text\">\n" +
+    "           {{member.descriptionText}}\n" +
+    "        </div>\n" +
+    "        <div class=\"b2b-tree-tooltip\" ng-if=\"member.showTooltip\">\n" +
+    "           <span class=\"b2b-tree-arrow-left\"></span>\n" +
+    "           <div class=\"b2b-tree-tooltip-content\">\n" +
+    "               {{member.tooltipContent}}\n" +
+    "           </div>  \n" +
+    "        </div>\n" +
+    "    </a>\n" +
+    "</li>");
+}]);
+
+angular.module("b2bTemplate/treeNav/ungroupedTree.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNav/ungroupedTree.html",
+    "<ul role=\"{{setRole}}\"><b2b-member ng-repeat='member in collection' member='member' group-it='groupIt'></b2b-member></ul>");
+}]);
+
+angular.module("b2bTemplate/treeNodeCheckbox/groupedTree.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNodeCheckbox/groupedTree.html",
+    "<ul role=\"group\">\n" +
+    "    <li aria-expanded=\"{{(member.active?true:false)}}\" role=\"treeitem\" aria-label=\"{{key}}\" ng-repeat='(key,value) in collection | groupBy : \"grpChild\"' b2b-tree-node-link><a class=\"grp\" ng-class=\"{'active': value.showGroup == true}\" tabindex=\"-1\" href='javascript:void(0);'>\n" +
+    "        <span class=\"ng-hide\">\n" +
+    "            <label class=\"checkbox\">\n" +
+    "                <input type=\"checkbox\" tabindex=\"-1\" class=\"treeCheckBox grpTreeCheckbox\" style=\"margin-top:2px;\"/><i class=\"skin\"></i><span> {{(key)?key:''}}</span>\n" +
+    "            </label>\n" +
+    "        </span>\n" +
+    "        <span>\n" +
+    "            {{(key)?key:''}}    \n" +
+    "        </span>\n" +
+    "        <span class=\"nodeIcon\"><i class=\"expandCollapseIcon\" ng-class=\"{'icon-primary-expanded': value.showGroup == true, 'icon-primary-collapsed': value.showGroup == undefined || value.showGroup == false }\"></i></span></a>\n" +
+    "        <ul role=\"group\">\n" +
+    "            <b2b-tree-member ng-repeat='member in value.childArray' member='member' group-it='groupIt'></b2b-tree-member>\n" +
+    "        </ul>\n" +
+    "    </li>\n" +
+    "</ul>");
+}]);
+
+angular.module("b2bTemplate/treeNodeCheckbox/treeMember.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNodeCheckbox/treeMember.html",
+    "<li role=\"treeitem\" aria-expanded=\"{{(member.active?true:false)}}\" aria-label=\"{{member.name}}\" ng-class=\"{'bg':member.selected}\"  b2b-tree-node-link>\n" +
+    "    <a tabindex=\"-1\" title=\"{{member.name}}\" href=\"javascript:void(0)\" ng-class=\"{'active':member.active}\">\n" +
+    "       <span ng-show=\"member.displayCheckbox\">\n" +
+    "               <label class=\"checkbox\">\n" +
+    "                <input type=\"checkbox\" tabindex=\"-1\" ng-model=\"member.isSelected\" ng-class=\"{'treeCheckBox': (member.displayCheckbox !== undefined)}\" style=\"margin-top:2px;\"/><i class=\"skin\"></i><span> {{member.name}}</span>\n" +
+    "            </label>\n" +
+    "        </span>\n" +
+    "       <span ng-show=\"!member.displayCheckbox\">\n" +
+    "           {{member.name}} \n" +
+    "       </span>\n" +
+    "        <span class=\"nodeIcon {{!member.child?'end':''}}\">\n" +
+    "            <i class=\"expandCollapseIcon\" ng-class=\"{'icon-primary-expanded':member.active}\"></i>\n" +
+    "        </span>\n" +
+    "    </a>\n" +
+    "</li>");
+}]);
+
+angular.module("b2bTemplate/treeNodeCheckbox/ungroupedTree.html", []).run(["$templateCache", function($templateCache) {
+  $templateCache.put("b2bTemplate/treeNodeCheckbox/ungroupedTree.html",
+    "<ul role=\"{{setRole}}\"><b2b-tree-member ng-repeat='member in collection' member='member' group-it='groupIt'></b2b-tree-member></ul>");
+}]);
diff --git a/ecomp-portal-FE-os/client/bower_components_external/bowser/bowser.js b/ecomp-portal-FE-os/client/bower_components_external/bowser/bowser.js
new file mode 100644
index 0000000..c496a73
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/bowser/bowser.js
@@ -0,0 +1,559 @@
+/*!
+ * Bowser - a browser detector
+ * https://github.com/ded/bowser
+ * MIT License | (c) Dustin Diaz 2015
+ */
+
+!function (name, definition) {
+  if (typeof module != 'undefined' && module.exports) module.exports = definition()
+  else if (typeof define == 'function' && define.amd) define(definition)
+  else this[name] = definition()
+}('bowser', function () {
+  /**
+    * See useragents.js for examples of navigator.userAgent
+    */
+
+  var t = true
+
+  function detect(ua) {
+
+    function getFirstMatch(regex) {
+      var match = ua.match(regex);
+      return (match && match.length > 1 && match[1]) || '';
+    }
+
+    function getSecondMatch(regex) {
+      var match = ua.match(regex);
+      return (match && match.length > 1 && match[2]) || '';
+    }
+
+    var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()
+      , likeAndroid = /like android/i.test(ua)
+      , android = !likeAndroid && /android/i.test(ua)
+      , nexusMobile = /nexus\s*[0-6]\s*/i.test(ua)
+      , nexusTablet = !nexusMobile && /nexus\s*[0-9]+/i.test(ua)
+      , chromeos = /CrOS/.test(ua)
+      , silk = /silk/i.test(ua)
+      , sailfish = /sailfish/i.test(ua)
+      , tizen = /tizen/i.test(ua)
+      , webos = /(web|hpw)os/i.test(ua)
+      , windowsphone = /windows phone/i.test(ua)
+      , windows = !windowsphone && /windows/i.test(ua)
+      , mac = !iosdevice && !silk && /macintosh/i.test(ua)
+      , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua)
+      , edgeVersion = getFirstMatch(/edge\/(\d+(\.\d+)?)/i)
+      , versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i)
+      , tablet = /tablet/i.test(ua)
+      , mobile = !tablet && /[^-]mobi/i.test(ua)
+      , xbox = /xbox/i.test(ua)
+      , result
+
+    if (/opera|opr|opios/i.test(ua)) {
+      result = {
+        name: 'Opera'
+      , opera: t
+      , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/coast/i.test(ua)) {
+      result = {
+        name: 'Opera Coast'
+        , coast: t
+        , version: versionIdentifier || getFirstMatch(/(?:coast)[\s\/](\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/yabrowser/i.test(ua)) {
+      result = {
+        name: 'Yandex Browser'
+      , yandexbrowser: t
+      , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/ucbrowser/i.test(ua)) {
+      result = {
+          name: 'UC Browser'
+        , ucbrowser: t
+        , version: getFirstMatch(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)
+      }
+    }
+    else if (/mxios/i.test(ua)) {
+      result = {
+        name: 'Maxthon'
+        , maxthon: t
+        , version: getFirstMatch(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)
+      }
+    }
+    else if (/epiphany/i.test(ua)) {
+      result = {
+        name: 'Epiphany'
+        , epiphany: t
+        , version: getFirstMatch(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)
+      }
+    }
+    else if (/puffin/i.test(ua)) {
+      result = {
+        name: 'Puffin'
+        , puffin: t
+        , version: getFirstMatch(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)
+      }
+    }
+    else if (/sleipnir/i.test(ua)) {
+      result = {
+        name: 'Sleipnir'
+        , sleipnir: t
+        , version: getFirstMatch(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)
+      }
+    }
+    else if (/k-meleon/i.test(ua)) {
+      result = {
+        name: 'K-Meleon'
+        , kMeleon: t
+        , version: getFirstMatch(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)
+      }
+    }
+    else if (windowsphone) {
+      result = {
+        name: 'Windows Phone'
+      , windowsphone: t
+      }
+      if (edgeVersion) {
+        result.msedge = t
+        result.version = edgeVersion
+      }
+      else {
+        result.msie = t
+        result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/msie|trident/i.test(ua)) {
+      result = {
+        name: 'Internet Explorer'
+      , msie: t
+      , version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i)
+      }
+    } else if (chromeos) {
+      result = {
+        name: 'Chrome'
+      , chromeos: t
+      , chromeBook: t
+      , chrome: t
+      , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)
+      }
+    } else if (/chrome.+? edge/i.test(ua)) {
+      result = {
+        name: 'Microsoft Edge'
+      , msedge: t
+      , version: edgeVersion
+      }
+    }
+    else if (/vivaldi/i.test(ua)) {
+      result = {
+        name: 'Vivaldi'
+        , vivaldi: t
+        , version: getFirstMatch(/vivaldi\/(\d+(\.\d+)?)/i) || versionIdentifier
+      }
+    }
+    else if (sailfish) {
+      result = {
+        name: 'Sailfish'
+      , sailfish: t
+      , version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/seamonkey\//i.test(ua)) {
+      result = {
+        name: 'SeaMonkey'
+      , seamonkey: t
+      , version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/firefox|iceweasel|fxios/i.test(ua)) {
+      result = {
+        name: 'Firefox'
+      , firefox: t
+      , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)
+      }
+      if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) {
+        result.firefoxos = t
+      }
+    }
+    else if (silk) {
+      result =  {
+        name: 'Amazon Silk'
+      , silk: t
+      , version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/phantom/i.test(ua)) {
+      result = {
+        name: 'PhantomJS'
+      , phantom: t
+      , version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/slimerjs/i.test(ua)) {
+      result = {
+        name: 'SlimerJS'
+        , slimer: t
+        , version: getFirstMatch(/slimerjs\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) {
+      result = {
+        name: 'BlackBerry'
+      , blackberry: t
+      , version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (webos) {
+      result = {
+        name: 'WebOS'
+      , webos: t
+      , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)
+      };
+      /touchpad\//i.test(ua) && (result.touchpad = t)
+    }
+    else if (/bada/i.test(ua)) {
+      result = {
+        name: 'Bada'
+      , bada: t
+      , version: getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i)
+      };
+    }
+    else if (tizen) {
+      result = {
+        name: 'Tizen'
+      , tizen: t
+      , version: getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || versionIdentifier
+      };
+    }
+    else if (/qupzilla/i.test(ua)) {
+      result = {
+        name: 'QupZilla'
+        , qupzilla: t
+        , version: getFirstMatch(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i) || versionIdentifier
+      }
+    }
+    else if (/chromium/i.test(ua)) {
+      result = {
+        name: 'Chromium'
+        , chromium: t
+        , version: getFirstMatch(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i) || versionIdentifier
+      }
+    }
+    else if (/chrome|crios|crmo/i.test(ua)) {
+      result = {
+        name: 'Chrome'
+        , chrome: t
+        , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)
+      }
+    }
+    else if (android) {
+      result = {
+        name: 'Android'
+        , version: versionIdentifier
+      }
+    }
+    else if (/safari|applewebkit/i.test(ua)) {
+      result = {
+        name: 'Safari'
+      , safari: t
+      }
+      if (versionIdentifier) {
+        result.version = versionIdentifier
+      }
+    }
+    else if (iosdevice) {
+      result = {
+        name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'
+      }
+      // WTF: version is not part of user agent in web apps
+      if (versionIdentifier) {
+        result.version = versionIdentifier
+      }
+    }
+    else if(/googlebot/i.test(ua)) {
+      result = {
+        name: 'Googlebot'
+      , googlebot: t
+      , version: getFirstMatch(/googlebot\/(\d+(\.\d+))/i) || versionIdentifier
+      }
+    }
+    else {
+      result = {
+        name: getFirstMatch(/^(.*)\/(.*) /),
+        version: getSecondMatch(/^(.*)\/(.*) /)
+     };
+   }
+
+    // set webkit or gecko flag for browsers based on these engines
+    if (!result.msedge && /(apple)?webkit/i.test(ua)) {
+      if (/(apple)?webkit\/537\.36/i.test(ua)) {
+        result.name = result.name || "Blink"
+        result.blink = t
+      } else {
+        result.name = result.name || "Webkit"
+        result.webkit = t
+      }
+      if (!result.version && versionIdentifier) {
+        result.version = versionIdentifier
+      }
+    } else if (!result.opera && /gecko\//i.test(ua)) {
+      result.name = result.name || "Gecko"
+      result.gecko = t
+      result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i)
+    }
+
+    // set OS flags for platforms that have multiple browsers
+    if (!result.msedge && (android || result.silk)) {
+      result.android = t
+    } else if (iosdevice) {
+      result[iosdevice] = t
+      result.ios = t
+    } else if (mac) {
+      result.mac = t
+    } else if (xbox) {
+      result.xbox = t
+    } else if (windows) {
+      result.windows = t
+    } else if (linux) {
+      result.linux = t
+    }
+
+    // OS version extraction
+    var osVersion = '';
+    if (result.windowsphone) {
+      osVersion = getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i);
+    } else if (iosdevice) {
+      osVersion = getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i);
+      osVersion = osVersion.replace(/[_\s]/g, '.');
+    } else if (android) {
+      osVersion = getFirstMatch(/android[ \/-](\d+(\.\d+)*)/i);
+    } else if (result.webos) {
+      osVersion = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i);
+    } else if (result.blackberry) {
+      osVersion = getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i);
+    } else if (result.bada) {
+      osVersion = getFirstMatch(/bada\/(\d+(\.\d+)*)/i);
+    } else if (result.tizen) {
+      osVersion = getFirstMatch(/tizen[\/\s](\d+(\.\d+)*)/i);
+    }
+    if (osVersion) {
+      result.osversion = osVersion;
+    }
+
+    // device type extraction
+    var osMajorVersion = osVersion.split('.')[0];
+    if (
+         tablet
+      || nexusTablet
+      || iosdevice == 'ipad'
+      || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile)))
+      || result.silk
+    ) {
+      result.tablet = t
+    } else if (
+         mobile
+      || iosdevice == 'iphone'
+      || iosdevice == 'ipod'
+      || android
+      || nexusMobile
+      || result.blackberry
+      || result.webos
+      || result.bada
+    ) {
+      result.mobile = t
+    }
+
+    // Graded Browser Support
+    // http://developer.yahoo.com/yui/articles/gbs
+    if (result.msedge ||
+        (result.msie && result.version >= 10) ||
+        (result.yandexbrowser && result.version >= 15) ||
+		    (result.vivaldi && result.version >= 1.0) ||
+        (result.chrome && result.version >= 20) ||
+        (result.firefox && result.version >= 20.0) ||
+        (result.safari && result.version >= 6) ||
+        (result.opera && result.version >= 10.0) ||
+        (result.ios && result.osversion && result.osversion.split(".")[0] >= 6) ||
+        (result.blackberry && result.version >= 10.1)
+        || (result.chromium && result.version >= 20)
+        ) {
+      result.a = t;
+    }
+    else if ((result.msie && result.version < 10) ||
+        (result.chrome && result.version < 20) ||
+        (result.firefox && result.version < 20.0) ||
+        (result.safari && result.version < 6) ||
+        (result.opera && result.version < 10.0) ||
+        (result.ios && result.osversion && result.osversion.split(".")[0] < 6)
+        || (result.chromium && result.version < 20)
+        ) {
+      result.c = t
+    } else result.x = t
+
+    return result
+  }
+
+  var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent : '')
+
+  bowser.test = function (browserList) {
+    for (var i = 0; i < browserList.length; ++i) {
+      var browserItem = browserList[i];
+      if (typeof browserItem=== 'string') {
+        if (browserItem in bowser) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Get version precisions count
+   *
+   * @example
+   *   getVersionPrecision("1.10.3") // 3
+   *
+   * @param  {string} version
+   * @return {number}
+   */
+  function getVersionPrecision(version) {
+    return version.split(".").length;
+  }
+
+  /**
+   * Array::map polyfill
+   *
+   * @param  {Array} arr
+   * @param  {Function} iterator
+   * @return {Array}
+   */
+  function map(arr, iterator) {
+    var result = [], i;
+    if (Array.prototype.map) {
+      return Array.prototype.map.call(arr, iterator);
+    }
+    for (i = 0; i < arr.length; i++) {
+      result.push(iterator(arr[i]));
+    }
+    return result;
+  }
+
+  /**
+   * Calculate browser version weight
+   *
+   * @example
+   *   compareVersions(['1.10.2.1',  '1.8.2.1.90'])    // 1
+   *   compareVersions(['1.010.2.1', '1.09.2.1.90']);  // 1
+   *   compareVersions(['1.10.2.1',  '1.10.2.1']);     // 0
+   *   compareVersions(['1.10.2.1',  '1.0800.2']);     // -1
+   *
+   * @param  {Array<String>} versions versions to compare
+   * @return {Number} comparison result
+   */
+  function compareVersions(versions) {
+    // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2
+    var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1]));
+    var chunks = map(versions, function (version) {
+      var delta = precision - getVersionPrecision(version);
+
+      // 2) "9" -> "9.0" (for precision = 2)
+      version = version + new Array(delta + 1).join(".0");
+
+      // 3) "9.0" -> ["000000000"", "000000009"]
+      return map(version.split("."), function (chunk) {
+        return new Array(20 - chunk.length).join("0") + chunk;
+      }).reverse();
+    });
+
+    // iterate in reverse order by reversed chunks array
+    while (--precision >= 0) {
+      // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true)
+      if (chunks[0][precision] > chunks[1][precision]) {
+        return 1;
+      }
+      else if (chunks[0][precision] === chunks[1][precision]) {
+        if (precision === 0) {
+          // all version chunks are same
+          return 0;
+        }
+      }
+      else {
+        return -1;
+      }
+    }
+  }
+
+  /**
+   * Check if browser is unsupported
+   *
+   * @example
+   *   bowser.isUnsupportedBrowser({
+   *     msie: "10",
+   *     firefox: "23",
+   *     chrome: "29",
+   *     safari: "5.1",
+   *     opera: "16",
+   *     phantom: "534"
+   *   });
+   *
+   * @param  {Object}  minVersions map of minimal version to browser
+   * @param  {Boolean} [strictMode = false] flag to return false if browser wasn't found in map
+   * @param  {String}  [ua] user agent string
+   * @return {Boolean}
+   */
+  function isUnsupportedBrowser(minVersions, strictMode, ua) {
+    var _bowser = bowser;
+
+    // make strictMode param optional with ua param usage
+    if (typeof strictMode === 'string') {
+      ua = strictMode;
+      strictMode = void(0);
+    }
+
+    if (strictMode === void(0)) {
+      strictMode = false;
+    }
+    if (ua) {
+      _bowser = detect(ua);
+    }
+
+    var version = "" + _bowser.version;
+    for (var browser in minVersions) {
+      if (minVersions.hasOwnProperty(browser)) {
+        if (_bowser[browser]) {
+          // browser version and min supported version.
+          return compareVersions([version, minVersions[browser]]) < 0;
+        }
+      }
+    }
+
+    return strictMode; // not found
+  }
+
+  /**
+   * Check if browser is supported
+   *
+   * @param  {Object} minVersions map of minimal version to browser
+   * @param  {Boolean} [strictMode = false] flag to return false if browser wasn't found in map
+   * @param  {String}  [ua] user agent string
+   * @return {Boolean}
+   */
+  function check(minVersions, strictMode, ua) {
+    return !isUnsupportedBrowser(minVersions, strictMode, ua);
+  }
+
+  bowser.isUnsupportedBrowser = isUnsupportedBrowser;
+  bowser.compareVersions = compareVersions;
+  bowser.check = check;
+
+  /*
+   * Set our detect method to the main bowser object so we can
+   * reuse it to test other user agents.
+   * This is needed to implement future tests.
+   */
+  bowser._detect = detect;
+
+  return bowser
+});
diff --git a/ecomp-portal-FE-os/client/bower_components_external/bowser/useragents.js b/ecomp-portal-FE-os/client/bower_components_external/bowser/useragents.js
new file mode 100644
index 0000000..dd7fb25
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/bowser/useragents.js
@@ -0,0 +1,1267 @@
+/**
+ * Example User Agents and their expected bowser objects.
+ * Most of them where found at http://www.useragentstring.com/
+ *
+ * @see  test/test.js
+ * @author hannes.diercks@jimdo.com
+ */
+module.exports.useragents = {
+    Chrome: {
+      'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 9 Build/LMY48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36': {
+        chrome: true
+      , android: true
+      , osversion: '5.1.1'
+      , tablet: true
+      , version: '47.0'
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36': {
+        chrome: true
+      , android: true
+      , osversion: '4.4.2'
+      , tablet: true
+      , version: '32.0'
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 4.3; Galaxy Nexus Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36': {
+        chrome: true
+      , android: true
+      , osversion: '4.3'
+      , mobile: true
+      , version: '32.0'
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 4.1; Galaxy Nexus Build/JRN84D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19': {
+        chrome: true
+      , android: true
+      , osversion: '4.1'
+      , mobile: true
+      , version: '18.0'
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Xoom Build/IML77) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Safari/535.7': {
+        chrome: true
+      , android: true
+      , osversion: '4.0.3'
+      , tablet: true
+      , version: '16.0'
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7': {
+        chrome: true
+      , android: true
+      , osversion: '4.0.3'
+      , mobile: true
+      , version: '16.0'
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3': {
+        chrome: true
+      , iphone: true
+      , ios: true
+      , osversion: '5.1.1'
+      , mobile: true
+      , version: '19.0'
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (iPad; U; CPU OS 5_1_1 like Mac OS X; en-us) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3': {
+        chrome: true
+      , ipad: true
+      , ios: true
+      , osversion: '5.1.1'
+      , tablet: true
+      , version: '19.0'
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36': {
+        chrome: true
+      , version: '30.0'
+      , windows: true
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36': {
+        chrome: true
+      , version: '29.0'
+      , windows: true
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36': {
+        chrome: true
+      , chromeBook: true
+      , version: '29.0'
+      , chromeos: true
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36': {
+        chrome: true
+      , version: '29.0'
+      , windows: true
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36': {
+        chrome: true
+      , version: '28.0'
+      , windows: true
+      , blink: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57 Safari/534.24': {
+        chrome: true
+      , version: '11.0'
+      , mac: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3': {
+        chrome: true
+      , version: '6.0'
+      , linux: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/50.0.2661.95 Mobile/13E238 Safari/601.1.46': {
+        chrome: true
+      , version: '50.0'
+      , osversion: '9.3.1'
+      , webkit: true
+      , ios: true
+      , iphone: true
+      , mobile: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 5.0.2; SM-T705 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.105 Safari/537.36': {
+          chrome: true
+        , android: true
+        , version: '49.0'
+        , osversion: '5.0.2'
+        , blink: true
+        , a: true
+        , tablet: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 6.0.99; Build/NPC91K) AppleWebKit/537.36(KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36': {
+          chrome: true
+        , android: true
+        , tablet: true
+        , osversion: '6.0.99'
+        , version: '50.0'
+        , blink: true
+        , a: true
+      }
+    }
+  , 'Amazon Silk': {
+      'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true': {
+        name: 'Amazon Silk'
+      , silk: true
+      , webkit: true
+      , android: true
+      , osversion: '4.0.3'
+      , tablet: true
+      , version : '3.4'
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true': {
+        name: 'Amazon Silk'
+      , silk: true
+      , webkit: true
+      , android: true
+      , tablet: true
+      , version : '3.4'
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true': {
+        name: 'Amazon Silk'
+      , silk: true
+      , webkit: true
+      , android: true
+      , osversion: '2.3.4'
+      , tablet: true
+      , version : '1.0'
+      , x: true
+      }
+    , 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.22.153_10033210) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true': {
+        name: 'Amazon Silk'
+      , silk: true
+      , webkit: true
+      , android: true
+      , tablet: true
+      , version : '1.0'
+      , x: true
+      }
+    }
+  , Opera: {
+      'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36 OPR/19.0.1340.69721': {
+        opera: true
+      , blink: true
+      , android: true
+      , osversion: '4.4.2'
+      , tablet: true
+      , version: '19.0'
+      , a: true
+      }
+    , 'Mozilla/5.0 (Linux; Android 4.3; Galaxy Nexus Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Mobile Safari/537.36 OPR/19.0.1340.69721': {
+        opera: true
+      , blink: true
+      , android: true
+      , osversion: '4.3'
+      , mobile: true
+      , version: '19.0'
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100': {
+        opera: true
+      , windows: true
+      , blink: true
+      , version: '15.0'
+      , a: true
+      }
+    , 'Opera/9.80 (Android 4.3; Linux; Opera Mobi/ADR-1309251116) Presto/2.11.355 Version/12.10': {
+        opera: true
+      , version: '12.10'
+      , android: true
+      , osversion: '4.3'
+      , mobile: true
+      , a: true
+      }
+    , 'Opera/9.80 (Android 4.4.2; Linux; Opera Tablet/ADR-1309251116) Presto/2.11.355 Version/12.10': {
+        opera: true
+      , version: '12.10'
+      , android: true
+      , osversion: '4.4.2'
+      , tablet: true
+      , a: true
+      }
+    , 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14': {
+        opera: true
+      , version: '12.14'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14': {
+        opera: true
+      , version: '12.14'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14': {
+        opera: true
+      , version: '12.14'
+      , windows: true
+      , a: true
+      }
+    , 'Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02': {
+        opera: true
+      , version: '12.02'
+      , windows: true
+      , a: true
+      }
+    , 'Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11': {
+        opera: true
+      , version: '11.11'
+      , linux: true
+      , a: true
+      }
+    , 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; en) Presto/2.7.62 Version/11.01': {
+        opera: true
+      , version: '11.01'
+      , mac: true
+      , a: true
+      }
+    , 'Opera/9.80 (Windows NT 5.2; U; zh-cn) Presto/2.6.30 Version/10.63': {
+        opera: true
+      , version: '10.63'
+      , windows: true
+      , a: true
+      }
+    , 'Opera/9.80 (X11; Linux i686; U; it) Presto/2.5.24 Version/10.54': {
+        opera: true
+      , version: '10.54'
+      , linux: true
+      , a: true
+      }
+    , 'Opera/9.70 (Linux ppc64 ; U; en) Presto/2.2.1': {
+        opera: true
+      , version: '9.70'
+      , linux: true
+      , c: true
+      }
+    , 'Opera/9.63 (X11; Linux i686)': {
+        opera: true
+      , version: '9.63'
+      , linux: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; Linux i686; U; en) Opera 8.52': {
+        opera: true
+      , version: '8.52'
+      , linux: true
+      , c: true
+      }
+  }
+  , 'Opera Coast': {
+    'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Coast/5.02.99991 Mobile/13E238 Safari/7534.48.3': {
+        coast: true
+      , version: '5.02'
+      , osversion: '9.3.1'
+      , iphone: true
+      , ios: true
+      , mobile: true
+      , a: true
+      , webkit: true
+    }
+  }
+  , 'Yandex Browser': {
+    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 YaBrowser/15.4.2272.3420 (beta) Yowser/2.0 Safari/537.36': {
+        yandexbrowser: true
+      , blink: true
+      , version: '15.4'
+      , mac: true
+      , a: true
+    },
+      'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 YaBrowser/15.4.2272.3608.00 Mobile Safari/537.36': {
+          yandexbrowser: true
+        , android: true
+        , osversion: '5.1.1'
+        , mobile: true
+        , version: '15.4'
+        , blink: true
+        , a: true
+      }
+    }
+  , Safari: {
+      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2': {
+        safari: true
+      , version: '5.1'
+      , mac: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1': {
+        safari: true
+      , version: '5.0'
+      , mac: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5': {
+        safari: true
+      , version: '5.0'
+      , windows: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+': {
+        safari: true
+      , version: '5.0'
+      , linux: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-en) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16': {
+        safari: true
+      , version: '4.1'
+      , windows: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_6_1; en_GB, en_US) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10': {
+        safari: true
+      , version: '4.0'
+      , mac: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3': {
+        safari: true
+      , version: '3.2'
+      , mac: true
+      , webkit: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a': {
+      ios: true
+      , osversion: '7.0.4'
+      , iphone: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5': {
+      ios: true
+      , osversion: '4.3.2'
+      , version: '5.0'
+      , iphone: true
+      , mobile: true
+      , safari: true
+      , webkit: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3': {
+      ios: true
+      , version: '3.0'
+      , iphone: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B5097d Safari/6531.22.7': {
+      ios: true
+      , osversion: '4.1'
+      , version: '4.0'
+      , iphone: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 iPhone': {
+      ios: true
+      , version: '3.1'
+      , iphone: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13A344 Safari/601.1': {
+      ios: true
+      , osversion: '9.0'
+      , version: '9.0'
+      , iphone: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53': {
+      ios: true
+      , osversion: '7.0.4'
+      , name: 'Safari'
+      , version: '7.0'
+      , ipad: true
+      , tablet: true
+      , webkit: true
+      , safari: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25': {
+      ios: true
+      , osversion: '6.0'
+      , name: 'Safari'
+      , version: '6.0'
+      , ipad: true
+      , tablet: true
+      , webkit: true
+      , safari: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 Mobile/9B176 Safari/7534.48.3': {
+      ios: true
+      , osversion: '5.1'
+      , name: 'Safari'
+      , version: '5.1'
+      , ipad: true
+      , tablet: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5': {
+      ios: true
+      , osversion: '4.3.2'
+      , name: 'Safari'
+      , version: '5.0'
+      , ipad: true
+      , tablet: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B360 Safari/531.21.10': {
+      ios: true
+      , osversion: '3.2'
+      , name: 'Safari'
+      , version: '4.0'
+      , ipad: true
+      , tablet: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53': {
+      ios: true
+      , osversion: '7.0.3'
+      , version: '7.0'
+      , ipod: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (iPod; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3': {
+      ios: true
+      , osversion: '5.1'
+      , version: '5.1'
+      , ipod: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5': {
+      ios: true
+      , osversion: '4.3.3'
+      , version: '5.0'
+      , ipod: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3': {
+      ios: true
+      , version: '3.0'
+      , ipod: true
+      , mobile: true
+      , webkit: true
+      , safari: true
+      , c: true
+    }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E238 Safari/601.1': {
+        ios: true
+      , iphone: true
+      , safari: true
+      , version: '9.0'
+      , mobile: true
+      , osversion: '9.3.1'
+      , a: true
+      , webkit: true
+    }
+  }
+  , 'Internet Explorer': {
+      'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; MAARJS; rv:11.0) like Gecko': {
+        msie: true
+      , version: '11.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko': {
+        msie: true
+      , version: '11.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop)': {
+        msie: true
+      , version: '10.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; Media Center PC 6.0; rv:11.0) like Gecko': {
+        msie: true
+      , version: '11.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0': {
+        msie: true
+      , version: '10.6'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727; WOW64)': {
+        msie: true
+      , version: '10.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)': {
+        msie: true
+      , version: '9.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)': {
+        msie: true
+      , version: '8.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)': {
+        msie: true
+      , version: '7.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)': {
+        msie: true
+      , version: '6.1'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)': {
+        msie: true
+      , version: '6.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)': {
+        msie: true
+      , version: '5.01'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Xbox; Xbox One)': {
+        xbox: true
+      , msie: true
+      , version: '10.0'
+      , a: true
+      }
+    }
+  , 'Microsoft Edge': {
+      'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0': {
+        msedge: true
+      , version: '12.0'
+      , windows: true
+      , a: true
+      }
+    }
+  , Firefox: {
+      'Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0': {
+        gecko: true
+      , firefox: true
+      , version: '26.0'
+      , mobile: true
+      , firefoxos: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0': {
+        gecko: true
+      , firefox: true
+      , version: '26.0'
+      , tablet: true
+      , firefoxos: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Mobile; LG-D300; rv:18.1) Gecko/18.1 Firefox/18.1': {
+        gecko: true
+      , firefox: true
+      , version: '18.1'
+      , mobile: true
+      , firefoxos: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Android; Mobile; rv:27.0) Gecko/27.0 Firefox/27.0': {
+        gecko: true
+      , firefox: true
+      , version: '27.0'
+      , mobile: true
+      , android: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Android; Tablet; rv:26.0) Gecko/26.0 Firefox/26.0': {
+        gecko: true
+      , firefox: true
+      , version: '26.0'
+      , tablet: true
+      , android: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0': {
+        gecko: true
+      , firefox: true
+      , version: '25.0'
+      , windows: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0': {
+        gecko: true
+      , firefox: true
+      , version: '24.0'
+      , mac: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0': {
+        gecko: true
+      , firefox: true
+      , version: '21.0'
+      , linux: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20121202 Firefox/17.0 Iceweasel/17.0.1': {
+        gecko: true
+      , firefox: true
+      , version: '17.0'
+      , linux: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120724 Debian Iceweasel/15.0': {
+        gecko: true
+      , firefox: true
+      , version: '15.0'
+      , linux: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:15.0) Gecko/20120910144328 Firefox/15.0.2': {
+        gecko: true
+      , firefox: true
+      , version: '15.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows; U; Windows NT 6.1; WOW64; en-US; rv:2.0.4) Gecko/20120718 AskTbAVR-IDW/3.12.5.17700 Firefox/14.0.1': {
+        gecko: true
+      , firefox: true
+      , version: '14.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0 FirePHP/0.6': {
+        gecko: true
+      , firefox: true
+      , version: '6.0'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20100101 Firefox/4.2a1pre': {
+        gecko: true
+      , firefox: true
+      , version: '4.2'
+      , linux: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0) Gecko/20100101 Firefox/4.0': {
+        gecko: true
+      , firefox: true
+      , version: '4.0'
+      , mac: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b1) Gecko/20091014 Firefox/3.6b1 GTB5': {
+        gecko: true
+      , firefox: true
+      , version: '3.6'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.15) Gecko/2009101601 Firefox 2.1 (.NET CLR 3.5.30729)': {
+        gecko: true
+      , firefox: true
+      , version: '2.1'
+      , windows: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061014 Firefox/1.5.0.7': {
+        gecko: true
+      , firefox: true
+      , version: '1.5'
+      , linux: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/3.0 Mobile/13E238 Safari/601.1.46': {
+        firefox: true
+      , version: '3.0'
+      , osversion: '9.3.1'
+      , ios: true
+      , iphone: true
+      , mobile: true
+      , a: true
+      , webkit: true
+    }
+  }
+  , SeaMonkey: {
+      'Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1': {
+        gecko: true
+      , seamonkey: true
+      , version: '2.7'
+      , windows: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1': {
+        gecko: true
+      , seamonkey: true
+      , version: '2.7'
+      , mac: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1': {
+        gecko: true
+      , seamonkey: true
+      , version: '2.7'
+      , linux: true
+      , x: true
+      }
+    }
+  , BlackBerry: {
+      'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.4633 Mobile Safari/537.10+': {
+        blackberry: true
+      , version: '10.1'
+      , webkit: true
+      , mobile: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.1429 Mobile Safari/537.10+': {
+        blackberry: true
+      , version: '10.1'
+      , webkit: true
+      , mobile: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+': {
+        blackberry: true
+      , osversion: '2.1.0'
+      , version: '7.2'
+      , webkit: true
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.7 Safari/534.11': {
+        blackberry: true
+      , osversion: '1.0.0'
+      , version: '7.1'
+      , webkit: true
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+': {
+        blackberry: true
+      , version: '7.1'
+      , webkit: true
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.530 Mobile Safari/534.11+': {
+        blackberry: true
+      , version: '7.0'
+      , webkit: true
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.450 Mobile Safari/534.8+': {
+        blackberry: true
+      , version: '6.0'
+      , webkit: true
+      , mobile: true
+      , x: true
+      }
+    , 'BlackBerry9800/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba': {
+        blackberry: true
+      , version: '5.0'
+      , mobile: true
+      , x: true
+      }
+    , 'BlackBerry8320/4.5.0.52 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179': {
+        blackberry: true
+      , version: '4.5'
+      , mobile: true
+      , x: true
+      }
+    , 'BlackBerry8700/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179': {
+        blackberry: true
+      , version: '4.1'
+      , mobile: true
+      , x: true
+      }
+    }
+  , 'Windows Phone': {
+      'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920; Vodafone)': {
+        windowsphone: true
+      , osversion: '8.0'
+      , msie: true
+      , version: '10.0'
+      , mobile: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)': {
+        windowsphone: true
+      , osversion: '8.0'
+      , msie: true
+      , version: '10.0'
+      , mobile: true
+      , a: true
+      }
+    , 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)': {
+        windowsphone: true
+      , osversion: '7.5'
+      , msie: true
+      , version: '9.0'
+      , mobile: true
+      , c: true
+      }
+    , 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)': {
+        windowsphone: true
+      , osversion: '7.0'
+      , msie: true
+      , version: '7.0'
+      , mobile: true
+      , c: true
+      }
+    , 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0': {
+        windowsphone: true
+      , osversion: '10.0'
+      , msedge: true
+      , version: '12.0'
+      , mobile: true
+      , a: true
+      }
+    }
+  , WebOS: {
+      'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0': {
+        touchpad: true
+      , webos: true
+      , osversion: '3.0.5'
+      , version: '234.83'
+      , webkit: true
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.2; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.40.1 Safari/534.6 TouchPad/1.0': {
+        touchpad: true
+      , webos: true
+      , osversion: '3.0.2'
+      , version: '234.40'
+      , webkit: true
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; de-DE) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0': {
+        touchpad: true
+      , webos: true
+      , osversion: '3.0.0'
+      , version: '233.70'
+      , webkit: true
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; webOS/2.1.2; U; xx-xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.11 Safari/534.6 Pre/3.0': {
+        webos: true
+      , osversion: '2.1.2'
+      , webkit: true
+      , version: '221.11'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (webOS/1.4.1.1; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0': {
+        webos: true
+      , osversion: '1.4.1.1'
+      , webkit: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0': {
+        webos: true
+      , osversion: '1.0'
+      , webkit: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    }
+  , Android: {
+      'Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; Nexus 7 Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16': {
+        android: true
+      , osversion: '4.4.2'
+      , webkit: true
+      , version: 4.0
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 4.3; de-de; Galaxy Nexus Build/JWR66Y) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30': {
+        android: true
+      , osversion: '4.3'
+      , webkit: true
+      , version: 4.0
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; Nexus 10 Build/JVP15I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30': {
+        android: true
+      , osversion: '4.2'
+      , webkit: true
+      , version: 4.0
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 3.2; de-de; A100 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13': {
+        android: true
+      , osversion: '3.2'
+      , webkit: true
+      , version: 4.0
+      , tablet: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; T-Mobile G2 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1': {
+        android: true
+      , osversion: '2.3.4'
+      , webkit: true
+      , version: 4.0
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Android 1.6; ar-us; SonyEricssonX10i Build/R2BA026) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1': {
+        android: true
+      , osversion: '1.6'
+      , webkit: true
+      , version: 3.1
+      , mobile: true
+      , x: true
+      }
+    }
+  , Bada: {
+      'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XPKJ1; U; Bada/2.0; it-it) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 WVGA SMM-MMS/1.2.0 OPN-B': {
+        bada: true
+      , osversion: '2.0'
+      , webkit: true
+      , version: '3.0'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJL2; U; Bada/1.2; de-de) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B': {
+        bada: true
+      , osversion: '1.2'
+      , webkit: true
+      , version: '2.2'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJF4; U; Bada/1.0; fr-fr) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B': {
+        bada: true
+      , osversion: '1.0'
+      , webkit: true
+      , version: '2.0'
+      , mobile: true
+      , x: true
+      }
+    }
+  , Tizen: {
+      'Mozilla/5.0 (Linux; Tizen 2.2; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3': {
+        tizen: true
+      , osversion: '2.2'
+      , webkit: true
+      , version: '2.2'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; Tizen 2.1; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.1 Mobile Safari/537.3': {
+        tizen: true
+      , osversion: '2.1'
+      , webkit: true
+      , version: '2.1'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Tizen 2.0; en-us) AppleWebKit/537.1 (KHTML, like Gecko) Mobile TizenBrowser/2.0': {
+        tizen: true
+      , osversion: '2.0'
+      , webkit: true
+      , version: '2.0'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; en-us; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile': {
+        tizen: true
+      , osversion: '1.0'
+      , webkit: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-i9500/1.0; U; Tizen/1.0 like Android; en-us) AppleWebKit/534.46 (KHTML, like Gecko) SLP Browser/1.0 Mobile': {
+        tizen: true
+      , osversion: '1.0'
+      , webkit: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    }
+  , Sailfish: {
+      'Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 SailfishBrowser/1.0 like Safari/538.1': {
+        sailfish: true
+      , gecko: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    , 'Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 like Safari/535.19': {
+        sailfish: true
+      , gecko: true
+      , version: '1.0'
+      , mobile: true
+      , x: true
+      }
+    }
+  , PhantomJS: {
+      'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.5.0 Safari/534.34': {
+        phantom: true
+      , webkit: true
+      , version: '1.5'
+      , mac: true
+      , x: true
+      }
+    }
+	, Vivaldi: {
+		'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36 Vivaldi/1.0.303.52' : {
+			vivaldi: true
+			, version: '1.0'
+			, mac: true
+			, blink: true
+			, a: true
+		},
+		'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36 Vivaldi/1.0.303.52': {
+			vivaldi: true
+			, version: '1.0'
+			, windows: true
+			, blink: true
+			, a: true
+		}
+	}
+  , Generic: {
+    'Generic/2.15 libww': {
+      name: 'Generic'
+    , version: '2.15'
+    , x: true
+    }
+  }
+  , Googlebot: {
+    'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)': {
+      googlebot: true
+    , version: '2.1'
+    , x: true
+    }
+  }
+  , "UC Browser": {
+    'Mozilla/5.0 (iPad; U; CPU OS 9 like Mac OS X; en-us; iPad4,4) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/2.4.0.367 U3/1 Safari/7543.48.3': {
+      ucbrowser: true,
+      version: '2.4.0.367',
+      webkit: true,
+      ipad: true,
+      ios: true,
+      osversion: 9,
+      tablet: true,
+      a: true
+    },
+    'Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; SM-T210R Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 UCBrowser/2.3.2.300': {
+      android: true,
+      osversion: '4.1.2',
+      tablet: true,
+      ucbrowser: true,
+      version: '2.3.2.300',
+      webkit: true,
+      x: true
+    }
+    , 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X; en-US) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/13E238 UCBrowser/10.7.0.782 Mobile': {
+        iphone: true
+      , ios: true
+      , mobile: true
+      , osversion: '9.3.1'
+      , version: '10.7.0.782'
+      , webkit: true
+      , a: true
+      , ucbrowser: true
+    }
+  }
+  , "QupZilla": {
+    'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.8.2 Safari/538.1': {
+      mac: true,
+      qupzilla: true,
+      version: '1.8.2',
+      webkit: true,
+      x: true
+    },
+    'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) QupZilla/1.8.6 Safari/537.21': {
+      windows: true,
+      qupzilla: true,
+      version: '1.8.6',
+      webkit: true,
+      x: true
+    }
+  }
+  , 'Maxthon': {
+    'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E238 Safari/601.1 MXiOS/4.8.6.59': {
+        mobile: true
+      , ios: true
+      , iphone: true
+      , version: '4.8.6.59'
+      , osversion: '9.3.1'
+      , webkit: true
+      , maxthon: true
+      , a: true
+    }
+  }
+  , 'Epiphany': {
+    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/602.1 (KHTML, like Gecko) Version/8.0 Safari/602.1 Debian/buildd-unstable (3.18.5-1) Epiphany/3.18.5': {
+      epiphany: true
+      , x: true
+      , webkit: true
+      , version: '3.18.5'
+      , linux: true
+    }
+  }
+  , 'Puffin': {
+    'Mozilla/5.0 (X11; U; Linux x86_64; zh-TW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/3.7.0IT': {
+        linux: true
+      , blink: true
+      , puffin: true
+      , version: '3.7'
+      , x: true
+    }
+  }, 'Sleipnir': {
+    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Sleipnir/6.1.4': {
+      sleipnir: true
+      , blink: true
+      , windows: true
+      , x: true
+      , version: '6.1.4'
+    }
+  }
+  , 'K-Meleon': {
+    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20140105 Firefox/24.0 K-Meleon/74.0': {
+      windows: true
+      , kMeleon: true
+      , version: '74.0'
+      , gecko: true
+      , x: true
+    }
+  }
+  , 'Chromium': {
+    'Mozilla/5.0 (Linux; Ubuntu 14.04 like Android 4.4) AppleWebKit/537.36 Chromium/35.0.1870.2 Mobile Safari/537.36': {
+        mobile: true
+      , linux: true
+      , chromium: true
+      , version: '35.0'
+      , blink: true
+      , a: true
+    }
+    , 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36': {
+      chromium: true
+      , a: true
+      , version: '50.0'
+      , linux: true
+      , blink: true
+    }
+  }
+  , 'SlimerJS' : {
+    'Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 SlimerJS/0.7': {
+      linux: true
+      , slimer: true
+      , version: '0.7'
+      , gecko: true
+      , x: true
+    }
+  }
+}
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/.gitignore b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/.gitignore
new file mode 100644
index 0000000..790a4b0
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/.gitignore
@@ -0,0 +1,4 @@
+_site
+.sass-cache
+*.scssc
+*.swp
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/LICENSE b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/LICENSE
new file mode 100644
index 0000000..18ab118
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Drifty (http://drifty.com/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.css b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.css
new file mode 100644
index 0000000..899449b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.css
@@ -0,0 +1,1493 @@
+@charset "UTF-8";
+/*!
+  Ionicons, v2.0.0
+  Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
+  https://twitter.com/benjsperry  https://twitter.com/ionicframework
+  MIT License: https://github.com/driftyco/ionicons
+
+  Android-style icons originally built by Google’s
+  Material Design Icons: https://github.com/google/material-design-icons
+  used under CC BY http://creativecommons.org/licenses/by/4.0/
+  Modified icons to fit ionicon’s grid from original.
+*/
+@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0"); src: url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), url("../fonts/ionicons.woff?v=2.0.0") format("woff"), url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); font-weight: normal; font-style: normal; }
+.ion, .ionicons, .ion-alert:before, .icon-securityalerts-alertL:before, .icon-controls-add-maximize:before, .icon-controls-add-maximize-circle:before, .icon-misc-time:before, .icoSecurityalerts:before,.icon-apps-marketplace:before ,.icon-content-grid:before, .icon-documents-archive:before, .ion-android-arrow-back:before, .icon-arrows-vertical-arrow-down:before, .ion-android-arrow-dropdown:before, .icoArrows-download:before, .ion-android-arrow-dropleft:before, .icoArrows-incoming-call:before, .ion-android-arrow-dropright:before, .icon-arrows-outgoing-call:before, .ion-android-arrow-dropup:before, .icon-arrows-upload:before, .icon-arrows-straight-arrow:before, .icoArrows-vertical-arrow:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .icon-people-userbookmark:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .icon-chevron-down:before, .icon-controls-left:before, .icon-controls-right:before, .icon-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .icoDocuments-report:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .icon-edit:before,.icon-misc-pen:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .icon-overview:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .icon-settings:before,.ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .icon-building-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .icon-controls-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .icon-controls-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .icon-documents-book:before, .icoDocuments-book-outline:before, .icoDocuments-bookmarks:before, .icoDocuments-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before,.icon-add-widget:before , .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .icon-documents-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .icon-content-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .icon-primary-accordion-minus:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .icon-misc-piechart:before, .icon-misc-piechart-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .icon-primary-accordion-plus:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .icon-star:before,.ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .icon-building-door:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .icon-content-gridguide:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .icon-user:before, .icon-people-oneperson:before, .icon-people-oneperson-add:before, .icon-people-oneperson-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .icon-controls-pointer:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .icon-arrows-replay-restart:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .icon-content-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .icon-misc-trash:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .icon-arrows-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
+
+.ion-alert:before { content: "\f101"; }
+
+.icoSecurityalerts-alert:before { content: "\f100"; }
+
+.icon-controls-add-maximize:before { content: "\f2c7"; }
+
+.icon-controls-add-maximize-circle:before { content: "\f359"; }
+
+.icon-misc-time:before { content: "\f35a"; }
+
+.icoSecurityalerts:before { content: "\f35b"; }
+
+.icon-content-grid:before { content: "\f35c"; }
+
+.icon-documents-archive:before { content: "\f2c9"; }
+
+.ion-android-arrow-back:before { content: "\f2ca"; }
+
+.icon-arrows-vertical-arrow-down:before { content: "\f35d"; }
+
+.ion-android-arrow-dropdown:before { content: "\f35f"; }
+
+.icon-arrows-download:before { content: "\f35e"; }
+
+.ion-android-arrow-dropleft:before { content: "\f361"; }
+
+.icon-arrows-incoming-call:before { content: "\f360"; }
+
+.ion-android-arrow-dropright:before { content: "\f363"; }
+
+.icoArrows-outgoing-call:before { content: "\f362"; }
+
+.ion-android-arrow-dropup:before { content: "\f365"; }
+
+.icoArrows-upload:before { content: "\f364"; }
+
+.icoArrows-straight-arrow:before { content: "\f30f"; }
+
+.icon-arrows-vertical-arrow:before { content: "\f366"; }
+
+.ion-android-attach:before { content: "\f367"; }
+
+.ion-android-bar:before { content: "\f368"; }
+
+.ion-android-bicycle:before { content: "\f369"; }
+
+.ion-android-boat:before { content: "\f36a"; }
+
+.ion-android-bookmark:before { content: "\f36b"; }
+
+.ion-android-bulb:before { content: "\f36c"; }
+
+.ion-android-bus:before { content: "\f36d"; }
+
+.ion-android-calendar:before { content: "\f2d1"; }
+
+.ion-android-call:before { content: "\f2d2"; }
+
+.ion-android-camera:before { content: "\f2d3"; }
+
+.ion-android-cancel:before { content: "\f36e"; }
+
+.ion-android-car:before { content: "\f36f"; }
+
+.ion-android-cart:before { content: "\f370"; }
+
+.ion-android-chat:before { content: "\f2d4"; }
+
+.ion-android-checkbox:before { content: "\f374"; }
+
+.ion-android-checkbox-blank:before { content: "\f371"; }
+
+.ion-android-checkbox-outline:before { content: "\f373"; }
+
+.ion-android-checkbox-outline-blank:before { content: "\f372"; }
+
+.ion-android-checkmark-circle:before { content: "\f375"; }
+
+.ion-android-clipboard:before { content: "\f376"; }
+
+.ion-android-close:before { content: "\f2d7"; }
+
+.ion-android-cloud:before { content: "\f37a"; }
+
+.ion-android-cloud-circle:before { content: "\f377"; }
+
+.ion-android-cloud-done:before { content: "\f378"; }
+
+.ion-android-cloud-outline:before { content: "\f379"; }
+
+.ion-android-color-palette:before { content: "\f37b"; }
+
+.ion-android-compass:before { content: "\f37c"; }
+
+.ion-android-contact:before { content: "\f2d8"; }
+
+.ion-android-contacts:before { content: "\f2d9"; }
+
+.ion-android-contract:before { content: "\f37d"; }
+
+.ion-android-create:before { content: "\f37e"; }
+
+.ion-android-delete:before { content: "\f37f"; }
+
+.ion-android-desktop:before { content: "\f380"; }
+
+.ion-android-document:before { content: "\f381"; }
+
+.ion-android-done:before { content: "\f383"; }
+
+.ion-android-done-all:before { content: "\f382"; }
+
+.ion-android-download:before { content: "\f2dd"; }
+
+.ion-android-drafts:before { content: "\f384"; }
+
+.ion-android-exit:before { content: "\f385"; }
+
+.ion-android-expand:before { content: "\f386"; }
+
+.ion-android-favorite:before { content: "\f388"; }
+
+.ion-android-favorite-outline:before { content: "\f387"; }
+
+.ion-android-film:before { content: "\f389"; }
+
+.ion-android-folder:before { content: "\f2e0"; }
+
+.ion-android-folder-open:before { content: "\f38a"; }
+
+.ion-android-funnel:before { content: "\f38b"; }
+
+.ion-android-globe:before { content: "\f38c"; }
+
+.ion-android-hand:before { content: "\f2e3"; }
+
+.ion-android-hangout:before { content: "\f38d"; }
+
+.ion-android-happy:before { content: "\f38e"; }
+
+.ion-android-home:before { content: "\f38f"; }
+
+.ion-android-image:before { content: "\f2e4"; }
+
+.ion-android-laptop:before { content: "\f390"; }
+
+.ion-android-list:before { content: "\f391"; }
+
+.ion-android-locate:before { content: "\f2e9"; }
+
+.ion-android-lock:before { content: "\f392"; }
+
+.ion-android-mail:before { content: "\f2eb"; }
+
+.ion-android-map:before { content: "\f393"; }
+
+.ion-android-menu:before { content: "\f394"; }
+
+.ion-android-microphone:before { content: "\f2ec"; }
+
+.ion-android-microphone-off:before { content: "\f395"; }
+
+.ion-android-more-horizontal:before { content: "\f396"; }
+
+.ion-android-more-vertical:before { content: "\f397"; }
+
+.ion-android-navigate:before { content: "\f398"; }
+
+.ion-android-notifications:before { content: "\f39b"; }
+
+.ion-android-notifications-none:before { content: "\f399"; }
+
+.ion-android-notifications-off:before { content: "\f39a"; }
+
+.ion-android-open:before { content: "\f39c"; }
+
+.ion-android-options:before { content: "\f39d"; }
+
+.ion-android-people:before { content: "\f39e"; }
+
+.ion-android-person:before { content: "\f3a0"; }
+
+.icon-people-userbookmark:before { content: "\f39f"; }
+
+.ion-android-phone-landscape:before { content: "\f3a1"; }
+
+.ion-android-phone-portrait:before { content: "\f3a2"; }
+
+.ion-android-pin:before { content: "\f3a3"; }
+
+.ion-android-plane:before { content: "\f3a4"; }
+
+.ion-android-playstore:before { content: "\f2f0"; }
+
+.ion-android-print:before { content: "\f3a5"; }
+
+.ion-android-radio-button-off:before { content: "\f3a6"; }
+
+.ion-android-radio-button-on:before { content: "\f3a7"; }
+
+.ion-android-refresh:before { content: "\f3a8"; }
+
+.ion-android-remove:before { content: "\f2f4"; }
+
+.ion-android-remove-circle:before { content: "\f3a9"; }
+
+.ion-android-restaurant:before { content: "\f3aa"; }
+
+.ion-android-sad:before { content: "\f3ab"; }
+
+.ion-android-search:before { content: "\f2f5"; }
+
+.ion-android-send:before { content: "\f2f6"; }
+
+.ion-android-settings:before { content: "\f2f7"; }
+
+.ion-android-share:before { content: "\f2f8"; }
+
+.ion-android-share-alt:before { content: "\f3ac"; }
+
+.ion-android-star:before { content: "\f2fc"; }
+
+.ion-android-star-half:before { content: "\f3ad"; }
+
+.ion-android-star-outline:before { content: "\f3ae"; }
+
+.ion-android-stopwatch:before { content: "\f2fd"; }
+
+.ion-android-subway:before { content: "\f3af"; }
+
+.ion-android-sunny:before { content: "\f3b0"; }
+
+.ion-android-sync:before { content: "\f3b1"; }
+
+.ion-android-textsms:before { content: "\f3b2"; }
+
+.ion-android-time:before { content: "\f3b3"; }
+
+.ion-android-train:before { content: "\f3b4"; }
+
+.ion-android-unlock:before { content: "\f3b5"; }
+
+.ion-android-upload:before { content: "\f3b6"; }
+
+.ion-android-volume-down:before { content: "\f3b7"; }
+
+.ion-android-volume-mute:before { content: "\f3b8"; }
+
+.ion-android-volume-off:before { content: "\f3b9"; }
+
+.ion-android-volume-up:before { content: "\f3ba"; }
+
+.ion-android-walk:before { content: "\f3bb"; }
+
+.ion-android-warning:before { content: "\f3bc"; }
+
+.ion-android-watch:before { content: "\f3bd"; }
+
+.ion-android-wifi:before { content: "\f305"; }
+
+.ion-aperture:before { content: "\f313"; }
+
+.ion-archive:before { content: "\f102"; }
+
+.ion-arrow-down-a:before { content: "\f103"; }
+
+.ion-arrow-down-b:before { content: "\f104"; }
+
+.ion-arrow-down-c:before { content: "\f105"; }
+
+.ion-arrow-expand:before { content: "\f25e"; }
+
+.ion-arrow-graph-down-left:before { content: "\f25f"; }
+
+.ion-arrow-graph-down-right:before { content: "\f260"; }
+
+.ion-arrow-graph-up-left:before { content: "\f261"; }
+
+.ion-arrow-graph-up-right:before { content: "\f262"; }
+
+.ion-arrow-left-a:before { content: "\f106"; }
+
+.ion-arrow-left-b:before { content: "\f107"; }
+
+.ion-arrow-left-c:before { content: "\f108"; }
+
+.ion-arrow-move:before { content: "\f263"; }
+
+.ion-arrow-resize:before { content: "\f264"; }
+
+.ion-arrow-return-left:before { content: "\f265"; }
+
+.ion-arrow-return-right:before { content: "\f266"; }
+
+.ion-arrow-right-a:before { content: "\f109"; }
+
+.ion-arrow-right-b:before { content: "\f10a"; }
+
+.ion-arrow-right-c:before { content: "\f10b"; }
+
+.ion-arrow-shrink:before { content: "\f267"; }
+
+.ion-arrow-swap:before { content: "\f268"; }
+
+.ion-arrow-up-a:before { content: "\f10c"; }
+
+.ion-arrow-up-b:before { content: "\f10d"; }
+
+.ion-arrow-up-c:before { content: "\f10e"; }
+
+.ion-asterisk:before { content: "\f314"; }
+
+.ion-at:before { content: "\f10f"; }
+
+.ion-backspace:before { content: "\f3bf"; }
+
+.ion-backspace-outline:before { content: "\f3be"; }
+
+.ion-bag:before { content: "\f110"; }
+
+.ion-battery-charging:before { content: "\f111"; }
+
+.ion-battery-empty:before { content: "\f112"; }
+
+.ion-battery-full:before { content: "\f113"; }
+
+.ion-battery-half:before { content: "\f114"; }
+
+.ion-battery-low:before { content: "\f115"; }
+
+.ion-beaker:before { content: "\f269"; }
+
+.ion-beer:before { content: "\f26a"; }
+
+.ion-bluetooth:before { content: "\f116"; }
+
+.ion-bonfire:before { content: "\f315"; }
+
+.ion-bookmark:before { content: "\f26b"; }
+
+.ion-bowtie:before { content: "\f3c0"; }
+
+.ion-briefcase:before { content: "\f26c"; }
+
+.ion-bug:before { content: "\f2be"; }
+
+.ion-calculator:before { content: "\f26d"; }
+
+.ion-calendar:before { content: "\f117"; }
+
+.ion-camera:before { content: "\f118"; }
+
+.ion-card:before { content: "\f119"; }
+
+.ion-cash:before { content: "\f316"; }
+
+.ion-chatbox:before { content: "\f11b"; }
+
+.ion-chatbox-working:before { content: "\f11a"; }
+
+.ion-chatboxes:before { content: "\f11c"; }
+
+.ion-chatbubble:before { content: "\f11e"; }
+
+.ion-chatbubble-working:before { content: "\f11d"; }
+
+.ion-chatbubbles:before { content: "\f11f"; }
+
+.ion-checkmark:before { content: "\f122"; }
+
+.ion-checkmark-circled:before { content: "\f120"; }
+
+.ion-checkmark-round:before { content: "\f121"; }
+
+.icon-chevron-down:before { content: "\f123"; }
+
+
+.icon-controls-left:before { content: "\f124"; }
+
+.icon-controls-right:before { content: "\f125"; }
+
+.icon-chevron-up:before { content: "\f126"; }
+
+.ion-clipboard:before { content: "\f127"; }
+
+.ion-clock:before { content: "\f26e"; }
+
+.ion-close:before { content: "\f12a"; }
+
+.ion-close-circled:before { content: "\f128"; }
+
+.ion-close-round:before { content: "\f129"; }
+
+.ion-closed-captioning:before { content: "\f317"; }
+
+.ion-cloud:before { content: "\f12b"; }
+
+.ion-code:before { content: "\f271"; }
+
+.ion-code-download:before { content: "\f26f"; }
+
+.ion-code-working:before { content: "\f270"; }
+
+.ion-coffee:before { content: "\f272"; }
+
+.ion-compass:before { content: "\f273"; }
+
+.ion-compose:before { content: "\f12c"; }
+
+.icoDocuments-report:before { content: "\f274"; }
+
+.ion-contrast:before { content: "\f275"; }
+
+.ion-crop:before { content: "\f3c1"; }
+
+.ion-cube:before { content: "\f318"; }
+
+.ion-disc:before { content: "\f12d"; }
+
+.ion-document:before { content: "\f12f"; }
+
+.ion-document-text:before { content: "\f12e"; }
+
+.ion-drag:before { content: "\f130"; }
+
+.ion-earth:before { content: "\f276"; }
+
+.ion-easel:before { content: "\f3c2"; }
+
+.icon-misc-pen:before { content: "\f2bf"; }
+
+.ion-egg:before { content: "\f277"; }
+
+.ion-eject:before { content: "\f131"; }
+
+.ion-email:before { content: "\f132"; }
+
+.ion-email-unread:before { content: "\f3c3"; }
+
+.ion-erlenmeyer-flask:before { content: "\f3c5"; }
+
+.ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; }
+
+.icon-overview:before { content: "\f133"; }
+
+.ion-eye-disabled:before { content: "\f306"; }
+
+.ion-female:before { content: "\f278"; }
+
+.ion-filing:before { content: "\f134"; }
+
+.ion-film-marker:before { content: "\f135"; }
+
+.ion-fireball:before { content: "\f319"; }
+
+.ion-flag:before { content: "\f279"; }
+
+.ion-flame:before { content: "\f31a"; }
+
+.ion-flash:before { content: "\f137"; }
+
+.ion-flash-off:before { content: "\f136"; }
+
+.ion-folder:before { content: "\f139"; }
+
+.ion-fork:before { content: "\f27a"; }
+
+.ion-fork-repo:before { content: "\f2c0"; }
+
+.ion-forward:before { content: "\f13a"; }
+
+.ion-funnel:before { content: "\f31b"; }
+
+.ion-gear-a:before { content: "\f13d"; }
+
+.ion-gear-b:before { content: "\f13e"; }
+
+.ion-grid:before { content: "\f13f"; }
+
+.ion-hammer:before { content: "\f27b"; }
+
+.ion-happy:before { content: "\f31c"; }
+
+.ion-happy-outline:before { content: "\f3c6"; }
+
+.ion-headphone:before { content: "\f140"; }
+
+.ion-heart:before { content: "\f141"; }
+
+.ion-heart-broken:before { content: "\f31d"; }
+
+.ion-help:before { content: "\f143"; }
+
+.ion-help-buoy:before { content: "\f27c"; }
+
+.ion-help-circled:before { content: "\f142"; }
+
+.icon-building-home:before { content: "\f144"; }
+
+.ion-icecream:before { content: "\f27d"; }
+
+.ion-image:before { content: "\f147"; }
+
+.ion-images:before { content: "\f148"; }
+
+.ion-information:before { content: "\f14a"; }
+
+.ion-information-circled:before { content: "\f149"; }
+
+.ion-ionic:before { content: "\f14b"; }
+
+.ion-ios-alarm:before { content: "\f3c8"; }
+
+.ion-ios-alarm-outline:before { content: "\f3c7"; }
+
+.ion-ios-albums:before { content: "\f3ca"; }
+
+.ion-ios-albums-outline:before { content: "\f3c9"; }
+
+.ion-ios-americanfootball:before { content: "\f3cc"; }
+
+.ion-ios-americanfootball-outline:before { content: "\f3cb"; }
+
+.ion-ios-analytics:before { content: "\f3ce"; }
+
+.ion-ios-analytics-outline:before { content: "\f3cd"; }
+
+.ion-ios-arrow-back:before { content: "\f3cf"; }
+
+.icon-controls-down:before { content: "\f3d0"; }
+
+.ion-ios-arrow-forward:before { content: "\f3d1"; }
+
+.ion-ios-arrow-left:before { content: "\f3d2"; }
+
+.ion-ios-arrow-right:before { content: "\f3d3"; }
+
+.ion-ios-arrow-thin-down:before { content: "\f3d4"; }
+
+.ion-ios-arrow-thin-left:before { content: "\f3d5"; }
+
+.ion-ios-arrow-thin-right:before { content: "\f3d6"; }
+
+.ion-ios-arrow-thin-up:before { content: "\f3d7"; }
+
+.icon-controls-up:before { content: "\f3d8"; }
+
+.ion-ios-at:before { content: "\f3da"; }
+
+.ion-ios-at-outline:before { content: "\f3d9"; }
+
+.ion-ios-barcode:before { content: "\f3dc"; }
+
+.ion-ios-barcode-outline:before { content: "\f3db"; }
+
+.ion-ios-baseball:before { content: "\f3de"; }
+
+.ion-ios-baseball-outline:before { content: "\f3dd"; }
+
+.ion-ios-basketball:before { content: "\f3e0"; }
+
+.ion-ios-basketball-outline:before { content: "\f3df"; }
+
+.ion-ios-bell:before { content: "\f3e2"; }
+
+.ion-ios-bell-outline:before { content: "\f3e1"; }
+
+.ion-ios-body:before { content: "\f3e4"; }
+
+.ion-ios-body-outline:before { content: "\f3e3"; }
+
+.ion-ios-bolt:before { content: "\f3e6"; }
+
+.ion-ios-bolt-outline:before { content: "\f3e5"; }
+
+.icon-documents-book:before { content: "\f3e8"; }
+
+.icoDocuments-book-outline:before { content: "\f3e7"; }
+
+.icoDocuments-bookmarks:before { content: "\f3ea"; }
+
+.icoDocuments-bookmarks-outline:before { content: "\f3e9"; }
+
+.ion-ios-box:before { content: "\f3ec"; }
+
+.ion-ios-box-outline:before { content: "\f3eb"; }
+
+.ion-ios-briefcase:before { content: "\f3ee"; }
+
+.ion-ios-briefcase-outline:before { content: "\f3ed"; }
+
+.ion-ios-browsers:before { content: "\f3f0"; }
+
+.ion-ios-browsers-outline:before { content: "\f3ef"; }
+
+.ion-ios-calculator:before { content: "\f3f2"; }
+
+.ion-ios-calculator-outline:before { content: "\f3f1"; }
+
+.ion-ios-calendar:before { content: "\f3f4"; }
+
+.ion-ios-calendar-outline:before { content: "\f3f3"; }
+
+.ion-ios-camera:before { content: "\f3f6"; }
+
+.ion-ios-camera-outline:before { content: "\f3f5"; }
+
+.ion-ios-cart:before { content: "\f3f8"; }
+
+.ion-ios-cart-outline:before { content: "\f3f7"; }
+
+.ion-ios-chatboxes:before { content: "\f3fa"; }
+
+.ion-ios-chatboxes-outline:before { content: "\f3f9"; }
+
+.ion-ios-chatbubble:before { content: "\f3fc"; }
+
+.ion-ios-chatbubble-outline:before { content: "\f3fb"; }
+
+.ion-ios-checkmark:before { content: "\f3ff"; }
+
+.ion-ios-checkmark-empty:before { content: "\f3fd"; }
+
+.ion-ios-checkmark-outline:before { content: "\f3fe"; }
+
+.ion-ios-circle-filled:before { content: "\f400"; }
+
+.ion-ios-circle-outline:before { content: "\f401"; }
+
+.ion-ios-clock:before { content: "\f403"; }
+
+.ion-ios-clock-outline:before { content: "\f402"; }
+
+.ion-ios-close:before { content: "\f406"; }
+
+.ion-ios-close-empty:before { content: "\f404"; }
+
+.ion-ios-close-outline:before { content: "\f405"; }
+
+.ion-ios-cloud:before { content: "\f40c"; }
+
+.ion-ios-cloud-download:before { content: "\f408"; }
+
+.ion-ios-cloud-download-outline:before { content: "\f407"; }
+
+.ion-ios-cloud-outline:before { content: "\f409"; }
+
+.ion-ios-cloud-upload:before { content: "\f40b"; }
+
+.ion-ios-cloud-upload-outline:before { content: "\f40a"; }
+
+.ion-ios-cloudy:before { content: "\f410"; }
+
+.ion-ios-cloudy-night:before { content: "\f40e"; }
+
+.ion-ios-cloudy-night-outline:before { content: "\f40d"; }
+
+.ion-ios-cloudy-outline:before { content: "\f40f"; }
+
+.ion-ios-cog:before { content: "\f412"; }
+
+.ion-ios-cog-outline:before { content: "\f411"; }
+
+.ion-ios-color-filter:before { content: "\f414"; }
+
+.ion-ios-color-filter-outline:before { content: "\f413"; }
+
+.ion-ios-color-wand:before { content: "\f416"; }
+
+.ion-ios-color-wand-outline:before { content: "\f415"; }
+
+.ion-ios-compose:before { content: "\f418"; }
+
+.ion-ios-compose-outline:before { content: "\f417"; }
+
+.ion-ios-contact:before { content: "\f41a"; }
+
+.ion-ios-contact-outline:before { content: "\f419"; }
+
+.icon-documents-copy:before { content: "\f41c"; }
+
+.ion-ios-copy-outline:before { content: "\f41b"; }
+
+.ion-ios-crop:before { content: "\f41e"; }
+
+.ion-ios-crop-strong:before { content: "\f41d"; }
+
+.ion-ios-download:before { content: "\f420"; }
+
+.ion-ios-download-outline:before { content: "\f41f"; }
+
+.ion-ios-drag:before { content: "\f421"; }
+
+.ion-ios-email:before { content: "\f423"; }
+
+.ion-ios-email-outline:before { content: "\f422"; }
+
+.ion-ios-eye:before { content: "\f425"; }
+
+.ion-ios-eye-outline:before { content: "\f424"; }
+
+.ion-ios-fastforward:before { content: "\f427"; }
+
+.ion-ios-fastforward-outline:before { content: "\f426"; }
+
+.ion-ios-filing:before { content: "\f429"; }
+
+.ion-ios-filing-outline:before { content: "\f428"; }
+
+.ion-ios-film:before { content: "\f42b"; }
+
+.ion-ios-film-outline:before { content: "\f42a"; }
+
+.icon-content-flag:before { content: "\f42d"; }
+
+.ion-ios-flag-outline:before { content: "\f42c"; }
+
+.ion-ios-flame:before { content: "\f42f"; }
+
+.ion-ios-flame-outline:before { content: "\f42e"; }
+
+.ion-ios-flask:before { content: "\f431"; }
+
+.ion-ios-flask-outline:before { content: "\f430"; }
+
+.ion-ios-flower:before { content: "\f433"; }
+
+.ion-ios-flower-outline:before { content: "\f432"; }
+
+.ion-ios-folder:before { content: "\f435"; }
+
+.ion-ios-folder-outline:before { content: "\f434"; }
+
+.ion-ios-football:before { content: "\f437"; }
+
+.ion-ios-football-outline:before { content: "\f436"; }
+
+.ion-ios-game-controller-a:before { content: "\f439"; }
+
+.ion-ios-game-controller-a-outline:before { content: "\f438"; }
+
+.ion-ios-game-controller-b:before { content: "\f43b"; }
+
+.ion-ios-game-controller-b-outline:before { content: "\f43a"; }
+
+.ion-ios-gear:before { content: "\f43d"; }
+
+.ion-ios-gear-outline:before { content: "\f43c"; }
+
+.ion-ios-glasses:before { content: "\f43f"; }
+
+.ion-ios-glasses-outline:before { content: "\f43e"; }
+
+.ion-ios-grid-view:before { content: "\f441"; }
+
+.ion-ios-grid-view-outline:before { content: "\f440"; }
+
+.ion-ios-heart:before { content: "\f443"; }
+
+.ion-ios-heart-outline:before { content: "\f442"; }
+
+.ion-ios-help:before { content: "\f446"; }
+
+.ion-ios-help-empty:before { content: "\f444"; }
+
+.ion-ios-help-outline:before { content: "\f445"; }
+
+.ion-ios-home:before { content: "\f448"; }
+
+.ion-ios-home-outline:before { content: "\f447"; }
+
+.ion-ios-infinite:before { content: "\f44a"; }
+
+.ion-ios-infinite-outline:before { content: "\f449"; }
+
+.ion-ios-information:before { content: "\f44d"; }
+
+.ion-ios-information-empty:before { content: "\f44b"; }
+
+.ion-ios-information-outline:before { content: "\f44c"; }
+
+.ion-ios-ionic-outline:before { content: "\f44e"; }
+
+.ion-ios-keypad:before { content: "\f450"; }
+
+.ion-ios-keypad-outline:before { content: "\f44f"; }
+
+.ion-ios-lightbulb:before { content: "\f452"; }
+
+.ion-ios-lightbulb-outline:before { content: "\f451"; }
+
+.ion-ios-list:before { content: "\f454"; }
+
+.ion-ios-list-outline:before { content: "\f453"; }
+
+.ion-ios-location:before { content: "\f456"; }
+
+.ion-ios-location-outline:before { content: "\f455"; }
+
+.ion-ios-locked:before { content: "\f458"; }
+
+.ion-ios-locked-outline:before { content: "\f457"; }
+
+.ion-ios-loop:before { content: "\f45a"; }
+
+.ion-ios-loop-strong:before { content: "\f459"; }
+
+.ion-ios-medical:before { content: "\f45c"; }
+
+.ion-ios-medical-outline:before { content: "\f45b"; }
+
+.ion-ios-medkit:before { content: "\f45e"; }
+
+.ion-ios-medkit-outline:before { content: "\f45d"; }
+
+.ion-ios-mic:before { content: "\f461"; }
+
+.ion-ios-mic-off:before { content: "\f45f"; }
+
+.ion-ios-mic-outline:before { content: "\f460"; }
+
+.ion-ios-minus:before { content: "\f464"; }
+
+.ion-ios-minus-empty:before { content: "\f462"; }
+
+.icon-primary-accordion-minus:before { content: "\f463"; }
+
+.ion-ios-monitor:before { content: "\f466"; }
+
+.ion-ios-monitor-outline:before { content: "\f465"; }
+
+.ion-ios-moon:before { content: "\f468"; }
+
+.ion-ios-moon-outline:before { content: "\f467"; }
+
+.ion-ios-more:before { content: "\f46a"; }
+
+.ion-ios-more-outline:before { content: "\f469"; }
+
+.ion-ios-musical-note:before { content: "\f46b"; }
+
+.ion-ios-musical-notes:before { content: "\f46c"; }
+
+.ion-ios-navigate:before { content: "\f46e"; }
+
+.ion-ios-navigate-outline:before { content: "\f46d"; }
+
+.ion-ios-nutrition:before { content: "\f470"; }
+
+.ion-ios-nutrition-outline:before { content: "\f46f"; }
+
+.ion-ios-paper:before { content: "\f472"; }
+
+.ion-ios-paper-outline:before { content: "\f471"; }
+
+.ion-ios-paperplane:before { content: "\f474"; }
+
+.ion-ios-paperplane-outline:before { content: "\f473"; }
+
+.ion-ios-partlysunny:before { content: "\f476"; }
+
+.ion-ios-partlysunny-outline:before { content: "\f475"; }
+
+.ion-ios-pause:before { content: "\f478"; }
+
+.ion-ios-pause-outline:before { content: "\f477"; }
+
+.ion-ios-paw:before { content: "\f47a"; }
+
+.ion-ios-paw-outline:before { content: "\f479"; }
+
+.ion-ios-people:before { content: "\f47c"; }
+
+.ion-ios-people-outline:before { content: "\f47b"; }
+
+.ion-ios-person:before { content: "\f47e"; }
+
+.ion-ios-person-outline:before { content: "\f47d"; }
+
+.ion-ios-personadd:before { content: "\f480"; }
+
+.ion-ios-personadd-outline:before { content: "\f47f"; }
+
+.ion-ios-photos:before { content: "\f482"; }
+
+.ion-ios-photos-outline:before { content: "\f481"; }
+
+.icon-misc-piechart:before { content: "\f484"; }
+
+.icon-misc-piechart-outline:before { content: "\f483"; }
+
+.ion-ios-pint:before { content: "\f486"; }
+
+.ion-ios-pint-outline:before { content: "\f485"; }
+
+.ion-ios-play:before { content: "\f488"; }
+
+.ion-ios-play-outline:before { content: "\f487"; }
+
+.ion-ios-plus:before { content: "\f48b"; }
+
+.ion-ios-plus-empty:before { content: "\f489"; }
+
+.icon-primary-accordion-plus:before { content: "\f48a"; }
+
+.ion-ios-pricetag:before { content: "\f48d"; }
+
+.ion-ios-pricetag-outline:before { content: "\f48c"; }
+
+.ion-ios-pricetags:before { content: "\f48f"; }
+
+.ion-ios-pricetags-outline:before { content: "\f48e"; }
+
+.ion-ios-printer:before { content: "\f491"; }
+
+.ion-ios-printer-outline:before { content: "\f490"; }
+
+.ion-ios-pulse:before { content: "\f493"; }
+
+.ion-ios-pulse-strong:before { content: "\f492"; }
+
+.ion-ios-rainy:before { content: "\f495"; }
+
+.ion-ios-rainy-outline:before { content: "\f494"; }
+
+.ion-ios-recording:before { content: "\f497"; }
+
+.ion-ios-recording-outline:before { content: "\f496"; }
+
+.ion-ios-redo:before { content: "\f499"; }
+
+.ion-ios-redo-outline:before { content: "\f498"; }
+
+.ion-ios-refresh:before { content: "\f49c"; }
+
+.ion-ios-refresh-empty:before { content: "\f49a"; }
+
+.ion-ios-refresh-outline:before { content: "\f49b"; }
+
+.ion-ios-reload:before { content: "\f49d"; }
+
+.ion-ios-reverse-camera:before { content: "\f49f"; }
+
+.ion-ios-reverse-camera-outline:before { content: "\f49e"; }
+
+.ion-ios-rewind:before { content: "\f4a1"; }
+
+.ion-ios-rewind-outline:before { content: "\f4a0"; }
+
+.ion-ios-rose:before { content: "\f4a3"; }
+
+.ion-ios-rose-outline:before { content: "\f4a2"; }
+
+.ion-ios-search:before { content: "\f4a5"; }
+
+.ion-ios-search-strong:before { content: "\f4a4"; }
+
+.ion-ios-settings:before { content: "\f4a7"; }
+
+.ion-ios-settings-strong:before { content: "\f4a6"; }
+
+.ion-ios-shuffle:before { content: "\f4a9"; }
+
+.ion-ios-shuffle-strong:before { content: "\f4a8"; }
+
+.ion-ios-skipbackward:before { content: "\f4ab"; }
+
+.ion-ios-skipbackward-outline:before { content: "\f4aa"; }
+
+.ion-ios-skipforward:before { content: "\f4ad"; }
+
+.ion-ios-skipforward-outline:before { content: "\f4ac"; }
+
+.ion-ios-snowy:before { content: "\f4ae"; }
+
+.ion-ios-speedometer:before { content: "\f4b0"; }
+
+.ion-ios-speedometer-outline:before { content: "\f4af"; }
+
+.ion-ios-star:before { content: "\f4b3"; }
+
+.ion-ios-star-half:before { content: "\f4b1"; }
+
+.ion-ios-star-outline:before { content: "\f4b2"; }
+
+.ion-ios-stopwatch:before { content: "\f4b5"; }
+
+.ion-ios-stopwatch-outline:before { content: "\f4b4"; }
+
+.ion-ios-sunny:before { content: "\f4b7"; }
+
+.ion-ios-sunny-outline:before { content: "\f4b6"; }
+
+.ion-ios-telephone:before { content: "\f4b9"; }
+
+.ion-ios-telephone-outline:before { content: "\f4b8"; }
+
+.ion-ios-tennisball:before { content: "\f4bb"; }
+
+.ion-ios-tennisball-outline:before { content: "\f4ba"; }
+
+.ion-ios-thunderstorm:before { content: "\f4bd"; }
+
+.ion-ios-thunderstorm-outline:before { content: "\f4bc"; }
+
+.ion-ios-time:before { content: "\f4bf"; }
+
+.ion-ios-time-outline:before { content: "\f4be"; }
+
+.ion-ios-timer:before { content: "\f4c1"; }
+
+.ion-ios-timer-outline:before { content: "\f4c0"; }
+
+.ion-ios-toggle:before { content: "\f4c3"; }
+
+.ion-ios-toggle-outline:before { content: "\f4c2"; }
+
+.ion-ios-trash:before { content: "\f4c5"; }
+
+.ion-ios-trash-outline:before { content: "\f4c4"; }
+
+.ion-ios-undo:before { content: "\f4c7"; }
+
+.ion-ios-undo-outline:before { content: "\f4c6"; }
+
+.ion-ios-unlocked:before { content: "\f4c9"; }
+
+.ion-ios-unlocked-outline:before { content: "\f4c8"; }
+
+.ion-ios-upload:before { content: "\f4cb"; }
+
+.ion-ios-upload-outline:before { content: "\f4ca"; }
+
+.ion-ios-videocam:before { content: "\f4cd"; }
+
+.ion-ios-videocam-outline:before { content: "\f4cc"; }
+
+.ion-ios-volume-high:before { content: "\f4ce"; }
+
+.ion-ios-volume-low:before { content: "\f4cf"; }
+
+.ion-ios-wineglass:before { content: "\f4d1"; }
+
+.ion-ios-wineglass-outline:before { content: "\f4d0"; }
+
+.ion-ios-world:before { content: "\f4d3"; }
+
+.ion-ios-world-outline:before { content: "\f4d2"; }
+
+.ion-ipad:before { content: "\f1f9"; }
+
+.ion-iphone:before { content: "\f1fa"; }
+
+.ion-ipod:before { content: "\f1fb"; }
+
+.ion-jet:before { content: "\f295"; }
+
+.ion-key:before { content: "\f296"; }
+
+.ion-knife:before { content: "\f297"; }
+
+.ion-laptop:before { content: "\f1fc"; }
+
+.ion-leaf:before { content: "\f1fd"; }
+
+.ion-levels:before { content: "\f298"; }
+
+.ion-lightbulb:before { content: "\f299"; }
+
+.ion-link:before { content: "\f1fe"; }
+
+.ion-load-a:before { content: "\f29a"; }
+
+.ion-load-b:before { content: "\f29b"; }
+
+.ion-load-c:before { content: "\f29c"; }
+
+.ion-load-d:before { content: "\f29d"; }
+
+.ion-location:before { content: "\f1ff"; }
+
+.ion-lock-combination:before { content: "\f4d4"; }
+
+.ion-locked:before { content: "\f200"; }
+
+.ion-log-in:before { content: "\f29e"; }
+
+.icon-building-door:before { content: "\f29f"; }
+
+.ion-loop:before { content: "\f201"; }
+
+.ion-magnet:before { content: "\f2a0"; }
+
+.ion-male:before { content: "\f2a1"; }
+
+.ion-man:before { content: "\f202"; }
+
+.ion-map:before { content: "\f203"; }
+
+.ion-medkit:before { content: "\f2a2"; }
+
+.ion-merge:before { content: "\f33f"; }
+
+.ion-mic-a:before { content: "\f204"; }
+
+.ion-mic-b:before { content: "\f205"; }
+
+.ion-mic-c:before { content: "\f206"; }
+
+.ion-minus:before { content: "\f209"; }
+
+.ion-minus-circled:before { content: "\f207"; }
+
+.ion-minus-round:before { content: "\f208"; }
+
+.ion-model-s:before { content: "\f2c1"; }
+
+.ion-monitor:before { content: "\f20a"; }
+
+.ion-more:before { content: "\f20b"; }
+
+.ion-mouse:before { content: "\f340"; }
+
+.ion-music-note:before { content: "\f20c"; }
+
+.ion-navicon:before { content: "\f20e"; }
+
+.icon-content-gridguide:before { content: "\f20d"; }
+
+.ion-navigate:before { content: "\f2a3"; }
+
+.ion-network:before { content: "\f341"; }
+
+.ion-no-smoking:before { content: "\f2c2"; }
+
+.ion-nuclear:before { content: "\f2a4"; }
+
+.ion-outlet:before { content: "\f342"; }
+
+.ion-paintbrush:before { content: "\f4d5"; }
+
+.ion-paintbucket:before { content: "\f4d6"; }
+
+.ion-paper-airplane:before { content: "\f2c3"; }
+
+.ion-paperclip:before { content: "\f20f"; }
+
+.ion-pause:before { content: "\f210"; }
+
+.icon-people-oneperson:before { content: "\f213"; }
+
+.icon-people-oneperson-add:before { content: "\f211"; }
+
+.icon-people-oneperson-stalker:before { content: "\f212"; }
+
+.ion-pie-graph:before { content: "\f2a5"; }
+
+.ion-pin:before { content: "\f2a6"; }
+
+.ion-pinpoint:before { content: "\f2a7"; }
+
+.ion-pizza:before { content: "\f2a8"; }
+
+.ion-plane:before { content: "\f214"; }
+
+.ion-planet:before { content: "\f343"; }
+
+.icon-controls-pointer:before { content: "\f215"; }
+
+.ion-playstation:before { content: "\f30a"; }
+
+.ion-plus:before { content: "\f218"; }
+
+.ion-plus-circled:before { content: "\f216"; }
+
+.ion-plus-round:before { content: "\f217"; }
+
+.ion-podium:before { content: "\f344"; }
+
+.ion-pound:before { content: "\f219"; }
+
+.ion-power:before { content: "\f2a9"; }
+
+.ion-pricetag:before { content: "\f2aa"; }
+
+.ion-pricetags:before { content: "\f2ab"; }
+
+.ion-printer:before { content: "\f21a"; }
+
+.ion-pull-request:before { content: "\f345"; }
+
+.ion-qr-scanner:before { content: "\f346"; }
+
+.ion-quote:before { content: "\f347"; }
+
+.ion-radio-waves:before { content: "\f2ac"; }
+
+.ion-record:before { content: "\f21b"; }
+
+.icon-arrows-replay-restart:before { content: "\f21c"; }
+
+.ion-reply:before { content: "\f21e"; }
+
+.ion-reply-all:before { content: "\f21d"; }
+
+.ion-ribbon-a:before { content: "\f348"; }
+
+.ion-ribbon-b:before { content: "\f349"; }
+
+.ion-sad:before { content: "\f34a"; }
+
+.ion-sad-outline:before { content: "\f4d7"; }
+
+.ion-scissors:before { content: "\f34b"; }
+
+.ion-search:before { content: "\f21f"; }
+
+.ion-settings:before { content: "\f2ad"; }
+
+.ion-share:before { content: "\f220"; }
+
+.ion-shuffle:before { content: "\f221"; }
+
+.ion-skip-backward:before { content: "\f222"; }
+
+.ion-skip-forward:before { content: "\f223"; }
+
+.ion-social-android:before { content: "\f225"; }
+
+.ion-social-android-outline:before { content: "\f224"; }
+
+.ion-social-angular:before { content: "\f4d9"; }
+
+.ion-social-angular-outline:before { content: "\f4d8"; }
+
+.ion-social-apple:before { content: "\f227"; }
+
+.ion-social-apple-outline:before { content: "\f226"; }
+
+.ion-social-bitcoin:before { content: "\f2af"; }
+
+.ion-social-bitcoin-outline:before { content: "\f2ae"; }
+
+.ion-social-buffer:before { content: "\f229"; }
+
+.ion-social-buffer-outline:before { content: "\f228"; }
+
+.ion-social-chrome:before { content: "\f4db"; }
+
+.ion-social-chrome-outline:before { content: "\f4da"; }
+
+.ion-social-codepen:before { content: "\f4dd"; }
+
+.ion-social-codepen-outline:before { content: "\f4dc"; }
+
+.ion-social-css3:before { content: "\f4df"; }
+
+.ion-social-css3-outline:before { content: "\f4de"; }
+
+.ion-social-designernews:before { content: "\f22b"; }
+
+.ion-social-designernews-outline:before { content: "\f22a"; }
+
+.ion-social-dribbble:before { content: "\f22d"; }
+
+.ion-social-dribbble-outline:before { content: "\f22c"; }
+
+.ion-social-dropbox:before { content: "\f22f"; }
+
+.ion-social-dropbox-outline:before { content: "\f22e"; }
+
+.ion-social-euro:before { content: "\f4e1"; }
+
+.ion-social-euro-outline:before { content: "\f4e0"; }
+
+.ion-social-facebook:before { content: "\f231"; }
+
+.ion-social-facebook-outline:before { content: "\f230"; }
+
+.ion-social-foursquare:before { content: "\f34d"; }
+
+.ion-social-foursquare-outline:before { content: "\f34c"; }
+
+.ion-social-freebsd-devil:before { content: "\f2c4"; }
+
+.ion-social-github:before { content: "\f233"; }
+
+.ion-social-github-outline:before { content: "\f232"; }
+
+.ion-social-google:before { content: "\f34f"; }
+
+.ion-social-google-outline:before { content: "\f34e"; }
+
+.ion-social-googleplus:before { content: "\f235"; }
+
+.ion-social-googleplus-outline:before { content: "\f234"; }
+
+.ion-social-hackernews:before { content: "\f237"; }
+
+.ion-social-hackernews-outline:before { content: "\f236"; }
+
+.ion-social-html5:before { content: "\f4e3"; }
+
+.ion-social-html5-outline:before { content: "\f4e2"; }
+
+.ion-social-instagram:before { content: "\f351"; }
+
+.ion-social-instagram-outline:before { content: "\f350"; }
+
+.ion-social-javascript:before { content: "\f4e5"; }
+
+.ion-social-javascript-outline:before { content: "\f4e4"; }
+
+.ion-social-linkedin:before { content: "\f239"; }
+
+.ion-social-linkedin-outline:before { content: "\f238"; }
+
+.ion-social-markdown:before { content: "\f4e6"; }
+
+.ion-social-nodejs:before { content: "\f4e7"; }
+
+.ion-social-octocat:before { content: "\f4e8"; }
+
+.ion-social-pinterest:before { content: "\f2b1"; }
+
+.ion-social-pinterest-outline:before { content: "\f2b0"; }
+
+.ion-social-python:before { content: "\f4e9"; }
+
+.ion-social-reddit:before { content: "\f23b"; }
+
+.ion-social-reddit-outline:before { content: "\f23a"; }
+
+.ion-social-rss:before { content: "\f23d"; }
+
+.ion-social-rss-outline:before { content: "\f23c"; }
+
+.ion-social-sass:before { content: "\f4ea"; }
+
+.ion-social-skype:before { content: "\f23f"; }
+
+.ion-social-skype-outline:before { content: "\f23e"; }
+
+.ion-social-snapchat:before { content: "\f4ec"; }
+
+.ion-social-snapchat-outline:before { content: "\f4eb"; }
+
+.ion-social-tumblr:before { content: "\f241"; }
+
+.ion-social-tumblr-outline:before { content: "\f240"; }
+
+.ion-social-tux:before { content: "\f2c5"; }
+
+.ion-social-twitch:before { content: "\f4ee"; }
+
+.ion-social-twitch-outline:before { content: "\f4ed"; }
+
+.ion-social-twitter:before { content: "\f243"; }
+
+.ion-social-twitter-outline:before { content: "\f242"; }
+
+.ion-social-usd:before { content: "\f353"; }
+
+.ion-social-usd-outline:before { content: "\f352"; }
+
+.ion-social-vimeo:before { content: "\f245"; }
+
+.ion-social-vimeo-outline:before { content: "\f244"; }
+
+.ion-social-whatsapp:before { content: "\f4f0"; }
+
+.ion-social-whatsapp-outline:before { content: "\f4ef"; }
+
+.ion-social-windows:before { content: "\f247"; }
+
+.ion-social-windows-outline:before { content: "\f246"; }
+
+.ion-social-wordpress:before { content: "\f249"; }
+
+.ion-social-wordpress-outline:before { content: "\f248"; }
+
+.ion-social-yahoo:before { content: "\f24b"; }
+
+.ion-social-yahoo-outline:before { content: "\f24a"; }
+
+.ion-social-yen:before { content: "\f4f2"; }
+
+.ion-social-yen-outline:before { content: "\f4f1"; }
+
+.ion-social-youtube:before { content: "\f24d"; }
+
+.ion-social-youtube-outline:before { content: "\f24c"; }
+
+.ion-soup-can:before { content: "\f4f4"; }
+
+.ion-soup-can-outline:before { content: "\f4f3"; }
+
+.ion-speakerphone:before { content: "\f2b2"; }
+
+.ion-speedometer:before { content: "\f2b3"; }
+
+.ion-spoon:before { content: "\f2b4"; }
+
+.icon-content-star:before { content: "\f24e"; }
+
+.ion-stats-bars:before { content: "\f2b5"; }
+
+.ion-steam:before { content: "\f30b"; }
+
+.ion-stop:before { content: "\f24f"; }
+
+.ion-thermometer:before { content: "\f2b6"; }
+
+.ion-thumbsdown:before { content: "\f250"; }
+
+.ion-thumbsup:before { content: "\f251"; }
+
+.ion-toggle:before { content: "\f355"; }
+
+.ion-toggle-filled:before { content: "\f354"; }
+
+.ion-transgender:before { content: "\f4f5"; }
+
+.icon-misc-trash:before { content: "\f252"; }
+
+.ion-trash-b:before { content: "\f253"; }
+
+.ion-trophy:before { content: "\f356"; }
+
+.ion-tshirt:before { content: "\f4f7"; }
+
+.ion-tshirt-outline:before { content: "\f4f6"; }
+
+.ion-umbrella:before { content: "\f2b7"; }
+
+.ion-university:before { content: "\f357"; }
+
+.ion-unlocked:before { content: "\f254"; }
+
+.icon-arrows-upload:before { content: "\f255"; }
+
+.ion-usb:before { content: "\f2b8"; }
+
+.ion-videocamera:before { content: "\f256"; }
+
+.ion-volume-high:before { content: "\f257"; }
+
+.ion-volume-low:before { content: "\f258"; }
+
+.ion-volume-medium:before { content: "\f259"; }
+
+.ion-volume-mute:before { content: "\f25a"; }
+
+.ion-wand:before { content: "\f358"; }
+
+.ion-waterdrop:before { content: "\f25b"; }
+
+.ion-wifi:before { content: "\f25c"; }
+
+.ion-wineglass:before { content: "\f2b9"; }
+
+.ion-woman:before { content: "\f25d"; }
+
+.ion-wrench:before { content: "\f2ba"; }
+
+.ion-xbox:before { content: "\f30c"; }
+
+.icon-user:before { content: "\f213"; } 
+
+.icon-star:before { content: "\f4b3"; }
+
+.icon-edit:before { content: "\f2bf"; }
+
+.icon-settings:before { content: "\f13d"; }
+
+.icon-apps-marketplace:before { content: "\f35c"; }
+
+.icon-add-widget:before { content: "\f3f0"; }
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.min.css b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.min.css
new file mode 100644
index 0000000..baba9e9
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/css/ionicons.min.css
@@ -0,0 +1,11 @@
+@charset "UTF-8";/*!
+  Ionicons, v2.0.0
+  Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
+  https://twitter.com/benjsperry  https://twitter.com/ionicframework
+  MIT License: https://github.com/driftyco/ionicons
+
+  Android-style icons originally built by Google’s
+  Material Design Icons: https://github.com/google/material-design-icons
+  used under CC BY http://creativecommons.org/licenses/by/4.0/
+  Modified icons to fit ionicon’s grid from original.
+*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=2.0.0");src:url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"),url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"),url("../fonts/ionicons.woff?v=2.0.0") format("woff"),url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-alert:before,.ion-alert-circled:before,.ion-android-add:before,.ion-android-add-circle:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done:before,.ion-android-done-all:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite:before,.ion-android-favorite-outline:before,.ion-android-film:before,.ion-android-folder:before,.ion-android-folder-open:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone:before,.ion-android-microphone-off:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person:before,.ion-android-person-add:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove:before,.ion-android-remove-circle:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share:before,.ion-android-share-alt:before,.ion-android-star:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace:before,.ion-backspace-outline:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox:before,.ion-chatbox-working:before,.ion-chatboxes:before,.ion-chatbubble:before,.ion-chatbubble-working:before,.ion-chatbubbles:before,.ion-checkmark:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close:before,.ion-close-circled:before,.ion-close-round:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code:before,.ion-code-download:before,.ion-code-working:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email:before,.ion-email-unread:before,.ion-erlenmeyer-flask:before,.ion-erlenmeyer-flask-bubbles:before,.ion-eye:before,.ion-eye-disabled:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash:before,.ion-flash-off:before,.ion-folder:before,.ion-fork:before,.ion-fork-repo:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy:before,.ion-happy-outline:before,.ion-headphone:before,.ion-heart:before,.ion-heart-broken:before,.ion-help:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information:before,.ion-information-circled:before,.ion-ionic:before,.ion-ios-alarm:before,.ion-ios-alarm-outline:before,.ion-ios-albums:before,.ion-ios-albums-outline:before,.ion-ios-americanfootball:before,.ion-ios-americanfootball-outline:before,.ion-ios-analytics:before,.ion-ios-analytics-outline:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-at-outline:before,.ion-ios-barcode:before,.ion-ios-barcode-outline:before,.ion-ios-baseball:before,.ion-ios-baseball-outline:before,.ion-ios-basketball:before,.ion-ios-basketball-outline:before,.ion-ios-bell:before,.ion-ios-bell-outline:before,.ion-ios-body:before,.ion-ios-body-outline:before,.ion-ios-bolt:before,.ion-ios-bolt-outline:before,.ion-ios-book:before,.ion-ios-book-outline:before,.ion-ios-bookmarks:before,.ion-ios-bookmarks-outline:before,.ion-ios-box:before,.ion-ios-box-outline:before,.ion-ios-briefcase:before,.ion-ios-briefcase-outline:before,.ion-ios-browsers:before,.ion-ios-browsers-outline:before,.ion-ios-calculator:before,.ion-ios-calculator-outline:before,.ion-ios-calendar:before,.ion-ios-calendar-outline:before,.ion-ios-camera:before,.ion-ios-camera-outline:before,.ion-ios-cart:before,.ion-ios-cart-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatbubble:before,.ion-ios-chatbubble-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock:before,.ion-ios-clock-outline:before,.ion-ios-close:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-download:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-outline:before,.ion-ios-cog:before,.ion-ios-cog-outline:before,.ion-ios-color-filter:before,.ion-ios-color-filter-outline:before,.ion-ios-color-wand:before,.ion-ios-color-wand-outline:before,.ion-ios-compose:before,.ion-ios-compose-outline:before,.ion-ios-contact:before,.ion-ios-contact-outline:before,.ion-ios-copy:before,.ion-ios-copy-outline:before,.ion-ios-crop:before,.ion-ios-crop-strong:before,.ion-ios-download:before,.ion-ios-download-outline:before,.ion-ios-drag:before,.ion-ios-email:before,.ion-ios-email-outline:before,.ion-ios-eye:before,.ion-ios-eye-outline:before,.ion-ios-fastforward:before,.ion-ios-fastforward-outline:before,.ion-ios-filing:before,.ion-ios-filing-outline:before,.ion-ios-film:before,.ion-ios-film-outline:before,.ion-ios-flag:before,.ion-ios-flag-outline:before,.ion-ios-flame:before,.ion-ios-flame-outline:before,.ion-ios-flask:before,.ion-ios-flask-outline:before,.ion-ios-flower:before,.ion-ios-flower-outline:before,.ion-ios-folder:before,.ion-ios-folder-outline:before,.ion-ios-football:before,.ion-ios-football-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-b:before,.ion-ios-game-controller-b-outline:before,.ion-ios-gear:before,.ion-ios-gear-outline:before,.ion-ios-glasses:before,.ion-ios-glasses-outline:before,.ion-ios-grid-view:before,.ion-ios-grid-view-outline:before,.ion-ios-heart:before,.ion-ios-heart-outline:before,.ion-ios-help:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-home:before,.ion-ios-home-outline:before,.ion-ios-infinite:before,.ion-ios-infinite-outline:before,.ion-ios-information:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-ionic-outline:before,.ion-ios-keypad:before,.ion-ios-keypad-outline:before,.ion-ios-lightbulb:before,.ion-ios-lightbulb-outline:before,.ion-ios-list:before,.ion-ios-list-outline:before,.ion-ios-location:before,.ion-ios-location-outline:before,.ion-ios-locked:before,.ion-ios-locked-outline:before,.ion-ios-loop:before,.ion-ios-loop-strong:before,.ion-ios-medical:before,.ion-ios-medical-outline:before,.ion-ios-medkit:before,.ion-ios-medkit-outline:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-minus:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-monitor:before,.ion-ios-monitor-outline:before,.ion-ios-moon:before,.ion-ios-moon-outline:before,.ion-ios-more:before,.ion-ios-more-outline:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-navigate-outline:before,.ion-ios-nutrition:before,.ion-ios-nutrition-outline:before,.ion-ios-paper:before,.ion-ios-paper-outline:before,.ion-ios-paperplane:before,.ion-ios-paperplane-outline:before,.ion-ios-partlysunny:before,.ion-ios-partlysunny-outline:before,.ion-ios-pause:before,.ion-ios-pause-outline:before,.ion-ios-paw:before,.ion-ios-paw-outline:before,.ion-ios-people:before,.ion-ios-people-outline:before,.ion-ios-person:before,.ion-ios-person-outline:before,.ion-ios-personadd:before,.ion-ios-personadd-outline:before,.ion-ios-photos:before,.ion-ios-photos-outline:before,.ion-ios-pie:before,.ion-ios-pie-outline:before,.ion-ios-pint:before,.ion-ios-pint-outline:before,.ion-ios-play:before,.ion-ios-play-outline:before,.ion-ios-plus:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetags:before,.ion-ios-pricetags-outline:before,.ion-ios-printer:before,.ion-ios-printer-outline:before,.ion-ios-pulse:before,.ion-ios-pulse-strong:before,.ion-ios-rainy:before,.ion-ios-rainy-outline:before,.ion-ios-recording:before,.ion-ios-recording-outline:before,.ion-ios-redo:before,.ion-ios-redo-outline:before,.ion-ios-refresh:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-reload:before,.ion-ios-reverse-camera:before,.ion-ios-reverse-camera-outline:before,.ion-ios-rewind:before,.ion-ios-rewind-outline:before,.ion-ios-rose:before,.ion-ios-rose-outline:before,.ion-ios-search:before,.ion-ios-search-strong:before,.ion-ios-settings:before,.ion-ios-settings-strong:before,.ion-ios-shuffle:before,.ion-ios-shuffle-strong:before,.ion-ios-skipbackward:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipforward:before,.ion-ios-skipforward-outline:before,.ion-ios-snowy:before,.ion-ios-speedometer:before,.ion-ios-speedometer-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stopwatch:before,.ion-ios-stopwatch-outline:before,.ion-ios-sunny:before,.ion-ios-sunny-outline:before,.ion-ios-telephone:before,.ion-ios-telephone-outline:before,.ion-ios-tennisball:before,.ion-ios-tennisball-outline:before,.ion-ios-thunderstorm:before,.ion-ios-thunderstorm-outline:before,.ion-ios-time:before,.ion-ios-time-outline:before,.ion-ios-timer:before,.ion-ios-timer-outline:before,.ion-ios-toggle:before,.ion-ios-toggle-outline:before,.ion-ios-trash:before,.ion-ios-trash-outline:before,.ion-ios-undo:before,.ion-ios-undo-outline:before,.ion-ios-unlocked:before,.ion-ios-unlocked-outline:before,.ion-ios-upload:before,.ion-ios-upload-outline:before,.ion-ios-videocam:before,.ion-ios-videocam-outline:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass:before,.ion-ios-wineglass-outline:before,.ion-ios-world:before,.ion-ios-world-outline:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon:before,.ion-navicon-round:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person:before,.ion-person-add:before,.ion-person-stalker:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply:before,.ion-reply-all:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad:before,.ion-sad-outline:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android:before,.ion-social-android-outline:before,.ion-social-angular:before,.ion-social-angular-outline:before,.ion-social-apple:before,.ion-social-apple-outline:before,.ion-social-bitcoin:before,.ion-social-bitcoin-outline:before,.ion-social-buffer:before,.ion-social-buffer-outline:before,.ion-social-chrome:before,.ion-social-chrome-outline:before,.ion-social-codepen:before,.ion-social-codepen-outline:before,.ion-social-css3:before,.ion-social-css3-outline:before,.ion-social-designernews:before,.ion-social-designernews-outline:before,.ion-social-dribbble:before,.ion-social-dribbble-outline:before,.ion-social-dropbox:before,.ion-social-dropbox-outline:before,.ion-social-euro:before,.ion-social-euro-outline:before,.ion-social-facebook:before,.ion-social-facebook-outline:before,.ion-social-foursquare:before,.ion-social-foursquare-outline:before,.ion-social-freebsd-devil:before,.ion-social-github:before,.ion-social-github-outline:before,.ion-social-google:before,.ion-social-google-outline:before,.ion-social-googleplus:before,.ion-social-googleplus-outline:before,.ion-social-hackernews:before,.ion-social-hackernews-outline:before,.ion-social-html5:before,.ion-social-html5-outline:before,.ion-social-instagram:before,.ion-social-instagram-outline:before,.ion-social-javascript:before,.ion-social-javascript-outline:before,.ion-social-linkedin:before,.ion-social-linkedin-outline:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest:before,.ion-social-pinterest-outline:before,.ion-social-python:before,.ion-social-reddit:before,.ion-social-reddit-outline:before,.ion-social-rss:before,.ion-social-rss-outline:before,.ion-social-sass:before,.ion-social-skype:before,.ion-social-skype-outline:before,.ion-social-snapchat:before,.ion-social-snapchat-outline:before,.ion-social-tumblr:before,.ion-social-tumblr-outline:before,.ion-social-tux:before,.ion-social-twitch:before,.ion-social-twitch-outline:before,.ion-social-twitter:before,.ion-social-twitter-outline:before,.ion-social-usd:before,.ion-social-usd-outline:before,.ion-social-vimeo:before,.ion-social-vimeo-outline:before,.ion-social-whatsapp:before,.ion-social-whatsapp-outline:before,.ion-social-windows:before,.ion-social-windows-outline:before,.ion-social-wordpress:before,.ion-social-wordpress-outline:before,.ion-social-yahoo:before,.ion-social-yahoo-outline:before,.ion-social-yen:before,.ion-social-yen-outline:before,.ion-social-youtube:before,.ion-social-youtube-outline:before,.ion-soup-can:before,.ion-soup-can-outline:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle:before,.ion-toggle-filled:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt:before,.ion-tshirt-outline:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\f101"}.ion-alert-circled:before{content:"\f100"}.ion-android-add:before{content:"\f2c7"}.ion-android-add-circle:before{content:"\f359"}.ion-android-alarm-clock:before{content:"\f35a"}.ion-android-alert:before{content:"\f35b"}.ion-android-apps:before{content:"\f35c"}.ion-android-archive:before{content:"\f2c9"}.ion-android-arrow-back:before{content:"\f2ca"}.ion-android-arrow-down:before{content:"\f35d"}.ion-android-arrow-dropdown:before{content:"\f35f"}.ion-android-arrow-dropdown-circle:before{content:"\f35e"}.ion-android-arrow-dropleft:before{content:"\f361"}.ion-android-arrow-dropleft-circle:before{content:"\f360"}.ion-android-arrow-dropright:before{content:"\f363"}.ion-android-arrow-dropright-circle:before{content:"\f362"}.ion-android-arrow-dropup:before{content:"\f365"}.ion-android-arrow-dropup-circle:before{content:"\f364"}.ion-android-arrow-forward:before{content:"\f30f"}.ion-android-arrow-up:before{content:"\f366"}.ion-android-attach:before{content:"\f367"}.ion-android-bar:before{content:"\f368"}.ion-android-bicycle:before{content:"\f369"}.ion-android-boat:before{content:"\f36a"}.ion-android-bookmark:before{content:"\f36b"}.ion-android-bulb:before{content:"\f36c"}.ion-android-bus:before{content:"\f36d"}.ion-android-calendar:before{content:"\f2d1"}.ion-android-call:before{content:"\f2d2"}.ion-android-camera:before{content:"\f2d3"}.ion-android-cancel:before{content:"\f36e"}.ion-android-car:before{content:"\f36f"}.ion-android-cart:before{content:"\f370"}.ion-android-chat:before{content:"\f2d4"}.ion-android-checkbox:before{content:"\f374"}.ion-android-checkbox-blank:before{content:"\f371"}.ion-android-checkbox-outline:before{content:"\f373"}.ion-android-checkbox-outline-blank:before{content:"\f372"}.ion-android-checkmark-circle:before{content:"\f375"}.ion-android-clipboard:before{content:"\f376"}.ion-android-close:before{content:"\f2d7"}.ion-android-cloud:before{content:"\f37a"}.ion-android-cloud-circle:before{content:"\f377"}.ion-android-cloud-done:before{content:"\f378"}.ion-android-cloud-outline:before{content:"\f379"}.ion-android-color-palette:before{content:"\f37b"}.ion-android-compass:before{content:"\f37c"}.ion-android-contact:before{content:"\f2d8"}.ion-android-contacts:before{content:"\f2d9"}.ion-android-contract:before{content:"\f37d"}.ion-android-create:before{content:"\f37e"}.ion-android-delete:before{content:"\f37f"}.ion-android-desktop:before{content:"\f380"}.ion-android-document:before{content:"\f381"}.ion-android-done:before{content:"\f383"}.ion-android-done-all:before{content:"\f382"}.ion-android-download:before{content:"\f2dd"}.ion-android-drafts:before{content:"\f384"}.ion-android-exit:before{content:"\f385"}.ion-android-expand:before{content:"\f386"}.ion-android-favorite:before{content:"\f388"}.ion-android-favorite-outline:before{content:"\f387"}.ion-android-film:before{content:"\f389"}.ion-android-folder:before{content:"\f2e0"}.ion-android-folder-open:before{content:"\f38a"}.ion-android-funnel:before{content:"\f38b"}.ion-android-globe:before{content:"\f38c"}.ion-android-hand:before{content:"\f2e3"}.ion-android-hangout:before{content:"\f38d"}.ion-android-happy:before{content:"\f38e"}.ion-android-home:before{content:"\f38f"}.ion-android-image:before{content:"\f2e4"}.ion-android-laptop:before{content:"\f390"}.ion-android-list:before{content:"\f391"}.ion-android-locate:before{content:"\f2e9"}.ion-android-lock:before{content:"\f392"}.ion-android-mail:before{content:"\f2eb"}.ion-android-map:before{content:"\f393"}.ion-android-menu:before{content:"\f394"}.ion-android-microphone:before{content:"\f2ec"}.ion-android-microphone-off:before{content:"\f395"}.ion-android-more-horizontal:before{content:"\f396"}.ion-android-more-vertical:before{content:"\f397"}.ion-android-navigate:before{content:"\f398"}.ion-android-notifications:before{content:"\f39b"}.ion-android-notifications-none:before{content:"\f399"}.ion-android-notifications-off:before{content:"\f39a"}.ion-android-open:before{content:"\f39c"}.ion-android-options:before{content:"\f39d"}.ion-android-people:before{content:"\f39e"}.ion-android-person:before{content:"\f3a0"}.ion-android-person-add:before{content:"\f39f"}.ion-android-phone-landscape:before{content:"\f3a1"}.ion-android-phone-portrait:before{content:"\f3a2"}.ion-android-pin:before{content:"\f3a3"}.ion-android-plane:before{content:"\f3a4"}.ion-android-playstore:before{content:"\f2f0"}.ion-android-print:before{content:"\f3a5"}.ion-android-radio-button-off:before{content:"\f3a6"}.ion-android-radio-button-on:before{content:"\f3a7"}.ion-android-refresh:before{content:"\f3a8"}.ion-android-remove:before{content:"\f2f4"}.ion-android-remove-circle:before{content:"\f3a9"}.ion-android-restaurant:before{content:"\f3aa"}.ion-android-sad:before{content:"\f3ab"}.ion-android-search:before{content:"\f2f5"}.ion-android-send:before{content:"\f2f6"}.ion-android-settings:before{content:"\f2f7"}.ion-android-share:before{content:"\f2f8"}.ion-android-share-alt:before{content:"\f3ac"}.ion-android-star:before{content:"\f2fc"}.ion-android-star-half:before{content:"\f3ad"}.ion-android-star-outline:before{content:"\f3ae"}.ion-android-stopwatch:before{content:"\f2fd"}.ion-android-subway:before{content:"\f3af"}.ion-android-sunny:before{content:"\f3b0"}.ion-android-sync:before{content:"\f3b1"}.ion-android-textsms:before{content:"\f3b2"}.ion-android-time:before{content:"\f3b3"}.ion-android-train:before{content:"\f3b4"}.ion-android-unlock:before{content:"\f3b5"}.ion-android-upload:before{content:"\f3b6"}.ion-android-volume-down:before{content:"\f3b7"}.ion-android-volume-mute:before{content:"\f3b8"}.ion-android-volume-off:before{content:"\f3b9"}.ion-android-volume-up:before{content:"\f3ba"}.ion-android-walk:before{content:"\f3bb"}.ion-android-warning:before{content:"\f3bc"}.ion-android-watch:before{content:"\f3bd"}.ion-android-wifi:before{content:"\f305"}.ion-aperture:before{content:"\f313"}.ion-archive:before{content:"\f102"}.ion-arrow-down-a:before{content:"\f103"}.ion-arrow-down-b:before{content:"\f104"}.ion-arrow-down-c:before{content:"\f105"}.ion-arrow-expand:before{content:"\f25e"}.ion-arrow-graph-down-left:before{content:"\f25f"}.ion-arrow-graph-down-right:before{content:"\f260"}.ion-arrow-graph-up-left:before{content:"\f261"}.ion-arrow-graph-up-right:before{content:"\f262"}.ion-arrow-left-a:before{content:"\f106"}.ion-arrow-left-b:before{content:"\f107"}.ion-arrow-left-c:before{content:"\f108"}.ion-arrow-move:before{content:"\f263"}.ion-arrow-resize:before{content:"\f264"}.ion-arrow-return-left:before{content:"\f265"}.ion-arrow-return-right:before{content:"\f266"}.ion-arrow-right-a:before{content:"\f109"}.ion-arrow-right-b:before{content:"\f10a"}.ion-arrow-right-c:before{content:"\f10b"}.ion-arrow-shrink:before{content:"\f267"}.ion-arrow-swap:before{content:"\f268"}.ion-arrow-up-a:before{content:"\f10c"}.ion-arrow-up-b:before{content:"\f10d"}.ion-arrow-up-c:before{content:"\f10e"}.ion-asterisk:before{content:"\f314"}.ion-at:before{content:"\f10f"}.ion-backspace:before{content:"\f3bf"}.ion-backspace-outline:before{content:"\f3be"}.ion-bag:before{content:"\f110"}.ion-battery-charging:before{content:"\f111"}.ion-battery-empty:before{content:"\f112"}.ion-battery-full:before{content:"\f113"}.ion-battery-half:before{content:"\f114"}.ion-battery-low:before{content:"\f115"}.ion-beaker:before{content:"\f269"}.ion-beer:before{content:"\f26a"}.ion-bluetooth:before{content:"\f116"}.ion-bonfire:before{content:"\f315"}.ion-bookmark:before{content:"\f26b"}.ion-bowtie:before{content:"\f3c0"}.ion-briefcase:before{content:"\f26c"}.ion-bug:before{content:"\f2be"}.ion-calculator:before{content:"\f26d"}.ion-calendar:before{content:"\f117"}.ion-camera:before{content:"\f118"}.ion-card:before{content:"\f119"}.ion-cash:before{content:"\f316"}.ion-chatbox:before{content:"\f11b"}.ion-chatbox-working:before{content:"\f11a"}.ion-chatboxes:before{content:"\f11c"}.ion-chatbubble:before{content:"\f11e"}.ion-chatbubble-working:before{content:"\f11d"}.ion-chatbubbles:before{content:"\f11f"}.ion-checkmark:before{content:"\f122"}.ion-checkmark-circled:before{content:"\f120"}.ion-checkmark-round:before{content:"\f121"}.ion-chevron-down:before{content:"\f123"}.ion-chevron-left:before{content:"\f124"}.ion-chevron-right:before{content:"\f125"}.ion-chevron-up:before{content:"\f126"}.ion-clipboard:before{content:"\f127"}.ion-clock:before{content:"\f26e"}.ion-close:before{content:"\f12a"}.ion-close-circled:before{content:"\f128"}.ion-close-round:before{content:"\f129"}.ion-closed-captioning:before{content:"\f317"}.ion-cloud:before{content:"\f12b"}.ion-code:before{content:"\f271"}.ion-code-download:before{content:"\f26f"}.ion-code-working:before{content:"\f270"}.ion-coffee:before{content:"\f272"}.ion-compass:before{content:"\f273"}.ion-compose:before{content:"\f12c"}.ion-connection-bars:before{content:"\f274"}.ion-contrast:before{content:"\f275"}.ion-crop:before{content:"\f3c1"}.ion-cube:before{content:"\f318"}.ion-disc:before{content:"\f12d"}.ion-document:before{content:"\f12f"}.ion-document-text:before{content:"\f12e"}.ion-drag:before{content:"\f130"}.ion-earth:before{content:"\f276"}.ion-easel:before{content:"\f3c2"}.ion-edit:before{content:"\f2bf"}.ion-egg:before{content:"\f277"}.ion-eject:before{content:"\f131"}.ion-email:before{content:"\f132"}.ion-email-unread:before{content:"\f3c3"}.ion-erlenmeyer-flask:before{content:"\f3c5"}.ion-erlenmeyer-flask-bubbles:before{content:"\f3c4"}.ion-eye:before{content:"\f133"}.ion-eye-disabled:before{content:"\f306"}.ion-female:before{content:"\f278"}.ion-filing:before{content:"\f134"}.ion-film-marker:before{content:"\f135"}.ion-fireball:before{content:"\f319"}.ion-flag:before{content:"\f279"}.ion-flame:before{content:"\f31a"}.ion-flash:before{content:"\f137"}.ion-flash-off:before{content:"\f136"}.ion-folder:before{content:"\f139"}.ion-fork:before{content:"\f27a"}.ion-fork-repo:before{content:"\f2c0"}.ion-forward:before{content:"\f13a"}.ion-funnel:before{content:"\f31b"}.ion-gear-a:before{content:"\f13d"}.ion-gear-b:before{content:"\f13e"}.ion-grid:before{content:"\f13f"}.ion-hammer:before{content:"\f27b"}.ion-happy:before{content:"\f31c"}.ion-happy-outline:before{content:"\f3c6"}.ion-headphone:before{content:"\f140"}.ion-heart:before{content:"\f141"}.ion-heart-broken:before{content:"\f31d"}.ion-help:before{content:"\f143"}.ion-help-buoy:before{content:"\f27c"}.ion-help-circled:before{content:"\f142"}.ion-home:before{content:"\f144"}.ion-icecream:before{content:"\f27d"}.ion-image:before{content:"\f147"}.ion-images:before{content:"\f148"}.ion-information:before{content:"\f14a"}.ion-information-circled:before{content:"\f149"}.ion-ionic:before{content:"\f14b"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-alarm-outline:before{content:"\f3c7"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-albums-outline:before{content:"\f3c9"}.ion-ios-americanfootball:before{content:"\f3cc"}.ion-ios-americanfootball-outline:before{content:"\f3cb"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-analytics-outline:before{content:"\f3cd"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-left:before{content:"\f3d2"}.ion-ios-arrow-right:before{content:"\f3d3"}.ion-ios-arrow-thin-down:before{content:"\f3d4"}.ion-ios-arrow-thin-left:before{content:"\f3d5"}.ion-ios-arrow-thin-right:before{content:"\f3d6"}.ion-ios-arrow-thin-up:before{content:"\f3d7"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-at-outline:before{content:"\f3d9"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-barcode-outline:before{content:"\f3db"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-baseball-outline:before{content:"\f3dd"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-basketball-outline:before{content:"\f3df"}.ion-ios-bell:before{content:"\f3e2"}.ion-ios-bell-outline:before{content:"\f3e1"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-body-outline:before{content:"\f3e3"}.ion-ios-bolt:before{content:"\f3e6"}.ion-ios-bolt-outline:before{content:"\f3e5"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-book-outline:before{content:"\f3e7"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bookmarks-outline:before{content:"\f3e9"}.ion-ios-box:before{content:"\f3ec"}.ion-ios-box-outline:before{content:"\f3eb"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-briefcase-outline:before{content:"\f3ed"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-browsers-outline:before{content:"\f3ef"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calculator-outline:before{content:"\f3f1"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-calendar-outline:before{content:"\f3f3"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-camera-outline:before{content:"\f3f5"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cart-outline:before{content:"\f3f7"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatboxes-outline:before{content:"\f3f9"}.ion-ios-chatbubble:before{content:"\f3fc"}.ion-ios-chatbubble-outline:before{content:"\f3fb"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-empty:before{content:"\f3fd"}.ion-ios-checkmark-outline:before{content:"\f3fe"}.ion-ios-circle-filled:before{content:"\f400"}.ion-ios-circle-outline:before{content:"\f401"}.ion-ios-clock:before{content:"\f403"}.ion-ios-clock-outline:before{content:"\f402"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-empty:before{content:"\f404"}.ion-ios-close-outline:before{content:"\f405"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-download-outline:before{content:"\f407"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloud-upload-outline:before{content:"\f40a"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-cloudy-night-outline:before{content:"\f40d"}.ion-ios-cloudy-outline:before{content:"\f40f"}.ion-ios-cog:before{content:"\f412"}.ion-ios-cog-outline:before{content:"\f411"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-filter-outline:before{content:"\f413"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-color-wand-outline:before{content:"\f415"}.ion-ios-compose:before{content:"\f418"}.ion-ios-compose-outline:before{content:"\f417"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contact-outline:before{content:"\f419"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-copy-outline:before{content:"\f41b"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-crop-strong:before{content:"\f41d"}.ion-ios-download:before{content:"\f420"}.ion-ios-download-outline:before{content:"\f41f"}.ion-ios-drag:before{content:"\f421"}.ion-ios-email:before{content:"\f423"}.ion-ios-email-outline:before{content:"\f422"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-outline:before{content:"\f424"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-fastforward-outline:before{content:"\f426"}.ion-ios-filing:before{content:"\f429"}.ion-ios-filing-outline:before{content:"\f428"}.ion-ios-film:before{content:"\f42b"}.ion-ios-film-outline:before{content:"\f42a"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flag-outline:before{content:"\f42c"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flame-outline:before{content:"\f42e"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flask-outline:before{content:"\f430"}.ion-ios-flower:before{content:"\f433"}.ion-ios-flower-outline:before{content:"\f432"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-outline:before{content:"\f434"}.ion-ios-football:before{content:"\f437"}.ion-ios-football-outline:before{content:"\f436"}.ion-ios-game-controller-a:before{content:"\f439"}.ion-ios-game-controller-a-outline:before{content:"\f438"}.ion-ios-game-controller-b:before{content:"\f43b"}.ion-ios-game-controller-b-outline:before{content:"\f43a"}.ion-ios-gear:before{content:"\f43d"}.ion-ios-gear-outline:before{content:"\f43c"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-glasses-outline:before{content:"\f43e"}.ion-ios-grid-view:before{content:"\f441"}.ion-ios-grid-view-outline:before{content:"\f440"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-outline:before{content:"\f442"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-empty:before{content:"\f444"}.ion-ios-help-outline:before{content:"\f445"}.ion-ios-home:before{content:"\f448"}.ion-ios-home-outline:before{content:"\f447"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-infinite-outline:before{content:"\f449"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-empty:before{content:"\f44b"}.ion-ios-information-outline:before{content:"\f44c"}.ion-ios-ionic-outline:before{content:"\f44e"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-keypad-outline:before{content:"\f44f"}.ion-ios-lightbulb:before{content:"\f452"}.ion-ios-lightbulb-outline:before{content:"\f451"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-outline:before{content:"\f453"}.ion-ios-location:before{content:"\f456"}.ion-ios-location-outline:before{content:"\f455"}.ion-ios-locked:before{content:"\f458"}.ion-ios-locked-outline:before{content:"\f457"}.ion-ios-loop:before{content:"\f45a"}.ion-ios-loop-strong:before{content:"\f459"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medical-outline:before{content:"\f45b"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-medkit-outline:before{content:"\f45d"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-mic-outline:before{content:"\f460"}.ion-ios-minus:before{content:"\f464"}.ion-ios-minus-empty:before{content:"\f462"}.ion-ios-minus-outline:before{content:"\f463"}.ion-ios-monitor:before{content:"\f466"}.ion-ios-monitor-outline:before{content:"\f465"}.ion-ios-moon:before{content:"\f468"}.ion-ios-moon-outline:before{content:"\f467"}.ion-ios-more:before{content:"\f46a"}.ion-ios-more-outline:before{content:"\f469"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-navigate-outline:before{content:"\f46d"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-nutrition-outline:before{content:"\f46f"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-outline:before{content:"\f471"}.ion-ios-paperplane:before{content:"\f474"}.ion-ios-paperplane-outline:before{content:"\f473"}.ion-ios-partlysunny:before{content:"\f476"}.ion-ios-partlysunny-outline:before{content:"\f475"}.ion-ios-pause:before{content:"\f478"}.ion-ios-pause-outline:before{content:"\f477"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-paw-outline:before{content:"\f479"}.ion-ios-people:before{content:"\f47c"}.ion-ios-people-outline:before{content:"\f47b"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-outline:before{content:"\f47d"}.ion-ios-personadd:before{content:"\f480"}.ion-ios-personadd-outline:before{content:"\f47f"}.ion-ios-photos:before{content:"\f482"}.ion-ios-photos-outline:before{content:"\f481"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pie-outline:before{content:"\f483"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pint-outline:before{content:"\f485"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-outline:before{content:"\f487"}.ion-ios-plus:before{content:"\f48b"}.ion-ios-plus-empty:before{content:"\f489"}.ion-ios-plus-outline:before{content:"\f48a"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetag-outline:before{content:"\f48c"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-pricetags-outline:before{content:"\f48e"}.ion-ios-printer:before{content:"\f491"}.ion-ios-printer-outline:before{content:"\f490"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-pulse-strong:before{content:"\f492"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-rainy-outline:before{content:"\f494"}.ion-ios-recording:before{content:"\f497"}.ion-ios-recording-outline:before{content:"\f496"}.ion-ios-redo:before{content:"\f499"}.ion-ios-redo-outline:before{content:"\f498"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-empty:before{content:"\f49a"}.ion-ios-refresh-outline:before{content:"\f49b"}.ion-ios-reload:before{content:"\f49d"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-reverse-camera-outline:before{content:"\f49e"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-rewind-outline:before{content:"\f4a0"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-rose-outline:before{content:"\f4a2"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-search-strong:before{content:"\f4a4"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-settings-strong:before{content:"\f4a6"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-shuffle-strong:before{content:"\f4a8"}.ion-ios-skipbackward:before{content:"\f4ab"}.ion-ios-skipbackward-outline:before{content:"\f4aa"}.ion-ios-skipforward:before{content:"\f4ad"}.ion-ios-skipforward-outline:before{content:"\f4ac"}.ion-ios-snowy:before{content:"\f4ae"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-speedometer-outline:before{content:"\f4af"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-stopwatch-outline:before{content:"\f4b4"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-sunny-outline:before{content:"\f4b6"}.ion-ios-telephone:before{content:"\f4b9"}.ion-ios-telephone-outline:before{content:"\f4b8"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-tennisball-outline:before{content:"\f4ba"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-thunderstorm-outline:before{content:"\f4bc"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-time-outline:before{content:"\f4be"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-timer-outline:before{content:"\f4c0"}.ion-ios-toggle:before{content:"\f4c3"}.ion-ios-toggle-outline:before{content:"\f4c2"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trash-outline:before{content:"\f4c4"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-undo-outline:before{content:"\f4c6"}.ion-ios-unlocked:before{content:"\f4c9"}.ion-ios-unlocked-outline:before{content:"\f4c8"}.ion-ios-upload:before{content:"\f4cb"}.ion-ios-upload-outline:before{content:"\f4ca"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-videocam-outline:before{content:"\f4cc"}.ion-ios-volume-high:before{content:"\f4ce"}.ion-ios-volume-low:before{content:"\f4cf"}.ion-ios-wineglass:before{content:"\f4d1"}.ion-ios-wineglass-outline:before{content:"\f4d0"}.ion-ios-world:before{content:"\f4d3"}.ion-ios-world-outline:before{content:"\f4d2"}.ion-ipad:before{content:"\f1f9"}.ion-iphone:before{content:"\f1fa"}.ion-ipod:before{content:"\f1fb"}.ion-jet:before{content:"\f295"}.ion-key:before{content:"\f296"}.ion-knife:before{content:"\f297"}.ion-laptop:before{content:"\f1fc"}.ion-leaf:before{content:"\f1fd"}.ion-levels:before{content:"\f298"}.ion-lightbulb:before{content:"\f299"}.ion-link:before{content:"\f1fe"}.ion-load-a:before{content:"\f29a"}.ion-load-b:before{content:"\f29b"}.ion-load-c:before{content:"\f29c"}.ion-load-d:before{content:"\f29d"}.ion-location:before{content:"\f1ff"}.ion-lock-combination:before{content:"\f4d4"}.ion-locked:before{content:"\f200"}.ion-log-in:before{content:"\f29e"}.ion-log-out:before{content:"\f29f"}.ion-loop:before{content:"\f201"}.ion-magnet:before{content:"\f2a0"}.ion-male:before{content:"\f2a1"}.ion-man:before{content:"\f202"}.ion-map:before{content:"\f203"}.ion-medkit:before{content:"\f2a2"}.ion-merge:before{content:"\f33f"}.ion-mic-a:before{content:"\f204"}.ion-mic-b:before{content:"\f205"}.ion-mic-c:before{content:"\f206"}.ion-minus:before{content:"\f209"}.ion-minus-circled:before{content:"\f207"}.ion-minus-round:before{content:"\f208"}.ion-model-s:before{content:"\f2c1"}.ion-monitor:before{content:"\f20a"}.ion-more:before{content:"\f20b"}.ion-mouse:before{content:"\f340"}.ion-music-note:before{content:"\f20c"}.ion-navicon:before{content:"\f20e"}.ion-navicon-round:before{content:"\f20d"}.ion-navigate:before{content:"\f2a3"}.ion-network:before{content:"\f341"}.ion-no-smoking:before{content:"\f2c2"}.ion-nuclear:before{content:"\f2a4"}.ion-outlet:before{content:"\f342"}.ion-paintbrush:before{content:"\f4d5"}.ion-paintbucket:before{content:"\f4d6"}.ion-paper-airplane:before{content:"\f2c3"}.ion-paperclip:before{content:"\f20f"}.ion-pause:before{content:"\f210"}.ion-person:before{content:"\f213"}.ion-person-add:before{content:"\f211"}.ion-person-stalker:before{content:"\f212"}.ion-pie-graph:before{content:"\f2a5"}.ion-pin:before{content:"\f2a6"}.ion-pinpoint:before{content:"\f2a7"}.ion-pizza:before{content:"\f2a8"}.ion-plane:before{content:"\f214"}.ion-planet:before{content:"\f343"}.ion-play:before{content:"\f215"}.ion-playstation:before{content:"\f30a"}.ion-plus:before{content:"\f218"}.ion-plus-circled:before{content:"\f216"}.ion-plus-round:before{content:"\f217"}.ion-podium:before{content:"\f344"}.ion-pound:before{content:"\f219"}.ion-power:before{content:"\f2a9"}.ion-pricetag:before{content:"\f2aa"}.ion-pricetags:before{content:"\f2ab"}.ion-printer:before{content:"\f21a"}.ion-pull-request:before{content:"\f345"}.ion-qr-scanner:before{content:"\f346"}.ion-quote:before{content:"\f347"}.ion-radio-waves:before{content:"\f2ac"}.ion-record:before{content:"\f21b"}.ion-refresh:before{content:"\f21c"}.ion-reply:before{content:"\f21e"}.ion-reply-all:before{content:"\f21d"}.ion-ribbon-a:before{content:"\f348"}.ion-ribbon-b:before{content:"\f349"}.ion-sad:before{content:"\f34a"}.ion-sad-outline:before{content:"\f4d7"}.ion-scissors:before{content:"\f34b"}.ion-search:before{content:"\f21f"}.ion-settings:before{content:"\f2ad"}.ion-share:before{content:"\f220"}.ion-shuffle:before{content:"\f221"}.ion-skip-backward:before{content:"\f222"}.ion-skip-forward:before{content:"\f223"}.ion-social-android:before{content:"\f225"}.ion-social-android-outline:before{content:"\f224"}.ion-social-angular:before{content:"\f4d9"}.ion-social-angular-outline:before{content:"\f4d8"}.ion-social-apple:before{content:"\f227"}.ion-social-apple-outline:before{content:"\f226"}.ion-social-bitcoin:before{content:"\f2af"}.ion-social-bitcoin-outline:before{content:"\f2ae"}.ion-social-buffer:before{content:"\f229"}.ion-social-buffer-outline:before{content:"\f228"}.ion-social-chrome:before{content:"\f4db"}.ion-social-chrome-outline:before{content:"\f4da"}.ion-social-codepen:before{content:"\f4dd"}.ion-social-codepen-outline:before{content:"\f4dc"}.ion-social-css3:before{content:"\f4df"}.ion-social-css3-outline:before{content:"\f4de"}.ion-social-designernews:before{content:"\f22b"}.ion-social-designernews-outline:before{content:"\f22a"}.ion-social-dribbble:before{content:"\f22d"}.ion-social-dribbble-outline:before{content:"\f22c"}.ion-social-dropbox:before{content:"\f22f"}.ion-social-dropbox-outline:before{content:"\f22e"}.ion-social-euro:before{content:"\f4e1"}.ion-social-euro-outline:before{content:"\f4e0"}.ion-social-facebook:before{content:"\f231"}.ion-social-facebook-outline:before{content:"\f230"}.ion-social-foursquare:before{content:"\f34d"}.ion-social-foursquare-outline:before{content:"\f34c"}.ion-social-freebsd-devil:before{content:"\f2c4"}.ion-social-github:before{content:"\f233"}.ion-social-github-outline:before{content:"\f232"}.ion-social-google:before{content:"\f34f"}.ion-social-google-outline:before{content:"\f34e"}.ion-social-googleplus:before{content:"\f235"}.ion-social-googleplus-outline:before{content:"\f234"}.ion-social-hackernews:before{content:"\f237"}.ion-social-hackernews-outline:before{content:"\f236"}.ion-social-html5:before{content:"\f4e3"}.ion-social-html5-outline:before{content:"\f4e2"}.ion-social-instagram:before{content:"\f351"}.ion-social-instagram-outline:before{content:"\f350"}.ion-social-javascript:before{content:"\f4e5"}.ion-social-javascript-outline:before{content:"\f4e4"}.ion-social-linkedin:before{content:"\f239"}.ion-social-linkedin-outline:before{content:"\f238"}.ion-social-markdown:before{content:"\f4e6"}.ion-social-nodejs:before{content:"\f4e7"}.ion-social-octocat:before{content:"\f4e8"}.ion-social-pinterest:before{content:"\f2b1"}.ion-social-pinterest-outline:before{content:"\f2b0"}.ion-social-python:before{content:"\f4e9"}.ion-social-reddit:before{content:"\f23b"}.ion-social-reddit-outline:before{content:"\f23a"}.ion-social-rss:before{content:"\f23d"}.ion-social-rss-outline:before{content:"\f23c"}.ion-social-sass:before{content:"\f4ea"}.ion-social-skype:before{content:"\f23f"}.ion-social-skype-outline:before{content:"\f23e"}.ion-social-snapchat:before{content:"\f4ec"}.ion-social-snapchat-outline:before{content:"\f4eb"}.ion-social-tumblr:before{content:"\f241"}.ion-social-tumblr-outline:before{content:"\f240"}.ion-social-tux:before{content:"\f2c5"}.ion-social-twitch:before{content:"\f4ee"}.ion-social-twitch-outline:before{content:"\f4ed"}.ion-social-twitter:before{content:"\f243"}.ion-social-twitter-outline:before{content:"\f242"}.ion-social-usd:before{content:"\f353"}.ion-social-usd-outline:before{content:"\f352"}.ion-social-vimeo:before{content:"\f245"}.ion-social-vimeo-outline:before{content:"\f244"}.ion-social-whatsapp:before{content:"\f4f0"}.ion-social-whatsapp-outline:before{content:"\f4ef"}.ion-social-windows:before{content:"\f247"}.ion-social-windows-outline:before{content:"\f246"}.ion-social-wordpress:before{content:"\f249"}.ion-social-wordpress-outline:before{content:"\f248"}.ion-social-yahoo:before{content:"\f24b"}.ion-social-yahoo-outline:before{content:"\f24a"}.ion-social-yen:before{content:"\f4f2"}.ion-social-yen-outline:before{content:"\f4f1"}.ion-social-youtube:before{content:"\f24d"}.ion-social-youtube-outline:before{content:"\f24c"}.ion-soup-can:before{content:"\f4f4"}.ion-soup-can-outline:before{content:"\f4f3"}.ion-speakerphone:before{content:"\f2b2"}.ion-speedometer:before{content:"\f2b3"}.ion-spoon:before{content:"\f2b4"}.ion-star:before{content:"\f24e"}.ion-stats-bars:before{content:"\f2b5"}.ion-steam:before{content:"\f30b"}.ion-stop:before{content:"\f24f"}.ion-thermometer:before{content:"\f2b6"}.ion-thumbsdown:before{content:"\f250"}.ion-thumbsup:before{content:"\f251"}.ion-toggle:before{content:"\f355"}.ion-toggle-filled:before{content:"\f354"}.ion-transgender:before{content:"\f4f5"}.ion-trash-a:before{content:"\f252"}.ion-trash-b:before{content:"\f253"}.ion-trophy:before{content:"\f356"}.ion-tshirt:before{content:"\f4f7"}.ion-tshirt-outline:before{content:"\f4f6"}.ion-umbrella:before{content:"\f2b7"}.ion-university:before{content:"\f357"}.ion-unlocked:before{content:"\f254"}.ion-upload:before{content:"\f255"}.ion-usb:before{content:"\f2b8"}.ion-videocamera:before{content:"\f256"}.ion-volume-high:before{content:"\f257"}.ion-volume-low:before{content:"\f258"}.ion-volume-medium:before{content:"\f259"}.ion-volume-mute:before{content:"\f25a"}.ion-wand:before{content:"\f358"}.ion-waterdrop:before{content:"\f25b"}.ion-wifi:before{content:"\f25c"}.ion-wineglass:before{content:"\f2b9"}.ion-woman:before{content:"\f25d"}.ion-wrench:before{content:"\f2ba"}.ion-xbox:before{content:"\f30c"}
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.eot b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.eot
new file mode 100644
index 0000000..92a3f20
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.eot
Binary files differ
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.svg b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.svg
new file mode 100644
index 0000000..49fc8f3
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.svg
@@ -0,0 +1,2230 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2014-12-4: Created.
+-->
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+Created by FontForge 20120731 at Thu Dec  4 09:51:48 2014
+ By Adam Bradley
+Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net)
+</metadata>
+<defs>
+<font id="Ionicons" horiz-adv-x="448" >
+  <font-face 
+    font-family="Ionicons"
+    font-weight="500"
+    font-stretch="normal"
+    units-per-em="512"
+    panose-1="2 0 6 3 0 0 0 0 0 0"
+    ascent="448"
+    descent="-64"
+    bbox="-0.54049 -64 512.487 448"
+    underline-thickness="25.6"
+    underline-position="-51.2"
+    unicode-range="U+F100-F4F7"
+  />
+    <missing-glyph />
+    <glyph glyph-name="ion-alert-circled" unicode="&#xf100;" 
+d="M445 26c3 -5 5 -13 2 -18s-8 -8 -14 -8h-418c-6 0 -11 3 -14 8s-1 13 2 18l207 349c3 5 8 9 14 9s11 -4 14 -9zM256 48v48h-64v-48h64zM256 128v144h-64v-144h64z" />
+    <glyph glyph-name="ion-alert" unicode="&#xf101;" horiz-adv-x="128" 
+d="M128 -32h-128v96h128v-96zM112 128h-96l-16 288h128z" />
+    <glyph glyph-name="ion-android-add-circle" unicode="&#xf359;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-86v86h-42v-86h-86v-42h86v-86h42v86h86z" />
+    <glyph glyph-name="ion-android-add" unicode="&#xf2c7;" horiz-adv-x="320" 
+d="M320 171h-139v-139h-42v139h-139v42h139v139h42v-139h139v-42z" />
+    <glyph glyph-name="ion-android-alarm-clock" unicode="&#xf35a;" horiz-adv-x="428" 
+d="M428 323l-28 -33l-98 82l28 33zM125 373l-97 -83l-28 33l97 83zM225 275v0v-111l85 -50l-16 -27l-101 61v127h32zM214 360c106 0 193 -86 193 -191s-87 -191 -193 -191c-107 0 -193 86 -193 191s86 191 193 191zM214 20c82 0 150 66 150 149c0 82 -68 149 -150 149
+s-150 -67 -150 -149s68 -149 150 -149z" />
+    <glyph glyph-name="ion-android-alert" unicode="&#xf35b;" horiz-adv-x="416" 
+d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM232 88v40h-48v-40h48zM232 176v128h-48v-128h48z" />
+    <glyph glyph-name="ion-android-apps" unicode="&#xf35c;" horiz-adv-x="320" 
+d="M0 272v80h80v-80h-80zM120 32v80h80v-80h-80zM0 32v80h80v-80h-80zM0 152v80h80v-80h-80zM120 152v80h80v-80h-80zM240 352h80v-80h-80v80zM120 272v80h80v-80h-80zM240 152v80h80v-80h-80zM240 32v80h80v-80h-80z" />
+    <glyph glyph-name="ion-android-archive" unicode="&#xf2c9;" horiz-adv-x="416" 
+d="M406 348c7 -7 10 -17 10 -29v-289c0 -25 -21 -46 -46 -46h-324c-25 0 -46 21 -46 46v289c0 12 3 22 10 29l33 39c6 8 16 13 26 13h278c10 0 20 -5 26 -13zM208 65l127 127h-81v46h-92v-46h-81zM49 354h317l-22 23h-277z" />
+    <glyph glyph-name="ion-android-arrow-back" unicode="&#xf2ca;" horiz-adv-x="342" 
+d="M342 213v-42h-260l119 -120l-30 -30l-171 171l171 171l31 -30l-120 -120h260z" />
+    <glyph glyph-name="ion-android-arrow-down" unicode="&#xf35d;" horiz-adv-x="342" 
+d="M192 363v-260l120 120l30 -31l-171 -171l-171 171l30 30l120 -119v260h42z" />
+    <glyph glyph-name="ion-android-arrow-dropdown-circle" unicode="&#xf35e;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 128l96 96h-192z" />
+    <glyph glyph-name="ion-android-arrow-dropdown" unicode="&#xf35f;" horiz-adv-x="256" 
+d="M0 256h256l-128 -128z" />
+    <glyph glyph-name="ion-android-arrow-dropleft-circle" unicode="&#xf360;" horiz-adv-x="416" 
+d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM144 192l96 -96v192z" />
+    <glyph glyph-name="ion-android-arrow-dropleft" unicode="&#xf361;" horiz-adv-x="128" 
+d="M128 320v-256l-128 128z" />
+    <glyph glyph-name="ion-android-arrow-dropright-circle" unicode="&#xf362;" horiz-adv-x="416" 
+d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208zM176 96l96 96l-96 96v-192z" />
+    <glyph glyph-name="ion-android-arrow-dropright" unicode="&#xf363;" horiz-adv-x="128" 
+d="M0 320l128 -128l-128 -128v256z" />
+    <glyph glyph-name="ion-android-arrow-dropup-circle" unicode="&#xf364;" horiz-adv-x="416" 
+d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM304 160l-96 96l-96 -96h192z" />
+    <glyph glyph-name="ion-android-arrow-dropup" unicode="&#xf365;" horiz-adv-x="256" 
+d="M0 128l128 128l128 -128h-256z" />
+    <glyph glyph-name="ion-android-arrow-forward" unicode="&#xf30f;" horiz-adv-x="342" 
+d="M0 171v42h260l-119 120l30 30l171 -171l-171 -171l-31 30l120 120h-260z" />
+    <glyph glyph-name="ion-android-arrow-up" unicode="&#xf366;" horiz-adv-x="342" 
+d="M192 21h-42v260l-120 -119l-30 30l171 171l171 -171l-30 -31l-120 120v-260z" />
+    <glyph glyph-name="ion-android-attach" unicode="&#xf367;" horiz-adv-x="235" 
+d="M203 320h32v-235c0 -65 -53 -117 -118 -117s-117 52 -117 117v246c0 47 38 85 85 85s86 -38 86 -85v-246c0 -30 -24 -53 -54 -53s-53 23 -53 53v203h32v-203c0 -12 9 -21 21 -21s22 9 22 21v246c0 30 -24 53 -54 53s-53 -23 -53 -53v-246c0 -47 38 -85 85 -85
+s86 38 86 85v235z" />
+    <glyph glyph-name="ion-android-bar" unicode="&#xf368;" horiz-adv-x="384" 
+d="M171 171l-171 170v43h384v-43l-171 -170v-131h107v-40h-256v40h107v131zM96 299h192l43 42h-278z" />
+    <glyph glyph-name="ion-android-bicycle" unicode="&#xf369;" 
+d="M299 317c-19 0 -34 14 -34 33s15 34 34 34s33 -15 33 -34s-14 -33 -33 -33zM355 187c51 0 93 -43 93 -94s-42 -93 -93 -93s-94 42 -94 93s43 94 94 94zM355 28c36 0 65 29 65 65s-29 66 -65 66s-66 -30 -66 -66s30 -65 66 -65zM274 224l-30 45l-43 -45l39 -32v-112h-32
+v86l-61 38c-9 6 -19 15 -19 27c0 8 3 17 9 23l72 69c6 6 14 9 22 9c11 0 22 -7 28 -16l34 -60h59v-32h-78zM93 187c51 0 94 -43 94 -94s-43 -93 -94 -93s-93 42 -93 93s42 94 93 94zM93 28c36 0 66 29 66 65s-30 66 -66 66s-65 -30 -65 -66s29 -65 65 -65z" />
+    <glyph glyph-name="ion-android-boat" unicode="&#xf36a;" 
+d="M52 35l-51 139c-2 6 -1 12 1 17s8 8 13 10l38 13v98c0 23 20 43 43 43h64l16 53h96l16 -53h64c23 0 43 -20 43 -43v-98l38 -13c5 -2 11 -5 13 -10s3 -12 1 -17l-51 -139h-1c-34 0 -65 20 -86 43c-21 -23 -51 -43 -85 -43s-64 19 -85 42c-21 -23 -52 -42 -86 -42h-1z
+M96 312v-84l128 41l128 -41v84h-256zM309 40c0 0 59 -64 107 -64h-21c-30 0 -59 12 -86 26c-53 -28 -117 -28 -170 0c-27 -14 -56 -26 -86 -26h-21c49 0 107 64 107 64c52 -36 118 -36 170 0z" />
+    <glyph glyph-name="ion-android-bookmark" unicode="&#xf36b;" horiz-adv-x="288" 
+d="M248 384c22 0 40 -18 40 -40v-344l-144 64l-144 -64v344c0 22 18 40 40 40h208z" />
+    <glyph glyph-name="ion-android-bulb" unicode="&#xf36c;" 
+d="M224 278c-25 0 -50 -10 -68 -28s-28 -43 -28 -68c0 -34 18 -66 48 -83l16 -10v-18v-71h64v71v18l16 10c15 8 27 20 35 34c9 15 13 31 13 49c0 25 -10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 362v0l30 -30l-38 -38l-30 30zM74 362v0l38 -38l-30 -30
+l-38 38zM224 310v0c70 0 128 -58 128 -128c0 -48 -26 -89 -64 -111v-103h-128v103c-38 22 -64 64 -64 111c0 70 58 128 128 128zM448 203v0v-42h-64v42h64zM64 203v0v-42h-64v42h64z" />
+    <glyph glyph-name="ion-android-bus" unicode="&#xf36d;" horiz-adv-x="352" 
+d="M0 96v204c0 75 82 84 176 84s176 -9 176 -84v-204c0 -18 -14 -24 -27 -36v-39c0 -12 -9 -21 -21 -21h-21c-12 0 -22 9 -22 21v22h-170v-22c0 -12 -10 -21 -22 -21h-21c-12 0 -21 9 -21 21v39c-13 12 -27 17 -27 36zM80 80c18 0 32 14 32 32s-14 32 -32 32
+s-32 -14 -32 -32s14 -32 32 -32zM272 80c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 203v106h-256v-106h256z" />
+    <glyph glyph-name="ion-android-calendar" unicode="&#xf2d1;" horiz-adv-x="384" 
+d="M304 176v-96h-96v96h96zM272 384h48v-32h24c22 0 40 -18 40 -40v-272c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v272c0 22 18 40 40 40h24v32h48v-32h160v32zM344 40v212h-304v-212h304z" />
+    <glyph glyph-name="ion-android-call" unicode="&#xf2d2;" horiz-adv-x="384" 
+d="M363 117c12 0 21 -9 21 -21v-75c0 -12 -9 -21 -21 -21c-201 0 -363 162 -363 363c0 12 9 21 21 21h75c12 0 21 -9 21 -21c0 -27 4 -52 13 -77c2 -7 0 -16 -5 -21l-47 -47c31 -61 80 -110 141 -141l47 47c5 6 14 7 21 5c23 -7 49 -12 76 -12z" />
+    <glyph glyph-name="ion-android-camera" unicode="&#xf2d3;" 
+d="M161 168c0 42 21 63 63 63s63 -21 63 -63s-21 -63 -63 -63s-63 21 -63 63zM408 352c11 0 20 -4 28 -12s12 -17 12 -28v-272c0 -11 -4 -20 -12 -28s-17 -12 -28 -12h-368c-11 0 -20 4 -28 12s-12 17 -12 28v272c0 11 4 20 12 28s17 12 28 12h88l32 32h128l32 -32h88z
+M224 56c31 0 57 11 79 33s33 48 33 79s-11 57 -33 79s-48 33 -79 33s-57 -11 -79 -33s-33 -48 -33 -79s11 -57 33 -79s48 -33 79 -33z" />
+    <glyph glyph-name="ion-android-cancel" unicode="&#xf36e;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM312 117l-75 75l75 75l-29 29l-75 -75l-75 75l-29 -29l75 -75l-75 -75l29 -29l75 75l75 -75z" />
+    <glyph glyph-name="ion-android-car" unicode="&#xf36f;" horiz-adv-x="384" 
+d="M339 331l45 -118v-160c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v11h-256v-11c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v160l45 118c4 13 16 21 30 21h234c14 0 26 -8 30 -21zM75 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 128
+c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM43 235h298l-32 85h-234z" />
+    <glyph glyph-name="ion-android-cart" unicode="&#xf370;" horiz-adv-x="416" 
+d="M122 70c23 0 41 -18 41 -41s-18 -42 -41 -42s-42 19 -42 42s19 41 42 41zM0 397h68l19 -42h308c11 0 21 -9 21 -20c0 -4 -1 -8 -2 -10l-75 -129c-7 -14 -20 -22 -36 -22h-155l-21 -32s-2 -5 -2 -6c0 -3 2 -5 5 -5h238v-40h-243c-26 0 -45 14 -45 42c0 7 2 15 5 20l31 51
+l-74 151h-42v42zM326 70c23 0 42 -18 42 -41s-19 -42 -42 -42s-41 19 -41 42s18 41 41 41z" />
+    <glyph glyph-name="ion-android-chat" unicode="&#xf2d4;" horiz-adv-x="416" 
+d="M344 384c4 0 7 -4 7 -8v-214c0 -4 -3 -9 -7 -9h-187l-90 -89v89h-57c-4 0 -10 5 -10 9v214c0 4 6 8 10 8h334zM408 321c4 0 8 -5 8 -9v-214c0 -4 -4 -9 -8 -9h-57v-89l-90 89h-130l39 39h181c18 0 25 10 25 26v167h32z" />
+    <glyph glyph-name="ion-android-checkbox-blank" unicode="&#xf371;" horiz-adv-x="384" 
+d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" />
+    <glyph glyph-name="ion-android-checkbox-outline-blank" unicode="&#xf372;" horiz-adv-x="384" 
+d="M341 341h-298v-298h298v298zM341 384v0c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" />
+    <glyph glyph-name="ion-android-checkbox-outline" unicode="&#xf373;" horiz-adv-x="384" 
+d="M105 233l66 -66l183 183l30 -30l-213 -213l-96 96zM341 43v170h43v-170c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h213v-43h-213v-298h298z" />
+    <glyph glyph-name="ion-android-checkbox" unicode="&#xf374;" horiz-adv-x="384" 
+d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298zM149 85l192 192l-30 30l-162 -162l-76 77l-30 -30z" />
+    <glyph glyph-name="ion-android-checkmark-circle" unicode="&#xf375;" horiz-adv-x="416" 
+d="M123 232l64 -64l179 178l29 -29l-208 -208l-93 93zM374 192h42c0 -114 -94 -208 -208 -208s-208 94 -208 208s94 208 208 208c28 0 54 -6 78 -16l-32 -32c-15 4 -30 6 -46 6c-92 0 -166 -74 -166 -166s74 -166 166 -166s166 74 166 166z" />
+    <glyph glyph-name="ion-android-clipboard" unicode="&#xf376;" horiz-adv-x="384" 
+d="M341 368c23 0 43 -20 43 -43v-314c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v314c0 23 20 43 43 43h87c7 28 32 48 62 48s55 -20 62 -48h87zM192 368c-12 0 -21 -9 -21 -21s9 -22 21 -22s21 10 21 22s-9 21 -21 21zM344 8v320h-40v-72h-224v72h-40v-320h304z" />
+    <glyph glyph-name="ion-android-close" unicode="&#xf2d7;" horiz-adv-x="298" 
+d="M298 311l-119 -119l119 -119l-30 -30l-119 119l-119 -119l-30 30l119 119l-119 119l30 30l119 -119l119 119z" />
+    <glyph glyph-name="ion-android-cloud-circle" unicode="&#xf377;" horiz-adv-x="416" 
+d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM302 109c29 0 52 23 52 52s-23 52 -52 52h-11c0 46 -37 83 -83 83c-38 0 -71 -26 -80 -62h-3c-34 0 -63 -29 -63 -63s29 -62 63 -62h177z" />
+    <glyph glyph-name="ion-android-cloud-done" unicode="&#xf378;" horiz-adv-x="480" 
+d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM197 85l141 141l-30 30l-111 -111l-44 45l-30 -30z" />
+    <glyph glyph-name="ion-android-cloud-outline" unicode="&#xf379;" horiz-adv-x="480" 
+d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM380 72c33 0 60 27 60 60s-27 60 -60 60h-30v10c0 61 -49 110 -110 110c-51 0 -93 -34 -106 -80h-14
+c-44 0 -80 -36 -80 -80s36 -80 80 -80h260z" />
+    <glyph glyph-name="ion-android-cloud" unicode="&#xf37a;" horiz-adv-x="480" 
+d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121z" />
+    <glyph glyph-name="ion-android-color-palette" unicode="&#xf37b;" horiz-adv-x="384" 
+d="M192 384c106 0 192 -77 192 -171c0 -59 -48 -106 -107 -106h-38c-18 0 -32 -14 -32 -32c0 -9 3 -17 8 -22s9 -12 9 -21c0 -18 -14 -32 -32 -32c-106 0 -192 86 -192 192s86 192 192 192zM75 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM139 277
+c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM245 277c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-android-compass" unicode="&#xf37c;" 
+d="M224 217c13 0 25 -12 25 -25s-12 -25 -25 -25s-25 12 -25 25s12 25 25 25zM224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM273 143l85 183l-183 -85l-85 -183z" />
+    <glyph glyph-name="ion-android-contact" unicode="&#xf2d8;" horiz-adv-x="384" 
+d="M267 110c59 -18 104 -58 117 -110h-384c13 52 58 92 117 110c22 -13 48 -20 75 -20s53 7 75 20zM192 384c73 0 132 -59 132 -132s-59 -132 -132 -132s-132 59 -132 132s59 132 132 132zM192 153c42 0 78 26 92 63h-184c14 -37 50 -63 92 -63z" />
+    <glyph glyph-name="ion-android-contacts" unicode="&#xf2d9;" 
+d="M207 104c47 -14 76 -62 87 -104h-294c11 42 40 90 87 104c18 -10 38 -16 60 -16s42 6 60 16zM147 328c58 0 106 -48 106 -106s-48 -106 -106 -106s-106 48 -106 106s48 106 106 106zM147 141c34 0 62 23 74 51h-148c12 -28 40 -51 74 -51zM291 64c-13 20 -34 43 -60 53
+c11 9 21 23 28 35c13 -5 27 -8 42 -8c22 0 42 6 60 16c47 -14 76 -54 87 -96h-157zM275 248c-8 37 -31 69 -63 87c19 29 52 49 89 49c58 0 106 -48 106 -106s-48 -106 -106 -106c-11 0 -22 2 -32 5c3 8 6 16 7 25c8 -3 16 -4 25 -4c34 0 62 22 74 50h-100z" />
+    <glyph glyph-name="ion-android-contract" unicode="&#xf37d;" horiz-adv-x="384" 
+d="M0 77v51h128v-128h-51v77h-77zM77 307v77h51v-128h-128v51h77zM256 0v128h128v-51h-77v-77h-51zM307 307h77v-51h-128v128h51v-77z" />
+    <glyph glyph-name="ion-android-create" unicode="&#xf37e;" horiz-adv-x="384" 
+d="M0 80l236 236l80 -80l-236 -236h-80v80zM378 298l-40 -40l-80 80l40 40c9 9 20 9 29 0l51 -51c9 -9 9 -20 0 -29z" />
+    <glyph glyph-name="ion-android-delete" unicode="&#xf37f;" horiz-adv-x="320" 
+d="M32 43v245h256v-245c0 -23 -20 -43 -43 -43h-170c-23 0 -43 20 -43 43zM320 352v-32h-320v32h80l27 32h106l27 -32h80z" />
+    <glyph glyph-name="ion-android-desktop" unicode="&#xf380;" 
+d="M405 416c23 0 43 -20 43 -43v-282c0 -23 -20 -43 -43 -43h-138l42 -48v-32h-170v32l42 48h-138c-23 0 -43 20 -43 43v282c0 23 20 43 43 43h362zM405 128v245h-362v-245h362z" />
+    <glyph glyph-name="ion-android-document" unicode="&#xf381;" horiz-adv-x="320" 
+d="M192 400l128 -128v-248c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v336c0 22 18 40 40 40h152zM176 256h112l-112 112v-112z" />
+    <glyph glyph-name="ion-android-done-all" unicode="&#xf382;" horiz-adv-x="512" 
+d="M388 308l-140 -139l-31 31l140 139zM481 339l31 -31l-264 -263l-122 123l30 31l92 -91zM0 168l32 31l122 -123l-31 -31z" />
+    <glyph glyph-name="ion-android-done" unicode="&#xf383;" horiz-adv-x="384" 
+d="M122 108l230 230l32 -31l-262 -261l-122 122l32 31z" />
+    <glyph glyph-name="ion-android-download" unicode="&#xf2dd;" horiz-adv-x="480" 
+d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM208 180h-68l100 -100l100 100h-68v76h-64v-76z" />
+    <glyph glyph-name="ion-android-drafts" unicode="&#xf384;" 
+d="M448 246v-203c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v203c0 15 8 30 20 37l204 101l204 -101c13 -7 20 -22 20 -37zM224 144l171 112l-171 85l-171 -85z" />
+    <glyph glyph-name="ion-android-exit" unicode="&#xf385;" horiz-adv-x="384" 
+d="M151 115l55 56h-206v42h207l-56 56l30 30l107 -107l-107 -107zM341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v85h43v-85h298v298h-298v-85h-43v85c0 23 20 43 43 43h298z" />
+    <glyph glyph-name="ion-android-expand" unicode="&#xf386;" horiz-adv-x="384" 
+d="M333 51v77h51v-128h-128v51h77zM333 333h-77v51h128v-128h-51v77zM51 333v-77h-51v128h128v-51h-77zM51 51h77v-51h-128v128h51v-77z" />
+    <glyph glyph-name="ion-android-favorite-outline" unicode="&#xf387;" horiz-adv-x="416" 
+d="M302 384c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242l-30 -27l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44zM221 55c50 46 94 86 123 122c28 35 40 63 40 92c0 23 -9 44 -24 59s-35 24 -58 24
+c-26 0 -53 -13 -70 -33l-24 -29l-24 29c-17 20 -44 33 -70 33c-23 0 -43 -9 -58 -24s-24 -36 -24 -59c0 -29 12 -57 40 -92c29 -36 73 -76 123 -122l4 -4l9 -8l9 8z" />
+    <glyph glyph-name="ion-android-favorite" unicode="&#xf388;" horiz-adv-x="416" 
+d="M208 0l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242z" />
+    <glyph glyph-name="ion-android-film" unicode="&#xf389;" horiz-adv-x="320" 
+d="M280 384h40v-384h-40v43h-40v-43h-160v43h-40v-43h-40v384h40v-43h40v43h160v-43h40v43zM80 85v43h-40v-43h40zM80 171v42h-40v-42h40zM80 256v43h-40v-43h40zM280 85v43h-40v-43h40zM280 171v42h-40v-42h40zM280 256v43h-40v-43h40z" />
+    <glyph glyph-name="ion-android-folder-open" unicode="&#xf38a;" 
+d="M405 304c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138l43 -48h181zM416 75v186c0 6 -5 11 -11 11h-373v-197c0 -6 5 -11 11 -11h362c6 0 11 5 11 11z" />
+    <glyph glyph-name="ion-android-folder" unicode="&#xf2e0;" 
+d="M181 352l43 -48h181c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138z" />
+    <glyph glyph-name="ion-android-funnel" unicode="&#xf38b;" 
+d="M176 48v48h96v-48h-96zM0 336h448v-48h-448v48zM80 167v50h288v-50h-288z" />
+    <glyph glyph-name="ion-android-globe" unicode="&#xf38c;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM186 15c6 15 21 29 8 39c-8 7 -16 14 -23 21c-2 2 -11 20 -9 23c5 9 6 14 8 24c3 12 -3 16 -13 22c-15 10 -29 23 -43 34c-7 5 -17 10 -20 19s-5 20 -10 28c-14 20 -12 34 -10 58
+c0 7 -1 16 -2 25c-28 -32 -42 -73 -42 -116c0 -48 18 -92 52 -126c29 -29 65 -46 104 -51zM334 66c23 23 39 51 47 82c-8 -1 -19 2 -19 2s-21 24 -23 45c-2 22 0 39 -3 57c-3 16 -20 31 -27 46c-7 14 -13 28 -20 42c2 -1 5 -2 7 -3c5 1 10 2 14 2c-23 16 -49 25 -76 29v-8
+l4 -9l-14 -13l-9 3l-10 10l-10 12l-14 5c-16 -2 -31 -7 -45 -13v-7c7 3 16 5 23 8c3 1 13 -7 16 -9c-4 -5 -21 -15 -22 -21c0 -2 7 -6 7 -10c0 -6 -1 -11 -1 -17c3 3 20 21 22 21c13 3 35 -19 37 -26s-22 -24 -33 -34c-8 -8 -25 -12 -20 -24c2 -4 10 -20 5 -24
+c-6 -5 -14 9 -17 12c-8 10 -26 7 -38 7c0 -17 -1 -31 15 -43c15 -11 30 -25 47 -33c13 -6 36 7 47 -1c16 -11 29 -21 47 -29c8 -3 33 -20 26 -31c-5 -8 -10 -15 -14 -23s-13 -20 -20 -25c-8 -6 -16 -17 -21 -29c35 7 66 23 92 49z" />
+    <glyph glyph-name="ion-android-hand" unicode="&#xf2e3;" horiz-adv-x="414" 
+d="M401 174c15 -15 18 -36 3 -51c0 0 -96 -103 -126 -121v0c-28 -21 -65 -34 -100 -34c-55 0 -101 36 -117 85v0v1c0 1 -1 2 -1 3l-58 189c-5 15 2 32 17 37s30 -3 35 -18l34 -88c1 -4 2 -2 2 1l-22 161c-3 15 7 30 22 33s30 -8 33 -23l25 -138c0 -2 2 -2 2 0v177
+c0 15 13 28 28 28s28 -13 28 -28l8 -175c0 -5 3 -4 4 -1l23 135c2 15 16 27 31 25s27 -17 25 -32l-21 -172c-1 -12 -3 -30 2 -36c8 -9 20 -9 31 2l42 42c15 15 35 13 50 -2z" />
+    <glyph glyph-name="ion-android-hangout" unicode="&#xf38d;" horiz-adv-x="352" 
+d="M176 400c97 0 176 -77 176 -172c0 -91 -76 -196 -176 -244v71c-97 0 -176 78 -176 173s79 172 176 172zM166 217v61h-62v-61h31l-21 -40h31zM248 217v61h-62v-61h31l-20 -40h31z" />
+    <glyph glyph-name="ion-android-happy" unicode="&#xf38e;" horiz-adv-x="416" 
+d="M208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213
+c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM208 78c-49 0 -89 29 -106 72h212c-17 -43 -57 -72 -106 -72z" />
+    <glyph glyph-name="ion-android-home" unicode="&#xf38f;" horiz-adv-x="416" 
+d="M160 0h-98v192h-62l208 192l208 -192h-62v-192h-98v128h-96v-128z" />
+    <glyph glyph-name="ion-android-image" unicode="&#xf2e4;" horiz-adv-x="384" 
+d="M384 43c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298c23 0 43 -20 43 -43v-298zM117 160l-74 -96h298l-96 128l-74 -96z" />
+    <glyph glyph-name="ion-android-laptop" unicode="&#xf390;" horiz-adv-x="512" 
+d="M437 32h75c0 -23 -64 -32 -96 -32h-320c-32 0 -96 9 -96 32h75c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43zM75 341v-272h362v272h-362zM256 13c12 0 21 10 21 22s-9 21 -21 21s-21 -9 -21 -21s9 -22 21 -22z" />
+    <glyph glyph-name="ion-android-list" unicode="&#xf391;" horiz-adv-x="384" 
+d="M344 384c22 0 40 -18 40 -40v-304c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v304c0 22 18 40 40 40h304zM240 80v48h-160v-48h160zM304 168v48h-224v-48h224zM304 256v48h-224v-48h224z" />
+    <glyph glyph-name="ion-android-locate" unicode="&#xf2e9;" 
+d="M224 272c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80zM415 213h33v-42h-33c-10 -89 -81 -160 -170 -170v-33h-42v33c-89 10 -160 81 -170 170h-33v42h33c10 89 81 160 170 170v33h42v-33c89 -10 160 -81 170 -170zM224 43c82 0 149 67 149 149
+s-67 149 -149 149s-149 -67 -149 -149s67 -149 149 -149z" />
+    <glyph glyph-name="ion-android-lock" unicode="&#xf392;" horiz-adv-x="320" 
+d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h20v40c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM222 262v40c0 34 -28 62 -62 62
+s-62 -28 -62 -62v-40h124z" />
+    <glyph glyph-name="ion-android-mail" unicode="&#xf2eb;" 
+d="M405 368c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362zM400 277v43l-176 -117l-176 117v-43l176 -117z" />
+    <glyph glyph-name="ion-android-map" unicode="&#xf393;" horiz-adv-x="384" 
+d="M373 384c6 0 11 -5 11 -11v-322c0 -5 -3 -9 -7 -10l-121 -41l-128 45s-105 -41 -108 -42s-7 -3 -9 -3c-6 0 -11 5 -11 11v322c0 5 3 9 7 10l121 41l128 -45s103 40 108 42s7 3 9 3zM256 43v254l-128 44v-254z" />
+    <glyph glyph-name="ion-android-menu" unicode="&#xf394;" horiz-adv-x="384" 
+d="M0 64v43h384v-43h-384zM0 171v42h384v-42h-384zM0 320h384v-43h-384v43z" />
+    <glyph glyph-name="ion-android-microphone-off" unicode="&#xf395;" horiz-adv-x="408" 
+d="M316 93l58 -58l-58 58l58 -58l34 -33l-24 -24l-95 95c-19 -11 -40 -20 -62 -23v-82h-46v82c-75 10 -137 76 -137 153h39c0 -68 58 -117 121 -117c20 0 40 5 57 14l-32 33c-8 -3 -16 -5 -25 -5c-38 0 -69 31 -69 69v29l-135 134l24 24l111 -110v0l140 -140l5 -5l9 -9z
+M273 197c0 -4 0 -8 -1 -12l-137 137v25c0 38 31 69 69 69s69 -31 69 -69v-150zM365 203c0 -31 -10 -60 -27 -84l-27 28c9 17 15 36 15 56h39zM408 2v0l-34 33z" />
+    <glyph glyph-name="ion-android-microphone" unicode="&#xf2ec;" horiz-adv-x="320" 
+d="M160 128c-38 0 -69 31 -69 69v150c0 38 31 69 69 69s69 -31 69 -69v-150c0 -38 -31 -69 -69 -69zM281 203h39c0 -78 -62 -142 -137 -153v-82h-46v82c-75 10 -137 75 -137 153h39c0 -69 58 -116 121 -116s121 47 121 116z" />
+    <glyph glyph-name="ion-android-more-horizontal" unicode="&#xf396;" horiz-adv-x="320" 
+d="M40 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM280 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM160 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40z" />
+    <glyph glyph-name="ion-android-more-vertical" unicode="&#xf397;" horiz-adv-x="80" 
+d="M80 312c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 72c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 192c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40z" />
+    <glyph glyph-name="ion-android-navigate" unicode="&#xf398;" horiz-adv-x="320" 
+d="M160 384l160 -369l-15 -15l-145 64l-145 -64l-15 15z" />
+    <glyph glyph-name="ion-android-notifications-none" unicode="&#xf399;" horiz-adv-x="352" 
+d="M177 328h-2c-6 0 -24 -5 -24 -5c-46 -10 -78 -53 -78 -100v-114v-13l-9 -10l-8 -8h240l-8 8l-9 10v13v114c0 47 -32 90 -78 100c0 0 -17 5 -24 5zM176 400v0c18 0 31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15
+c0 18 13 31 31 31zM217 26v0c0 -23 -18 -42 -41 -42s-41 19 -41 42h82z" />
+    <glyph glyph-name="ion-android-notifications-off" unicode="&#xf39a;" horiz-adv-x="364" 
+d="M182 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM57 341l295 -295v0l12 -12l-24 -24l-36 36h-298v21l41 41v115c0 23 6 44 16 63l-63 64l24 24l33 -33v0zM317 223v-94l-208 207c13 8 27 15 42 18v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -67 104 -131
+z" />
+    <glyph glyph-name="ion-android-notifications" unicode="&#xf39b;" horiz-adv-x="352" 
+d="M176 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM311 109l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114z" />
+    <glyph glyph-name="ion-android-open" unicode="&#xf39c;" horiz-adv-x="384" 
+d="M341 43v133h43v-133c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h133v-43h-133v-298h298zM224 384h160v-160h-43v87l-215 -215l-30 30l215 215h-87v43z" />
+    <glyph glyph-name="ion-android-options" unicode="&#xf39d;" 
+d="M0 32v32h272v-32h-272zM368 32v32h80v-32h-80zM352 0c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 176v32h80v-32h-80zM176 176v32h272v-32h-272zM160 144c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96
+c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 320v32h272v-32h-272zM368 320v32h80v-32h-80zM352 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96z" />
+    <glyph glyph-name="ion-android-people" unicode="&#xf39e;" 
+d="M305 216c-34 0 -61 27 -61 60s27 60 61 60s62 -27 62 -60s-28 -60 -62 -60zM143 216c-34 0 -62 27 -62 60s28 60 62 60s61 -27 61 -60s-27 -60 -61 -60zM143 172c48 0 145 -23 145 -70v-54h-288v54c0 47 95 70 143 70zM305 161c48 0 143 -12 143 -59v-54h-128v54
+c0 30 -9 41 -32 58c7 1 11 1 17 1z" />
+    <glyph glyph-name="ion-android-person-add" unicode="&#xf39f;" horiz-adv-x="480" 
+d="M288 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM288 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96zM96 224h64v-32h-64v-64h-32v64h-64v32h64v64h32v-64z" />
+    <glyph glyph-name="ion-android-person" unicode="&#xf3a0;" horiz-adv-x="384" 
+d="M192 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM192 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96z" />
+    <glyph glyph-name="ion-android-phone-landscape" unicode="&#xf3a1;" 
+d="M448 89c0 -23 -19 -41 -41 -41h-366c-22 0 -41 18 -41 41v206c0 23 19 41 41 41h366c22 0 41 -18 41 -41v-206zM80 84h288v216h-288v-216z" />
+    <glyph glyph-name="ion-android-phone-portrait" unicode="&#xf3a2;" horiz-adv-x="288" 
+d="M247 416c23 0 41 -19 41 -41v-366c0 -22 -18 -41 -41 -41h-206c-23 0 -41 19 -41 41v366c0 22 18 41 41 41h206zM252 48v288h-216v-288h216z" />
+    <glyph glyph-name="ion-android-pin" unicode="&#xf3a3;" horiz-adv-x="320" 
+d="M160 416c88 0 160 -71 160 -157c0 -118 -160 -291 -160 -291s-160 173 -160 291c0 86 72 157 160 157zM160 203c32 0 57 25 57 56s-25 56 -57 56s-57 -25 -57 -56s25 -56 57 -56z" />
+    <glyph glyph-name="ion-android-plane" unicode="&#xf3a4;" horiz-adv-x="384" 
+d="M384 112l-160 48v-114l48 -31v-31l-80 16l-80 -16v31l48 31v114l-160 -48v40l160 104v113c0 18 15 31 32 31s32 -13 32 -31v-113l160 -104v-40z" />
+    <glyph glyph-name="ion-android-playstore" unicode="&#xf2f0;" horiz-adv-x="416" 
+d="M416 296c-19 -214 -13 -312 -13 -312h-390s6 96 -13 312h104c0 57 47 104 104 104s104 -47 104 -104h104zM208 374c-43 0 -78 -35 -78 -78h156c0 43 -35 78 -78 78zM156 50l143 85l-143 84v-169z" />
+    <glyph glyph-name="ion-android-print" unicode="&#xf3a5;" horiz-adv-x="416" 
+d="M352 288c35 0 64 -29 64 -64v-139h-80v-85h-256v85h-80v139c0 35 29 64 64 64h288zM304 32v128h-192v-128h192zM336 384v0v-80h-256v80h256z" />
+    <glyph glyph-name="ion-android-radio-button-off" unicode="&#xf3a6;" horiz-adv-x="416" 
+d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" />
+    <glyph glyph-name="ion-android-radio-button-on" unicode="&#xf3a7;" horiz-adv-x="416" 
+d="M208 296c57 0 104 -47 104 -104s-47 -104 -104 -104s-104 47 -104 104s47 104 104 104zM208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" />
+    <glyph glyph-name="ion-android-refresh" unicode="&#xf3a8;" horiz-adv-x="352" 
+d="M176 60c56 0 104 34 123 84h46c-21 -74 -88 -128 -169 -128c-98 0 -176 79 -176 176s79 176 176 176c48 0 92 -20 124 -52l52 52v-154h-154l70 70c-23 24 -56 40 -92 40c-73 0 -132 -59 -132 -132s59 -132 132 -132z" />
+    <glyph glyph-name="ion-android-remove-circle" unicode="&#xf3a9;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-214v-42h214z" />
+    <glyph glyph-name="ion-android-remove" unicode="&#xf2f4;" horiz-adv-x="320" 
+d="M0 171v42h320v-42h-320z" />
+    <glyph glyph-name="ion-android-restaurant" unicode="&#xf3aa;" horiz-adv-x="415" 
+d="M116 168l-91 89c-34 33 -34 86 0 119l153 -148zM264 206l-33 -31l150 -145l-30 -30l-150 146l-150 -146l-30 30s163 159 211 207c-15 32 -4 77 31 111c41 40 101 49 132 17c33 -31 24 -89 -17 -129c-34 -34 -80 -45 -114 -30z" />
+    <glyph glyph-name="ion-android-sad" unicode="&#xf3ab;" horiz-adv-x="416" 
+d="M208 160c45 0 83 -26 102 -64h-204c19 38 57 64 102 64zM208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31
+s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31z" />
+    <glyph glyph-name="ion-android-search" unicode="&#xf2f5;" horiz-adv-x="384" 
+d="M274 143l110 -110l-33 -33l-109 110v17l-7 6c-25 -21 -58 -34 -93 -34c-79 0 -142 63 -142 142s63 143 141 143c79 0 142 -64 142 -143c0 -36 -13 -68 -34 -93l7 -5h18zM142 143c55 0 99 43 99 98s-44 99 -99 99s-98 -44 -98 -99s43 -98 98 -98z" />
+    <glyph glyph-name="ion-android-send" unicode="&#xf2f6;" horiz-adv-x="416" 
+d="M0 0v149l298 43l-298 43v149l416 -192z" />
+    <glyph glyph-name="ion-android-settings" unicode="&#xf2f7;" horiz-adv-x="416" 
+d="M366 171l47 -34c3 -3 4 -10 2 -14l-43 -71c-2 -4 -7 -7 -12 -5l-54 21c-12 -8 -23 -16 -36 -21l-8 -55c-1 -4 -6 -8 -11 -8h-85c-5 0 -10 3 -11 8l-8 55c-13 5 -25 13 -36 21l-54 -21c-4 -2 -10 1 -12 5l-43 71c-3 5 -2 11 2 14l45 34c0 7 -1 14 -1 21s1 14 1 21l-46 34
+c-3 3 -4 10 -2 14l43 71c2 4 7 7 12 5l54 -21c12 8 23 16 36 21l8 55c1 4 6 8 11 8h85c5 0 10 -4 11 -8l7 -55c13 -5 25 -13 36 -21l53 21c4 2 11 -1 13 -5l43 -71c3 -5 2 -11 -2 -14l-45 -34c0 -7 1 -14 1 -21s0 -15 -1 -21zM207 119c41 0 75 32 75 73s-34 73 -75 73
+s-74 -32 -74 -73s33 -73 74 -73z" />
+    <glyph glyph-name="ion-android-share-alt" unicode="&#xf3ac;" horiz-adv-x="384" 
+d="M320 104c34 0 62 -28 62 -62s-28 -62 -62 -62s-62 28 -62 62c0 5 1 10 2 14l-152 88c-12 -11 -27 -17 -44 -17c-35 0 -64 29 -64 64s28 64 63 64c17 0 32 -6 44 -17l151 87c-1 5 -2 10 -2 15c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64c-17 0 -32 6 -44 17
+l-151 -87c1 -5 2 -10 2 -15s-1 -10 -2 -15l153 -88c11 11 26 16 42 16z" />
+    <glyph glyph-name="ion-android-share" unicode="&#xf2f8;" horiz-adv-x="384" 
+d="M384 200l-160 -147v88c-107 0 -171 -34 -224 -109c21 107 75 214 224 235v85z" />
+    <glyph glyph-name="ion-android-star-half" unicode="&#xf3ad;" horiz-adv-x="404" 
+d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64v-189z" />
+    <glyph glyph-name="ion-android-star-outline" unicode="&#xf3ae;" horiz-adv-x="404" 
+d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64l-27 -64l-8 -18l-19 -2l-70 -6l53 -46l15 -12l-5 -19l-16 -68l60 36l17 10z" />
+    <glyph glyph-name="ion-android-star" unicode="&#xf2fc;" horiz-adv-x="404" 
+d="M202 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134l145 -12l-110 -96l33 -142z" />
+    <glyph glyph-name="ion-android-stopwatch" unicode="&#xf2fd;" horiz-adv-x="384" 
+d="M168 141v131h48v-131h-48zM344 278c25 -33 40 -74 40 -118c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192c44 0 85 -15 118 -40l31 30l33 -33zM298 54c28 28 44 66 44 106s-16 78 -44 106s-66 44 -106 44s-78 -16 -106 -44s-44 -66 -44 -106
+s16 -78 44 -106s66 -44 106 -44s78 16 106 44zM128 368v48h128v-48h-128z" />
+    <glyph glyph-name="ion-android-subway" unicode="&#xf3af;" horiz-adv-x="352" 
+d="M176 400c94 0 176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74v214c0 75 82 85 176 85zM80 64c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM160 208v96h-112v-96h112zM272 64c18 0 32 14 32 32
+s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 208v96h-112v-96h112z" />
+    <glyph glyph-name="ion-android-sunny" unicode="&#xf3b0;" 
+d="M224 288c-25 0 -50 -10 -68 -28s-28 -43 -28 -68s10 -50 28 -68s43 -28 68 -28s50 10 68 28s28 43 28 68s-10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 372v0l30 -30l-38 -38l-30 30zM74 372v0l38 -38l-30 -30l-38 38zM224 320v0c70 0 128 -58 128 -128
+s-58 -128 -128 -128s-128 58 -128 128s58 128 128 128zM448 213v0v-42h-64v42h64zM64 213v0v-42h-64v42h64zM366 80v0l38 -38l-30 -30l-38 38zM82 80v0l30 -30l-38 -38l-30 30zM245 32v0v-64h-42v64h42z" />
+    <glyph glyph-name="ion-android-sync" unicode="&#xf3b1;" horiz-adv-x="320" 
+d="M160 355c88 0 160 -73 160 -163c0 -32 -9 -62 -25 -87l-29 30c9 17 14 37 14 57c0 67 -54 122 -120 122v-61l-80 82l80 81v-61zM160 70v61l80 -82l-80 -81v61c-88 0 -160 73 -160 163c0 32 9 63 25 87l29 -30c-9 -17 -14 -37 -14 -57c0 -67 54 -122 120 -122z" />
+    <glyph glyph-name="ion-android-textsms" unicode="&#xf3b2;" horiz-adv-x="384" 
+d="M344 384c22 0 40 -18 40 -40v-240c0 -22 -18 -40 -40 -40h-280l-64 -64v344c0 22 10 40 32 40h312zM134 206v40h-38v-40h38zM211 206v40h-38v-40h38zM288 206v40h-38v-40h38z" />
+    <glyph glyph-name="ion-android-time" unicode="&#xf3b3;" horiz-adv-x="426" 
+d="M213 405c117 0 213 -96 213 -213s-95 -213 -213 -213s-213 96 -213 213s95 213 213 213zM213 22c94 0 170 76 170 170s-76 170 -170 170s-170 -76 -170 -170s76 -170 170 -170zM224 298v-111l96 -57l-16 -26l-112 67v127h32z" />
+    <glyph glyph-name="ion-android-train" unicode="&#xf3b4;" horiz-adv-x="352" 
+d="M0 101v214c0 75 82 85 176 85s176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74zM176 72c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM304 224v96h-256v-96h256z" />
+    <glyph glyph-name="ion-android-unlock" unicode="&#xf3b5;" horiz-adv-x="320" 
+d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h182v40v0c0 34 -28 62 -62 62s-62 -28 -62 -62h-38c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40
+s18 -40 40 -40z" />
+    <glyph glyph-name="ion-android-upload" unicode="&#xf3b6;" horiz-adv-x="480" 
+d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM272 172h68l-100 100l-100 -100h68v-76h64v76z" />
+    <glyph glyph-name="ion-android-volume-down" unicode="&#xf3b7;" horiz-adv-x="288" 
+d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89z" />
+    <glyph glyph-name="ion-android-volume-mute" unicode="&#xf3b8;" horiz-adv-x="192" 
+d="M0 256h85l107 112v-352l-107 112h-85v128z" />
+    <glyph glyph-name="ion-android-volume-off" unicode="&#xf3b9;" horiz-adv-x="384" 
+d="M342 192c0 69 -45 128 -107 147v45c85 -20 149 -99 149 -192c0 -35 -8 -68 -24 -96l-32 32c9 19 14 41 14 64zM192 368v-104l-51 51zM357 51v0l24 -24l-24 -24l-40 40c-23 -21 -51 -36 -82 -43v45c19 6 37 15 52 28l-95 95v-152l-107 112h-85v128h85l9 10l-91 91l24 24z
+M288 192c0 -7 0 -15 -2 -22l-51 51v60c32 -16 53 -51 53 -89z" />
+    <glyph glyph-name="ion-android-volume-up" unicode="&#xf3ba;" horiz-adv-x="384" 
+d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89zM235 384c85 -20 149 -99 149 -192s-64 -172 -149 -192v45c62 19 106 78 106 147s-44 128 -106 147v45z" />
+    <glyph glyph-name="ion-android-walk" unicode="&#xf3bb;" horiz-adv-x="272" 
+d="M168 336c-22 0 -40 18 -40 40s18 40 40 40s40 -18 40 -40s-18 -40 -40 -40zM168 216l-20 38l-20 -62l57 -96v-128h-38v96l-50 68l-57 -164h-40l81 320l-41 -16v-80h-40v112l111 38c4 1 10 1 13 1c13 0 23 -6 31 -18l45 -69h72v-40h-104z" />
+    <glyph glyph-name="ion-android-warning" unicode="&#xf3bc;" 
+d="M0 -16l224 416l224 -416h-448zM248 48v48h-48v-48h48zM248 128v96h-48v-96h48z" />
+    <glyph glyph-name="ion-android-watch" unicode="&#xf3bd;" horiz-adv-x="320" 
+d="M320 192c0 -51 -24 -96 -61 -125l-19 -115h-160l-19 115c-37 29 -61 74 -61 125s24 96 61 125l19 115h160l19 -115c37 -29 61 -74 61 -125zM40 192c0 -66 54 -120 120 -120s120 54 120 120s-54 120 -120 120s-120 -54 -120 -120z" />
+    <glyph glyph-name="ion-android-wifi" unicode="&#xf305;" horiz-adv-x="416" 
+d="M208 219c23 0 42 -18 42 -41s-19 -41 -42 -41s-42 18 -42 41s19 41 42 41zM333 178c0 -45 -26 -85 -63 -107l-20 36c25 14 41 40 41 71c0 45 -37 82 -83 82s-83 -37 -83 -82c0 -31 16 -57 41 -71l-20 -36c-37 22 -63 62 -63 107c0 68 56 124 125 124s125 -56 125 -124z
+M208 384c114 0 208 -93 208 -206c0 -76 -42 -142 -104 -178l-21 36c50 28 83 81 83 142c0 91 -74 165 -166 165s-166 -74 -166 -165c0 -61 33 -113 83 -142l-21 -36c-62 36 -104 102 -104 178c0 113 94 206 208 206z" />
+    <glyph glyph-name="ion-aperture" unicode="&#xf313;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM168 342l56 -86h-147
+c17 40 50 71 91 86zM381 160h-102l72 129c21 -27 33 -60 33 -97c0 -11 -1 -22 -3 -32zM328 314l-49 -90l-78 126c8 1 15 2 23 2c40 0 76 -14 104 -38zM67 224h102l-72 -129c-21 27 -33 60 -33 97c0 11 1 22 3 32zM280 42l-56 86h147c-17 -40 -50 -71 -91 -86zM120 70l49 90
+l78 -126c-8 -1 -15 -2 -23 -2c-40 0 -76 14 -104 38z" />
+    <glyph glyph-name="ion-archive" unicode="&#xf102;" 
+d="M224 140l-128 116h80v96h96v-96h80zM433 151c11 -6 17 -19 15 -32l-9 -67c-2 -13 -9 -20 -28 -20h-374c-18 0 -26 7 -28 20l-9 67c-2 13 3 26 14 32l72 55h42l-62 -62h50c2 0 5 -1 6 -3l18 -45h168l18 45c1 2 3 3 5 3h51l-62 62h42z" />
+    <glyph glyph-name="ion-arrow-down-a" unicode="&#xf103;" horiz-adv-x="384" 
+d="M192 -0l-192 192h112v192h160v-192h112z" />
+    <glyph glyph-name="ion-arrow-down-b" unicode="&#xf104;" horiz-adv-x="320" 
+d="M3 263c-2 2 -3 6 -3 9c0 9 8 16 17 16v0h286v0c9 0 17 -7 17 -16c0 -3 -1 -6 -3 -8l-2 -3l-136 -156c-5 -5 -11 -9 -19 -9s-14 4 -19 9l-136 156z" />
+    <glyph glyph-name="ion-arrow-down-c" unicode="&#xf105;" horiz-adv-x="274" 
+d="M265 125l-105 -100c-6 -6 -14 -9 -23 -9s-16 3 -22 9l-106 100c-12 12 -12 31 0 43s34 12 46 0l50 -48v217c0 17 14 31 32 31s32 -14 32 -31v-217l50 48c12 12 34 12 46 0s12 -31 0 -43z" />
+    <glyph glyph-name="ion-arrow-expand" unicode="&#xf25e;" horiz-adv-x="320" 
+d="M178 238l64 64l-50 50h128v-128l-50 50l-64 -64zM178 146l28 28l64 -64l50 50v-128h-128l50 50zM142 146l-64 -64l50 -50h-128v128l50 -50l64 64zM142 238l-28 -28l-64 64l-50 -50v128h128l-50 -50z" />
+    <glyph glyph-name="ion-arrow-graph-down-left" unicode="&#xf25f;" 
+d="M0 64v160l61 -61l131 141l107 -112l149 128l-149 -203l-107 107l-94 -98l62 -62h-160z" />
+    <glyph glyph-name="ion-arrow-graph-down-right" unicode="&#xf260;" 
+d="M288 64l62 62l-94 98l-107 -107l-149 203l149 -128l107 112l131 -141l61 61v-160h-160z" />
+    <glyph glyph-name="ion-arrow-graph-up-left" unicode="&#xf261;" 
+d="M160 320l-62 -62l94 -98l107 107l149 -203l-149 128l-107 -112l-131 141l-61 -61v160h160z" />
+    <glyph glyph-name="ion-arrow-graph-up-right" unicode="&#xf262;" 
+d="M288 320h160v-160l-61 61l-131 -141l-107 112l-149 -128l149 203l107 -107l94 98z" />
+    <glyph glyph-name="ion-arrow-left-a" unicode="&#xf106;" horiz-adv-x="384" 
+d="M0 192l192 192v-112h192v-160h-192v-112z" />
+    <glyph glyph-name="ion-arrow-left-b" unicode="&#xf107;" horiz-adv-x="192" 
+d="M167 349c2 2 6 3 9 3c9 0 16 -8 16 -17v0v-286v0c0 -9 -7 -17 -16 -17c-3 0 -7 1 -9 3l-2 2l-156 136c-5 5 -9 11 -9 19s4 14 9 19l156 136z" />
+    <glyph glyph-name="ion-arrow-left-c" unicode="&#xf108;" horiz-adv-x="352" 
+d="M109 320c12 12 32 12 44 0s12 -34 0 -46l-49 -50h217c17 0 31 -14 31 -32s-14 -32 -31 -32h-217l48 -50c12 -12 12 -34 0 -46s-31 -12 -43 0l-100 106c-6 6 -9 13 -9 22s3 17 9 23z" />
+    <glyph glyph-name="ion-arrow-move" unicode="&#xf263;" 
+d="M448 192l-96 -96v76h-109l1 -108h76l-96 -96l-96 96h76v108h-108v-76l-96 96l96 96v-76h108v108h-76l96 96l96 -96h-76v-108h108v76z" />
+    <glyph glyph-name="ion-arrow-resize" unicode="&#xf264;" horiz-adv-x="320" 
+d="M192 352h128v-128l-50 50l-9 -9l-183 -183l50 -50h-128v128l50 -50l128 128v0l64 64z" />
+    <glyph glyph-name="ion-arrow-return-left" unicode="&#xf265;" horiz-adv-x="384" 
+d="M128 352v-64h248c4 0 8 -4 8 -8v-240c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v48c0 4 4 8 8 8h248v128h-192v-64l-128 96z" />
+    <glyph glyph-name="ion-arrow-return-right" unicode="&#xf266;" horiz-adv-x="384" 
+d="M384 256l-128 -96v64h-192v-128h248c4 0 8 -4 8 -8v-48c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v240c0 4 4 8 8 8h248v64z" />
+    <glyph glyph-name="ion-arrow-right-a" unicode="&#xf109;" horiz-adv-x="384" 
+d="M384 192l-192 -192v112h-192v160h192v112z" />
+    <glyph glyph-name="ion-arrow-right-b" unicode="&#xf10a;" horiz-adv-x="192" 
+d="M25 35c-2 -2 -6 -3 -9 -3c-9 0 -16 8 -16 17v0v286v0c0 9 7 17 16 17c3 0 6 -1 8 -3l3 -2l156 -136c5 -5 9 -11 9 -19s-4 -14 -9 -19l-156 -136z" />
+    <glyph glyph-name="ion-arrow-right-c" unicode="&#xf10b;" horiz-adv-x="352" 
+d="M243 320l100 -105c6 -6 9 -14 9 -23s-3 -16 -9 -22l-100 -106c-12 -12 -31 -12 -43 0s-12 34 0 46l48 50h-217c-17 0 -31 14 -31 32s14 32 31 32h217l-49 50c-12 12 -12 34 0 46s32 12 44 0z" />
+    <glyph glyph-name="ion-arrow-shrink" unicode="&#xf267;" horiz-adv-x="384" 
+d="M384 356l-82 -82l50 -50h-128v128l50 -50l82 82zM384 28l-28 -28l-82 82l-50 -50v128h128l-50 -50zM0 28l82 82l-50 50h128v-128l-50 50l-82 -82zM0 356l28 28l82 -82l50 50v-128h-128l50 50z" />
+    <glyph glyph-name="ion-arrow-swap" unicode="&#xf268;" horiz-adv-x="384" 
+d="M0 120c0 4 4 8 8 8h248v64l128 -96l-128 -96v64h-248c-4 0 -8 4 -8 8v48zM384 264c0 -4 -4 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4 0 8 -4 8 -8v-48z" />
+    <glyph glyph-name="ion-arrow-up-a" unicode="&#xf10c;" horiz-adv-x="384" 
+d="M192 384l192 -192h-112v-192h-160v192h-112z" />
+    <glyph glyph-name="ion-arrow-up-b" unicode="&#xf10d;" horiz-adv-x="320" 
+d="M317 121c2 -2 3 -6 3 -9c0 -9 -8 -16 -17 -16v0h-286v0c-9 0 -17 7 -17 16c0 3 1 6 3 8l2 3l136 156c5 5 11 9 19 9s14 -4 19 -9l136 -156z" />
+    <glyph glyph-name="ion-arrow-up-c" unicode="&#xf10e;" horiz-adv-x="274" 
+d="M9 259l105 100c6 6 14 9 23 9s16 -3 22 -9l106 -100c12 -12 12 -31 0 -43s-34 -12 -46 0l-50 48v-217c0 -17 -14 -31 -32 -31s-32 14 -32 31v217l-50 -49c-12 -12 -34 -12 -46 0s-12 32 0 44z" />
+    <glyph glyph-name="ion-asterisk" unicode="&#xf314;" 
+d="M448 224v-64l-186 10l104 -170l-56 -32l-86 176l-86 -176l-56 32l104 170l-186 -10v64l187 -7l-109 167l60 32l86 -176l86 176l60 -32l-109 -167z" />
+    <glyph glyph-name="ion-at" unicode="&#xf10f;" 
+d="M422 41c-24 -25 -52 -43 -85 -55s-69 -18 -105 -18c-35 0 -66 6 -95 17s-53 26 -73 46s-36 43 -47 71s-17 58 -17 90s6 62 18 89s29 51 50 71s46 35 74 47c28 11 58 17 90 17c28 0 55 -4 81 -12s49 -20 69 -36s36 -36 48 -60s18 -53 18 -85c0 -24 -3 -46 -10 -64
+s-16 -34 -27 -46s-24 -22 -38 -28s-29 -10 -45 -10s-29 4 -39 12s-15 17 -15 29h-3c-6 -10 -15 -19 -28 -28s-28 -13 -46 -13c-28 0 -49 9 -64 27s-23 42 -23 71c0 17 3 34 9 50s14 31 24 44s23 23 38 31s31 12 49 12c15 0 27 -4 38 -10c10 -6 18 -15 21 -24h1l5 24h54
+l-24 -113c-1 -6 -2 -12 -3 -19s-2 -13 -2 -19c0 -7 1 -13 4 -18s7 -7 15 -7c16 0 29 9 39 26s16 40 16 68c0 24 -4 45 -12 64s-20 34 -34 47s-32 23 -52 29s-41 9 -65 9c-26 0 -49 -4 -70 -13s-39 -22 -54 -38s-27 -34 -35 -56c-8 -21 -13 -44 -13 -69c0 -26 4 -51 13 -72
+s21 -39 37 -54s35 -27 57 -35s46 -12 72 -12c33 0 61 6 85 16s45 25 65 43zM231 260c-10 0 -18 -2 -25 -8s-14 -13 -19 -22s-8 -18 -11 -28s-4 -20 -4 -30c0 -5 0 -10 1 -16c1 -5 3 -10 6 -15s7 -8 12 -11s11 -5 19 -5c11 0 20 3 28 8s14 13 19 21s9 16 11 26s3 19 3 27
+c0 6 0 13 -1 19s-4 12 -7 17s-7 9 -12 12s-12 5 -20 5z" />
+    <glyph glyph-name="ion-backspace-outline" unicode="&#xf3be;" horiz-adv-x="512" 
+d="M413 116c2 -2 3 -4 3 -6s-1 -4 -3 -6l-21 -22c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-76 77l-76 -77c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-21 22c-2 2 -3 4 -3 6s1 4 3 6l76 76l-77 76c-3 3 -3 9 0 12l22 22c2 2 4 2 6 2s4 0 6 -2l76 -76l76 76c2 2 4 2 6 2s4 0 6 -2l22 -22
+c3 -3 3 -9 0 -12l-77 -76zM499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM480 65v256c0 9 -5 15 -14 15h-298c-11 0 -22 -3 -32 -16l-96 -128
+l96 -128c8 -10 17 -16 32 -16h298c9 0 14 8 14 17z" />
+    <glyph glyph-name="ion-backspace" unicode="&#xf3bf;" horiz-adv-x="512" 
+d="M499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM413 116l-76 76l77 76c3 3 3 9 0 12l-22 22c-2 2 -4 2 -6 2s-4 0 -6 -2l-76 -76l-76 76
+c-2 2 -4 2 -6 2s-4 0 -6 -2l-22 -22c-3 -3 -3 -9 0 -12l77 -76l-76 -76c-2 -2 -3 -4 -3 -6s1 -4 3 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l76 77l76 -77c2 -2 4 -2 6 -2s4 0 6 2l21 22c2 2 3 4 3 6s-1 4 -3 6z" />
+    <glyph glyph-name="ion-bag" unicode="&#xf110;" 
+d="M416 288l32 -320h-448l32 320h64v4c0 68 56 124 124 124h8c68 0 124 -56 124 -124v-4h64zM128 292v-4h192v4c0 51 -41 92 -92 92v0h-8c-51 0 -92 -41 -92 -92zM36 0h376l-25 256h-35v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36
+h-192v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36h-35z" />
+    <glyph glyph-name="ion-battery-charging" unicode="&#xf111;" 
+d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM225 288l-100 -111h61l-27 -81l100 111h-61z" />
+    <glyph glyph-name="ion-battery-empty" unicode="&#xf112;" 
+d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-337v-192h337v32v32h32h15z" />
+    <glyph glyph-name="ion-battery-full" unicode="&#xf113;" 
+d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37z" />
+    <glyph glyph-name="ion-battery-half" unicode="&#xf114;" 
+d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-81l32 -192h49v32v32h32h15z" />
+    <glyph glyph-name="ion-battery-low" unicode="&#xf115;" 
+d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM369 288h-209l32 -192h177v32v32h32h15v64h-15h-32v32v32z" />
+    <glyph glyph-name="ion-beaker" unicode="&#xf269;" horiz-adv-x="384" 
+d="M80 256h240v-224c0 -9 -7 -16 -16 -16h-208c-9 0 -16 7 -16 16v224zM296 104v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -4 4 -8 8 -8s8 4 8 8zM288 176c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM381 416c3 0 3 -2 3 -3s-2 -3 -3 -5s-13 -20 -13 -40v-336
+c0 -35 -29 -64 -64 -64h-208c-35 0 -64 29 -64 64v307c0 32 -2 33 -32 37c0 12 11 40 65 40h316zM336 368c0 5 0 16 1 16h-273c-1 0 -3 0 -4 -1c5 -7 4 -32 4 -44v-307c0 -18 14 -32 32 -32h210c17 0 30 14 30 32v336z" />
+    <glyph glyph-name="ion-beer" unicode="&#xf26a;" 
+d="M384 288c35 0 64 -29 64 -64v-96c0 -35 -29 -64 -64 -64h-32v-80c0 -9 -7 -16 -16 -16h-256c-9 0 -16 7 -16 16v223c-26 0 -48 22 -48 48v54v1c-10 11 -16 26 -16 42c0 35 29 64 64 64c18 0 34 -8 46 -20c10 12 26 20 43 20c14 0 27 -6 37 -14c12 9 26 14 42 14
+c17 0 34 -6 46 -16c11 10 26 16 42 16c35 0 64 -29 64 -64c0 -24 -18 -44 -32 -48v-16h32zM296 144c4 0 8 3 8 8v0v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -3 2 -6 4 -7c1 -1 2 -1 4 -1zM303 220c1 2 1 4 1 6s-1 4 -3 5s-4 1 -6 1s-4 -2 -5 -4s-2 -4 -2 -6s2 -4 4 -5
+s4 -1 6 -1s4 2 5 4zM320 288v32h-20c-3 -8 -7 -16 -13 -23c-13 -16 -33 -25 -55 -25c-26 0 -48 13 -61 33c-6 -2 -12 -3 -18 -3c-12 0 -23 4 -32 10c-2 1 -3 3 -5 4c-1 -2 -2 -3 -3 -5c-5 -6 -11 -10 -17 -14v-32v-9h80c0 4 4 8 8 8s8 -4 8 -8h128v32zM351 343c1 3 1 6 1 9
+c0 18 -14 32 -32 32c-9 0 -17 -4 -23 -10c-2 -2 -6 -5 -16 -6h-8c-6 1 -12 3 -14 5c-7 7 -16 11 -27 11c-9 0 -18 -4 -25 -9l-7 -7c0 -1 0 -1 -1 -2c-3 -3 -7 -5 -11 -5c-5 0 -8 3 -11 6c-1 2 -2 3 -3 5s-3 4 -5 6c-4 4 -10 6 -16 6c-10 0 -18 -9 -25 -16
+c-7 -8 -27 -8 -34 0s-18 16 -30 16c-18 0 -32 -14 -32 -32c0 -2 1 -5 1 -7c2 -9 7 -17 15 -21v-34v-35c0 -9 7 -16 16 -16v26v23v32c10 0 18 4 24 11c2 2 3 4 4 6c0 0 6 10 12 11s20 6 30 -5c4 -5 11 -9 19 -9c3 0 5 1 7 2c3 1 7 2 9 4v0c3 2 6 4 10 4c7 0 12 -4 14 -10
+c0 0 1 -1 1 -2c1 -3 1 -5 3 -8c7 -12 20 -20 35 -20c13 0 25 6 32 16c5 7 8 15 8 24s9 8 9 8h7h48c6 0 13 -3 15 -9zM416 128v96c0 18 -14 32 -32 32h-32v-160h32c18 0 32 14 32 32zM128 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM288 280c0 5 3 8 8 8s8 -3 8 -8
+s-3 -8 -8 -8s-8 3 -8 8z" />
+    <glyph glyph-name="ion-bluetooth" unicode="&#xf116;" horiz-adv-x="256" 
+d="M12 304c16 16 18 13 19 12l68 -65v0v0c2 -2 10 -10 10 -3v156v0v2c0 6 6 10 12 10c4 0 7 -2 9 -4v0s117 -113 122 -117s5 -10 1 -14l-84 -81s-4 -4 -4 -8s4 -8 4 -8l84 -81c4 -4 4 -10 -1 -14s-122 -117 -122 -117v0c-2 -2 -5 -4 -9 -4c-6 0 -12 4 -12 10v2v0v156
+s-8 -1 -10 -3v0v-1l-68 -64c-1 -1 -3 -4 -19 12s-12 17 -11 18s90 86 90 86s4 3 4 8v0c0 5 -4 8 -4 8s-89 85 -90 86s-5 2 11 18zM152 328v-79c0 -8 8 -1 10 1l30 30s3 5 3 7s-1 5 -3 7l-30 30c-2 2 -10 11 -10 4zM152 135v-79s8 2 10 4l30 30c2 2 3 5 3 7s-1 5 -3 7l-30 30
+c-2 2 -10 9 -10 1z" />
+    <glyph glyph-name="ion-bonfire" unicode="&#xf315;" horiz-adv-x="384" 
+d="M207 97l15 -89c1 -3 1 -5 1 -8c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 2 0 5 1 7l15 92v0c2 7 8 13 16 13s15 -7 16 -15zM242 93v0v0v0zM329 58c9 -8 10 -25 0 -35s-27 -9 -35 0c-1 1 -2 3 -3 4l-49 66c-3 5 -2 11 2 15c5 5 10 5 16 1l64 -47c2 -1 3 -3 5 -4zM309 113v0
+v0v0zM371 126c9 -1 13 -7 13 -19c0 -9 -10 -14 -18 -12l-57 18v0v0c-3 2 -6 5 -5 9s4 7 8 6zM75 113v0v0v0zM75 113v0l-58 -18c-8 -2 -17 3 -17 12c0 12 3 18 12 19l60 2c4 1 7 -2 8 -6s-2 -7 -5 -9v0zM124 109c5 4 11 4 16 -1c4 -4 5 -10 2 -15l-49 -66c-1 -1 -2 -3 -3 -4
+c-10 -10 -25 -10 -35 0s-10 25 0 35c2 2 3 3 5 4zM288 320c0 -32 -9 -58 -50 -86c-37 -26 -94 -46 -110 -106c0 0 -58 24 -48 96s124 106 112 192c24 0 96 -35 96 -96zM288 192c-16 -50 -44 -64 -80 -64c-15 0 -32 9 -43 26c12 15 28 26 47 37c9 5 20 10 29 16
+c21 14 38 31 47 49c5 -15 5 -48 0 -64zM88 288c-6 4 -9 14 -8 27c2 22 34 39 32 69c14 2 31 -3 42 -24c-5 -11 -15 -21 -28 -34s-26 -22 -38 -38z" />
+    <glyph glyph-name="ion-bookmark" unicode="&#xf26b;" horiz-adv-x="192" 
+d="M184 384c4 0 8 -4 8 -8v-56h-192v56c0 4 4 8 8 8h176zM0 0v304h192v-304l-96 96z" />
+    <glyph glyph-name="ion-bowtie" unicode="&#xf3c0;" 
+d="M192 236c0 0 8 5 20 7c21 4 39 5 47 -9c10 -17 19 -53 17 -85c-1 -17 -5 -22 -5 -22s-15 -10 -47 -7c-35 3 -40 15 -40 15s5 12 8 43s0 58 0 58zM152 163c-17 -4 -38 -10 -38 -10s45 4 64 9c-4 -21 -10 -34 -10 -34s-83 -80 -116 -80c-28 0 -52 68 -52 144s26 144 52 144
+c35 0 106 -57 128 -97c0 0 3 -16 2 -32c-10 5 -24 10 -44 14c-28 6 -42 3 -42 3s18 -4 57 -17c15 -5 22 -8 29 -10c0 -3 -1 -7 -1 -10c0 -5 0 -10 -1 -15c-5 -2 -15 -6 -28 -9zM396 336c26 0 52 -68 52 -144s-24 -144 -52 -144c-37 0 -104 68 -112 79c0 0 4 5 5 22v9
+c16 -7 70 -13 70 -13s-21 6 -40 11c-13 4 -25 8 -30 10c-1 11 -2 23 -4 33c17 11 69 34 69 34s-15 -2 -35 -9c-14 -5 -29 -11 -37 -14c-3 10 -7 18 -10 24c0 1 -1 4 -1 4v1c22 40 89 97 125 97z" />
+    <glyph glyph-name="ion-briefcase" unicode="&#xf26c;" 
+d="M240 176v8h208v-176c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v176h208v-8h32zM440 304c4 0 8 -4 8 -8v-96h-208v8h-32v-8h-208v96c0 4 4 8 8 8h120v31c1 28 22 49 51 49h90c30 0 50 -21 51 -49v-31h120zM288 332v1c0 10 -9 19 -19 19h-90c-10 0 -19 -9 -19 -19v-1v-1v-27
+h128v27v1z" />
+    <glyph glyph-name="ion-bug" unicode="&#xf2be;" 
+d="M343 321c-6 -16 -16 -31 -28 -43c-24 -24 -57 -37 -91 -37s-67 13 -91 37c-12 12 -22 27 -28 43c29 39 72 63 119 63s90 -24 119 -63zM95 305c22 -45 68 -77 121 -80v-225c-40 2 -77 22 -104 54c-7 -6 -10 -9 -13 -15c8 -9 7 -22 -1 -31c-9 -10 -24 -11 -34 -2
+s-11 24 -2 34l3 3s2 1 2 1c4 13 13 25 27 36c-15 26 -26 57 -29 90c-7 0 -12 -2 -17 -3c-1 -13 -11 -23 -24 -23s-24 11 -24 24s11 24 24 24h3c4 2 8 5 12 6c7 2 14 4 25 4c1 23 6 45 13 65c-6 4 -11 7 -15 11c-6 5 -11 13 -14 19c-1 0 -3 1 -4 2c-12 6 -15 21 -9 33
+s21 15 33 9c11 -6 15 -20 10 -31c2 -3 3 -7 4 -8c2 -2 5 -3 8 -5c2 3 3 5 5 8zM424 192c13 0 24 -11 24 -24s-11 -24 -24 -24s-23 10 -24 23c-5 1 -10 3 -17 3c-3 -33 -14 -64 -29 -90c14 -11 23 -23 27 -36c0 0 1 0 2 -1l3 -3c9 -10 8 -25 -2 -34s-25 -8 -34 2
+c-8 9 -9 22 -1 31c-3 6 -6 9 -13 15c-27 -32 -64 -52 -104 -54v225c53 3 99 35 121 80c2 -3 3 -5 5 -8c3 2 6 3 8 5c1 1 2 5 4 8c-5 11 -1 25 10 31c12 6 27 3 33 -9s3 -27 -9 -33c-1 -1 -3 -2 -4 -2c-3 -6 -8 -14 -14 -19c-4 -4 -9 -7 -15 -11c7 -20 12 -42 13 -65
+c11 0 18 -2 25 -4c4 -1 8 -4 12 -6h3z" />
+    <glyph glyph-name="ion-calculator" unicode="&#xf26d;" horiz-adv-x="320" 
+d="M304 416c9 0 16 -7 16 -16v-416c0 -9 -7 -16 -16 -16h-288c-9 0 -16 7 -16 16v416c0 9 7 16 16 16h288zM48 240v-32h32v32h-32zM48 176v-32h32v32h-32zM48 112v-32h32v32h-32zM144 16v32h-96v-32h96zM144 80v32h-32v-32h32zM144 144v32h-32v-32h32zM144 208v32h-32v-32
+h32zM208 16v32h-32v-32h32zM208 80v32h-32v-32h32zM208 144v32h-32v-32h32zM208 208v32h-32v-32h32zM272 16v96h-32v-96h32zM272 144v32h-32v-32h32zM272 208v32h-32v-32h32zM272 288v80h-224v-80h224z" />
+    <glyph glyph-name="ion-calendar" unicode="&#xf117;" 
+d="M112 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM336 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM440 384c4 0 8 -4 8 -8v-400c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v400
+c0 4 4 8 8 8h56v-41c0 -22 24 -39 48 -39s48 17 48 39v41h128v-41c0 -22 25 -39 49 -39s47 17 47 39v41h56zM400 16v256h-352v-256h352z" />
+    <glyph glyph-name="ion-camera" unicode="&#xf118;" horiz-adv-x="416" 
+d="M382 301c18 0 34 -14 34 -33v-202c0 -19 -16 -34 -34 -34h-348c-19 0 -34 15 -34 34v202c0 19 15 33 34 33h69l39 40v0c6 7 15 11 25 11h84c9 0 17 -4 23 -10v0v0v0l41 -41h67zM208 82c51 0 92 42 92 93s-41 93 -92 93s-92 -42 -92 -93s41 -93 92 -93zM376 248
+c8 0 14 6 14 14s-6 14 -14 14s-14 -6 -14 -14s6 -14 14 -14zM208 245c38 0 70 -31 70 -70s-32 -70 -70 -70c-39 0 -70 31 -70 70s31 70 70 70z" />
+    <glyph glyph-name="ion-card" unicode="&#xf119;" 
+d="M420 352c16 0 28 -12 28 -28v0v-264v0c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v0v0v264v0v0c0 16 12 28 28 28h392zM45 320c-7 0 -12 -5 -13 -12v-20h384v20c-1 7 -6 12 -13 12h-358zM403 64c7 0 12 5 13 12v116h-384v-116c1 -7 6 -12 13 -12h358zM64 128v16
+h192v-16h-192zM64 96v16h96v-16h-96zM320 96v48h64v-48h-64z" />
+    <glyph glyph-name="ion-cash" unicode="&#xf316;" horiz-adv-x="512" 
+d="M0 352h512v-256h-512v256zM193 128c-20 23 -33 58 -33 96s13 73 33 96h-97c0 -35 -29 -64 -64 -64v-80c27 0 48 -21 48 -48h113zM298 187c3 4 4 9 4 15c0 3 0 5 -1 8s-2 6 -4 8s-4 4 -7 6s-6 4 -10 5c-1 0 -4 1 -7 2s-5 0 -8 1v31c2 -1 5 -2 7 -3c4 -3 6 -7 7 -13h20
+c0 5 -2 9 -4 13s-5 8 -9 11s-9 5 -14 6c-2 1 -5 2 -7 2v9h-18v-9c-2 0 -4 -1 -6 -2c-5 -1 -10 -2 -14 -5s-7 -6 -9 -10s-4 -9 -4 -14c0 -3 0 -5 1 -8s2 -5 4 -7s5 -5 8 -7s7 -4 12 -5c3 -1 6 0 8 -1v-35c-3 1 -6 2 -9 4s-5 4 -6 7s-2 6 -2 9h-20c0 -5 2 -11 4 -16
+c3 -5 6 -8 10 -11s9 -6 15 -7c3 -1 5 -2 8 -2v-9h18v9c3 0 6 1 9 2c5 1 10 2 14 5s7 7 10 11zM480 176v80c-35 0 -64 29 -64 64h-97c20 -23 33 -58 33 -96s-13 -73 -33 -96h113c0 27 22 48 48 48zM64 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z
+M384 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM273 213c2 -1 4 -2 6 -4s3 -5 3 -9c0 -2 0 -4 -1 -6s-2 -4 -4 -5s-5 -3 -8 -4c-1 0 -2 -1 -4 -1v31c3 -1 6 -1 8 -2zM236 257c1 2 3 3 5 4s4 2 6 2v-26c-4 1 -7 3 -9 5s-4 4 -4 8c0 3 1 5 2 7zM0 32
+v32h512v-32h-512z" />
+    <glyph glyph-name="ion-chatbox-working" unicode="&#xf11a;" horiz-adv-x="416" 
+d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153zM304 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 256c-18 0 -32 -14 -32 -32s14 -32 32 -32
+s32 14 32 32s-14 32 -32 32zM112 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" />
+    <glyph glyph-name="ion-chatbox" unicode="&#xf11b;" horiz-adv-x="416" 
+d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153z" />
+    <glyph glyph-name="ion-chatboxes" unicode="&#xf11c;" horiz-adv-x="416" 
+d="M246 82l26 -18c-4 -21 -29 -32 -52 -32h-90c-8 0 -11 -2 -13 -3l-53 -45v48h-16c-26 0 -48 16 -48 41v129c0 25 20 45 46 45h2v-101c0 -33 29 -59 64 -59h117c10 0 14 -3 17 -5zM353 400c35 0 63 -27 63 -60v-168c0 -33 -28 -60 -63 -60h-17v-64l-75 60c-2 2 -7 4 -17 4
+h-101c-35 0 -63 27 -63 60v98v70c0 33 21 60 56 60h217z" />
+    <glyph glyph-name="ion-chatbubble-working" unicode="&#xf11d;" horiz-adv-x="416" 
+d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15zM304 224c-18 0 -32 -14 -32 -32
+s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM112 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" />
+    <glyph glyph-name="ion-chatbubble" unicode="&#xf11e;" horiz-adv-x="416" 
+d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15z" />
+    <glyph glyph-name="ion-chatbubbles" unicode="&#xf11f;" horiz-adv-x="416" 
+d="M25 57c-1 1 0 2 -1 3c-15 22 -24 49 -24 77c0 42 19 80 49 106c-2 -11 -4 -22 -4 -34c0 -92 78 -168 174 -168c15 0 30 2 44 6c-27 -32 -69 -53 -115 -53c-20 0 -40 5 -58 12h-1v0c-2 1 -5 2 -8 2s-6 -1 -9 -2l-56 -22l12 63c0 4 -1 7 -3 10v0zM242 400
+c96 0 174 -76 174 -168c0 -33 -11 -64 -28 -90c-1 -1 -1 -2 -2 -3v0c-2 -4 -3 -8 -3 -12l17 -74l-69 26c-3 1 -6 2 -10 2c-3 0 -6 -1 -9 -2v0l-2 -1c-8 -3 -16 -5 -24 -7c-14 -4 -29 -6 -44 -6c-96 0 -173 75 -173 167c0 12 1 24 3 35c16 76 86 133 170 133z" />
+    <glyph glyph-name="ion-checkmark-circled" unicode="&#xf120;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM339 267c1 1 1 2 1 3s0 3 -1 4l-31 24c-1 1 -3 1 -4 1s-2 0 -3 -1l-111 -143s-44 42 -45 43s-4 3 -6 3s-3 -2 -4 -3l-25 -25l-1 -1c-1 -1 -1 -3 -1 -4s0 -2 1 -3l2 -1
+s78 -75 79 -76s3 -3 5 -3s4 2 5 3z" />
+    <glyph glyph-name="ion-checkmark-round" unicode="&#xf121;" horiz-adv-x="416" 
+d="M400 376c17 -13 22 -39 9 -57l-207 -302c-13 -18 -37 -22 -54 -9s-137 147 -137 147c-15 16 -15 42 1 58s40 15 55 -2l99 -107l180 263c13 18 37 22 54 9z" />
+    <glyph glyph-name="ion-checkmark" unicode="&#xf122;" horiz-adv-x="416" 
+d="M414 338c1 -2 2 -4 2 -6s-1 -4 -2 -6l-249 -320c-2 -2 -5 -6 -9 -6s-8 3 -10 5s-141 136 -141 136l-3 3c-1 2 -2 4 -2 6s1 3 2 5l2 2c14 15 42 44 44 46s4 6 8 6s8 -4 10 -6s80 -78 80 -78l200 257c2 2 4 2 6 2s5 -1 7 -2z" />
+    <glyph glyph-name="ion-chevron-down" unicode="&#xf123;" 
+d="M224 150v0v0l174 167c4 4 12 4 16 0l31 -30c4 -4 4 -12 0 -16l-213 -204c-2 -2 -5 -3 -8 -3s-6 1 -8 3l-213 204c-4 4 -4 12 0 16l31 30c4 4 12 4 16 0z" />
+    <glyph glyph-name="ion-chevron-left" unicode="&#xf124;" horiz-adv-x="256" 
+d="M86 192l167 -174c4 -4 4 -12 0 -16l-30 -31c-4 -4 -12 -4 -16 0l-204 213c-2 2 -3 5 -3 8s1 6 3 8l204 213c4 4 12 3 16 -1l30 -30c4 -4 4 -12 0 -16l-167 -174v0v0z" />
+    <glyph glyph-name="ion-chevron-right" unicode="&#xf125;" horiz-adv-x="256" 
+d="M170 192v0v0l-167 174c-4 4 -4 12 0 16l30 30c4 4 12 5 16 1l204 -213c2 -2 3 -5 3 -8s-1 -6 -3 -8l-204 -213c-4 -4 -12 -4 -16 0l-30 31c-4 4 -4 12 0 16z" />
+    <glyph glyph-name="ion-chevron-up" unicode="&#xf126;" 
+d="M224 234l-174 -167c-4 -4 -12 -4 -16 0l-31 30c-4 4 -4 12 0 16l213 204c2 2 5 3 8 3s6 -1 8 -3l213 -204c4 -4 4 -12 0 -16l-31 -30c-4 -4 -12 -4 -16 0l-174 167v0v0z" />
+    <glyph glyph-name="ion-clipboard" unicode="&#xf127;" horiz-adv-x="352" 
+d="M80 288c2 20 10 35 28 40l1 1c12 3 21 7 21 20v21c0 26 21 46 46 46s46 -20 46 -46v-21c0 -13 9 -18 21 -21h2c18 -5 25 -20 27 -40h-192zM176 384c-8 0 -13 -6 -13 -14s5 -14 13 -14s14 6 14 14s-6 14 -14 14zM325 384c15 0 27 -12 27 -28v-360c0 -16 -12 -28 -27 -28
+h-149h-148c-15 0 -28 12 -28 28v360c0 16 13 28 28 28h73v-13c0 -11 -9 -19 -19 -19h-37c-7 0 -12 -6 -12 -13v-327c0 -6 5 -12 11 -12h265c6 0 11 6 11 12v327c0 7 -5 13 -12 13h-37c-10 0 -20 8 -20 19v13h74zM64 224v32h112v-32h-112zM64 32v32h160v-32h-160zM64 96v32
+h129v-32h-129zM64 160v32h208v-32h-208z" />
+    <glyph glyph-name="ion-clock" unicode="&#xf26e;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c10 10 19 21 26 33l-27 16l8 14l27 -16c13 25 21 52 22 81h-32v16h32c-1 29 -9 56 -22 81l-27 -16l-8 14l27 16c-7 12 -16 23 -26 33s-21 19 -33 26l-16 -27l-14 8
+l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -7 -23 -16 -33 -26s-19 -21 -26 -33l27 -16l-8 -14l-27 16c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -29 9 -56 22 -81l27 16l8 -14l-27 -16c7 -12 16 -23 26 -33s21 -19 33 -26
+l16 27l14 -8l-16 -27c25 -13 52 -21 81 -22v32h16v-32c29 1 56 9 81 22l-16 27l14 8l16 -27c12 7 23 16 33 26zM368 207v-32h-117c-6 -9 -16 -15 -27 -15c-18 0 -32 14 -32 32c0 12 6 22 16 28v68h32v-68c5 -3 9 -8 12 -13h116z" />
+    <glyph glyph-name="ion-close-circled" unicode="&#xf128;" 
+d="M224 415c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM332 116l-75 75l76 75c3 3 3 9 0 12l-22 21c-2 2 -4 3 -6 3s-3 -1 -5 -3l-76 -74l-76 74c-2 2 -3 3 -5 3s-4 -1 -6 -3l-21 -21c-3 -3 -3 -9 0 -12l76 -75l-76 -76
+c-2 -1 -2 -3 -2 -5s0 -4 2 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l75 76l76 -75c2 -2 3 -3 5 -3s4 1 6 3l21 21c2 1 3 4 3 6s-1 4 -3 6z" />
+    <glyph glyph-name="ion-close-round" unicode="&#xf129;" horiz-adv-x="384" 
+d="M374 61c14 -14 14 -37 0 -51s-37 -14 -51 0l-131 131l-131 -131c-14 -14 -36 -14 -50 0s-14 37 0 51l130 131l-130 131c-14 14 -14 37 0 51s36 14 50 0l131 -131l131 131c14 14 37 14 51 0s14 -37 0 -51l-131 -131z" />
+    <glyph glyph-name="ion-close" unicode="&#xf12a;" horiz-adv-x="384" 
+d="M380 61c3 -3 4 -6 4 -10s-1 -7 -4 -10l-38 -37c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-131 131l-131 -131c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-38 37c-3 3 -4 6 -4 10s1 7 4 10l132 131l-132 130c-5 5 -5 15 0 20l37 38c3 2 6 4 10 4s7 -1 10 -4l131 -130l131 130c3 2 6 4 10 4
+s7 -1 10 -4l37 -38c5 -5 5 -14 0 -19l-132 -130z" />
+    <glyph glyph-name="ion-closed-captioning" unicode="&#xf317;" horiz-adv-x="512" 
+d="M0 384h512v-384h-512v384zM464 192c0 27 0 44 -4 80s-23 56 -59 60s-91 4 -138 4h-7h-7c-47 0 -102 0 -138 -4s-55 -24 -59 -60s-4 -53 -4 -80s2 -47 4 -80s19 -56 59 -60s96 -4 145 -4s105 0 145 4s57 27 59 60s4 53 4 80zM372 164v4h53c0 -27 -7 -48 -19 -62
+s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28c1 -17 12 -29 27 -29s27 10 27 29v1z
+M195 164v4h53c0 -27 -7 -48 -19 -62s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28
+c1 -17 12 -29 27 -29s27 10 27 29v1z" />
+    <glyph glyph-name="ion-cloud" unicode="&#xf12b;" 
+d="M366 215c45 0 82 -38 82 -84s-37 -83 -82 -83v0h-276c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" />
+    <glyph glyph-name="ion-code-download" unicode="&#xf26f;" 
+d="M299 164l-63 -63v0l-1 -1v0l-2 -1v0l-1 -1v0l-2 -1v0h-1v0h-1c-1 0 -3 -1 -4 -1s-3 1 -4 1h-1v0h-1v0l-2 1v0l-1 1v0c-1 1 -2 1 -3 2v0l-63 63c-6 6 -6 17 0 23s18 6 24 0l35 -34v118c0 9 7 17 16 17s16 -8 16 -17v-118l35 34c6 6 18 6 24 0s6 -17 0 -23zM136 56
+c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112
+c-5 -5 -11 -7 -17 -7z" />
+    <glyph glyph-name="ion-code-working" unicode="&#xf270;" 
+d="M128 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM200 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM272 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM136 56c-7 0 -12 2 -17 7l-112 112c-5 5 -7 10 -7 17
+s2 12 7 17l112 112c5 5 10 7 17 7s12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17l-95 -95l95 -95c5 -5 7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7zM312 56c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17l95 95l-95 95c-5 5 -7 10 -7 17s2 12 7 17s10 7 17 7s12 -2 17 -7l112 -112
+c5 -5 7 -10 7 -17s-2 -12 -7 -17l-112 -112c-5 -5 -10 -7 -17 -7z" />
+    <glyph glyph-name="ion-code" unicode="&#xf271;" 
+d="M136 56c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112
+c-5 -5 -11 -7 -17 -7z" />
+    <glyph glyph-name="ion-coffee" unicode="&#xf272;" horiz-adv-x="384" 
+d="M319 191c37 -7 65 -40 65 -79c0 -20 -8 -39 -21 -54c-15 -17 -37 -26 -61 -26c-8 0 -17 1 -25 3c-6 1 -10 3 -15 5c-11 -15 -23 -25 -32 -33v0c-5 -5 -12 -7 -19 -7h-102c-7 0 -14 2 -19 7v0c-17 15 -41 36 -62 86s-28 91 -28 111s3 20 16 20h101c-5 17 -37 19 -37 46
+c0 17 15 32 28 37c-2 -8 -3 -14 -3 -21c0 -19 39 -30 39 -53c0 -3 0 -6 -1 -9h56c1 5 2 10 2 14c0 36 -56 36 -56 84c0 28 21 55 47 62c-4 -14 -9 -23 -9 -35c0 -32 57 -50 57 -88c0 -13 -5 -25 -12 -37h76c13 0 16 0 16 -20c0 -4 0 -8 -1 -13zM302 64c33 0 50 25 50 48
+s-17 43 -39 47c-4 -19 -11 -42 -21 -66c-4 -9 -8 -17 -12 -25c6 -3 13 -4 22 -4z" />
+    <glyph glyph-name="ion-compass" unicode="&#xf273;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224c0 39 10 76 27 108c-16 12 -27 30 -27 52c0 35 29 64 64 64c22 0 40 -11 52 -27c32 17 69 27 108 27zM32 352c0 -10 5 -20 13 -26c13 17 28 32 45 45c-6 8 -16 13 -26 13c-18 0 -32 -14 -32 -32z
+M360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM320 320c0 0 -54 -130 -72 -152s-120 -104 -120 -104s54 132 72 152s120 104 120 104z" />
+    <glyph glyph-name="ion-compose" unicode="&#xf12c;" horiz-adv-x="384" 
+d="M379 348c7 -7 7 -18 0 -25l-32 -31l-55 55l31 32c7 7 18 7 25 0zM282 338l55 -55l-177 -173l-64 -14l14 64zM320 192l32 32v-201c0 -13 -10 -23 -23 -23h-306c-13 0 -23 10 -23 23v306c0 13 10 23 23 23h201l-32 -32h-149c-6 0 -11 -5 -11 -10v-268s4 -10 10 -10h269
+s9 5 9 10v150z" />
+    <glyph glyph-name="ion-connection-bars" unicode="&#xf274;" horiz-adv-x="352" 
+d="M0 32v64h64v-64h-64zM96 32v128h64v-128h-64zM192 32v224h64v-224h-64zM288 32v320h64v-320h-64z" />
+    <glyph glyph-name="ion-contrast" unicode="&#xf275;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56v-384c51 0 100 20 136 56z" />
+    <glyph glyph-name="ion-crop" unicode="&#xf3c1;" 
+d="M320 -32v48h64v-48h-64zM384 96h64v-64h-384v256h-64v64h64v64h64v-320h192v192h-176v64h240v-256z" />
+    <glyph glyph-name="ion-cube" unicode="&#xf318;" 
+d="M435 280c7 0 13 -6 13 -12v-183c0 -9 -6 -17 -14 -22v-1l-175 -92v-1c-2 -1 -4 -1 -6 -1c-7 0 -13 6 -13 12v185c0 9 5 17 13 22v0l3 2l172 89l2 1c2 1 3 1 5 1zM422 329c0 0 8 -3 8 -9c0 -7 -8 -11 -8 -11l-183 -97l-2 -1c-4 -2 -8 -3 -13 -3s-9 1 -13 3l-2 1l-183 96
+s-8 5 -8 12c0 6 8 9 8 9l181 82s11 5 17 5s17 -5 17 -5zM195 187c8 -5 13 -13 13 -22v-185c0 -6 -6 -12 -13 -12c-2 0 -4 1 -6 2v0l-175 92v1c-8 5 -14 13 -14 22v183c0 6 6 12 13 12c2 0 4 0 5 -1l2 -1l171 -89z" />
+    <glyph glyph-name="ion-disc" unicode="&#xf12d;" 
+d="M224 289c54 0 97 -43 97 -97s-43 -97 -97 -97s-97 43 -97 97s43 97 97 97zM224 148c24 0 44 20 44 44s-20 44 -44 44s-44 -20 -44 -44s20 -44 44 -44zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 69
+c68 0 123 55 123 123s-55 123 -123 123s-123 -55 -123 -123s55 -123 123 -123z" />
+    <glyph glyph-name="ion-document-text" unicode="&#xf12e;" horiz-adv-x="288" 
+d="M286 279c1 -3 2 -6 2 -10v-245c0 -13 -10 -24 -22 -24h-243c-12 0 -23 11 -23 24v336c0 13 11 24 23 24h160c3 0 6 0 9 -2c2 -1 5 -3 7 -5l84 -92c2 -2 2 -4 3 -6zM48 269v-10c0 -1 1 -3 3 -3h71c2 0 3 2 3 3v10c0 2 -1 3 -3 3h-71c-2 0 -3 -1 -3 -3zM48 141v-10
+c0 -1 1 -3 3 -3h123c2 0 2 2 2 3v10c0 2 0 3 -2 3h-123c-2 0 -3 -1 -3 -3zM208 67v10c0 2 0 3 -2 3h-155c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h155c2 0 2 2 2 3zM240 195v10c0 2 0 3 -2 3h-187c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h187c2 0 2 2 2 3zM193 270h60l-71 78
+v-66c0 -6 5 -12 11 -12z" />
+    <glyph glyph-name="ion-document" unicode="&#xf12f;" horiz-adv-x="288" 
+d="M287 279c1 -3 1 -5 1 -9v-244c0 -13 -9 -26 -21 -26h-243c-12 0 -24 13 -24 26v335c0 13 12 23 24 23h160c3 0 6 0 9 -2c2 -1 5 -2 7 -4l83 -92c2 -2 3 -4 4 -7zM193 337v-63h58zM32 32h224v210h-67c-15 0 -28 13 -28 28v82h-129v-320z" />
+    <glyph glyph-name="ion-drag" unicode="&#xf130;" horiz-adv-x="512" 
+d="M0 272v32h512v-32h-512zM0 176v32h512v-32h-512zM0 80v32h512v-32h-512z" />
+    <glyph glyph-name="ion-earth" unicode="&#xf276;" 
+d="M325 322c2 -4 7 -12 3 -15c-3 -2 -10 -2 -13 5s0 11 -5 9s-7 3 -6 4c1 2 3 3 5 4c0 2 -4 8 2 7c4 -1 12 -10 14 -14zM344 277v0v0zM403 251c0 0 -2 0 0 0v0zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM141 19l8 -4
+c3 -1 6 -2 10 -3c14 -5 28 -8 43 -10c28 -3 56 -1 83 8c15 5 30 11 43 20c6 4 6 16 10 24c8 16 -2 33 12 47c12 14 4 19 4 34c0 10 8 18 4 29c-1 4 -7 -3 -9 1c-5 7 -21 1 -28 2c-13 2 -24 14 -33 23c-5 5 0 20 1 26c4 15 0 33 19 38c5 1 5 9 10 11c5 1 10 3 15 4
+c9 1 17 -2 26 -2c10 0 14 -5 22 -11c7 -6 13 -3 22 -5c7 0 0 5 -2 8c-3 2 -6 2 -8 2c-16 4 -23 22 -36 30c-6 3 -9 2 -11 0c-1 -1 1 -12 1 -12c-1 -3 -10 -4 -13 -5c-9 -2 -29 17 -15 22c4 1 27 5 24 15c-3 6 2 13 -5 14c-8 1 -7 7 -15 8c-5 1 -5 11 -5 14c0 9 2 6 9 7
+c-17 11 -37 19 -57 24c-1 -3 -5 -12 -8 -12c-5 -1 -6 0 -9 -3c-9 -10 -16 -28 -25 -7c-4 11 5 19 2 28h-6h-3c6 -12 -5 -18 -8 -19c-8 0 -10 5 -17 4c-4 -1 -7 4 -11 2s-13 -8 -14 -12c-3 -12 6 -13 14 -6c6 6 17 12 25 6c6 -5 5 -9 5 -14s-1 -18 -9 -16c-4 1 -7 6 -11 3
+c-8 -7 -18 -6 -29 -9c-10 -2 -16 -6 -25 -9c-8 -3 -11 -4 -12 -12c0 -2 0 -14 -3 -15c-5 -2 -8 22 -22 20c-12 -1 -30 -13 -25 -28c2 -5 28 -3 10 -14c-2 -1 2 -17 2 -20c1 -8 13 -18 21 -10c6 6 6 5 14 2c15 -8 33 -15 45 -27c6 -6 9 -24 17 -28c9 -5 19 -5 26 -14
+c6 -7 -2 -19 -8 -23c-4 -2 -12 -24 -16 -29c-2 -4 -12 -6 -16 -7c-3 0 -7 -9 -9 -11c-7 -7 -8 -13 -17 -19c-18 -12 -22 -23 -18 -44c2 -8 5 -13 11 -16zM100 46l2 -2c7 -6 15 -11 23 -16c-21 21 -23 49 -21 78l3 24c1 3 -4 7 -4 11c0 10 0 5 -8 13c-4 4 -10 11 -12 17
+c-7 16 1 30 10 43c9 14 -7 20 -10 32c-1 6 -7 6 -6 12c1 7 -4 5 -9 9c-12 8 -1 20 -7 26c-43 -70 -36 -162 16 -224c1 -1 0 -1 1 -2h1c3 -4 6 -8 9 -11s7 -6 10 -9z" />
+    <glyph glyph-name="ion-easel" unicode="&#xf3c2;" 
+d="M48 112v192h352v-192h-352zM432 352c9 0 16 -7 16 -16v-256c0 -9 -7 -16 -16 -16h-416c-9 0 -16 7 -16 16v256c0 9 7 16 16 16h416zM416 96v224h-384v-224h384zM48 -32l29 80h31l-28 -80h-32zM239 416l17 -48h-64l17 48h30zM340 48h31l29 -80h-32zM208 0v48h32v-48h-32z
+" />
+    <glyph glyph-name="ion-edit" unicode="&#xf2bf;" 
+d="M381 259l-250 -251l-91 91l251 250zM440 360c12 -12 11 -32 -2 -45l-45 -45l-91 91l45 45c13 13 33 14 45 2zM32 85l85 -85l-117 -32z" />
+    <glyph glyph-name="ion-egg" unicode="&#xf277;" horiz-adv-x="320" 
+d="M160 416c64 0 160 -133 160 -257s-64 -191 -160 -191s-160 67 -160 191s96 257 160 257z" />
+    <glyph glyph-name="ion-eject" unicode="&#xf131;" horiz-adv-x="320" 
+d="M303 128h-286v0c-10 0 -17 7 -17 16c0 3 1 5 3 8l138 191c5 5 11 9 19 9s14 -4 19 -9l138 -190c2 -3 3 -6 3 -9c0 -9 -7 -16 -17 -16v0zM308 96c7 0 12 -5 12 -12v-40c0 -7 -5 -12 -12 -12h-296c-7 0 -12 5 -12 12v40c0 7 5 12 12 12h296z" />
+    <glyph glyph-name="ion-email-unread" unicode="&#xf3c3;" horiz-adv-x="480" 
+d="M352 288c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM209 288h127c0 -17 5 -33 15 -47c-6 -3 -14 -8 -22 -12s-16 -8 -23 -12s-14 -8 -22 -12s-15 -8 -21 -11s-11 -6 -16 -9s-9 -5 -12 -7s-4 -3 -5 -3c-6 -3 -13 -4 -21 -4s-15 1 -21 4
+c-1 1 -15 8 -42 23s-54 29 -81 44s-43 23 -46 25c-7 4 -12 8 -13 11c-1 4 -1 6 1 8s6 2 11 2h191zM277 175c18 11 45 30 83 56c16 -15 34 -23 56 -23v-155c0 -2 -1 -4 -2 -7s-3 -5 -5 -7s-4 -4 -7 -5s-6 -2 -8 -2h-185h-185c-5 0 -11 2 -16 7s-8 9 -8 14v205c0 6 3 8 9 5
+c2 -1 11 -7 26 -17s32 -22 53 -36s39 -26 53 -35l-83 -93c-2 -2 -2 -4 -1 -5c2 -1 4 -1 6 1l98 83c16 -10 25 -16 27 -17c6 -3 13 -4 21 -4s15 1 21 4c2 1 11 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5z" />
+    <glyph glyph-name="ion-email" unicode="&#xf132;" horiz-adv-x="416" 
+d="M19 299c-4 2 -11 7 -13 11c-3 8 1 10 12 10h191h191c11 0 15 -2 12 -10c-2 -4 -9 -9 -13 -11c-11 -6 -163 -89 -169 -92s-12 -4 -21 -4s-15 1 -21 4s-158 86 -169 92zM408 295c9 4 8 -1 8 -5v-205c0 -9 -12 -21 -22 -21h-185h-185c-10 0 -24 12 -24 21v205s0 9 9 5
+c8 -4 83 -56 132 -88l-83 -93c-2 -2 -2 -4 -1 -5s4 -1 6 1l98 83c15 -10 25 -16 27 -17c8 -4 14 -4 21 -4s13 0 21 4c2 1 12 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5l-82 93c49 32 123 84 131 88z" />
+    <glyph glyph-name="ion-erlenmeyer-flask-bubbles" unicode="&#xf3c4;" horiz-adv-x="384" 
+d="M382 21c2 -4 3 -10 0 -14s-8 -7 -13 -7h-177h-178c-5 0 -9 3 -12 7s-2 10 0 14l118 199v150c0 8 6 14 14 14s15 -6 15 -14v-80c4 3 10 5 16 5c15 0 27 -12 27 -27s-12 -26 -27 -26c-6 0 -12 2 -16 5v-31c0 -2 -1 -4 -2 -6l-35 -59h72c-15 6 -26 20 -26 37
+c0 23 19 42 43 42c15 0 27 -8 35 -19c-1 2 -1 3 -1 5v154c0 8 6 14 14 14s15 -6 15 -14v-150zM218 151h53l-31 54c2 -5 3 -11 3 -17c0 -17 -10 -31 -25 -37zM201 319c-12 0 -22 9 -22 21s10 21 22 21s22 -9 22 -21s-10 -21 -22 -21z" />
+    <glyph glyph-name="ion-erlenmeyer-flask" unicode="&#xf3c5;" horiz-adv-x="384" 
+d="M375 52c6 -9 9 -20 9 -32c0 -28 -16 -52 -63 -52h-258c-47 0 -63 24 -63 52c0 12 3 23 9 32l49 73l49 77c13 20 21 44 21 70v92s-14 34 -16 43c-2 8 1 9 17 9h126c16 0 18 -1 16 -9c-2 -9 -15 -22 -15 -42v-93c0 -26 6 -50 19 -70zM345 7c3 3 7 8 7 14c0 5 -2 10 -4 14
+l-101 150c-16 26 -23 56 -23 87v112h-64v-112c0 -32 -9 -62 -25 -87l-99 -150c-2 -4 -4 -9 -4 -14c0 -6 3 -11 6 -14c4 -4 12 -7 25 -7h258c13 0 20 3 24 7zM325 37c1 -2 3 -6 3 -8c0 -7 -6 -15 -14 -15h-244c-7 0 -14 6 -14 14c0 3 1 6 3 8l81 124h103l82 -124v1zM238 106
+c2 -1 4 -2 6 -2s3 0 5 2c1 2 3 4 3 6s-1 4 -3 6c-1 2 -3 2 -5 2s-4 0 -6 -2c-1 -2 -2 -4 -2 -6s0 -4 2 -6zM285 47c4 2 4 7 2 11l-23 36c-1 2 -4 4 -7 4c-2 0 -3 0 -4 -1c-4 -2 -4 -7 -2 -11l23 -36c1 -2 5 -4 7 -4c1 0 3 0 4 1z" />
+    <glyph glyph-name="ion-eye-disabled" unicode="&#xf306;" 
+d="M344 290c41 -27 76 -66 104 -100c-51 -54 -124 -135 -224 -135c-36 0 -65 8 -92 22l-77 -77l-23 23l71 71c-36 25 -68 61 -103 98c78 85 142 137 224 137c34 0 64 -9 92 -23l77 78l23 -23zM134 192c0 -19 6 -36 16 -51l27 27c-4 7 -5 15 -5 24c0 29 23 53 52 53h8
+c-5 -6 -8 -13 -8 -21c0 -3 0 -5 1 -8l51 50c-15 11 -33 17 -52 17c-49 0 -90 -41 -90 -91zM224 101c49 0 90 41 90 91c0 19 -6 37 -16 52l-50 -51c3 -1 5 -1 8 -1c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53c-9 0 -17 2 -24 6l-28 -27c15 -11 33 -17 52 -17z" />
+    <glyph glyph-name="ion-eye" unicode="&#xf133;" 
+d="M224 320c99 0 172 -70 224 -129c-51 -50 -124 -127 -224 -127s-157 60 -224 128c78 79 142 128 224 128zM224 101c49 0 90 41 90 91s-41 91 -90 91s-90 -41 -90 -91s41 -91 90 -91zM224 224c0 -18 14 -32 32 -32c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53s-52 24 -52 53
+s23 53 52 53h8c-5 -6 -8 -13 -8 -21z" />
+    <glyph glyph-name="ion-female" unicode="&#xf278;" horiz-adv-x="256" 
+d="M160 164v-68h64v-64h-64v-64h-64v64h-64v64h64v68c-55 14 -96 64 -96 124c0 71 57 128 128 128s128 -57 128 -128c0 -60 -41 -110 -96 -124zM128 208c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
+    <glyph glyph-name="ion-filing" unicode="&#xf134;" horiz-adv-x="384" 
+d="M317 319c12 0 19 0 19 -20v-28h-288v28c0 20 8 20 20 20h249zM269 352c13 0 19 -1 19 -19h-192c0 18 7 19 20 19h153zM368 278c13 -8 17 -17 15 -41l-17 -184c-4 -21 -16 -21 -24 -21h-300c-8 0 -20 0 -24 21l-17 185c-3 26 1 31 15 40l15 10v-32h321v32z" />
+    <glyph glyph-name="ion-film-marker" unicode="&#xf135;" horiz-adv-x="416" 
+d="M400 240c9 0 16 -7 16 -15v-210c0 -8 -7 -15 -16 -15h-384c-9 0 -16 7 -16 15v210c0 8 6 14 13 15c-2 2 -3 4 -4 7l-9 45c-2 8 5 16 13 18l370 74c8 2 16 -4 18 -12l9 -46c2 -8 -4 -16 -12 -18l-342 -68h344zM257 46l-20 58l51 36h-62l-20 58l-19 -58h-63l51 -36l-19 -58
+l50 36z" />
+    <glyph glyph-name="ion-fireball" unicode="&#xf319;" horiz-adv-x="320" 
+d="M297 210c14 -24 23 -52 23 -82c0 -33 -10 -63 -26 -88v0v0c-29 -43 -78 -72 -134 -72c-17 0 -32 1 -46 7s-25 13 -33 25c-11 16 -17 28 -21 52c-6 -25 2 -48 9 -60c-43 26 -69 71 -69 125v4c5 78 65 109 90 151c8 14 13 30 10 48c11 -9 15 -25 15 -39
+c0 -16 -3 -29 -3 -29c4 8 7 18 9 31c6 35 2 85 -37 132l-1 1s7 0 18 -3c95 -16 169 -91 184 -186c2 -12 3 -23 3 -35c0 -16 -2 -32 -5 -47c10 23 13 43 14 55v10z" />
+    <glyph glyph-name="ion-flag" unicode="&#xf279;" horiz-adv-x="384" 
+d="M362 266c0 0 12 2 22 6c0 -16 -7 -32 -9 -36c-28 -50 -99 -123 -181 -84c-65 31 -92 30 -117 24c-1 0 -2 -1 -3 -1c-3 -1 -15 -5 -26 -1v197c0 16 14 31 33 35c39 7 106 5 148 -74c39 -74 97 -72 133 -66zM24 416c4 0 8 -4 8 -8v-432c0 -4 -4 -8 -8 -8h-16
+c-4 0 -8 4 -8 8v432c0 4 4 8 8 8h16z" />
+    <glyph glyph-name="ion-flame" unicode="&#xf31a;" horiz-adv-x="256" 
+d="M1 128c-11 109 72 224 159 288c-26 -145 97 -142 96 -288c-1 -120 -105 -160 -128 -160s-114 26 -127 160zM88 80c0 -44 40 -80 40 -80s41 36 41 80s-41 80 -41 80s-40 -36 -40 -80z" />
+    <glyph glyph-name="ion-flash-off" unicode="&#xf136;" 
+d="M115 -4c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2c12 -4 24 -9 35 -15v0c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 8 -35 14zM86 291c-20 -28 -32 -62 -32 -99
+c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2c37 0 71 12 99 32l-52 53l36 40l55 -54c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -72 -12 -100 -32
+l53 -52l-36 -41zM178 58l38 113h-85l139 155l-38 -113h85z" />
+    <glyph glyph-name="ion-flash" unicode="&#xf137;" horiz-adv-x="320" 
+d="M0 160l224 256l-51 -192h147l-224 -256l51 192h-147z" />
+    <glyph glyph-name="ion-folder" unicode="&#xf139;" horiz-adv-x="384" 
+d="M366 256c18 0 19 -7 18 -18l-12 -186c-1 -11 -3 -20 -21 -20h-317c-18 0 -20 9 -21 20l-13 184c-1 11 0 20 18 20h348zM362 305l2 -33h-344c0 6 4 46 6 63c2 18 8 17 25 17h75c28 0 23 0 37 -15c16 -18 19 -17 41 -17h143c11 0 15 -3 15 -15z" />
+    <glyph glyph-name="ion-fork-repo" unicode="&#xf2c0;" horiz-adv-x="320" 
+d="M320 368v-64h-48v-48h-64v48h-48v64h48v48h64v-48h48zM208 208h64v-5v0c0 -43 -7 -70 -38 -95c-23 -19 -51 -20 -75 -22c-9 -1 -18 -2 -26 -3c-6 -1 -13 -5 -20 -10c9 -11 15 -25 15 -41c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55
+c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-160c8 4 18 7 27 9c11 2 21 2 31 3c17 1 33 3 40 9c10 8 14 11 14 50zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32
+s14 -32 32 -32z" />
+    <glyph glyph-name="ion-fork" unicode="&#xf27a;" horiz-adv-x="128" 
+d="M78 299v0v0v0zM128 282c0 -26 -15 -48 -37 -58c-12 -6 -11 -11 -11 -11s16 -200 16 -213s-3 -18 -9 -24s-15 -8 -23 -8v0v0c-8 0 -16 2 -22 8s-10 13 -10 24s16 213 16 213s0 6 -11 11c-22 10 -37 32 -37 58c0 43 15 93 24 134h8v-117c0 -6 3 -11 9 -11s9 4 10 10v1
+l9 117h8l10 -117v-1c1 -6 3 -10 9 -10s9 5 9 11v117h8v0c9 -40 24 -91 24 -134z" />
+    <glyph glyph-name="ion-forward" unicode="&#xf13a;" horiz-adv-x="384" 
+d="M224 150c-102 0 -171 -9 -224 -102c0 0 37 208 224 208v80l160 -144l-160 -134v92z" />
+    <glyph glyph-name="ion-funnel" unicode="&#xf31b;" 
+d="M224 416c124 0 224 -36 224 -80c0 -8 -3 -15 -9 -22v0c-35 -43 -151 -179 -151 -218v-4v-83v0c0 -23 -29 -41 -64 -41s-64 18 -64 41v0v87c0 39 -117 177 -149 216v0c-7 8 -11 16 -11 24c0 44 100 80 224 80zM224 288c92 0 176 22 176 48s-83 48 -176 48
+s-176 -22 -176 -48s84 -48 176 -48z" />
+    <glyph glyph-name="ion-gear-a" unicode="&#xf13d;" horiz-adv-x="384" 
+d="M347 192c0 -24 15 -43 37 -56c-4 -13 -10 -26 -16 -38c-25 6 -45 -3 -62 -20s-22 -37 -16 -62c-12 -6 -25 -12 -38 -16c-13 22 -36 37 -60 37s-47 -15 -60 -37c-13 4 -27 10 -39 16c6 25 2 45 -15 62s-37 21 -62 15c-6 12 -12 26 -16 39c22 13 37 36 37 60s-15 43 -37 56
+c4 13 9 26 16 38c25 -6 45 3 62 20s21 37 15 62c12 6 26 12 39 16c13 -22 36 -37 60 -37s47 15 60 37c13 -4 27 -10 39 -16c-6 -25 -2 -45 15 -62s37 -26 62 -20c6 -12 12 -25 16 -38c-22 -13 -37 -32 -37 -56zM192 94c54 0 98 44 98 98s-44 98 -98 98s-98 -44 -98 -98
+s44 -98 98 -98z" />
+    <glyph glyph-name="ion-gear-b" unicode="&#xf13e;" horiz-adv-x="384" 
+d="M384 154h-44c-4 -14 -10 -27 -17 -39l32 -32l-54 -54l-33 32c-12 -7 -24 -11 -38 -15v-46h-76v46c-13 4 -26 8 -38 15l-33 -32l-54 54l32 32c-7 12 -13 25 -17 39h-44v76h43c4 14 9 29 16 41l-30 30l54 54l29 -29c13 8 27 13 42 17v41h76v-41c15 -4 29 -9 42 -17l29 29
+l54 -54l-30 -30c7 -12 13 -27 16 -41h43v-76zM192 138c30 0 54 24 54 54s-24 54 -54 54s-54 -24 -54 -54s24 -54 54 -54z" />
+    <glyph glyph-name="ion-grid" unicode="&#xf13f;" horiz-adv-x="320" 
+d="M64 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 167
+c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 39
+c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50z" />
+    <glyph glyph-name="ion-hammer" unicode="&#xf27b;" horiz-adv-x="320" 
+d="M314 416c3 0 6 -3 6 -6v-84c0 -3 -3 -6 -6 -6h-52c-3 0 -6 3 -6 6v14c-6 5 -16 9 -22 7c-7 -2 -23 -13 -30 -25s-6 -28 -6 -66l8 -2c5 -1 7 -6 7 -9v-70c0 -95 11 -201 11 -201c0 -3 -3 -6 -6 -6h-84c-3 0 -6 3 -6 6c0 0 11 106 11 201v70c0 3 3 8 7 9l7 2
+c0 43 -5 58 -22 74c-18 16 -41 19 -63 17s-51 -35 -58 -45s-10 2 -10 11c1 16 22 60 72 81s91 22 102 22s27 -1 38 -3s16 -18 26 -18c7 0 14 5 18 9v6c0 3 3 6 6 6h52z" />
+    <glyph glyph-name="ion-happy-outline" unicode="&#xf3c6;" 
+d="M355 158c8 -4 11 -13 7 -21c-24 -46 -78 -73 -138 -73c-62 0 -118 29 -139 74c-4 8 0 17 8 21c2 1 5 1 7 1c6 0 11 -3 14 -9c16 -34 60 -55 110 -55c49 0 92 21 110 56c3 5 8 8 14 8c3 0 5 -1 7 -2zM381 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6
+s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22c11 14 23 23 44 23s35 -9 45 -23zM157 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22
+c11 14 23 23 44 23s35 -9 45 -23zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56
+s100 20 136 56z" />
+    <glyph glyph-name="ion-happy" unicode="&#xf31c;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM71 195c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23c-6 -7 -5 -16 3 -22zM362 137
+c4 8 1 17 -7 21c-2 1 -4 2 -7 2c-6 0 -11 -3 -14 -8c-18 -35 -61 -56 -110 -56c-50 0 -94 21 -110 55c-3 6 -8 9 -14 9c-2 0 -5 0 -7 -1c-8 -4 -12 -13 -8 -21c21 -45 77 -74 139 -74c60 0 114 27 138 73zM377 195c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23
+c-6 -7 -5 -16 3 -22c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3z" />
+    <glyph glyph-name="ion-headphone" unicode="&#xf140;" horiz-adv-x="384" 
+d="M383 210c3 -51 -3 -130 -13 -162c-20 -67 -40 -80 -72 -80s-58 27 -58 59v106c0 33 23 59 53 59c18 0 34 -9 44 -24c0 0 11 7 13 22s4 34 -5 64s-21 19 -36 38c-2 3 -5 7 -8 10l-10 10c-2 2 -3 3 -5 4c-11 9 -21 17 -34 23c-19 9 -39 13 -60 13s-42 -4 -61 -13
+c-13 -6 -22 -14 -33 -23c-2 -1 -3 -2 -5 -4l-10 -10s-6 -7 -8 -10c-15 -19 -27 -8 -36 -38c-9 -31 -7 -49 -5 -64s13 -22 13 -22c10 15 26 24 44 24c30 0 53 -27 53 -59v-106c0 -32 -26 -59 -58 -59s-52 13 -72 80c-10 32 -16 111 -13 162c3 60 22 108 56 145v0
+c8 8 15 16 24 23s19 13 29 18c25 13 53 20 82 20s57 -7 82 -20c10 -5 19 -11 28 -18s17 -15 25 -23v0c34 -37 53 -85 56 -145z" />
+    <glyph glyph-name="ion-heart-broken" unicode="&#xf31d;" horiz-adv-x="416" 
+d="M181 160c0 -36 -2 -71 4 -107c2 -10 2 -20 2 -31l-153 159c-45 47 -45 124 0 171c40 41 103 43 144 3c-2 -15 -3 -31 -3 -46c-18 -14 -40 -21 -56 -39l11 7c17 11 15 8 35 14c3 1 8 3 11 5c0 -1 -1 -5 -1 -6c1 -20 11 -39 15 -60c0 -5 1 -10 -1 -15c-8 -17 -7 -37 -8 -55
+zM274 147c8 -18 23 -29 38 -39l-104 -108l-17 18c0 13 -4 26 -4 38c-2 48 10 94 21 142v0c1 -1 2 -1 3 -1c30 -6 52 -24 63 -50zM382 352c46 -47 46 -124 0 -171l-68 -70c-28 24 -42 54 -65 81c-12 13 -26 23 -41 32c-3 13 -8 26 -11 39c-3 12 14 21 16 31c3 12 3 26 3 39
+l19 19c40 42 107 42 147 0z" />
+    <glyph glyph-name="ion-heart" unicode="&#xf141;" horiz-adv-x="416" 
+d="M382 352c46 -47 46 -124 0 -171l-174 -181l-174 181c-46 47 -46 124 0 171c40 42 107 42 147 0l27 -28l28 28c40 42 106 42 146 0z" />
+    <glyph glyph-name="ion-help-buoy" unicode="&#xf27c;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM402 264c-10 24 -23 45 -42 64s-41 32 -65 42l-19 -61c14 -6 27 -15 38 -26s21 -24 27 -38zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM88 328
+c-19 -19 -32 -41 -42 -65l61 -19c6 14 15 27 26 38s24 21 38 27l-19 61c-24 -10 -45 -23 -64 -42zM46 120c10 -24 23 -45 42 -64s41 -32 65 -42l19 61c-14 6 -27 15 -38 26s-21 24 -27 38zM360 56c19 19 32 41 42 65l-61 19c-6 -14 -15 -27 -26 -38s-24 -21 -38 -27l19 -61
+c24 10 45 23 64 42z" />
+    <glyph glyph-name="ion-help-circled" unicode="&#xf142;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM244 89c1 18 -12 31 -29 31c-16 0 -30 -11 -30 -29s12 -30 28 -30c17 0 31 10 31 28zM293 217c7 10 12 22 12 36c0 23 -9 40 -25 52c-17 13 -37 18 -62 18
+c-19 0 -34 -4 -47 -13c-19 -13 -28 -34 -28 -68h49c0 9 -1 19 4 27s13 15 26 15s19 -3 25 -11c5 -7 8 -15 8 -23c0 -7 -4 -14 -8 -20c-2 -4 -6 -7 -10 -10c0 0 -26 -15 -35 -30c-7 -11 -9 -24 -10 -41c0 -1 0 -4 4 -4h39s5 3 5 4c0 6 1 15 2 19c2 7 6 12 12 17l14 9
+c12 9 21 17 25 23z" />
+    <glyph glyph-name="ion-help" unicode="&#xf143;" horiz-adv-x="256" 
+d="M217 371c25 -19 39 -46 39 -83c0 -22 -8 -42 -19 -57c-7 -9 -21 -21 -40 -36l-21 -14c-10 -8 -17 -18 -20 -28c-2 -6 -3 -19 -3 -29c0 -2 -1 -6 -7 -6h-62c-7 0 -7 3 -7 5c1 26 4 49 15 66c15 23 57 48 57 48c6 5 11 9 15 15c7 10 12 21 12 32c0 13 -3 26 -11 36
+c-10 12 -21 18 -41 18s-32 -11 -40 -24s-7 -29 -7 -43h-77c0 54 14 88 44 108c20 14 45 20 75 20c39 0 70 -7 98 -28zM114 78c27 -1 47 -20 46 -48s-22 -46 -49 -45c-26 1 -46 19 -45 47s22 47 48 46z" />
+    <glyph glyph-name="ion-home" unicode="&#xf144;" horiz-adv-x="384" 
+d="M384 160h-48v-160h-96v128h-96v-128h-96v160h-48l192 224z" />
+    <glyph glyph-name="ion-icecream" unicode="&#xf27d;" horiz-adv-x="320" 
+d="M32 192h256l-128 -224zM307 275c8 -5 13 -13 13 -23c0 -16 -14 -28 -30 -28h-4h-252h-4c-16 0 -30 13 -30 28c0 10 6 18 14 23c1 0 1 2 2 2c4 3 7 7 8 12v1c-2 6 -2 12 -2 18c0 42 34 76 76 76c8 0 16 -2 23 -4c-3 -12 -4 -31 -4 -31c2 15 11 29 11 29c18 23 46 38 77 38
+c53 0 96 -43 96 -96c0 -11 -2 -21 -5 -30v-1c0 -4 4 -9 8 -12c1 0 2 -2 3 -2z" />
+    <glyph glyph-name="ion-image" unicode="&#xf147;" 
+d="M336 224c-26 0 -48 22 -48 48s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM420 384c16 0 28 -12 28 -28v-328c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v328c0 16 12 28 28 28h392zM317 186l99 -106v260c0 7 -6 12 -13 12h-358c-7 0 -12 -5 -13 -12v-260l126 152
+c4 4 10 8 17 8s13 -2 17 -7l54 -59l4 -4c3 -2 7 -4 11 -4s8 2 12 5l18 16c4 3 8 5 13 5s10 -2 13 -6z" />
+    <glyph glyph-name="ion-images" unicode="&#xf148;" 
+d="M426 308c13 -1 23 -12 22 -24l-14 -263c-1 -13 -12 -22 -25 -21l-330 16c-13 1 -23 10 -22 23l2 46l-15 -1c-12 -1 -22 7 -23 18l-21 236c-1 11 7 21 19 22l296 24c12 1 22 -7 23 -18l5 -54zM71 302c1 12 11 22 24 22l219 -11l-2 31h-1v1c-1 5 -5 8 -10 8l-261 -22
+c-5 0 -10 -4 -10 -9v0v-1l16 -178l18 25zM405 66l10 198v1v0c0 6 -5 10 -11 10l-58 3l-29 2l-204 9c-6 0 -11 -4 -12 -9v0v-1l-3 -63l-7 -128v-7l6 7l102 109c4 4 8 6 14 6s11 -3 14 -7l43 -49l3 -3c2 -2 6 -4 10 -4s5 1 9 3l17 12c4 3 7 4 11 4s9 -2 11 -5l27 -33zM341 186
+c-20 0 -35 15 -35 35s16 35 35 35c20 0 35 -16 35 -35s-16 -35 -35 -35z" />
+    <glyph glyph-name="ion-information-circled" unicode="&#xf149;" 
+d="M448 195c2 -124 -97 -225 -221 -227s-225 97 -227 221s97 225 221 227s225 -97 227 -221zM224 336c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM268 53v11h-22v172h-66v-12h22v-160h-22v-11h88z" />
+    <glyph glyph-name="ion-information" unicode="&#xf14a;" horiz-adv-x="128" 
+d="M96 0h32v-16h-128v16h32v240h-32v16h96v-256zM64 304c-27 0 -48 21 -48 48s21 48 48 48s48 -21 48 -48s-21 -48 -48 -48z" />
+    <glyph glyph-name="ion-ionic" unicode="&#xf14b;" horiz-adv-x="416" 
+d="M376 315c25 -34 40 -77 40 -123c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208c46 0 89 -15 123 -40c5 3 11 5 18 5c18 0 32 -14 32 -32c0 -7 -2 -13 -5 -18zM344 56c18 18 31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-6 13 -13 26 -21 38
+c-4 -2 -10 -4 -15 -4c-18 0 -32 14 -32 32c0 5 2 11 4 15c-12 8 -25 15 -38 21c-24 10 -49 15 -75 15s-51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75s5 -51 15 -75c10 -23 23 -43 41 -61s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15
+c23 10 43 23 61 41zM112 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96z" />
+    <glyph glyph-name="ion-ios-alarm-outline" unicode="&#xf3c7;" horiz-adv-x="404" 
+d="M384 256l-54 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l36 -45l-12 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 71 -43 115c0 51 22 97 57 129l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82
+h5c20 0 39 -7 54 -18l-54 -52l11 -11c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -8 -38 -20 -52zM22 280l91 89c-9 5 -19 7 -32 6c-37 -2 -65 -32 -65 -67c0 -10 2 -19 6 -28z
+M362 172c0 88 -72 158 -160 158s-160 -70 -160 -158s72 -158 160 -158s160 70 160 158zM291 369l91 -89c4 9 6 18 6 28c0 35 -28 65 -65 67c-13 1 -23 -1 -32 -6zM202 288h16v-144h-112v16h96v128z" />
+    <glyph glyph-name="ion-ios-alarm" unicode="&#xf3c8;" horiz-adv-x="404" 
+d="M385 256l-55 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l37 -45l-13 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 70 -43 114c0 51 22 98 57 130l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82
+h5c20 0 39 -7 54 -18l-54 -53l11 -10c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -7 -38 -19 -52zM218 144v144h-16v-128h-96v-16h112z" />
+    <glyph glyph-name="ion-ios-albums-outline" unicode="&#xf3c9;" 
+d="M432 304h-416v-288h416v288zM448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" />
+    <glyph glyph-name="ion-ios-albums" unicode="&#xf3ca;" 
+d="M448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" />
+    <glyph glyph-name="ion-ios-americanfootball-outline" unicode="&#xf3cb;" horiz-adv-x="416" 
+d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM17 383c-2 -19 -5 -60 0 -107c1 -8 2 -16 3 -23l127 127c-25 3 -51 5 -78 5v0v0c-22 0 -41 -1 -52 -2zM96 80c30 -30 72 -53 124 -66
+c10 -3 20 -5 31 -7l142 142c-4 22 -10 44 -17 63c-14 37 -32 68 -56 92c-30 30 -72 53 -124 66c-10 3 -20 5 -31 7l-142 -142c4 -22 10 -44 17 -63c14 -37 32 -68 56 -92zM399 1c2 19 5 60 0 107c-1 8 -2 16 -3 23l-127 -127c25 -3 51 -5 78 -5c22 0 41 1 52 2zM259 130
+l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-22 23l-29 -29l-11 12l67 67l12 -11l-29 -29l23 -22l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l22 -23l29 29l12 -12
+l-29 -28l22 -23l29 29l11 -12l-67 -67l-12 11l29 29z" />
+    <glyph glyph-name="ion-ios-americanfootball" unicode="&#xf3cc;" horiz-adv-x="416" 
+d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM20 253l3 -18l142 142l-18 3zM219 113l12 -12l28 29l23 -22l-29 -29l12 -11l67 67l-11 12l-29 -29l-22 23l29 28l-12 12l-28 -29
+l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 22l29 29l-12 11l-67 -67l11 -12l29 29l22 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23zM269 4l127 127l-3 18l-142 -142z" />
+    <glyph glyph-name="ion-ios-analytics-outline" unicode="&#xf3cd;" 
+d="M224 400c-28 0 -55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45s35 41 45 66c11 26 16 53 16 81s-5 55 -16 81
+c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM76 128c-25 0 -41 18 -42 19c-3 3 -2 9 1 12s8 2 11 -1c1 -1 15 -17 36 -14c12 2 27 26 38 42c4 6 9 12 12 16
+c17 21 34 23 45 21c24 -3 45 -28 54 -50c7 -18 18 -28 32 -29c15 -1 31 11 43 30c1 2 3 4 4 7c9 17 24 43 52 43c31 0 52 -35 53 -36c2 -4 1 -9 -3 -11s-9 -1 -11 3c0 0 -5 8 -12 15c-6 6 -16 13 -27 13c-18 0 -29 -19 -38 -35c-1 -3 -3 -5 -4 -7c-15 -25 -36 -40 -58 -38
+c-20 1 -36 15 -46 39s-28 39 -41 41c-11 1 -21 -4 -31 -16c-3 -4 -6 -9 -10 -15c-14 -20 -31 -45 -50 -48c-3 0 -5 -1 -8 -1z" />
+    <glyph glyph-name="ion-ios-analytics" unicode="&#xf3ce;" 
+d="M224 416c124 0 224 -100 224 -224c0 -13 -1 -25 -3 -37c-1 -6 -2 -12 -3 -17c-24 -98 -113 -170 -218 -170c-122 0 -221 98 -224 219v5c0 9 1 17 2 26c13 111 107 198 222 198zM431 168c1 8 1 16 1 24c0 28 -5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45
+c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81v0c14 -21 29 -34 29 -34h1v-1c1 -1 15 -16 36 -13c12 2 27 26 38 42c4 6 9 12 12 16c17 21 34 23 45 21c24 -3 45 -27 54 -50c7 -18 18 -28 32 -29c15 -1 31 9 43 29
+c1 2 3 4 4 7c9 17 24 44 52 44c31 0 52 -35 53 -36c3 -4 9 -12 16 -20z" />
+    <glyph glyph-name="ion-ios-arrow-back" unicode="&#xf3cf;" horiz-adv-x="192" 
+d="M192 320l-127 -128l127 -128l-32 -32l-160 160v0v0l160 160z" />
+    <glyph glyph-name="ion-ios-arrow-down" unicode="&#xf3d0;" horiz-adv-x="320" 
+d="M301 288l19 -21l-160 -171l-160 171l19 21l141 -150z" />
+    <glyph glyph-name="ion-ios-arrow-forward" unicode="&#xf3d1;" horiz-adv-x="192" 
+d="M0 320l32 32l160 -160v0v0l-160 -160l-32 32l127 128z" />
+    <glyph glyph-name="ion-ios-arrow-left" unicode="&#xf3d2;" horiz-adv-x="192" 
+d="M192 333l-150 -141l150 -141l-21 -19l-171 160l171 160z" />
+    <glyph glyph-name="ion-ios-arrow-right" unicode="&#xf3d3;" horiz-adv-x="192" 
+d="M0 333l21 19l171 -160l-171 -160l-21 19l150 141z" />
+    <glyph glyph-name="ion-ios-arrow-thin-down" unicode="&#xf3d4;" horiz-adv-x="192" 
+d="M190 126c2 -2 2 -4 2 -6s0 -4 -2 -6c0 0 -87 -79 -88 -80s-3 -2 -6 -2s-5 1 -6 2s-88 80 -88 80c-3 3 -3 9 0 12s9 3 12 0l74 -67v285c0 4 4 8 8 8s8 -4 8 -8v-285l74 67c3 3 9 3 12 0z" />
+    <glyph glyph-name="ion-ios-arrow-thin-left" unicode="&#xf3d5;" horiz-adv-x="320" 
+d="M94 98c-2 -2 -4 -2 -6 -2s-4 0 -6 2c0 0 -79 87 -80 88s-2 3 -2 6s1 5 2 6s80 88 80 88c3 3 9 3 12 0s3 -9 0 -12l-67 -74h285c4 0 8 -4 8 -8s-4 -8 -8 -8h-285l67 -74c3 -3 3 -9 0 -12z" />
+    <glyph glyph-name="ion-ios-arrow-thin-right" unicode="&#xf3d6;" horiz-adv-x="320" 
+d="M226 98c-3 3 -3 9 0 12l67 74h-285c-4 0 -8 4 -8 8s4 8 8 8h285l-67 74c-3 3 -3 9 0 12s9 3 12 0c0 0 79 -87 80 -88s2 -3 2 -6s-1 -5 -2 -6s-80 -88 -80 -88c-2 -2 -4 -2 -6 -2s-4 0 -6 2z" />
+    <glyph glyph-name="ion-ios-arrow-thin-up" unicode="&#xf3d7;" horiz-adv-x="192" 
+d="M190 258c-3 -3 -9 -3 -12 0l-74 67v-285c0 -4 -4 -8 -8 -8s-8 4 -8 8v285l-74 -67c-3 -3 -9 -3 -12 0s-3 9 0 12c0 0 87 79 88 80s3 2 6 2s5 -1 6 -2s88 -80 88 -80c2 -2 2 -4 2 -6s0 -4 -2 -6z" />
+    <glyph glyph-name="ion-ios-arrow-up" unicode="&#xf3d8;" horiz-adv-x="320" 
+d="M301 96l-141 150l-141 -150l-19 21l160 171l160 -171z" />
+    <glyph glyph-name="ion-ios-at-outline" unicode="&#xf3d9;" horiz-adv-x="255" 
+d="M236 127v1h19l-3 -6c-3 -6 -13 -19 -22 -27s-18 -14 -28 -20s-21 -10 -32 -13s-23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 11 -26 29 -34 46c-7 16 -10 33 -10 58c0 18 4 38 11 55c7 16 17 30 29 42s27 21 43 28c15 6 33 9 53 9c16 0 32 -3 46 -8
+c15 -5 28 -12 39 -22s17 -21 24 -35c6 -13 8 -26 8 -44c0 -14 -2 -28 -7 -40s-9 -20 -17 -30c-8 -9 -13 -15 -23 -21c-11 -6 -20 -9 -29 -9c-8 0 -15 2 -20 7c-3 2 -5 6 -6 9c-6 -6 -11 -10 -17 -12c-10 -3 -18 -4 -26 -4s-15 1 -21 4s-12 7 -17 12s-8 11 -11 18
+s-5 14 -5 22c0 12 3 24 7 36v2c4 11 5 16 13 26c8 11 17 19 28 26s24 11 38 11c12 0 21 -3 31 -9c7 -4 12 -10 16 -16l6 17h18l-38 -102c-2 -5 -4 -10 -5 -14s-1 -7 -1 -10c0 -2 1 -4 3 -5s4 -2 8 -2c6 0 11 2 20 7c8 4 12 9 19 17c6 8 10 14 14 25s6 23 6 35
+c0 15 -2 25 -7 36c-6 13 -10 22 -19 30s-20 15 -33 20s-27 7 -42 7c-19 0 -35 -3 -48 -9c-15 -6 -27 -14 -37 -24c-11 -10 -19 -23 -25 -37c-6 -15 -10 -32 -10 -48c0 -22 2 -36 8 -49c6 -15 17 -31 28 -41s24 -18 38 -23s30 -7 46 -7c10 0 20 1 30 4s18 6 27 11
+s17 11 24 18s14 13 19 21zM147 154c4 5 8 12 11 20l21 57c-2 5 -4 10 -7 13c-3 4 -6 6 -10 8c-1 0 -1 1 -2 1c-3 2 -5 3 -9 4c-5 1 -9 2 -13 2c-10 0 -19 -3 -28 -9s-17 -13 -23 -22c-5 -8 -7 -11 -10 -20c0 -1 -1 -3 -1 -4c-4 -11 -5 -20 -5 -30c0 -6 1 -11 3 -16
+s5 -9 8 -13s7 -6 12 -8s9 -3 15 -3c4 0 9 1 14 2c4 1 8 2 12 5s8 7 12 13z" />
+    <glyph glyph-name="ion-ios-at" unicode="&#xf3da;" horiz-adv-x="256" 
+d="M228 128v0h28c-1 -1 -2 -4 -3 -6c-4 -6 -14 -19 -23 -27s-18 -14 -28 -20s-20 -10 -32 -13c-11 -3 -23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 10 -26 28 -34 46c-7 16 -10 33 -10 58c0 19 4 39 11 55s17 30 29 42s28 21 44 28c15 6 32 9 52 9c16 0 31 -3 46 -8
+s28 -12 39 -22s18 -22 25 -36c6 -14 8 -26 8 -44c0 -14 -2 -28 -7 -40c-4 -11 -9 -20 -17 -30c-7 -9 -14 -16 -24 -22c-12 -6 -21 -9 -30 -9s-16 2 -22 8c-2 1 -3 3 -4 5c-4 -4 -9 -6 -14 -8c-10 -3 -18 -5 -27 -5c-8 0 -16 2 -23 5s-12 7 -17 12s-9 12 -12 19s-4 14 -4 22
+c0 12 2 25 6 37l1 1c4 10 5 17 13 27c8 11 17 20 28 27c12 7 24 10 38 10c12 0 22 -3 33 -9c5 -3 8 -6 12 -10l5 12h25l-39 -104c-2 -5 -3 -9 -4 -13c-1 -3 -1 -7 -1 -9s0 -3 1 -3c0 0 1 -1 5 -1c5 0 11 2 19 7c7 4 10 8 16 16s9 13 13 23s6 20 6 32c0 14 -1 24 -6 34
+c-5 12 -10 21 -18 28c-9 8 -19 14 -31 18s-26 7 -40 7c-18 0 -32 -3 -44 -8c-14 -6 -25 -13 -35 -23s-18 -22 -24 -35c-6 -14 -9 -30 -9 -45c0 -21 3 -34 8 -46c6 -14 16 -30 26 -39s22 -16 35 -21c14 -5 28 -7 43 -7c10 0 20 2 29 4s18 6 26 11s28 20 38 33zM144 157
+c4 5 7 12 10 19l20 55c-1 4 -3 7 -5 9c-3 3 -6 6 -9 8h-1h-1v1c-3 2 -5 2 -8 3c-4 1 -8 1 -12 1c-9 0 -17 -2 -25 -7c-10 -6 -17 -14 -21 -21c-5 -8 -6 -11 -9 -19c0 -1 -1 -2 -1 -3c-3 -10 -6 -19 -6 -28c0 -5 1 -10 3 -14s4 -8 7 -11s7 -6 11 -8s8 -2 13 -2c4 0 8 0 12 1
+v0c4 1 7 2 11 5c3 2 7 5 11 11z" />
+    <glyph glyph-name="ion-ios-barcode-outline" unicode="&#xf3db;" horiz-adv-x="416" 
+d="M0 64v256h80v-16h-64v-224h64v-16h-80zM336 320h80v-256h-80v16h64v224h-64v16zM64 128v128h16v-128h-16zM336 128v128h16v-128h-16zM272 96v192h16v-192h-16zM128 96v192h16v-192h-16zM199 112v160h16v-160h-16z" />
+    <glyph glyph-name="ion-ios-barcode" unicode="&#xf3dc;" horiz-adv-x="416" 
+d="M0 320h416v-256h-416v256zM80 128v128h-16v-128h16zM144 96v192h-16v-192h16zM215 112v160h-16v-160h16zM288 96v192h-16v-192h16zM352 128v128h-16v-128h16z" />
+    <glyph glyph-name="ion-ios-baseball-outline" unicode="&#xf3dd;" horiz-adv-x="416" 
+d="M415 169v-1v0c-11 -97 -90 -174 -187 -183v0h-2c-2 0 -3 -1 -5 -1h-1h-3h-1h-8c-115 0 -208 93 -208 208v8v1v3v1c0 2 1 3 1 5v2v0c9 97 86 176 183 187v0v0c8 1 16 1 24 1c115 0 208 -93 208 -208c0 -7 0 -14 -1 -20v0v-3zM399 192c0 105 -86 191 -191 191
+c-3 0 -5 -1 -8 -1c0 -11 2 -21 4 -31l20 6l5 -15l-21 -7c2 -7 4 -14 7 -21c2 -5 5 -11 8 -16l17 12l9 -13l-19 -13c7 -12 16 -23 26 -33l14 15l12 -12l-15 -15c11 -10 22 -18 34 -25l12 18l14 -9l-12 -17c5 -2 10 -5 15 -7c7 -3 14 -5 22 -7l7 20l15 -5l-6 -19
+c10 -2 20 -4 30 -4c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 9 -1 17 -3 26l-22 -7l-5 16l23 7c-2 8 -5 16 -8 24c-2 5 -4 9 -6 14l-20 -13l-9 13l21 14c-7 12 -16 24 -26 35l-17 -17l-11 11l17 17c-10 10 -22 18 -34 25l-14 -21l-14 9l14 20c-5 2 -10 5 -15 7
+c-7 3 -15 6 -23 8l-8 -24l-15 5l7 23c-9 2 -18 2 -27 3v-4zM228 2c88 9 158 78 169 166c-11 1 -23 3 -34 5l-9 -27l-15 5l8 25c-14 4 -28 10 -41 17l-15 -23l-13 9l14 21c-13 8 -26 17 -37 28l-19 -19l-11 11l19 19c-10 11 -19 23 -27 36l-21 -14l-9 13l22 15
+c-7 13 -12 27 -16 41l-25 -8l-5 16l26 8c-2 12 -4 23 -5 35c-88 -11 -157 -81 -166 -169c10 -1 21 -2 31 -4l8 23l15 -5l-7 -22c14 -4 28 -9 42 -16l13 19l14 -9l-13 -18c13 -8 25 -17 36 -28l17 17l11 -11l-17 -17c11 -12 20 -24 28 -37l19 13l9 -14l-20 -13
+c7 -14 12 -28 16 -42l23 7l5 -15l-24 -8c2 -10 3 -20 4 -30z" />
+    <glyph glyph-name="ion-ios-baseball" unicode="&#xf3de;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-12 -104 -100 -184 -207 -184c-115 0 -208 93 -208 208c0 107 80 195 184 207v0v0c8 1 16 1 24 1zM212 1c5 0 11 0 16 1c-1 10 -2 20 -4 30l24 8l-5 15l-23 -7c-4 14 -9 28 -16 42l20 13l-9 14l-19 -13
+c-8 13 -17 25 -28 37l17 17l-11 11l-17 -17c-11 11 -23 20 -36 28l13 18l-14 9l-13 -19c-14 7 -28 12 -42 16l7 22l-15 5l-8 -23c-10 2 -21 3 -31 4c-1 -5 -1 -11 -1 -16c9 -1 18 -1 27 -3l-7 -23l15 -5l8 24c8 -2 16 -5 23 -8c5 -2 10 -5 15 -7l-14 -20l14 -9l14 21
+c12 -7 24 -15 34 -25l-17 -17l11 -11l17 17c10 -11 19 -23 26 -35l-21 -14l9 -13l20 13c2 -5 4 -9 6 -14c3 -8 6 -16 8 -24l-23 -7l5 -16l22 7c2 -8 2 -17 3 -26zM363 173c11 -2 23 -4 34 -5c1 5 1 11 1 16c-10 1 -20 2 -30 4l6 19l-15 5l-7 -20c-8 2 -15 4 -22 7
+c-5 2 -10 5 -15 7l12 17l-14 9l-12 -18c-12 7 -23 15 -34 25l15 15l-12 12l-15 -15c-10 10 -18 21 -25 33l19 13l-9 13l-17 -12c-3 5 -6 11 -8 16c-3 7 -5 14 -7 21l21 7l-5 15l-20 -6c-2 10 -3 20 -4 31c-5 0 -11 0 -16 -1c1 -12 3 -23 5 -35l-26 -8l5 -16l25 8
+c4 -14 9 -28 16 -41l-22 -15l9 -13l21 14c8 -13 17 -25 27 -36l-19 -19l11 -11l19 19c11 -11 24 -20 37 -28l-14 -21l13 -9l15 23c13 -7 27 -13 41 -17l-8 -25l15 -5z" />
+    <glyph glyph-name="ion-ios-basketball-outline" unicode="&#xf3df;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM399 192c0 55 -24 105 -62 140c-14 -34 -31 -65 -52 -95c15 -12 31 -21 49 -29c21 -9 43 -14 65 -16v0zM325 343c-32 25 -73 40 -117 40v0c2 -22 6 -44 15 -65
+c10 -25 26 -47 45 -66c2 -1 2 -3 4 -4c20 29 38 60 52 93c0 1 1 1 1 2zM192 382c-51 -4 -96 -29 -128 -65c64 -28 121 -69 169 -119c11 12 21 24 30 37c-40 37 -67 89 -71 147zM233 174c-15 -16 -31 -30 -48 -44c28 -35 45 -79 47 -127c33 4 63 17 88 35
+c-22 50 -51 95 -87 136zM214 178l8 8l-10 10c-46 46 -99 82 -158 108c-18 -25 -31 -55 -35 -88c62 -3 116 -31 155 -74c14 11 27 23 40 36zM18 200c0 -3 -1 -5 -1 -8c0 -45 16 -87 43 -120c36 16 71 36 102 60l-7 7c-19 19 -41 35 -66 45c-22 9 -46 15 -71 16zM71 59
+c35 -36 83 -58 137 -58c3 0 5 1 8 1c-1 25 -6 48 -16 71c-7 17 -17 33 -28 47c-31 -24 -65 -45 -101 -61zM333 48c37 32 61 77 65 128c-46 3 -89 21 -123 48c-10 -13 -20 -26 -31 -38c36 -41 67 -87 89 -138z" />
+    <glyph glyph-name="ion-ios-basketball" unicode="&#xf3e0;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM333 48c-22 51 -53 97 -89 138c11 12 21 25 31 38c34 -27 77 -45 123 -48c0 5 1 11 1 16c-22 2 -44 7 -65 16c-18 8 -34 17 -49 29c21 30 38 61 52 95c-4 4 -8 8 -12 11
+c0 -1 -1 -1 -1 -2c-14 -33 -32 -64 -52 -93c-2 1 -2 2 -4 4c-19 19 -35 41 -45 66c-9 21 -13 43 -15 65c-5 0 -11 -1 -16 -1c4 -58 31 -110 71 -147c-9 -13 -19 -25 -30 -37c-48 50 -105 91 -169 119c-4 -4 -7 -9 -10 -13c59 -26 112 -62 158 -108l10 -10l-8 -8
+c-13 -13 -26 -25 -40 -36c-39 43 -93 71 -155 74c-1 -5 -1 -11 -1 -16c25 -1 49 -7 71 -16c25 -10 47 -26 66 -45l7 -7c-31 -24 -66 -44 -102 -60c4 -4 7 -9 11 -13c36 16 70 37 101 61c11 -14 21 -30 28 -47c10 -23 15 -46 16 -71c5 0 11 0 16 1c-2 48 -19 92 -47 127
+c17 14 33 28 48 44c36 -41 65 -86 87 -136c4 3 9 6 13 10z" />
+    <glyph glyph-name="ion-ios-bell-outline" unicode="&#xf3e1;" horiz-adv-x="384" 
+d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM43 80h298c-25 25 -40 58 -40 142c0 46 -13 80 -37 101c-23 19 -52 23 -72 23s-49 -4 -72 -23c-25 -21 -37 -55 -37 -101
+c0 -51 -5 -85 -17 -110c-6 -13 -14 -23 -23 -32zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" />
+    <glyph glyph-name="ion-ios-bell" unicode="&#xf3e2;" horiz-adv-x="384" 
+d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" />
+    <glyph glyph-name="ion-ios-body-outline" unicode="&#xf3e3;" horiz-adv-x="384" 
+d="M192 400c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 416v0c27 0 48 -21 48 -48s-21 -48 -48 -48s-48 21 -48 48s21 48 48 48zM360 304c13 0 24 -11 24 -24s-11 -24 -24 -24h-100c-5 0 -14 -5 -18 -15c-5 -12 -2 -33 1 -51l4 -21v-1v0l32 -172
+c2 -13 -6 -26 -19 -28h-5c-11 0 -22 8 -24 20l-21 120v0s-5 31 -17 31h-2c-12 0 -19 -31 -19 -31v0l-21 -120c-2 -12 -11 -20 -22 -20h-5c-13 2 -21 15 -19 28l32 172v1l4 21c3 18 6 39 1 51c-4 10 -12 15 -18 15h-100c-13 0 -24 11 -24 24s11 24 24 24h336zM24 272
+c-4 0 -8 4 -8 8s4 8 8 8h336c4 0 8 -4 8 -8s-4 -8 -8 -8h-102c-16 0 -26 -15 -30 -24c-5 -13 -6 -32 -1 -61v0v0l3 -19l1 -3l32 -172c0 -3 0 -5 -1 -6s-2 -2 -5 -3h-2c-4 0 -7 2 -8 6l-21 120v0c0 2 -2 10 -5 19c-2 6 -5 11 -8 15c-7 9 -14 11 -20 11h-2
+c-5 0 -13 -2 -20 -11c-3 -4 -6 -9 -8 -15c-4 -9 -6 -17 -6 -18v-1l-21 -120c-1 -4 -3 -6 -7 -6h-2c-3 0 -4 2 -5 3s-2 3 -1 6l32 172v0v1l4 21v0v0c5 29 5 48 0 61c-4 9 -14 24 -32 24z" />
+    <glyph glyph-name="ion-ios-body" unicode="&#xf3e4;" horiz-adv-x="384" 
+d="M144 368c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM360 304c7 0 12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7h-98c-8 -2 -15 -6 -18 -14c-4 -9 -3 -27 1 -52l4 -21v-1v0l30 -172c1 -7 0 -13 -4 -18s-8 -9 -15 -10s-13 0 -18 4
+s-9 9 -10 16l-21 120v-1l-2 9c-1 5 -3 11 -6 16s-6 8 -10 8h-2c-8 0 -14 -11 -18 -33v1l-21 -120c-1 -7 -5 -12 -10 -16s-11 -5 -18 -4s-11 5 -15 10s-5 11 -4 18l30 172v0v1l4 21c4 25 5 43 1 52c-3 8 -10 12 -18 14h-98c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17s10 7 17 7
+h336z" />
+    <glyph glyph-name="ion-ios-bolt-outline" unicode="&#xf3e5;" horiz-adv-x="226" 
+d="M131 316l-100 -140h65h19l-3 -19l-17 -89l100 140h-65h-19l3 19zM160 384v0l-30 -160h96l-160 -224l30 160h-96z" />
+    <glyph glyph-name="ion-ios-bolt" unicode="&#xf3e6;" horiz-adv-x="226" 
+d="M160 384v0l-30 -160h96l-160 -224l30 160h-96z" />
+    <glyph glyph-name="ion-ios-book-outline" unicode="&#xf3e7;" horiz-adv-x="384" 
+d="M284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-20c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79c41 0 78 -14 92 -44c12 30 51 44 92 44zM184 37v254v13v2
+c-1 43 -39 62 -84 62c-44 0 -81 -19 -84 -61v-1v0v-262h1c19 26 48 36 83 36s66 -17 84 -43zM368 300v14v1c-3 42 -40 53 -84 53c-46 0 -84 -20 -84 -64v-1v-266c18 26 49 43 84 43s66 -10 84 -36v256z" />
+    <glyph glyph-name="ion-ios-book" unicode="&#xf3e8;" horiz-adv-x="384" 
+d="M100 384c35 0 67 -10 84 -31v-353h-2c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79zM284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-2v353c17 21 50 31 84 31z" />
+    <glyph glyph-name="ion-ios-bookmarks-outline" unicode="&#xf3e9;" horiz-adv-x="418" 
+d="M385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150c10 0 20 -5 26 -12v0v0c6 7 16 12 26 12h150zM201 37v309c0 9 -12 22 -25 22h-143
+c-9 0 -16 -7 -16 -16v-286c0 -9 7 -18 16 -18h144c10 0 19 -3 24 -11zM273 368v-100l23 14l9 6l9 -6l23 -14v100h-64zM401 66v286c0 9 -7 16 -16 16h-32v-131l-48 32l-48 -32v131h-15c-13 0 -25 -13 -25 -22v-309c5 9 14 11 24 11h144c9 0 16 9 16 18z" />
+    <glyph glyph-name="ion-ios-bookmarks" unicode="&#xf3ea;" horiz-adv-x="418" 
+d="M296 283l-23 -15v116h64v-116l-23 15l-9 6zM385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150s18 -8 18 -15v-329l8 -6l8 6v329s10 15 18 15h22v-146
+l48 32l48 -32v146h32z" />
+    <glyph glyph-name="ion-ios-box-outline" unicode="&#xf3eb;" horiz-adv-x="320" 
+d="M192 208h-1h-63c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16zM192 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-64c-18 0 -32 14 -32 32s14 32 32 32h64zM320 336v-80h-16v-208h-288v208h-16v80h320zM288 64v192h-256v-192h256zM304 272v48h-288
+v-48h288z" />
+    <glyph glyph-name="ion-ios-box" unicode="&#xf3ec;" horiz-adv-x="320" 
+d="M16 48v192h288v-192h-288zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16h-64zM0 336h320v-80h-16h-288h-16v80z" />
+    <glyph glyph-name="ion-ios-briefcase-outline" unicode="&#xf3ed;" horiz-adv-x="416" 
+d="M368 320h48v-320h-416v320h48v16h32v-16h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v16h32v-16zM144 320v0h128v0v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30zM400 16v224h-384v-224h384zM400 256v48h-32v-16h-32v16h-256v-16h-32v16h-32v-48
+h384z" />
+    <glyph glyph-name="ion-ios-briefcase" unicode="&#xf3ee;" horiz-adv-x="416" 
+d="M48 320v16h32v-16h-32zM0 0v240h416v-240h-416zM336 320v16h32v-16h-32zM368 320h48v-64h-416v64h48v-32h32v32h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v-32h32v32zM272 320v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30v0h128v0z" />
+    <glyph glyph-name="ion-ios-browsers-outline" unicode="&#xf3ef;" horiz-adv-x="384" 
+d="M0 304h304v-304h-304v304zM288 16v272h-272v-272h272zM384 384v-304h-64v16h48v272h-272v-48h-16v64h304z" />
+    <glyph glyph-name="ion-ios-browsers" unicode="&#xf3f0;" horiz-adv-x="384" 
+d="M0 304h304v-304h-304v304zM80 384h304v-304h-64v240h-240v64z" />
+    <glyph glyph-name="ion-ios-calculator-outline" unicode="&#xf3f1;" horiz-adv-x="288" 
+d="M32 288v64h224v-64h-224zM48 336v-32h192v32h-192zM256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM272 32v320c0 9 -7 16 -16 16h-224c-9 0 -16 -7 -16 -16v-320c0 -9 7 -16 16 -16h224c9 0 16 7 16 16z
+M48 208h32h16v-16h-64v64h16v-16v-32zM48 128h32h16v-16h-64v64h16v-16v-32zM48 48h32h16v-16h-64v64h16v-16v-32zM128 208h32h16v-16h-64v64h16v-16v-32zM208 208h32h16v-16h-64v64h16v-16v-32zM128 128h32h16v-16h-64v64h16v-16v-32zM128 48h32h16v-16h-64v64h16v-16v-32z
+M208 48h32h16v-16h-64v144h16v-96v-32z" />
+    <glyph glyph-name="ion-ios-calculator" unicode="&#xf3f2;" horiz-adv-x="288" 
+d="M256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM248 168h-48v-128h48v128zM248 248h-48v-48h48v48zM168 88h-48v-48h48v48zM168 168h-48v-48h48v48zM168 248h-48v-48h48v48zM88 88h-48v-48h48v48zM88 168
+h-48v-48h48v48zM88 248h-48v-48h48v48zM40 296h208v48h-208v-48z" />
+    <glyph glyph-name="ion-ios-calendar-outline" unicode="&#xf3f3;" horiz-adv-x="384" 
+d="M16 336v-64h352v64zM288 352h96v-352h-384v352h96v32h16v-32h160v32h16v-32zM368 16v240h-352v-240h352zM368 272v64h-80v-32h-16v32h-160v-32h-16v32h-80v-64h352z" />
+    <glyph glyph-name="ion-ios-calendar" unicode="&#xf3f4;" horiz-adv-x="384" 
+d="M0 0v256h384v-256h-384zM384 352v-80h-384v80h96v-48h16v48h160v-48h16v48h96zM96 352v32h16v-32h-16zM272 352v32h16v-32h-16z" />
+    <glyph glyph-name="ion-ios-camera-outline" unicode="&#xf3f5;" horiz-adv-x="384" 
+d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-7l-5 3c-3 4 -7 8 -10 11c-12 13 -20 24 -26 30
+c-5 5 -7 4 -7 4h-88s-2 0 -7 -4c-6 -5 -14 -14 -25 -27c-3 -4 -7 -10 -11 -14l-5 -3h-7h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17zM192 258c47 0 86 -38 86 -85s-39 -85 -86 -85s-86 38 -86 85s39 85 86 85zM192 104c38 0 70 31 70 69
+s-32 69 -70 69s-70 -31 -70 -69s32 -69 70 -69zM288 239v17h17v-17h-17zM160 173c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z" />
+    <glyph glyph-name="ion-ios-camera" unicode="&#xf3f6;" horiz-adv-x="384" 
+d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM192 88c47 0 86 38 86 85s-39 85 -86 85s-86 -38 -86 -85s39 -85 86 -85zM305 239v17h-17v-17h17
+zM192 242c38 0 70 -31 70 -69s-32 -69 -70 -69s-70 31 -70 69s32 69 70 69zM192 141c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-ios-cart-outline" unicode="&#xf3f7;" horiz-adv-x="384" 
+d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM96 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM384 320
+l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21zM355 206l11 99l-304 31l32 -176z" />
+    <glyph glyph-name="ion-ios-cart" unicode="&#xf3f8;" horiz-adv-x="384" 
+d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM384 320l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0
+c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21z" />
+    <glyph glyph-name="ion-ios-chatboxes-outline" unicode="&#xf3f9;" horiz-adv-x="416" 
+d="M16 384v-192h96v-16h-112v224h288v-112h-16v96h-256zM128 272h288v-224h-48v-64h-13l-64 64h-163v224zM400 64v192h-256v-192h153l55 -55v55h48z" />
+    <glyph glyph-name="ion-ios-chatboxes" unicode="&#xf3fa;" horiz-adv-x="416" 
+d="M288 400v-112h-176v-112h-112v224h288zM128 272h288v-224h-48v-64h-13l-64 64h-163v224z" />
+    <glyph glyph-name="ion-ios-chatbubble-outline" unicode="&#xf3fb;" horiz-adv-x="384" 
+d="M192 336c-97 0 -176 -62 -176 -138c0 -26 10 -51 27 -73c0 -1 0 -2 1 -3s2 -1 2 -2c4 -6 6 -13 6 -20c0 -3 1 -3 -13 -47l39 17v0c2 1 10 4 11 4h1v0c5 2 10 3 16 3c5 0 9 -1 14 -2l1 -1h2c19 -6 41 -10 70 -10c48 0 92 15 125 40c32 25 50 58 50 94
+c0 76 -79 138 -176 138zM192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84
+c0 85 86 154 192 154z" />
+    <glyph glyph-name="ion-ios-chatbubble" unicode="&#xf3fc;" horiz-adv-x="384" 
+d="M192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84c0 85 86 154 192 154z
+" />
+    <glyph glyph-name="ion-ios-checkmark-empty" unicode="&#xf3fd;" horiz-adv-x="207" 
+d="M74 118c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47l125 126l17 -18z" />
+    <glyph glyph-name="ion-ios-checkmark-outline" unicode="&#xf3fe;" horiz-adv-x="416" 
+d="M292 271l18 -18l-134 -135c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
+    <glyph glyph-name="ion-ios-checkmark" unicode="&#xf3ff;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM176 118l134 135l-18 18l-125 -126l-47 47l-18 -18l56 -56c2 -2 6 -4 9 -4s7 2 9 4z" />
+    <glyph glyph-name="ion-ios-circle-filled" unicode="&#xf400;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 352c88 0 160 -72 160 -160s-72 -160 -160 -160s-160 72 -160 160s72 160 160 160z" />
+    <glyph glyph-name="ion-ios-circle-outline" unicode="&#xf401;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
+    <glyph glyph-name="ion-ios-clock-outline" unicode="&#xf402;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 192v128h17v-145h-113v17h96z" />
+    <glyph glyph-name="ion-ios-clock" unicode="&#xf403;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM225 175v145h-17v-128h-96v-17h113z" />
+    <glyph glyph-name="ion-ios-close-empty" unicode="&#xf404;" horiz-adv-x="192" 
+d="M180 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" />
+    <glyph glyph-name="ion-ios-close-outline" unicode="&#xf405;" horiz-adv-x="416" 
+d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM343 57c74 74 74 196 0 270s-196 74 -270 0s-74 -196 0 -270s196 -74 270 0zM292 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" />
+    <glyph glyph-name="ion-ios-close" unicode="&#xf406;" horiz-adv-x="416" 
+d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM304 108l-84 84l84 84l-12 12l-84 -84l-84 84l-12 -12l84 -84l-84 -84l12 -12l84 84l84 -84z" />
+    <glyph glyph-name="ion-ios-cloud-download-outline" unicode="&#xf407;" 
+d="M161 67l55 -54v242h16v-242l55 54l12 -12l-75 -73l-74 73zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82v0h-101v16h97h4c37 0 66 30 66 66s-29 67 -66 67h-15v20c0 55 -46 97 -101 97c-38 0 -73 -22 -90 -56l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -18 -44 -39l-1 -9
+l-9 -3c-30 -10 -50 -36 -50 -67c0 -40 33 -74 74 -74h91v-16h-91c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115c0 -1 -1 -2 -1 -3z" />
+    <glyph glyph-name="ion-ios-cloud-download" unicode="&#xf408;" 
+d="M216 13v107h16v-107l55 54l12 -12l-75 -73l-74 73l11 12zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82h-134v135h-16v-135h-35h-21h-70c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115
+c0 -1 -1 -2 -1 -3z" />
+    <glyph glyph-name="ion-ios-cloud-outline" unicode="&#xf409;" 
+d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4zM366 64c37 0 66 32 66 69s-29 67 -66 67h-15v21c0 56 -46 99 -101 99
+c-38 0 -73 -23 -90 -58l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39l-1 -9l-9 -3c-30 -10 -50 -37 -50 -69c0 -41 33 -76 74 -76h272h4z" />
+    <glyph glyph-name="ion-ios-cloud-upload-outline" unicode="&#xf40a;" 
+d="M161 188l-11 11l74 75l75 -75l-12 -11l-55 54v-242h-16v242zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83v0h-101v16h97h4c37 0 66 30 66 67s-29 70 -66 70l-15 1v20c0 56 -46 99 -101 99c-38 0 -73 -23 -90 -58l-6 -13l-14 6c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39
+l-1 -9l-9 -3c-30 -10 -50 -39 -50 -71c0 -41 33 -75 74 -75h91v-16h-91c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116c0 -1 -1 -3 -1 -4z" />
+    <glyph glyph-name="ion-ios-cloud-upload" unicode="&#xf40b;" 
+d="M216 0v96h16v-96h-16zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83h-134v146l55 -54l12 11l-75 75l-74 -75l11 -11l55 54v-146h-35h-31h-60c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116
+c0 -1 -1 -3 -1 -4z" />
+    <glyph glyph-name="ion-ios-cloud" unicode="&#xf40c;" 
+d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4z" />
+    <glyph glyph-name="ion-ios-cloudy-night-outline" unicode="&#xf40d;" horiz-adv-x="384" 
+d="M125 224c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 240v0c37 0 68 -26 76 -61
+h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78zM361 142c8 0 15 2 23 4c-4 -7 -9 -14 -14 -20c-21 -24 -50 -41 -84 -45c4 6 6 12 8 19c19 4 36 13 50 25c-18 1 -35 6 -50 13c-23 11 -42 29 -56 51
+c-14 21 -22 48 -22 75c0 15 2 30 7 44c-24 -12 -43 -33 -53 -59c-5 2 -12 4 -18 5c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52c0 -32 12 -63 35 -86s54 -36 86 -36h6z" />
+    <glyph glyph-name="ion-ios-cloudy-night" unicode="&#xf40e;" horiz-adv-x="384" 
+d="M361 142c8 0 15 2 23 4c-4 -7 -9 -15 -14 -21c-21 -24 -50 -40 -84 -44h-3c4 10 7 21 7 32c0 22 -9 43 -24 58c-14 15 -33 23 -53 24c-6 16 -16 29 -29 40c-10 8 -20 13 -32 17v2c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52
+c0 -32 12 -63 35 -86s54 -36 86 -36h6zM125 239v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v7c0 43 35 79 78 79z" />
+    <glyph glyph-name="ion-ios-cloudy-outline" unicode="&#xf40f;" horiz-adv-x="274" 
+d="M125 272c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-6 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 288v0c37 0 68 -26 76 -61
+h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
+    <glyph glyph-name="ion-ios-cloudy" unicode="&#xf410;" horiz-adv-x="274" 
+d="M125 288v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
+    <glyph glyph-name="ion-ios-cog-outline" unicode="&#xf411;" horiz-adv-x="384" 
+d="M384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12l-29 22l12 30l36 -5
+l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM356 127l-26 20l6 33l32 8v7l-32 8l-6 33l26 19l-3 7l-32 -5l-19 27l17 28l-5 6l-28 -17l-28 18
+l5 34l-6 2l-20 -26l-32 6l-8 33h-7l-9 -33l-32 -6l-20 27l-7 -3l5 -34l-28 -18l-9 6l-21 12l-5 -5l18 -30l-18 -27l-33 5l-3 -7l27 -20l-6 -32l-33 -8v-7l33 -9l6 -32l-27 -20l3 -6l33 4l18 -27l-17 -29l5 -6l29 18l28 -18l-5 -33l7 -3l19 27l33 -7l8 -31h8l7 31l33 7
+l20 -26l7 3l-5 32l26 18l28 -16l5 5l-16 27l19 28l32 -4zM192 320c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM80 192c0 -7 1 -15 2 -22l104 28l28 104c-7 1 -15 2 -22 2c-30 0 -58 -12 -79 -33s-33 -49 -33 -79zM192 80c27 0 53 10 73 27
+l-75 75l-104 -28c6 -15 15 -29 27 -41c21 -21 49 -33 79 -33zM276 118c18 20 28 47 28 74c0 30 -12 58 -33 79c-12 12 -26 22 -42 27l-28 -105z" />
+    <glyph glyph-name="ion-ios-cog" unicode="&#xf412;" horiz-adv-x="384" 
+d="M229 298c16 -5 30 -15 42 -27c21 -21 33 -49 33 -79c0 -27 -10 -54 -28 -74l-75 75zM214 302l-28 -104l-104 -28c-1 7 -2 15 -2 22c0 30 12 58 33 79s49 33 79 33c7 0 15 -1 22 -2zM86 154l104 28l75 -75c-20 -17 -46 -27 -73 -27c-30 0 -58 12 -79 33
+c-12 12 -21 26 -27 41zM384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12
+l-29 22l12 30l36 -5l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM192 64c71 0 128 57 128 128s-57 128 -128 128s-128 -57 -128 -128
+s57 -128 128 -128z" />
+    <glyph glyph-name="ion-ios-color-filter-outline" unicode="&#xf413;" horiz-adv-x="384" 
+d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM96 256c0 -6 0 -12 1 -17
+c5 1 10 1 15 1c31 0 60 -13 80 -34c20 21 49 34 80 34c5 0 10 0 15 -1c1 5 1 11 1 17c0 53 -43 96 -96 96s-96 -43 -96 -96zM208 128c0 6 0 12 -1 17c-5 -1 -10 -1 -15 -1s-10 0 -15 1c-1 -5 -1 -11 -1 -17c0 -20 6 -38 16 -53c10 15 16 33 16 53zM192 160c3 0 7 1 10 1
+c-3 7 -6 14 -10 20c-4 -6 -7 -13 -10 -20c3 0 7 -1 10 -1zM166 164c4 11 9 21 16 30c-18 18 -43 30 -70 30c-3 0 -7 -1 -10 -1c10 -29 34 -51 64 -59zM202 194c7 -9 12 -19 16 -30c30 8 54 30 64 59c-3 0 -7 1 -10 1c-27 0 -52 -12 -70 -30zM112 32c27 0 52 12 70 30
+c-14 19 -22 41 -22 66c0 7 1 13 2 20c-36 10 -64 37 -76 72c-40 -11 -70 -48 -70 -92c0 -53 43 -96 96 -96zM272 32c53 0 96 43 96 96c0 44 -30 81 -70 92c-12 -35 -40 -62 -76 -72c1 -7 2 -13 2 -20c0 -25 -8 -47 -22 -66c18 -18 43 -30 70 -30z" />
+    <glyph glyph-name="ion-ios-color-filter" unicode="&#xf414;" horiz-adv-x="384" 
+d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM192 53l1 -2c3 3 6 7 9 11
+c14 19 22 41 22 66c0 7 -1 13 -2 20c36 10 64 37 76 72c2 5 3 10 4 15c-1 0 -2 1 -3 1v1c-4 1 -8 1 -12 2c-5 1 -10 1 -15 1c-31 0 -60 -13 -80 -34c-20 21 -49 34 -80 34c-5 0 -10 0 -15 -1c-4 -1 -8 -1 -12 -2v-1c-1 0 -2 -1 -3 -1c1 -5 2 -10 4 -15c12 -35 40 -62 76 -72
+c-1 -7 -2 -13 -2 -20c0 -25 8 -47 22 -66c3 -4 6 -8 9 -11zM207 145c1 -5 1 -11 1 -17c0 -20 -6 -38 -16 -53c-10 15 -16 33 -16 53c0 6 0 12 1 17c5 -1 10 -1 15 -1s10 0 15 1zM282 223c-10 -29 -34 -51 -64 -59c-4 11 -9 21 -16 30c18 18 43 30 70 30c3 0 7 -1 10 -1z
+M202 161c-3 0 -7 -1 -10 -1s-7 1 -10 1c3 7 6 14 10 20c4 -6 7 -13 10 -20zM112 224c27 0 52 -12 70 -30c-7 -9 -12 -19 -16 -30c-30 8 -54 30 -64 59c3 0 7 1 10 1z" />
+    <glyph glyph-name="ion-ios-color-wand-outline" unicode="&#xf415;" horiz-adv-x="384" 
+d="M128 298l256 -256l-34 -34l-256 256zM149 232l201 -201l11 11l-201 202zM120 344v40h16v-40h-16zM120 140v40h16v-40h-16zM216 256v16h40v-16h-40zM0 256v16h40v-16h-40zM47 354l29 -29l-12 -11l-28 28zM76 198l-29 -28l-11 11l28 28zM220 342l-28 -28l-12 11l29 29z" />
+    <glyph glyph-name="ion-ios-color-wand" unicode="&#xf416;" horiz-adv-x="396" 
+d="M140 289l256 -257l-34 -34l-256 257zM124 322v64h32v-64h-32zM124 118v64h32v-64h-32zM216 238v32h64v-32h-64zM246 336l-45 -45l-23 22l45 46zM34 336l23 23l45 -46l-23 -22zM34 169l45 45l23 -22l-45 -46zM0 238v32h64v-32h-64z" />
+    <glyph glyph-name="ion-ios-compose-outline" unicode="&#xf417;" horiz-adv-x="384" 
+d="M304 32v208l16 16v-240h-320v304h256l-16 -16h-224v-272h288zM174 164l171 171l11 -11l-180 -180h-32v32l180 180l11 -11l-171 -171zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" />
+    <glyph glyph-name="ion-ios-compose" unicode="&#xf418;" horiz-adv-x="384" 
+d="M192 128l128 128v-240h-320v304h256l-128 -128v-64h64zM324 356l32 -32l-180 -180h-32v32zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" />
+    <glyph glyph-name="ion-ios-contact-outline" unicode="&#xf419;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 383c-105 0 -191 -86 -191 -191c0 -47 17 -89 45 -122c18 8 62 24 90 32c2 1 3 0 3 10c0 11 -1 18 -4 24c-4 8 -7 20 -9 31c-4 5 -10 15 -14 33c-3 16 -1 22 1 28v2
+c1 4 0 23 -3 38c-2 10 1 34 15 52c9 12 27 26 58 28h18c32 -2 49 -16 58 -28c14 -18 17 -42 15 -52c-3 -15 -4 -34 -3 -38c0 0 1 -1 1 -2c2 -6 3 -12 0 -28c-4 -18 -10 -27 -14 -32c-2 -11 -5 -24 -9 -32c-3 -7 -6 -15 -6 -23c0 -10 0 -10 2 -11c27 -8 73 -24 93 -32
+c28 33 45 76 45 122c0 105 -86 191 -191 191z" />
+    <glyph glyph-name="ion-ios-contact" unicode="&#xf41a;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c59 0 111 27 146 69c-20 8 -66 24 -93 32c-2 1 -3 1 -3 11c0 8 4 16 7 23c4 8 7 21 9 32c4 5 10 14 14 32c3 16 2 22 0 28c0 0 -1 1 -1 2c-1 4 0 23 3 38c2 10 -1 34 -15 52
+c-9 12 -26 26 -58 28h-18c-31 -2 -49 -16 -58 -28c-14 -18 -17 -42 -15 -52c3 -15 4 -34 3 -38v-2c-2 -6 -4 -12 -1 -28c4 -18 10 -28 14 -33c2 -11 5 -23 9 -31c3 -6 4 -13 4 -24c0 -10 -1 -9 -3 -10c-28 -8 -72 -24 -90 -32c35 -42 87 -69 146 -69z" />
+    <glyph glyph-name="ion-ios-copy-outline" unicode="&#xf41b;" horiz-adv-x="288" 
+d="M192 352v-64h64v-16h-80v80h16zM213 384l75 -75v-261h-48v-48h-240v336h48v48h165zM224 16v32h-176v272h-32v-304h208zM272 64v238l-65 66h-143v-304h208z" />
+    <glyph glyph-name="ion-ios-copy" unicode="&#xf41c;" horiz-adv-x="288" 
+d="M32 32h16h192v-32h-240v336h32v-288v-16zM213 384l75 -75v-261h-48h-192v288v48h165zM256 272v16h-64v64h-16v-80h80z" />
+    <glyph glyph-name="ion-ios-crop-strong" unicode="&#xf41d;" horiz-adv-x="384" 
+d="M64 336v48h32v-48h-32zM96 96h176v-32h-208v208h32v-176zM336 64v32h48v-32h-48zM0 320h320v-320h-32v288h-288v32z" />
+    <glyph glyph-name="ion-ios-crop" unicode="&#xf41e;" horiz-adv-x="384" 
+d="M64 336v48h16v-48h-16zM80 80h208v-16h-224v224h16v-208zM336 64v16h48v-16h-48zM0 320h320v-320h-16v304h-304v16z" />
+    <glyph glyph-name="ion-ios-download-outline" unicode="&#xf41f;" horiz-adv-x="320" 
+d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 196l55 -55v243h16v-243l55 55l11 -12l-74 -74l-74 74z" />
+    <glyph glyph-name="ion-ios-download" unicode="&#xf420;" horiz-adv-x="320" 
+d="M168 304h152v-304h-320v304h152v-163l-55 55l-11 -12l74 -74l74 74l-11 12l-55 -55v163zM152 304v80h16v-80h-16z" />
+    <glyph glyph-name="ion-ios-drag" unicode="&#xf421;" horiz-adv-x="352" 
+d="M0 128v16h352v-16h-352zM0 184v16h352v-16h-352zM0 240v16h352v-16h-352z" />
+    <glyph glyph-name="ion-ios-email-outline" unicode="&#xf422;" horiz-adv-x="384" 
+d="M0 320h384v-256h-384v256zM192 180l163 124h-326zM16 80h352v214l-115 -88l68 -77l-2 -2l-79 70l-48 -37l-48 37l-79 -70l-2 2l68 77l-115 88v-214z" />
+    <glyph glyph-name="ion-ios-email" unicode="&#xf423;" horiz-adv-x="384" 
+d="M384 64h-384v242l131 -100l-68 -77l2 -2l79 70l48 -37l48 37l79 -70l2 2l-68 77l131 100v-242zM376 320l-184 -140l-184 140h368z" />
+    <glyph glyph-name="ion-ios-eye-outline" unicode="&#xf424;" horiz-adv-x="384" 
+d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 288c-62 0 -111 -36 -170 -96c24 -24 48 -50 76 -68c30 -20 60 -28 94 -28
+c75 0 133 56 171 95c-26 29 -50 50 -74 66c-32 21 -64 31 -97 31zM192 112c-44 0 -80 36 -80 80s36 80 80 80s80 -36 80 -80s-36 -80 -80 -80zM192 256c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64zM224 192h16v0c0 -26 -22 -48 -48 -48s-48 21 -48 48
+s22 48 48 48v-16c-16 0 -32 -13 -32 -31s15 -33 32 -33s32 14 32 32v0z" />
+    <glyph glyph-name="ion-ios-eye" unicode="&#xf425;" horiz-adv-x="384" 
+d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM186 221
+c0 -19 16 -35 35 -35c7 0 14 2 19 6v0c0 -27 -22 -48 -48 -48s-48 21 -48 48s22 48 48 48c-4 -5 -6 -12 -6 -19z" />
+    <glyph glyph-name="ion-ios-fastforward-outline" unicode="&#xf426;" 
+d="M16 293v-202l184 101zM240 292v0v-78v-27v-95l176 100zM224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" />
+    <glyph glyph-name="ion-ios-fastforward" unicode="&#xf427;" 
+d="M224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" />
+    <glyph glyph-name="ion-ios-filing-outline" unicode="&#xf428;" horiz-adv-x="352" 
+d="M288 320l64 -96v-160h-176h-176v160l64 96h224zM333 224l-45 68v-68h45zM80 304v-80h48c0 -26 22 -48 48 -48s48 22 48 48h48v80h-192zM64 292l-45 -68h45v68zM336 80v128h-98c-7 -28 -32 -48 -62 -48s-55 20 -62 48h-98v-128h160h160z" />
+    <glyph glyph-name="ion-ios-filing" unicode="&#xf429;" horiz-adv-x="352" 
+d="M176 160c30 0 55 20 62 48h114v-144h-176h-176v144h114c7 -28 32 -48 62 -48zM64 224h-7h-57l64 96v0v-80h16v80h192v-80h16v80v0l64 -96h-56h-8h-16h-8h-40c0 -26 -22 -48 -48 -48s-48 22 -48 48h-39h-9h-16z" />
+    <glyph glyph-name="ion-ios-film-outline" unicode="&#xf42a;" horiz-adv-x="400" 
+d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 40v144h-224v-144h224zM312 200v144h-224v-144h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48
+h56zM384 232v48h-56v-48h56zM384 296v48h-56v-48h56z" />
+    <glyph glyph-name="ion-ios-film" unicode="&#xf42b;" horiz-adv-x="400" 
+d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 184v16h-224v-16h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48h56zM384 232v48h-56v-48h56z
+M384 296v48h-56v-48h56z" />
+    <glyph glyph-name="ion-ios-flag-outline" unicode="&#xf42c;" horiz-adv-x="256" 
+d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4zM240 179v0v141c-11 -1 -25 -4 -40 -4
+c-25 0 -46 6 -68 11s-42 9 -64 9c-30 0 -46 -5 -52 -7v-137c10 3 26 6 52 6c24 0 45 -8 67 -13c21 -4 43 -9 66 -9c15 0 28 2 39 3z" />
+    <glyph glyph-name="ion-ios-flag" unicode="&#xf42d;" horiz-adv-x="256" 
+d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4z" />
+    <glyph glyph-name="ion-ios-flame-outline" unicode="&#xf42e;" horiz-adv-x="256" 
+d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80zM239 130c5 47 -10 99 -41 151c-22 36 -50 70 -83 99c0 -57 -24 -91 -49 -123
+c-26 -34 -50 -65 -50 -129c0 -25 5 -48 15 -68c8 -17 20 -32 35 -45c8 -7 16 -12 23 -16c-9 16 -18 35 -18 57c0 51 44 90 46 92l11 9l11 -9c2 -2 45 -41 45 -92c0 -23 -9 -44 -19 -60c7 4 13 8 20 14c14 12 25 27 34 44c11 21 17 47 20 76z" />
+    <glyph glyph-name="ion-ios-flame" unicode="&#xf42f;" horiz-adv-x="256" 
+d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80z" />
+    <glyph glyph-name="ion-ios-flask-outline" unicode="&#xf430;" horiz-adv-x="384" 
+d="M373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16v16h16h16v-16v-16h48v-16h-48v-32h32v-16h-32v-32h48v-16h-48v-3l-2 -4l-15 -25h49v-16h-58l-92 -154c-13 -25 -14 -43 -2 -63c9 -14 23 -23 41 -23h256
+c17 0 33 8 41 22c5 8 6 17 6 26c0 12 -2 25 -9 38l-116 195l-3 4v131v16h16h16v-16h-16v-127zM44 73l72 119h153l72 -119c7 -11 10 -24 10 -33c-1 -24 -16 -40 -46 -40h-226c-30 0 -46 12 -46 40c0 9 4 22 11 33zM260 176h-135l-67 -111v0v0c-5 -8 -9 -19 -9 -25
+c0 -13 5 -17 6 -18c4 -4 13 -6 24 -6h226c10 0 18 3 23 7c4 4 7 10 7 18c0 6 -3 16 -8 24v0v0z" />
+    <glyph glyph-name="ion-ios-flask" unicode="&#xf431;" horiz-adv-x="384" 
+d="M327 65v0c5 -8 8 -18 8 -24c0 -8 -3 -14 -7 -18c-5 -4 -13 -7 -23 -7h-226c-11 0 -20 2 -24 6c-1 1 -6 5 -6 18c0 6 4 17 9 25v0v0l67 111h135l67 -111v0zM373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16
+v16h160v-16h-16v-127zM144 384v-16h48v16h-48zM144 336v-16h32v16h-32zM144 288v-16h48v16h-48zM127 240l-9 -16h58v16h-49zM351 40c0 9 -3 22 -10 33l-72 119h-154l-71 -119c-7 -11 -11 -24 -11 -33c0 -28 16 -40 46 -40h226c30 0 45 16 46 40z" />
+    <glyph glyph-name="ion-ios-flower-outline" unicode="&#xf432;" 
+d="M363 164c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80c-3 -3 -7 -4 -12 -4c-15 0 -38 15 -68 45c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93
+c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-30 -30 -53 -45 -68 -45c-5 0 -9 1 -12 4c-12 12 1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55
+c-40 40 -53 68 -41 80c3 3 7 4 12 4c15 0 38 -14 68 -44c20 -20 41 -51 56 -76c3 2 7 3 10 4c-7 28 -15 64 -15 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -8 -65 -15 -93c3 -1 7 -2 10 -4c15 25 36 56 56 76c30 30 53 44 68 44c5 0 9 -1 12 -4c12 -12 -1 -40 -41 -80
+c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15c56 0 85 -12 85 -28s-29 -28 -85 -28zM288 193v-3c30 -7 56 -10 75 -10c21 0 39 2 52 5c10 3 14 6 16 7c-2 1 -6 4 -16 7c-13 3 -31 5 -52 5c-19 0 -45 -4 -75 -11zM314 299c-14 -14 -30 -35 -46 -61l2 -2
+c26 16 47 32 61 46c15 15 26 28 33 40c5 9 7 14 7 16c-4 0 -22 -4 -57 -39zM178 236l2 2c-16 26 -32 47 -46 61c-35 35 -53 39 -57 39c0 -2 2 -7 7 -16c7 -12 18 -25 33 -40c14 -14 35 -30 61 -46zM85 180c19 0 45 3 75 10v3c-30 7 -56 11 -75 11c-21 0 -39 -2 -52 -5
+c-10 -3 -14 -6 -16 -7c2 -1 5 -4 15 -7c13 -3 32 -5 53 -5zM134 85c14 14 30 35 46 61l-2 2c-26 -16 -47 -32 -61 -46c-15 -15 -26 -29 -33 -41c-5 -9 -7 -14 -7 -16c4 0 22 5 57 40zM270 148l-2 -2c16 -26 32 -47 46 -61c35 -35 53 -40 57 -40c0 2 -2 7 -7 16
+c-7 12 -18 26 -33 41c-14 14 -35 30 -61 46zM217 383c-3 -13 -5 -31 -5 -52c0 -19 4 -45 11 -75h2c7 30 11 56 11 75c0 21 -2 39 -5 52c-3 10 -6 14 -7 16c-1 -2 -4 -6 -7 -16zM231 0c3 13 5 32 5 53c0 19 -4 45 -11 75h-2c-7 -30 -11 -56 -11 -75c0 -21 2 -40 5 -53
+c3 -10 6 -13 7 -15c1 2 4 5 7 15zM224 160c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM313 42c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76s24 -34 49 -52zM302 -1c1 4 2 14 -3 34c-5 4 -10 9 -15 14
+c0 -9 0 -17 -1 -25c10 -16 16 -22 19 -23zM182 365c-6 -35 1 -75 1 -75s-27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36zM164 337c0 9 0 17 1 25c-10 16 -16 21 -19 22c-1 -4 -2 -14 3 -34c5 -4 10 -8 15 -13zM50 149c35 -4 76 2 76 2s-34 -24 -51 -48
+c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11c-5 11 7 25 34 41zM66 117c4 5 8 10 13 15c-9 0 -17 0 -25 1c-16 -10 -21 -16 -22 -19c1 0 4 -1 8 -1c7 0 16 1 26 4zM432 276c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2s33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10zM394 250
+c16 10 21 16 22 19c-1 0 -4 1 -8 1c-7 0 -16 -1 -26 -4c-4 -5 -8 -9 -13 -14c9 0 17 -1 25 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM143 1c4 2 12 8 22 26c0 6 -1 13 -1 20c-6 -6 -13 -12 -19 -17
+c-4 -18 -3 -26 -2 -29zM312 398c11 -5 13 -22 5 -54c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1zM303 353c5 18 3 27 2 30c-4 -2 -12 -8 -22 -26c0 -6 1 -14 1 -21c6 6 13 12 19 17zM71 285c18 -24 55 -53 55 -53s-40 7 -70 3c-28 15 -43 32 -38 44
+c3 7 10 11 22 11c8 0 21 -1 31 -5zM33 273c2 -4 8 -12 26 -22c6 0 13 1 20 1c-6 6 -12 12 -17 18c-8 2 -16 4 -22 4c-4 0 -6 -1 -7 -1zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5c-20 27 -55 52 -55 52s45 -8 70 -2zM408 110c4 0 6 1 7 1
+c-2 4 -8 12 -26 22c-6 0 -13 -1 -20 -1c6 -6 12 -13 17 -19c8 -2 16 -3 22 -3z" />
+    <glyph glyph-name="ion-ios-flower" unicode="&#xf433;" 
+d="M363 220c56 0 85 -12 85 -28s-29 -28 -85 -28c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80s-40 1 -80 41c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93
+c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-40 -40 -68 -53 -80 -41s1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55c-40 40 -53 68 -41 80s40 0 80 -40
+c20 -20 41 -51 56 -76c3 2 6 3 9 4c-7 28 -14 64 -14 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -7 -65 -14 -93c3 -1 6 -2 9 -4c15 25 36 56 56 76c40 40 68 52 80 40s-1 -40 -41 -80c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15zM264 94c0 0 24 -34 49 -52
+c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76zM183 290c0 0 -27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36c-6 -35 1 -75 1 -75zM126 151c0 0 -34 -24 -51 -48c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11
+c-5 11 7 25 34 41c35 -4 76 2 76 2zM322 232c0 0 33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM317 344
+c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1c11 -5 13 -22 5 -54zM56 235c-28 15 -43 32 -38 44c3 7 10 11 22 11c8 0 21 -1 31 -5c18 -24 55 -53 55 -53s-40 7 -70 3zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5
+c-20 27 -55 52 -55 52s45 -8 70 -2z" />
+    <glyph glyph-name="ion-ios-folder-outline" unicode="&#xf434;" 
+d="M425 352c13 0 23 -10 23 -23v-304c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v336c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242zM25 368c-4 0 -9 -3 -9 -7v-74c3 1 5 1 8 1h400c3 0 5 0 8 -1v42c0 4 -3 7 -7 7h-242c-7 0 -12 2 -17 7
+l-23 23c-2 2 -3 2 -6 2h-112zM432 25v239c0 4 -4 8 -8 8h-400c-4 0 -8 -4 -8 -8v-239c0 -4 5 -9 9 -9h400c4 0 7 5 7 9z" />
+    <glyph glyph-name="ion-ios-folder" unicode="&#xf435;" 
+d="M440 272c4 0 8 -4 8 -8v-239c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v239c0 4 4 8 8 8h432zM425 352c13 0 23 -10 23 -23v-42c-3 1 -5 1 -8 1h-432c-3 0 -5 0 -8 -1v74c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242z" />
+    <glyph glyph-name="ion-ios-football-outline" unicode="&#xf436;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM41 284c-15 -27 -23 -57 -24 -89l43 37v0zM142 371
+c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58zM277 201l-70 58l-69 -58v-1l18 -72h104l18 72zM399 195c-1 32 -9 63 -24 90l-19 -53v0zM364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22z
+M295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77zM207 345l47 32c-15 4 -30 6 -46 6s-32 -2 -47 -6zM118 66l-54 1c20 -23 46 -42 75 -53l-20 50zM277 14c29 11 55 30 75 53l-56 -1l-2 -3z" />
+    <glyph glyph-name="ion-ios-football" unicode="&#xf437;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM142 371c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58z
+M364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22zM295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77z" />
+    <glyph glyph-name="ion-ios-game-controller-a-outline" unicode="&#xf438;" 
+d="M163 208c3 0 5 -2 5 -5v-22c0 -3 -2 -5 -5 -5h-35v-35c0 -3 -3 -5 -6 -5h-21c-3 0 -5 2 -5 5v35h-35c-3 0 -5 3 -5 6v21c0 3 2 5 5 5h35v35c0 3 2 5 5 5h22c3 0 5 -2 5 -5v-35h35zM330 169c11 0 20 -8 20 -19s-9 -19 -20 -19s-19 8 -19 19s8 19 19 19zM288 211
+c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM373 211c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM330 253c11 0 20 -8 20 -19s-9 -20 -20 -20s-19 9 -19 20s8 19 19 19zM337 286h-226c-26 0 -49 -9 -67 -26s-28 -41 -28 -67s10 -51 28 -68
+s41 -27 67 -27h226c26 0 49 10 67 27s28 42 28 68s-10 50 -28 67s-41 26 -67 26zM337 302v0c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226z" />
+    <glyph glyph-name="ion-ios-game-controller-a" unicode="&#xf439;" 
+d="M337 302c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226zM168 181v0v22c0 3 -2 5 -5 5h-35v35c0 3 -2 5 -5 5h-22c-3 0 -5 -2 -5 -5v-35h-35c-3 0 -5 -2 -5 -5v-21c0 -3 2 -6 5 -6h35v-35c0 -3 2 -5 5 -5h21c3 0 6 2 6 5v35
+h35c3 0 5 2 5 5zM288 173c11 0 19 8 19 19s-8 19 -19 19s-20 -8 -20 -19s9 -19 20 -19zM330 131c11 0 20 8 20 19s-9 19 -20 19s-19 -8 -19 -19s8 -19 19 -19zM330 214c11 0 20 9 20 20s-9 19 -20 19s-19 -8 -19 -19s8 -20 19 -20zM373 173c11 0 19 8 19 19s-8 19 -19 19
+s-20 -8 -20 -19s9 -19 20 -19z" />
+    <glyph glyph-name="ion-ios-game-controller-b-outline" unicode="&#xf43a;" 
+d="M276 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM320 200c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM103 264c22 0 39 -18 39 -40s-17 -40 -39 -40s-39 18 -39 40s17 40 39 40zM103 205c11 0 19 8 19 19s-8 19 -19 19
+s-19 -8 -19 -19s8 -19 19 -19zM320 288c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM364 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33
+h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM420 49c10 5 23 48 -1 146c-21 90 -43 128 -78 138c-8 2 -14 3 -21 3
+c-10 0 -19 -2 -30 -5c-16 -4 -36 -10 -66 -10s-50 6 -66 10c-11 3 -20 5 -30 5c-7 0 -13 -1 -21 -3c-35 -10 -57 -48 -78 -138c-24 -98 -11 -141 -1 -146c2 -1 4 -1 6 -1c6 0 14 4 23 12s19 18 32 34s24 28 44 34c17 5 38 5 79 5h24c41 0 62 0 79 -5c20 -6 31 -18 44 -34
+s23 -26 32 -34s17 -12 23 -12c2 0 4 0 6 1z" />
+    <glyph glyph-name="ion-ios-game-controller-b" unicode="&#xf43b;" 
+d="M103 243c11 0 19 -8 19 -19s-8 -19 -19 -19s-19 8 -19 19s8 19 19 19zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164
+s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM103 184c22 0 39 18 39 40s-17 40 -39 40s-39 -18 -39 -40s17 -40 39 -40zM276 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 160
+c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 248c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM364 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20z" />
+    <glyph glyph-name="ion-ios-gear-outline" unicode="&#xf43c;" horiz-adv-x="384" 
+d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM138 365c-10 -3 -20 -7 -30 -12c2 -8 1 -16 0 -24
+c-2 -13 -8 -25 -18 -35c-12 -12 -29 -19 -46 -19c-4 0 -9 0 -13 1c-5 -10 -9 -20 -12 -30c7 -4 12 -10 17 -17c8 -11 12 -24 12 -37s-4 -26 -12 -37c-5 -7 -10 -13 -17 -17c3 -10 7 -20 12 -30c4 1 9 1 13 1c17 0 34 -7 46 -19c10 -10 16 -22 18 -35c1 -8 2 -16 0 -24
+c10 -5 20 -9 30 -12c4 7 10 12 17 17c11 8 24 12 37 12s26 -4 37 -12c7 -5 13 -10 17 -17c10 3 20 7 30 12c-2 8 -1 16 0 24c2 13 8 25 18 35c12 12 29 19 46 19c4 0 9 0 13 -1c5 10 9 20 12 30c-7 4 -12 10 -17 17c-8 11 -12 24 -12 37s4 26 12 37c5 7 10 13 17 17
+c-3 10 -7 20 -12 30c-4 -1 -9 -1 -13 -1c-17 0 -34 7 -46 19c-10 10 -16 22 -18 35c-1 8 -2 16 0 24c-10 5 -20 9 -30 12c-4 -7 -10 -12 -17 -17c-11 -8 -24 -12 -37 -12s-26 4 -37 12c-7 5 -13 10 -17 17zM238 384v0c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55
+c10 -10 22 -14 35 -14c7 0 14 1 20 4c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46s14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32
+c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32z" />
+    <glyph glyph-name="ion-ios-gear" unicode="&#xf43d;" horiz-adv-x="384" 
+d="M352 192c0 -21 14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4
+c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55c10 -10 22 -14 35 -14c7 0 14 1 20 4
+c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
+    <glyph glyph-name="ion-ios-glasses-outline" unicode="&#xf43e;" 
+d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24
+c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" />
+    <glyph glyph-name="ion-ios-glasses" unicode="&#xf43f;" 
+d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24
+c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58z" />
+    <glyph glyph-name="ion-ios-grid-view-outline" unicode="&#xf440;" horiz-adv-x="384" 
+d="M384 256h-112v-128h112v-16h-112v-112h-16v112h-128v-112h-16v112h-112v16h112v128h-112v16h112v112h16v-112h128v112h16v-112h112v-16zM256 128v128h-128v-128h128z" />
+    <glyph glyph-name="ion-ios-grid-view" unicode="&#xf441;" horiz-adv-x="384" 
+d="M128 128v128h128v-128h-128zM0 384h384v-384h-384v384zM352 256v16h-80v80h-16v-80h-128v80h-16v-80h-80v-16h80v-128h-80v-16h80v-80h16v80h128v-80h16v80h80v16h-80v128h80z" />
+    <glyph glyph-name="ion-ios-heart-outline" unicode="&#xf442;" 
+d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53zM395 157c12 14 22 31 28 49c6 16 9 31 9 46c0 30 -10 56 -29 74
+c-9 8 -20 15 -33 19c-13 5 -28 7 -43 7c-38 0 -73 -18 -89 -45l-14 -23l-14 23c-16 27 -51 45 -89 45c-15 0 -30 -2 -43 -7c-13 -4 -24 -11 -33 -19c-19 -18 -29 -44 -29 -74c0 -15 3 -30 9 -46c6 -18 16 -35 28 -49c27 -32 42 -49 97 -85c40 -27 65 -36 74 -39
+c9 3 34 12 74 39c55 36 70 53 97 85z" />
+    <glyph glyph-name="ion-ios-heart" unicode="&#xf443;" 
+d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53z" />
+    <glyph glyph-name="ion-ios-help-empty" unicode="&#xf444;" horiz-adv-x="128" 
+d="M68 82c-9 0 -17 8 -17 17s8 17 17 17s17 -8 17 -17s-8 -17 -17 -17zM102 197c-23 -22 -22 -27 -23 -53h-19c1 28 7 43 30 64c11 10 19 24 19 39c0 24 -19 39 -42 39c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62c33 0 60 -20 60 -54c0 -22 -11 -37 -26 -51z" />
+    <glyph glyph-name="ion-ios-help-outline" unicode="&#xf445;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM212 302c33 0 60 -21 60 -55c0 -22 -11 -36 -26 -50c-23 -23 -22 -27 -23 -53h-19
+c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62zM212 116c9 0 17 -8 17 -17s-8 -17 -17 -17s-17 8 -17 17s8 17 17 17z" />
+    <glyph glyph-name="ion-ios-help" unicode="&#xf446;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46
+c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" />
+    <glyph glyph-name="ion-ios-home-outline" unicode="&#xf447;" horiz-adv-x="384" 
+d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45zM80 294v42h-32v-67z" />
+    <glyph glyph-name="ion-ios-home" unicode="&#xf448;" horiz-adv-x="384" 
+d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45z" />
+    <glyph glyph-name="ion-ios-infinite-outline" unicode="&#xf449;" 
+d="M419 260c19 -19 29 -43 29 -68s-10 -49 -29 -68c-19 -18 -44 -28 -70 -28s-50 10 -69 28l-126 123c-15 15 -35 22 -56 22s-40 -7 -55 -22c-31 -30 -31 -80 0 -110c15 -15 34 -22 55 -22s41 7 56 22l43 42l13 -14l-42 -41c-19 -18 -44 -28 -70 -28s-50 10 -69 28
+c-19 19 -29 43 -29 68s10 49 29 68c19 18 43 28 69 28s51 -10 70 -28l126 -123c15 -15 34 -22 55 -22s41 7 56 22c31 30 31 80 0 110c-15 15 -35 22 -56 22s-40 -7 -55 -22l-43 -42l-13 14l42 41c19 18 44 28 70 28s50 -10 69 -28z" />
+    <glyph glyph-name="ion-ios-infinite" unicode="&#xf44a;" horiz-adv-x="464" 
+d="M433 266c20 -20 31 -46 31 -74s-11 -54 -31 -74s-48 -30 -76 -30s-55 10 -75 30l-125 123c-13 13 -32 20 -51 20s-37 -7 -50 -20s-21 -31 -21 -49c0 -19 8 -36 21 -49s31 -20 50 -20s38 7 51 20l39 38l25 -25l-39 -38c-20 -20 -48 -30 -76 -30s-55 10 -75 30
+s-31 46 -31 74s11 54 31 74s47 30 75 30s56 -10 76 -30l125 -123c13 -13 31 -20 50 -20s38 7 51 20s20 31 20 49c0 19 -7 36 -20 49s-32 20 -51 20s-37 -7 -50 -20l-39 -38l-25 25l39 38c20 20 48 30 76 30s55 -10 75 -30z" />
+    <glyph glyph-name="ion-ios-information-empty" unicode="&#xf44b;" horiz-adv-x="64" 
+d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" />
+    <glyph glyph-name="ion-ios-information-outline" unicode="&#xf44c;" horiz-adv-x="416" 
+d="M184 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM224 104h16v-8h-64v8h16v120h-16v8h48v-128zM208 400c57 0 106 -20 147 -61s61 -90 61 -147s-20 -106 -61 -147s-90 -61 -147 -61s-106 20 -147 61s-61 90 -61 147s20 106 61 147s90 61 147 61z
+M208 1c53 0 98 19 135 56s56 82 56 135s-19 98 -56 135s-82 56 -135 56s-98 -19 -135 -56s-56 -82 -56 -135s19 -98 56 -135s82 -56 135 -56z" />
+    <glyph glyph-name="ion-ios-information" unicode="&#xf44d;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM204 296c-11 0 -20 -9 -20 -20s9 -20 20 -20s20 9 20 20s-9 20 -20 20zM240 96v8h-16v128h-48v-8h16v-120h-16v-8h64z" />
+    <glyph glyph-name="ion-ios-ionic-outline" unicode="&#xf44e;" horiz-adv-x="416" 
+d="M378 313c24 -34 38 -76 38 -121c0 -115 -92 -208 -207 -208s-209 93 -209 208s94 208 209 208c45 0 86 -14 120 -38c6 5 13 8 21 8c19 0 35 -16 35 -35c0 -8 -2 -16 -7 -22zM350 357c-12 0 -22 -10 -22 -22s10 -22 22 -22s22 10 22 22s-10 22 -22 22zM344 56
+c18 18 31 39 41 62c10 24 15 48 15 74s-5 51 -15 75c-5 13 -12 25 -20 36c-5 -2 -10 -3 -15 -3c-19 0 -35 16 -35 35c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 14 -75 14s-51 -4 -75 -14c-23 -10 -43 -24 -61 -42s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75
+s5 -50 15 -74c10 -23 23 -44 41 -62s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41zM208 288c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM208 112c44 0 80 36 80 80s-36 80 -80 80s-79 -36 -79 -80s35 -80 79 -80z" />
+    <glyph glyph-name="ion-ios-keypad-outline" unicode="&#xf44f;" horiz-adv-x="384" 
+d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM331 16c21 0 37 16 37 37s-16 38 -37 38s-38 -17 -38 -38s17 -37 38 -37zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM192 16c21 0 37 16 37 37s-16 38 -37 38
+s-37 -17 -37 -38s16 -37 37 -37zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM53 16c21 0 38 16 38 37s-17 38 -38 38s-37 -17 -37 -38s16 -37 37 -37zM331 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM331 155
+c21 0 37 16 37 37s-16 37 -37 37s-38 -16 -38 -37s17 -37 38 -37zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM192 155c21 0 37 16 37 37s-16 37 -37 37s-37 -16 -37 -37s16 -37 37 -37zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53
+s-53 23 -53 53s23 53 53 53zM53 155c21 0 38 16 38 37s-17 37 -38 37s-37 -16 -37 -37s16 -37 37 -37zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54zM331 368c-21 0 -38 -16 -38 -37s17 -38 38 -38s37 17 37 38s-16 37 -37 37zM192 384
+c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM192 293c21 0 37 17 37 38s-16 37 -37 37s-37 -16 -37 -37s16 -38 37 -38zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53zM53 293c21 0 38 17 38 38s-17 37 -38 37
+s-37 -16 -37 -37s16 -38 37 -38z" />
+    <glyph glyph-name="ion-ios-keypad" unicode="&#xf450;" horiz-adv-x="384" 
+d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM331 245c30 0 53 -23 53 -53
+s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53s-53 23 -53 53s23 53 53 53zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54z
+M192 384c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53z" />
+    <glyph glyph-name="ion-ios-lightbulb-outline" unicode="&#xf451;" horiz-adv-x="288" 
+d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-128v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141zM239 194l6 8c16 22 27 47 27 73c0 33 -16 65 -40 89s-55 36 -88 36
+s-64 -12 -88 -36s-40 -56 -40 -89c0 -26 11 -51 27 -73l19 -26v0c5 -6 9 -13 13 -21c17 -29 21 -58 21 -75h16v112l-32 64h17l31 -64v-112h32v112l31 64h17l-32 -64v-112h16c0 17 4 45 21 75c8 14 16 25 24 36c1 1 1 2 2 3zM112 -32v16h64v-16h-64zM96 0v16h96v-16h-96z
+M96 32v16h96v-16h-96z" />
+    <glyph glyph-name="ion-ios-lightbulb" unicode="&#xf452;" horiz-adv-x="288" 
+d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-32v128l32 64h-16l-32 -64v-128h-32v128l-31 64h-17l32 -64v-128h-32v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141z
+M112 -32v16h64v-16h-64zM96 0v16h96v-16h-96zM96 32v16h96v-16h-96z" />
+    <glyph glyph-name="ion-ios-list-outline" unicode="&#xf453;" horiz-adv-x="384" 
+d="M368 368h-352v-352h352v352zM384 384v0v-384h-384v384h384zM128 280v16h192v-16h-192zM128 184v16h192v-16h-192zM128 88v16h192v-16h-192zM64 288c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM64 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16
+s-16 5 -16 16zM64 96c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" />
+    <glyph glyph-name="ion-ios-list" unicode="&#xf454;" horiz-adv-x="384" 
+d="M0 384h384v-384h-384v384zM80 80c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 176c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 272c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM320 88v16h-192v-16h192zM320 184v16
+h-192v-16h192zM320 280v16h-192v-16h192z" />
+    <glyph glyph-name="ion-ios-location-outline" unicode="&#xf455;" horiz-adv-x="288" 
+d="M144 400c-34 0 -67 -13 -91 -37s-37 -57 -37 -91c0 -43 24 -107 70 -186c22 -38 44 -72 58 -91c14 19 36 53 58 91c46 79 70 143 70 186c0 34 -13 67 -37 91s-57 37 -91 37zM144 416v0c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304
+c0 80 64 144 144 144zM144 336c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
+    <glyph glyph-name="ion-ios-location" unicode="&#xf456;" horiz-adv-x="288" 
+d="M144 416c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304c0 80 64 144 144 144zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
+    <glyph glyph-name="ion-ios-locked-outline" unicode="&#xf457;" horiz-adv-x="320" 
+d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM72 296v-72h176v72c0 49 -39 88 -88 88s-88 -39 -88 -88zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32z
+M160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
+    <glyph glyph-name="ion-ios-locked" unicode="&#xf458;" horiz-adv-x="320" 
+d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32c0 -15 10 -27 24 -31v-33h16v33zM248 224v72c0 49 -39 88 -88 88s-88 -39 -88 -88v-72h176zM160 144c9 0 16 -7 16 -16
+s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16z" />
+    <glyph glyph-name="ion-ios-loop-strong" unicode="&#xf459;" horiz-adv-x="512" 
+d="M256 400c115 0 208 -93 208 -208c0 -14 -1 -28 -4 -42l-1 -4l-24 5l1 4c2 12 4 24 4 37c0 101 -83 184 -184 184c-66 0 -127 -36 -160 -94l-2 -3l-21 11l2 4c37 65 106 106 181 106zM416 102l2 3l21 -11l-2 -4c-37 -65 -106 -106 -181 -106c-115 0 -208 93 -208 208
+c0 14 1 28 4 42l1 4l24 -5l-1 -4c-2 -12 -4 -24 -4 -37c0 -101 83 -184 184 -184c66 0 127 36 160 94zM384 192h128l-64 -64zM0 192l64 64l64 -64h-128z" />
+    <glyph glyph-name="ion-ios-loop" unicode="&#xf45a;" horiz-adv-x="489" 
+d="M478 192l11 -11l-52 -53l-53 53l10 11l43 -41zM449 192v0v0c0 -7 0 -14 -1 -21l-16 1c1 7 1 14 1 21c-1 103 -85 187 -188 187c-68 0 -131 -37 -164 -96l-14 8c36 64 104 104 178 104c112 0 203 -91 204 -202v0v-2zM409 100l14 -8c-36 -64 -104 -104 -178 -104
+c-111 0 -202 90 -204 200v0v3v1v0c0 7 0 14 1 21l16 -1c-1 -7 -1 -14 -1 -21c0 -103 85 -187 188 -187c68 0 131 37 164 96zM53 256l52 -53l-11 -11l-41 41l-42 -41l-11 11z" />
+    <glyph glyph-name="ion-ios-medical-outline" unicode="&#xf45b;" horiz-adv-x="364" 
+d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69zM342 118l-128 74l128 74l-16 28l-128 -74v148h-32v-148l-128 74l-16 -28l128 -74l-128 -74l16 -28l128 74v-148h32v148l128 -74z" />
+    <glyph glyph-name="ion-ios-medical" unicode="&#xf45c;" horiz-adv-x="364" 
+d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69z" />
+    <glyph glyph-name="ion-ios-medkit-outline" unicode="&#xf45d;" horiz-adv-x="416" 
+d="M224 240h-32v-48v-16h-16h-48v-32h48h16v-16v-48h32v48v16h16h48v32h-48h-16v16v48zM240 256v0v-64h64v-64h-64v-64h-64v64h-64v64h64v64h64zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97
+c-11 0 -14 -8 -14 -18zM400 16v288h-384v-288h384z" />
+    <glyph glyph-name="ion-ios-medkit" unicode="&#xf45e;" horiz-adv-x="416" 
+d="M224 176h16h48v-32h-48h-16v-16v-48h-32v48v16h-16h-48v32h48h16v16v48h32v-48v-16zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18zM304 128v64h-64v64h-64v-64h-64
+v-64h64v-64h64v64h64z" />
+    <glyph glyph-name="ion-ios-mic-off" unicode="&#xf45f;" horiz-adv-x="280" 
+d="M266 -32l-258 440l14 8l258 -440zM128 95c-44 0 -79 37 -79 83v118l113 -193c-10 -5 -22 -8 -34 -8zM207 178c0 -10 -2 -19 -5 -28l-136 234c14 20 37 32 62 32c44 0 79 -38 79 -84v-154zM256 176c0 -28 -9 -54 -24 -75l-10 17c11 17 17 36 17 58v80h17v-80zM139 49v0
+v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109c17 0 34 4 48 11l9 -16c-14 -7 -30 -12 -47 -13z" />
+    <glyph glyph-name="ion-ios-mic-outline" unicode="&#xf460;" horiz-adv-x="256" 
+d="M128 416c44 0 79 -38 79 -84v-154c0 -46 -35 -84 -79 -84s-79 38 -79 84v154c0 46 35 84 79 84zM191 178v154c0 37 -28 68 -63 68s-63 -31 -63 -68v-154c0 -37 28 -68 63 -68s63 31 63 68zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63
+c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" />
+    <glyph glyph-name="ion-ios-mic" unicode="&#xf461;" horiz-adv-x="256" 
+d="M128 94c-44 0 -79 38 -79 84v154c0 46 35 84 79 84s79 -38 79 -84v-154c0 -46 -35 -84 -79 -84zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" />
+    <glyph glyph-name="ion-ios-minus-empty" unicode="&#xf462;" horiz-adv-x="256" 
+d="M256 183h-256v17h256v-17z" />
+    <glyph glyph-name="ion-ios-minus-outline" unicode="&#xf463;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM80 183v17h256v-17h-256z" />
+    <glyph glyph-name="ion-ios-minus" unicode="&#xf464;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-256v-17h256z" />
+    <glyph glyph-name="ion-ios-monitor-outline" unicode="&#xf465;" horiz-adv-x="480" 
+d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448z" />
+    <glyph glyph-name="ion-ios-monitor" unicode="&#xf466;" horiz-adv-x="480" 
+d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448zM32 96v224h416v-224h-416z" />
+    <glyph glyph-name="ion-ios-moon-outline" unicode="&#xf467;" horiz-adv-x="216" 
+d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5zM116 93c25 0 48 9 65 24c-65 5 -116 59 -116 125
+c0 14 2 28 6 40c-33 -16 -55 -51 -55 -90c0 -55 45 -99 100 -99z" />
+    <glyph glyph-name="ion-ios-moon" unicode="&#xf468;" horiz-adv-x="216" 
+d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5z" />
+    <glyph glyph-name="ion-ios-more-outline" unicode="&#xf469;" horiz-adv-x="320" 
+d="M160 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32
+s-32 14 -32 32s14 32 32 32zM288 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" />
+    <glyph glyph-name="ion-ios-more" unicode="&#xf46a;" horiz-adv-x="320" 
+d="M160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" />
+    <glyph glyph-name="ion-ios-musical-note" unicode="&#xf46b;" horiz-adv-x="192" 
+d="M192 346v-1v-65c0 -3 -3 -6 -6 -5v0l-73 13v-192c0 -33 1 -80 -51 -82c-48 -2 -62 16 -62 41c0 19 9 39 51 41c22 1 37 1 45 1v273l90 -19l2 -1c2 0 3 -1 4 -3v0v-1v0z" />
+    <glyph glyph-name="ion-ios-musical-notes" unicode="&#xf46c;" horiz-adv-x="320" 
+d="M320 128c0 -34 4 -80 -49 -82c-49 -2 -62 16 -62 41c0 20 9 39 52 41c23 1 34 2 43 2v160l-191 -32v-161c0 -34 3 -81 -50 -83c-49 -2 -63 17 -63 42c0 20 9 39 52 41c23 1 35 1 44 1v237l224 35v-242z" />
+    <glyph glyph-name="ion-ios-navigate-outline" unicode="&#xf46d;" horiz-adv-x="416" 
+d="M208 384c-51 0 -99 -21 -135 -57s-57 -84 -57 -135s21 -99 57 -135s84 -57 135 -57s99 21 135 57s57 84 57 135s-21 99 -57 135s-84 57 -135 57zM208 400v0c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM304 288l-96 -224v128h-128z" />
+    <glyph glyph-name="ion-ios-navigate" unicode="&#xf46e;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64l96 224l-224 -96h128v-128z" />
+    <glyph glyph-name="ion-ios-nutrition-outline" unicode="&#xf46f;" horiz-adv-x="384" 
+d="M294 214v0c6 -6 10 -14 10 -23c0 -11 -5 -20 -13 -26v0s-51 -37 -106 -77l-38 31c-2 2 -4 3 -6 3c-1 0 -2 0 -3 -1v0c-2 -2 -2 -6 1 -10l29 -35l-115 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 1 13 4 18v0c2 2 17 25 37 57l21 -17c2 -2 4 -2 6 -2c1 0 3 0 4 1v0
+c2 2 1 6 -2 10l-19 23c27 43 60 96 84 134l36 -30c2 -2 4 -3 6 -3c1 0 2 1 3 2v0c2 2 2 5 -1 9l-33 40c11 18 19 29 19 29v0c6 10 15 16 27 16c9 0 18 -4 24 -10v0l78 -79v0v0zM282 178c4 3 6 8 6 13c0 4 -2 9 -5 12l-5 4v1l-69 69v0l-5 5c-3 3 -8 5 -12 5
+c-6 0 -10 -3 -13 -8l-5 -8c-2 -3 -5 -7 -8 -12l25 -30v0l1 -1c8 -10 8 -22 0 -30l-1 -1l-1 -1c-4 -3 -8 -5 -13 -5s-11 2 -16 6v1h-1l-21 18l-24 -39l-44 -70l12 -14v0v0c8 -10 8 -23 0 -31v0c-4 -4 -9 -6 -15 -6c-5 0 -11 2 -16 6v0v0l-7 5c-3 -5 -5 -9 -8 -13
+c-12 -19 -16 -26 -18 -29c-1 -3 -2 -6 -2 -9c0 -9 7 -16 16 -16c3 0 6 2 11 5l101 74l-18 22h-1v0c-8 10 -8 23 0 31v0v0v0c4 4 10 6 15 6s11 -2 16 -6v0h1l28 -24c49 36 93 68 96 70zM376 333l8 -14l-5 -3l-103 -60l-17 17l71 123l2 4l14 -8l-3 -4l-63 -111l91 53z" />
+    <glyph glyph-name="ion-ios-nutrition" unicode="&#xf470;" horiz-adv-x="384" 
+d="M295 214v0c6 -6 9 -13 9 -22c0 -11 -5 -20 -13 -26v0s-51 -38 -106 -78l-38 32c-4 3 -8 3 -10 1v0c-2 -2 -2 -6 1 -10l29 -35l-114 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 2 13 5 18v0c1 2 16 25 36 57l20 -17c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-20 23
+c27 43 60 96 84 134l36 -30c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-33 40c11 18 18 29 18 29v0c6 10 16 16 28 16c9 0 18 -4 24 -10v0l78 -79l1 -1v0zM384 309l-103 -59l-28 29l70 121l28 -16l-50 -85l67 38z" />
+    <glyph glyph-name="ion-ios-paper-outline" unicode="&#xf471;" horiz-adv-x="384" 
+d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-16h-16v-289c0 -8 7 -15 15 -15h322c8 0 15 7 15 15v337h-304v-320h-16v320v16zM96 320v16h128v-16h-128zM96 240v16h240v-16h-240zM96 160v16h192v-16h-192zM96 80v16h240v-16h-240z" />
+    <glyph glyph-name="ion-ios-paper" unicode="&#xf472;" horiz-adv-x="384" 
+d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-288h16v288v32v16zM96 336v-16h128v16h-128zM96 176v-16h192v16h-192zM336 80v16h-240v-16h240zM336 240v16h-240v-16h240z" />
+    <glyph glyph-name="ion-ios-paperplane-outline" unicode="&#xf473;" horiz-adv-x="320" 
+d="M0 198l320 154l-146 -320l-57 115zM132 152l41 -83l115 249zM286 320l-248 -121l83 -36z" />
+    <glyph glyph-name="ion-ios-paperplane" unicode="&#xf474;" horiz-adv-x="320" 
+d="M0 198l320 154l-214 -200zM320 352l-146 -320l-52 104z" />
+    <glyph glyph-name="ion-ios-partlysunny-outline" unicode="&#xf475;" horiz-adv-x="384" 
+d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM129 153c-4 -3 -8 -7 -12 -12c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 40 -10 53 -25c-4 -2 -9 -4 -14 -8
+c-10 11 -23 17 -39 17c-30 0 -55 -25 -55 -55c0 -23 15 -43 35 -51zM235 208c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14
+c-3 14 -11 26 -22 35s-25 14 -39 14zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
+    <glyph glyph-name="ion-ios-partlysunny" unicode="&#xf476;" horiz-adv-x="384" 
+d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8
+c0 43 35 78 78 78zM201 252l1 -2v0c-31 -5 -62 -43 -62 -75c0 -2 1 -5 1 -7l-1 -1h-1c-11 -6 -18 -14 -22 -26v1v-1c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 39 -9 52 -23z" />
+    <glyph glyph-name="ion-ios-pause-outline" unicode="&#xf477;" horiz-adv-x="256" 
+d="M63 336h-47v-288h47v288zM79 352v0v-320h-79v320h79zM240 336h-47v-288h47v288zM256 352v0v-320h-79v320h79z" />
+    <glyph glyph-name="ion-ios-pause" unicode="&#xf478;" horiz-adv-x="256" 
+d="M0 32v320h79v-320h-79zM177 32v320h79v-320h-79z" />
+    <glyph glyph-name="ion-ios-paw-outline" unicode="&#xf479;" horiz-adv-x="384" 
+d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM362 202c6 15 7 31 2 44c-2 5 -5 12 -12 15c-2 1 -4 2 -7 2c-13 0 -28 -15 -36 -36c-9 -25 -6 -50 8 -56
+c2 -1 5 -1 8 -1c14 0 29 13 37 32zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46zM67 171c14 6 17 31 8 56c-8 21 -23 36 -36 36c-3 0 -5 -1 -7 -2c-7 -3 -10 -10 -12 -15
+c-5 -13 -4 -29 2 -44c8 -19 23 -32 37 -32c3 0 6 0 8 1zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM107 356c-10 -12 -14 -29 -12 -48c3 -29 21 -53 40 -54h3
+c6 1 12 4 17 10c10 12 12 31 10 51c-3 29 -17 52 -35 53h-3c-9 -1 -16 -7 -20 -12zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12
+c-11 7 -22 25 -22 47c0 73 64 149 128 149zM290 27c6 4 14 16 14 32c0 30 -14 64 -36 91c-11 13 -23 24 -36 31c-13 8 -27 11 -40 11s-27 -3 -40 -11c-13 -7 -25 -18 -36 -31c-22 -27 -36 -61 -36 -91c0 -16 8 -28 14 -32c11 -7 18 -10 34 -10c14 0 19 4 26 9c2 1 4 3 6 4
+c9 6 18 12 32 12s23 -6 32 -12c2 -1 4 -3 6 -4c7 -5 12 -9 26 -9c16 0 23 3 34 10zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60c-4 -37 -28 -67 -56 -68h-6zM219 315c-2 -20 0 -39 10 -51
+c5 -6 11 -9 17 -10h3c19 1 38 25 41 54c2 19 -3 36 -13 48c-4 5 -10 11 -19 12h-4c-18 -1 -32 -24 -35 -53z" />
+    <glyph glyph-name="ion-ios-paw" unicode="&#xf47a;" horiz-adv-x="384" 
+d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25
+c4 2 9 3 14 3c20 0 41 -18 51 -46zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12
+c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12c-11 7 -22 25 -22 47c0 73 64 149 128 149zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60
+c-4 -37 -28 -67 -56 -68h-6z" />
+    <glyph glyph-name="ion-ios-people-outline" unicode="&#xf47b;" 
+d="M224 336v0v0zM317 113c11 -4 -11 4 0 0c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39
+c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM115 84c-6 -6 9 10 0 0c-6 -6 -10 -12 -12 -20h4
+h238c-4 15 -17 27 -30 33s-28 4 -41 9s-25 9 -28 25c-2 11 -2 22 -2 33c0 2 7 7 8 9c3 5 4 11 5 17c1 5 0 12 4 15c5 4 7 7 9 13c2 8 3 12 -1 19c-3 5 0 8 1 13c3 11 4 24 2 36c-8 37 -62 45 -86 19c-12 -13 -12 -31 -9 -47c1 -6 6 -14 3 -19c-1 -3 -5 -6 -4 -10
+c2 -5 2 -11 4 -16c2 -4 4 -6 7 -8s3 -6 3 -9c1 -7 2 -17 6 -23c3 -4 8 -6 8 -11v-21c-1 -8 -2 -18 -8 -24c-7 -6 -18 -10 -27 -12c-11 -3 -23 -3 -33 -7c-8 -3 -15 -8 -21 -14zM112 126c-15 -7 9 4 0 0c-9 -5 -18 -11 -25 -19c-1 -2 -6 -11 -7 -11h-25h-55c0 20 13 34 31 40
+c6 2 27 4 30 11c2 5 0 11 0 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12l3 12c1 9 1 19 1 28c0 16 -1 34 8 48c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7
+c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-8 -1 -15 -1 -22 -5zM71 112c6 10 16 18 26 24c-9 9 -5 26 -4 37c0 2 0 5 2 5h8c6 0 11 1 17 2c-7 23 0 47 -5 70c-3 16 -15 23 -31 23c-17 0 -27 -9 -30 -25c-4 -22 3 -46 -4 -68c9 -1 17 -2 26 -2c1 0 1 -28 1 -29
+c-1 -12 -8 -18 -19 -22c-12 -4 -29 -3 -36 -15h49zM368 96c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44
+c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10c18 -6 31 -20 31 -40h-80zM367 123c4 -4 -5 5 0 0s8 -11 15 -11h16h28c-7 12 -26 11 -38 16c-11 4 -16 12 -17 24c0 2 -1 27 1 27c9 0 18 0 26 1
+c-7 23 1 47 -4 70c-3 15 -15 23 -30 23c-17 0 -28 -8 -31 -25c-4 -23 2 -46 -5 -68c6 -2 12 -2 18 -2s8 1 9 -5c1 -11 5 -28 -4 -37c6 -4 11 -8 16 -13z" />
+    <glyph glyph-name="ion-ios-people" unicode="&#xf47c;" 
+d="M317 113c11 -4 -11 4 0 0v0zM317 113c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39
+c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM111 126h2h-1h-1zM111 126c-9 -5 -17 -11 -24 -19
+c-1 -2 -6 -11 -7 -11h-25h-55c0 20 12 34 30 40c6 2 27 4 30 11c2 5 1 11 1 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12c1 4 2 7 3 11c1 9 1 19 1 28c0 16 -1 35 8 49c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3
+c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-7 -1 -14 -2 -21 -5c2 1 2 2 -1 0c-8 -4 -4 -2 -1 0zM417 136c18 -6 31 -20 31 -40h-80c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6
+s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10z" />
+    <glyph glyph-name="ion-ios-person-outline" unicode="&#xf47d;" horiz-adv-x="320" 
+d="M106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10
+c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4
+c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8
+s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" />
+    <glyph glyph-name="ion-ios-person" unicode="&#xf47e;" horiz-adv-x="320" 
+d="M267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10
+c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" />
+    <glyph glyph-name="ion-ios-personadd-outline" unicode="&#xf47f;" horiz-adv-x="320" 
+d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68
+s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3
+c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38
+v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" />
+    <glyph glyph-name="ion-ios-personadd" unicode="&#xf480;" horiz-adv-x="320" 
+d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68
+s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" />
+    <glyph glyph-name="ion-ios-photos-outline" unicode="&#xf481;" 
+d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-352v-288h32v-16h-48v320z" />
+    <glyph glyph-name="ion-ios-photos" unicode="&#xf482;" 
+d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" />
+    <glyph glyph-name="ion-ios-pie-outline" unicode="&#xf483;" 
+d="M256 367v0v-207v-12l-12 -4l-180 -45c6 -13 13 -25 21 -36c12 -16 25 -30 41 -42c33 -24 73 -37 114 -37c26 0 51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75c0 51 -20 100 -56 136c-32 32 -75 51 -120 55zM240 384v0c115 0 208 -93 208 -208
+s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM208 400c-31 -1 -60 -7 -85 -18c-24 -11 -44 -26 -61 -46c-29 -34 -46 -80 -46 -127v0v0c0 -13 3 -46 12 -70l180 46v215zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
+    <glyph glyph-name="ion-ios-pie" unicode="&#xf484;" 
+d="M240 384v0c115 0 208 -93 208 -208s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
+    <glyph glyph-name="ion-ios-pint-outline" unicode="&#xf485;" horiz-adv-x="224" 
+d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190
+c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2zM191 -15c0 1 1 5 1 13c0 11 -4 23 -7 37c-4 18 -9 39 -9 62c0 41 8 64 16 86c8 23 16 46 16 95c0 9 -1 18 -1 26h-190c0 -8 -1 -17 -1 -26c0 -49 8 -72 16 -95
+c8 -22 16 -45 16 -86c0 -23 -5 -44 -9 -62c-3 -14 -7 -26 -7 -37c0 -8 1 -12 1 -13c2 -1 7 -1 15 -1h128c8 0 13 0 15 1z" />
+    <glyph glyph-name="ion-ios-pint" unicode="&#xf486;" horiz-adv-x="224" 
+d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190
+c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2z" />
+    <glyph glyph-name="ion-ios-play-outline" unicode="&#xf487;" horiz-adv-x="256" 
+d="M16 323v-262l210 131zM0 352v0l256 -160l-256 -160v320z" />
+    <glyph glyph-name="ion-ios-play" unicode="&#xf488;" horiz-adv-x="256" 
+d="M0 352v0l256 -160l-256 -160v320z" />
+    <glyph glyph-name="ion-ios-plus-empty" unicode="&#xf489;" horiz-adv-x="256" 
+d="M256 183h-120v-119h-17v119h-119v17h119v120h17v-120h120v-17z" />
+    <glyph glyph-name="ion-ios-plus-outline" unicode="&#xf48a;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM216 320v-120h120v-17h-120v-119h-17v119h-119v17h119v120h17z" />
+    <glyph glyph-name="ion-ios-plus" unicode="&#xf48b;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-120v120h-17v-120h-119v-17h119v-119h17v119h120z" />
+    <glyph glyph-name="ion-ios-pricetag-outline" unicode="&#xf48c;" horiz-adv-x="416" 
+d="M416 416v-160l-256 -288l-160 160l256 288h160zM400 264v136h-136l-240 -272l136 -136zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
+    <glyph glyph-name="ion-ios-pricetag" unicode="&#xf48d;" horiz-adv-x="416" 
+d="M304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM256 416h160v-160l-256 -288l-160 160zM320 288c9 0 16 4 22 10s10 13 10 22s-4 16 -10 22s-13 10 -22 10s-16 -4 -22 -10s-10 -13 -10 -22s4 -16 10 -22s13 -10 22 -10z" />
+    <glyph glyph-name="ion-ios-pricetags-outline" unicode="&#xf48e;" 
+d="M416 384h32v-144l-240 -272l-25 24l-23 -24l-160 160l256 288h160v-32zM160 -9l12 12l11 12l217 248v105v16v16h-137l-241 -272zM432 247v121h-16v-112l-221 -253l13 -12zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336
+c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
+    <glyph glyph-name="ion-ios-pricetags" unicode="&#xf48f;" 
+d="M432 384h16v-144l-240 -272l-13 13l237 266v137zM256 416h160v-32v-16v-112l-221 -253l-12 -11l-23 -24l-160 160zM320 288c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" />
+    <glyph glyph-name="ion-ios-printer-outline" unicode="&#xf490;" horiz-adv-x="416" 
+d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-48v-114h-256v114h-48c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 368v-32h256v32h-256zM320 16v192h-224v-192h224zM400 146v159c0 9 -7 15 -16 15v0h-352c-9 0 -16 -6 -16 -15v-159
+c0 -9 7 -16 16 -16h48v94h256v-94h48c9 0 16 7 16 16z" />
+    <glyph glyph-name="ion-ios-printer" unicode="&#xf491;" horiz-adv-x="416" 
+d="M80 0v224h256v-224h-256zM80 -0v224h256v-224h-256zM64 352v32h288v-32h-288zM385 336c18 0 31 -14 31 -31v-158c0 -17 -13 -34 -31 -34h-33v126h-288v-126h-31c-18 0 -33 17 -33 34v158c0 17 15 31 33 31h352z" />
+    <glyph glyph-name="ion-ios-pulse-strong" unicode="&#xf492;" horiz-adv-x="480" 
+d="M432 175c27 0 48 -20 48 -47s-21 -49 -48 -49c-21 0 -38 13 -45 31h-51c-7 0 -13 4 -15 11l-16 47l-50 -173c-2 -7 -8 -11 -15 -11h-1c-7 0 -14 5 -15 12l-51 308l-45 -182c-2 -7 -9 -12 -16 -12h-112v32h99l61 245c2 7 8 13 16 13s15 -7 16 -14l52 -314l45 155
+c2 7 8 11 15 11v0c7 0 13 -4 15 -11l29 -85h38c6 19 25 33 46 33z" />
+    <glyph glyph-name="ion-ios-pulse" unicode="&#xf493;" 
+d="M416 160c18 0 32 -14 32 -32s-14 -32 -32 -32c-15 0 -27 10 -31 23h-65c-3 0 -7 2 -8 5l-23 72l-57 -198c-1 -3 -4 -6 -8 -6v0c-4 0 -7 3 -8 7l-58 346l-54 -220c-1 -4 -4 -6 -8 -6h-96v16h90l62 251c1 4 4 6 8 6s7 -3 8 -7l58 -349l54 190c1 3 4 5 8 5s7 -2 8 -5l30 -91
+h59c3 14 16 25 31 25z" />
+    <glyph glyph-name="ion-ios-rainy-outline" unicode="&#xf494;" horiz-adv-x="288" 
+d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44
+c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1zM220 146c28 0 52 24 52 52s-24 54 -52 54h-6l-15 -2l-3 15c-3 14 -11 31 -23 40c-12 10 -26 14 -41 14
+c-36 0 -66 -31 -66 -67v-12v-10c-6 0 -12 -2 -14 -2c-20 -3 -35 -23 -35 -43c0 -10 4 -20 11 -27s16 -12 26 -12h124v0v0h42z" />
+    <glyph glyph-name="ion-ios-rainy" unicode="&#xf495;" horiz-adv-x="288" 
+d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44
+c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1z" />
+    <glyph glyph-name="ion-ios-recording-outline" unicode="&#xf496;" horiz-adv-x="480" 
+d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -75 -53 -95h146c-32 20 -53 55 -53 95c0 62 49 112 110 112zM16 192c0 -53 42 -95 94 -95s93 42 93 95s-41 95 -93 95s-94 -42 -94 -95z
+M370 97c52 0 94 42 94 95s-42 95 -94 95s-93 -42 -93 -95s41 -95 93 -95zM368 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM368 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM112 240c-26 0 -48 -22 -48 -48
+s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM112 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" />
+    <glyph glyph-name="ion-ios-recording" unicode="&#xf497;" horiz-adv-x="480" 
+d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -76 -53 -95h146c-32 19 -53 55 -53 95c0 62 49 112 110 112zM112 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z
+M368 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM368 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM112 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" />
+    <glyph glyph-name="ion-ios-redo-outline" unicode="&#xf498;" horiz-adv-x="384" 
+d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10zM208 256c-201 0 -192 -169 -192 -169c48 81 101 105 192 105v-65l148 97l-148 97v-65z" />
+    <glyph glyph-name="ion-ios-redo" unicode="&#xf499;" horiz-adv-x="384" 
+d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10z" />
+    <glyph glyph-name="ion-ios-refresh-empty" unicode="&#xf49a;" horiz-adv-x="256" 
+d="M128 64c-71 0 -128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108h20c0 -71 -57 -128 -128 -128z" />
+    <glyph glyph-name="ion-ios-refresh-outline" unicode="&#xf49b;" horiz-adv-x="416" 
+d="M316 192v0h20c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1
+c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
+    <glyph glyph-name="ion-ios-refresh" unicode="&#xf49c;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64c71 0 128 57 128 128h-20c0 -60 -48 -108 -108 -108s-108 48 -108 108s48 108 108 108v-56l96 56l-96 64v-44c-71 0 -128 -57 -128 -128s57 -128 128 -128z" />
+    <glyph glyph-name="ion-ios-reload" unicode="&#xf49d;" 
+d="M192 384c106 0 192 -86 192 -192l55 53l9 -9l-70 -68l-67 68l9 9l51 -52c0 98 -80 178 -179 178s-179 -80 -179 -179s80 -179 179 -179c79 0 146 50 170 121l12 -3c-26 -76 -97 -131 -182 -131c-106 0 -192 86 -192 192s86 192 192 192z" />
+    <glyph glyph-name="ion-ios-reverse-camera-outline" unicode="&#xf49e;" horiz-adv-x="384" 
+d="M238 129l2 2l11 -12l-2 -2c-16 -14 -36 -21 -57 -21c-45 0 -82 36 -87 78h-30l38 50l39 -50h-31c5 -33 35 -62 71 -62c17 0 33 6 46 17zM252 249c16 -14 25 -37 27 -57h30l-38 -51l-39 51h31c-5 35 -35 64 -71 64c-17 0 -33 -6 -46 -17l-2 -2l-11 12l2 2
+c16 14 36 21 57 21c22 0 44 -8 60 -23zM354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-6s-4 1 -6 3s-6 8 -9 11
+c-12 13 -21 24 -27 30c-5 5 -7 4 -7 4h-88s-1 0 -6 -4c-6 -5 -15 -14 -26 -27c-3 -4 -8 -11 -11 -14s-4 -3 -6 -3h-6h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17z" />
+    <glyph glyph-name="ion-ios-reverse-camera" unicode="&#xf49f;" horiz-adv-x="384" 
+d="M354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM249 117l2 2l-11 12l-2 -2c-13 -11 -29 -17 -46 -17c-36 0 -66 29 -71 62h31l-39 50l-38 -50h30
+c5 -42 42 -78 87 -78c21 0 41 7 57 21zM271 141l38 51h-30c-2 20 -11 43 -27 57c-16 15 -38 23 -60 23c-21 0 -41 -7 -57 -21l-2 -2l11 -12l2 2c13 11 29 17 46 17c36 0 66 -29 71 -64h-31z" />
+    <glyph glyph-name="ion-ios-rewind-outline" unicode="&#xf4a0;" 
+d="M432 293l-184 -101l184 -101v202zM208 292v0l-176 -100l176 -100v95v27v78zM224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" />
+    <glyph glyph-name="ion-ios-rewind" unicode="&#xf4a1;" 
+d="M224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" />
+    <glyph glyph-name="ion-ios-rose-outline" unicode="&#xf4a2;" horiz-adv-x="320" 
+d="M284 295c-4 -1 -9 -3 -13 -4c-37 -11 -71 -24 -103 -39c-17 -8 -24 -12 -44 -24l-7 -4c-31 -18 -50 -33 -63 -51c-15 -21 -22 -45 -22 -77c0 -16 3 -30 9 -44c6 -13 14 -26 25 -36c23 -21 55 -32 94 -32s71 11 94 32c11 10 19 23 25 36c6 14 9 28 9 44c0 20 -5 40 -11 60
+c-11 40 -23 83 7 139zM320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM38 325c14 -28 18 -57 19 -83c9 7 20 13 30 20c7 4 14 9 21 13c5 3 10 6 16 9c-5 4 -11 7 -17 11
+c-22 13 -48 23 -69 30zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM249 367c-8 -1 -20 -2 -35 -7c-25 -8 -47 -20 -64 -36c8 -6 15 -12 21 -18c29 12 65 26 95 34
+c-5 10 -12 20 -17 27zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM85 394c-6 -10 -10 -20 -14 -28c12 -4 22 -10 36 -17c4 5 9 10 14 14c-13 15 -27 25 -36 31zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31
+c-26 13 -40 21 -61 27c5 15 15 38 30 60z" />
+    <glyph glyph-name="ion-ios-rose" unicode="&#xf4a3;" horiz-adv-x="320" 
+d="M320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12
+c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31c-26 13 -40 21 -61 27c5 15 15 38 30 60z" />
+    <glyph glyph-name="ion-ios-search-strong" unicode="&#xf4a4;" horiz-adv-x="384" 
+d="M280 150l-4 -7l108 -109l-34 -34l-108 109l-7 -5c-24 -15 -53 -25 -83 -25c-84 0 -152 69 -152 153s68 152 152 152s152 -68 152 -152c0 -30 -9 -58 -24 -82zM237 317c-23 23 -53 35 -85 35s-62 -12 -85 -35s-35 -53 -35 -85s12 -62 35 -85s53 -35 85 -35s62 12 85 35
+s36 53 36 85s-13 62 -36 85z" />
+    <glyph glyph-name="ion-ios-search" unicode="&#xf4a5;" horiz-adv-x="384" 
+d="M384 23l-23 -23l-113 113c-26 -21 -60 -33 -96 -33c-84 0 -152 68 -152 152s68 152 152 152s152 -68 152 -152c0 -36 -12 -69 -33 -95zM56 135c26 -26 60 -39 96 -39s70 14 96 40s40 60 40 96s-14 70 -40 96s-60 40 -96 40s-70 -14 -96 -40s-40 -60 -40 -96
+s14 -71 40 -97z" />
+    <glyph glyph-name="ion-ios-settings-strong" unicode="&#xf4a6;" 
+d="M0 72h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283zM0 208h91c6 14 21 24 37 24s31 -10 37 -24h283v-32h-283c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-91zM0 344h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91
+c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283z" />
+    <glyph glyph-name="ion-ios-settings" unicode="&#xf4a7;" 
+d="M320 344c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 360v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM320 72c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 88v0c18 0 32 -14 32 -32s-14 -32 -32 -32
+s-32 14 -32 32s14 32 32 32zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM175 200h273v-16h-273c0 3 1 5 1 8s-1 5 -1 8zM80 192c0 -3 1 -5 1 -8h-81v16h81
+c0 -3 -1 -5 -1 -8zM367 64h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM272 56c0 -3 1 -5 1 -8h-273v16h273c0 -3 -1 -5 -1 -8zM367 336h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM273 336c0 -3 -1 -5 -1 -8s1 -5 1 -8h-273v16h273z" />
+    <glyph glyph-name="ion-ios-shuffle-strong" unicode="&#xf4a8;" horiz-adv-x="384" 
+d="M301 296c-85 0 -119 -64 -152 -126c-1 -3 -3 -5 -4 -8l-1 -1c-2 -3 -2 -5 -4 -8c-21 -38 -43 -68 -68 -83c-15 -9 -34 -18 -72 -18v32c45 0 76 18 112 84c2 3 2 6 4 9h1c1 2 3 4 4 7c34 64 76 144 180 144h15l-52 43l21 25l99 -84l-99 -82l-21 24l51 42h-14zM285 154
+l99 -82l-99 -84l-21 25l52 43h-15c-78 0 -122 45 -153 95l18 33c29 -51 64 -96 135 -96h14l-51 42zM112 216c-36 66 -67 84 -112 84v32c38 0 57 -9 72 -18c25 -15 47 -44 67 -81c-7 -11 -13 -22 -19 -33c-1 2 -2 5 -3 7h-1c-2 3 -2 6 -4 9z" />
+    <glyph glyph-name="ion-ios-shuffle" unicode="&#xf4a9;" horiz-adv-x="384" 
+d="M298 241l-10 12l62 51h-46c-93 0 -129 -75 -164 -139c-2 -3 -3 -6 -5 -9c-20 -37 -41 -61 -65 -75c-14 -8 -33 -17 -70 -17v16c48 0 83 14 121 84c2 3 3 6 5 9c35 65 75 147 178 147h46l-62 52l10 12l86 -72zM135 228c0 -1 1 -2 1 -3c-3 -5 -6 -11 -9 -16c0 1 -1 1 -1 2
+c-2 3 -3 6 -5 9c-38 70 -73 84 -121 84v16c37 0 56 -9 70 -17c24 -14 45 -38 65 -75zM298 143l86 -71l-86 -72l-10 12l62 52h-46c-76 0 -118 45 -149 95c1 2 2 5 3 7c2 3 4 7 6 10c30 -50 67 -96 140 -96h46l-62 51z" />
+    <glyph glyph-name="ion-ios-skipbackward-outline" unicode="&#xf4aa;" horiz-adv-x="320" 
+d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320zM80 192l7 -4l217 -128v264v0l-217 -128zM16 336v-288h47v126v8v28v126h-47z" />
+    <glyph glyph-name="ion-ios-skipbackward" unicode="&#xf4ab;" horiz-adv-x="320" 
+d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320z" />
+    <glyph glyph-name="ion-ios-skipforward-outline" unicode="&#xf4ac;" horiz-adv-x="320" 
+d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142zM233 188l7 4l-7 4l-217 128v0v-264zM304 48v288h-47v-126v-28v-8v-126h47z" />
+    <glyph glyph-name="ion-ios-skipforward" unicode="&#xf4ad;" horiz-adv-x="320" 
+d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142z" />
+    <glyph glyph-name="ion-ios-snowy" unicode="&#xf4ae;" horiz-adv-x="256" 
+d="M252 131c4 -2 5 -7 3 -11s-7 -5 -11 -3l-29 17c-2 -8 -2 -16 0 -24c1 -4 -3 -9 -7 -10s-8 2 -9 6c-2 12 -3 24 1 36l-64 36v-73c11 -3 22 -8 31 -16c3 -3 4 -8 1 -11s-8 -4 -11 -1c-6 5 -13 10 -21 12v-33c0 -4 -4 -8 -8 -8s-8 4 -8 8v33c-8 -2 -15 -7 -21 -12
+c-3 -3 -8 -2 -11 1s-3 8 0 11c9 8 20 13 32 16v73l-65 -36c4 -12 4 -23 2 -35c-1 -4 -5 -8 -9 -7s-8 6 -7 10c2 8 2 16 0 24l-29 -17c-4 -2 -9 -1 -11 3s-1 9 3 11l29 16c-6 6 -13 10 -21 13c-4 1 -6 6 -5 10c2 4 6 6 10 5c12 -4 22 -11 30 -19l65 36l-65 37
+c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5 7 -3 11s7 5 11 3l29 -16c2 8 2 15 0 23c-1 4 3 9 7 10s8 -2 9 -6c2 -12 1 -25 -2 -36l65 -36v73c-12 3 -23 8 -32 16c-3 3 -3 8 0 11s8 4 11 1c6 -5 13 -10 21 -12v33c0 4 4 8 8 8
+s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5
+c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" />
+    <glyph glyph-name="ion-ios-speedometer-outline" unicode="&#xf4af;" 
+d="M224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12l-10 10l-1 2c-19 18 -41 33 -65 43c-26 11 -53 16 -81 16s-55 -5 -81 -16c-24 -10 -46 -25 -65 -43l-1 -2l-10 -10c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224z
+M416 79c10 23 15 48 16 73h-32v16h32c-1 25 -6 50 -16 73c-9 22 -23 42 -39 60l-27 -27l-6 6l-5 5v0h-1l27 27c-18 17 -38 31 -60 40c-23 10 -48 15 -74 16v-38h-16v38c-25 -1 -49 -6 -72 -16c-22 -10 -43 -23 -61 -40l27 -27v0v0l-6 -6l-5 -5l-27 27
+c-16 -18 -30 -38 -39 -60c-10 -23 -15 -49 -16 -74h32v-16h-32c1 -25 6 -49 16 -72c9 -20 20 -39 35 -56c40 40 96 64 157 64s117 -24 157 -64c15 17 26 36 35 56zM336 273l2 -1l-75 -84c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48c-10 0 -19 4 -27 9l-13 -12l-11 11l12 12
+c-6 8 -9 18 -9 28c0 26 22 48 48 48c10 0 19 -3 27 -8zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-ios-speedometer" unicode="&#xf4b0;" 
+d="M385 169v-15h30c-1 -22 -6 -44 -15 -65c-8 -18 -19 -35 -32 -50c-39 37 -90 58 -144 58s-105 -21 -144 -58c-13 15 -24 32 -32 50c-9 21 -14 43 -15 65h28h1v16h-29c1 23 6 45 15 66c9 20 20 38 35 54l25 -24l10 10l1 1v0v0l-25 25c16 15 36 26 56 35c21 9 43 14 66 15
+v-34h14h1v34c23 -1 46 -6 67 -15s39 -20 55 -35l-24 -25l11 -11l25 25c15 -16 26 -35 35 -55c9 -21 14 -43 15 -66h-30v-1zM272 160c0 10 -3 20 -9 28l63 76l-2 1l-73 -65c-8 5 -17 8 -27 8c-26 0 -48 -22 -48 -48c0 -10 3 -20 9 -28l-12 -12l11 -11l13 12c8 -5 17 -9 27 -9
+c26 0 48 22 48 48zM224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12h-23c-32 39 -80 64 -134 64s-102 -25 -134 -64h-23c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224zM379 27c34 37 52 86 52 136c0 55 -22 106 -61 145
+s-91 60 -146 60s-107 -21 -146 -60s-61 -90 -61 -145c0 -50 18 -99 52 -136l10 -10l1 -1v1l9 9l1 1v0c17 17 38 30 60 39c24 10 48 15 74 15s50 -5 74 -15c22 -9 43 -22 60 -39v0l1 -1l9 -9v-1l1 1zM192 160c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z
+" />
+    <glyph glyph-name="ion-ios-star-half" unicode="&#xf4b1;" 
+d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" />
+    <glyph glyph-name="ion-ios-star-outline" unicode="&#xf4b2;" 
+d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171zM331 27l-43 122l108 75h-131l-41 123l-41 -123h-131l108 -75l-43 -122l107 76z" />
+    <glyph glyph-name="ion-ios-star" unicode="&#xf4b3;" 
+d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171z" />
+    <glyph glyph-name="ion-ios-stopwatch-outline" unicode="&#xf4b4;" horiz-adv-x="384" 
+d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM192 2
+c96 0 173 77 173 171s-77 171 -173 171c-95 0 -173 -77 -173 -171s77 -171 173 -171zM200 191c14 -4 24 -17 24 -31c0 -15 -10 -26 -24 -30l-8 -18v0l-8 18c-14 4 -24 15 -24 30c0 14 12 27 24 31v129h16v-129z" />
+    <glyph glyph-name="ion-ios-stopwatch" unicode="&#xf4b5;" horiz-adv-x="384" 
+d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM200 130
+c14 4 24 15 24 30c0 14 -10 27 -24 31v129h-16v-129c-12 -4 -24 -17 -24 -31c0 -15 10 -26 24 -30l8 -18z" />
+    <glyph glyph-name="ion-ios-sunny-outline" unicode="&#xf4b6;" horiz-adv-x="320" 
+d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76
+s76 -34 76 -76s-34 -76 -76 -76zM160 251c-32 0 -59 -27 -59 -59s27 -59 59 -59s59 27 59 59s-27 59 -59 59z" />
+    <glyph glyph-name="ion-ios-sunny" unicode="&#xf4b7;" horiz-adv-x="320" 
+d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76
+s76 -34 76 -76s-34 -76 -76 -76z" />
+    <glyph glyph-name="ion-ios-telephone-outline" unicode="&#xf4b8;" horiz-adv-x="352" 
+d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53
+c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44zM324 57c19 22 13 31 1 43c-13 14 -50 39 -72 39c-3 0 -6 -1 -8 -2
+c-19 -12 -28 -18 -37 -18s-15 6 -23 13h-1c-19 16 -23 21 -30 29l-2 2c-1 1 -3 2 -4 3c-6 6 -11 12 -27 30v1c-10 11 -17 18 -18 28s5 20 16 34c15 20 -5 48 -31 79l-1 1c-7 8 -14 12 -22 12c-10 0 -18 -6 -23 -9c-1 0 -2 -1 -2 -1c-11 -7 -18 -16 -21 -24
+c-5 -16 -7 -35 17 -79c23 -42 43 -70 76 -104c31 -32 45 -42 76 -64c32 -23 64 -38 84 -38c21 0 32 1 52 25z" />
+    <glyph glyph-name="ion-ios-telephone" unicode="&#xf4b9;" horiz-adv-x="352" 
+d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53
+c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44z" />
+    <glyph glyph-name="ion-ios-tennisball-outline" unicode="&#xf4ba;" horiz-adv-x="416" 
+d="M416 192v-8v0c0 -5 0 -11 -1 -16v0c-11 -97 -90 -174 -187 -183v0h-4h-2s-1 -1 -2 -1h-3h-1h-8c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208zM399 192c0 105 -86 191 -191 191c-3 0 -5 -1 -8 -1c1 -24 6 -46 15 -68c10 -26 26 -49 46 -69s43 -36 69 -46
+c22 -9 44 -14 68 -15c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 22 -7 45 -15 66c-10 26 -26 48 -46 68s-42 36 -68 46c-21 8 -44 14 -66 15v-4zM228 2c88 9 158 78 169 166c-54 3 -106 25 -147 66s-63 93 -66 147c-88 -11 -157 -81 -166 -169
+c53 -3 105 -25 145 -65s62 -92 65 -145z" />
+    <glyph glyph-name="ion-ios-tennisball" unicode="&#xf4bb;" horiz-adv-x="416" 
+d="M0 196v0v0v0zM212 -16h1h-1v0zM208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-11 -97 -90 -174 -187 -183v0v0c-6 -1 -13 -1 -20 -1c-115 0 -208 93 -208 208v4v0v0c0 6 0 11 1 16v0v0c9 97 86 176 183 187v0v0c6 1 11 1 16 1v0v0h8zM83 181
+c26 -10 48 -26 68 -46s36 -42 46 -68c8 -21 14 -44 15 -66c5 0 11 0 16 1c-3 53 -25 105 -65 145s-92 62 -145 65c-1 -5 -1 -11 -1 -16c22 -1 45 -7 66 -15zM250 234c41 -41 93 -63 147 -66c1 5 1 11 1 16c-24 1 -46 6 -68 15c-26 10 -49 26 -69 46s-36 43 -46 69
+c-9 22 -14 44 -15 68c-5 0 -11 0 -16 -1c3 -54 25 -106 66 -147z" />
+    <glyph glyph-name="ion-ios-thunderstorm-outline" unicode="&#xf4bc;" horiz-adv-x="274" 
+d="M193 176l-88 -128l29 96h-52l15 80h72l-16 -48h40zM209 275c36 0 65 -29 65 -65s-29 -66 -65 -66h-8v17h8c27 0 49 22 49 49s-22 50 -49 50h-6l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 13 -39 13c-34 0 -63 -27 -63 -62v-12s1 -9 1 -9c-5 0 -12 -2 -14 -2
+c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h11v-17h-11c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78c37 0 68 -26 76 -61h8z" />
+    <glyph glyph-name="ion-ios-thunderstorm" unicode="&#xf4bd;" horiz-adv-x="274" 
+d="M153 176h40l-22 -32l-66 -96l29 96h-52l15 80h72zM84 240h107l-16 -48h18h30l-33 -48h19c36 0 65 30 65 66s-29 65 -65 65h-8c-8 35 -39 61 -76 61c-43 0 -78 -35 -78 -78v-8c-26 -2 -47 -26 -47 -53c0 -29 24 -53 52 -53h14z" />
+    <glyph glyph-name="ion-ios-time-outline" unicode="&#xf4be;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45
+s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45zM216 368c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM216 16c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM392 192
+c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM40 192c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8
+zM64 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM64 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8
+s-8 3 -8 8zM238 200c4 -8 2 -18 -6 -22v-122c0 -4 -4 -8 -8 -8s-8 4 -8 8v122c-2 1 -4 4 -6 6c-3 5 -3 11 0 16l-37 63c-2 4 -1 9 3 11s8 1 10 -3l38 -63c5 0 11 -3 14 -8z" />
+    <glyph glyph-name="ion-ios-time" unicode="&#xf4bf;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 376c-4 0 -8 -4 -8 -8s4 -8 8 -8s8 4 8 8s-4 8 -8 8zM48 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM76 97c4 2 4 7 2 11s-6 5 -10 3s-5 -7 -3 -11s7 -5 11 -3z
+M78 276c2 4 2 9 -2 11s-9 1 -11 -3s-1 -9 3 -11s8 -1 10 3zM132 351c-4 -2 -5 -7 -3 -11s7 -4 11 -2s5 6 3 10s-7 5 -11 3zM143 36c2 4 1 8 -3 10s-9 2 -11 -2s-1 -9 3 -11s9 -1 11 3zM224 8c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM232 178c8 4 10 14 6 22
+c-3 5 -9 8 -14 8l-38 64c-2 4 -7 4 -11 2s-4 -7 -2 -11l37 -63c-3 -5 -3 -11 0 -16c2 -2 4 -5 6 -6v-122c0 -4 4 -8 8 -8s8 4 8 8v122zM316 33c4 2 5 7 3 11s-7 4 -11 2s-5 -6 -3 -10s7 -5 11 -3zM319 340c2 4 1 9 -3 11s-9 1 -11 -3s-1 -8 3 -10s9 -2 11 2zM383 100
+c2 4 1 9 -3 11s-8 1 -10 -3s-2 -9 2 -11s9 -1 11 3zM380 273c4 2 5 7 3 11s-7 5 -11 3s-4 -7 -2 -11s6 -5 10 -3zM400 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8z" />
+    <glyph glyph-name="ion-ios-timer-outline" unicode="&#xf4c0;" horiz-adv-x="416" 
+d="M189 176l-1 2s-89 118 -86 120s121 -85 121 -85c1 -1 1 -2 2 -3c5 -5 8 -11 8 -18c0 -14 -11 -25 -25 -25c-8 0 -14 3 -19 9zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208c0 57 23 109 61 147l12 -12c-35 -35 -56 -82 -56 -135
+c0 -106 85 -191 191 -191s191 85 191 191c0 100 -77 183 -175 191v-95h-16v112v0v0z" />
+    <glyph glyph-name="ion-ios-timer" unicode="&#xf4c1;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM102 298c-2 -2 86 -120 86 -120l1 -1c5 -6 11 -10 19 -10c14 0 25 11 25 25c0 7 -3 13 -8 18l-3 3c0 0 -117 87 -120 85zM208 1c106 0 192 85 192 191s-86 192 -192 192v-96h16v78
+c88 -9 158 -84 158 -174c0 -96 -78 -174 -174 -174s-175 78 -175 174c0 48 19 92 51 124l-11 12c-35 -35 -56 -83 -56 -136c0 -106 85 -191 191 -191z" />
+    <glyph glyph-name="ion-ios-toggle-outline" unicode="&#xf4c2;" 
+d="M96 128c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM96 144v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM351 160v0h-255c-44 0 -80 -36 -80 -80s36 -80 80 -80h256c44 0 80 36 80 80s-37 80 -81 80zM352 176v0
+c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM352 352c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM352 368v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM97 384v0c-44 0 -81 -36 -81 -80
+s36 -80 80 -80h256c44 0 80 36 80 80s-36 80 -80 80h-255zM96 400v0h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96z" />
+    <glyph glyph-name="ion-ios-toggle" unicode="&#xf4c3;" 
+d="M96 128c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM352 176c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM96 16c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM352 256c-26 0 -48 22 -48 48
+s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM96 208c-53 0 -96 43 -96 96s43 96 96 96h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256zM352 368c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64z" />
+    <glyph glyph-name="ion-ios-trash-outline" unicode="&#xf4c4;" horiz-adv-x="288" 
+d="M288 335v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20h80zM95 355v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM230 30l23 290h-217l23 -290v0v-1c0 -8 7 -14 15 -14
+h141c8 0 15 6 15 14v1v0zM137 47v241h14v-241h-14zM208 288l-11 -241h-14l10 241h15zM94 288l11 -241h-14l-11 241h14z" />
+    <glyph glyph-name="ion-ios-trash" unicode="&#xf4c5;" horiz-adv-x="288" 
+d="M208 335h80v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20zM95 355v0v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM91 47h14l-11 241h-14zM151 47v241h-14v-241h14z
+M197 47l11 241h-14l-11 -241h14z" />
+    <glyph glyph-name="ion-ios-undo-outline" unicode="&#xf4c6;" horiz-adv-x="384" 
+d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136zM368 87c0 0 9 169 -192 169v65l-148 -97l148 -97v65c91 0 144 -24 192 -105z" />
+    <glyph glyph-name="ion-ios-undo" unicode="&#xf4c7;" horiz-adv-x="384" 
+d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136z" />
+    <glyph glyph-name="ion-ios-unlocked-outline" unicode="&#xf4c8;" horiz-adv-x="320" 
+d="M160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8
+c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM304 0v208h-288v-208h288z" />
+    <glyph glyph-name="ion-ios-unlocked" unicode="&#xf4c9;" horiz-adv-x="320" 
+d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32
+c0 -15 10 -27 24 -31v-33h16v33z" />
+    <glyph glyph-name="ion-ios-upload-outline" unicode="&#xf4ca;" horiz-adv-x="320" 
+d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 330l-11 12l74 74l74 -74l-11 -12l-55 55v-243h-16v243z" />
+    <glyph glyph-name="ion-ios-upload" unicode="&#xf4cb;" horiz-adv-x="320" 
+d="M168 304h152v-304h-320v304h152v-162h16v162zM168 385v-81h-16v81l-55 -55l-11 12l74 74l74 -74l-11 -12z" />
+    <glyph glyph-name="ion-ios-videocam-outline" unicode="&#xf4cc;" horiz-adv-x="418" 
+d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM273 99v188c0 9 -8 16 -17 16h-221c-9 0 -18 -7 -18 -16v-188c0 -9 10 -18 19 -18h221c9 0 16 9 16 18zM320 235l98 53v-192l-98 53v86zM401 258v0l-64 -33
+v-66l64 -33v132z" />
+    <glyph glyph-name="ion-ios-videocam" unicode="&#xf4cd;" horiz-adv-x="418" 
+d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM320 235l98 53v-192l-98 53v86z" />
+    <glyph glyph-name="ion-ios-volume-high" unicode="&#xf4ce;" horiz-adv-x="320" 
+d="M278 320c26 -36 42 -80 42 -128s-16 -92 -42 -128l-14 10c24 33 39 74 39 118s-15 85 -39 118zM224 96l-14 10c18 24 29 54 29 86s-11 62 -29 86l14 10c20 -27 32 -60 32 -96s-12 -69 -32 -96zM177 128l-13 10c12 15 18 34 18 54s-6 39 -18 54l13 10
+c14 -18 22 -40 22 -64s-8 -46 -22 -64zM58 232l70 56v-192l-70 56h-58v80h58z" />
+    <glyph glyph-name="ion-ios-volume-low" unicode="&#xf4cf;" horiz-adv-x="128" 
+d="M58 232l70 56v-192l-70 56h-58v80h58z" />
+    <glyph glyph-name="ion-ios-wineglass-outline" unicode="&#xf4d0;" horiz-adv-x="192" 
+d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156
+c-5 33 -20 80 -25 96h-53h-53zM96 175c3 0 5 0 7 2v0c9 11 20 20 31 29c8 6 15 12 20 18c22 23 22 41 22 60v4h-160v-4c0 -19 0 -37 22 -60c5 -6 12 -12 20 -18c11 -9 22 -18 31 -29v0c2 -2 4 -2 7 -2z" />
+    <glyph glyph-name="ion-ios-wineglass" unicode="&#xf4d1;" horiz-adv-x="192" 
+d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156
+c-5 33 -20 80 -25 96h-53h-53z" />
+    <glyph glyph-name="ion-ios-world-outline" unicode="&#xf4d2;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM216 276v-76h75c-1 31 -5 60 -11 84c-21 -5 -42 -7 -64 -8zM216 292c20 1 41 3 60 8c-14 46 -38 76 -60 82v-90zM200 382c-23 -6 -45 -36 -60 -82
+c19 -5 39 -7 60 -8v90zM200 276c-22 1 -44 3 -65 8c-6 -24 -10 -53 -11 -84h76v76zM108 200c1 32 4 62 11 88c-21 6 -41 15 -59 25c-26 -31 -41 -70 -43 -113h91zM108 184h-91c2 -43 17 -82 43 -113c19 10 38 19 59 25c-7 26 -10 56 -11 88zM124 184c1 -31 5 -60 11 -84
+c21 5 43 8 65 9v75h-76zM200 92c-21 -1 -41 -3 -60 -8c15 -46 37 -76 60 -82v90zM216 2c22 6 46 36 60 82c-19 5 -40 7 -60 8v-90zM216 109c22 -1 43 -4 64 -9c6 24 10 53 11 84h-75v-75zM308 184c-1 -32 -5 -62 -12 -88c21 -6 41 -15 60 -25c26 31 41 70 43 113h-91z
+M308 200v0h91c-2 43 -17 82 -43 113c-19 -10 -38 -19 -59 -25c7 -26 10 -56 11 -88zM344 326c-25 25 -56 44 -91 52c16 -17 29 -43 39 -74c18 6 35 13 52 22zM163 378c-35 -8 -67 -27 -91 -52c16 -9 34 -15 52 -21c10 31 23 56 39 73zM72 58c25 -25 56 -44 91 -52
+c-16 17 -30 43 -40 74c-18 -6 -35 -13 -51 -22zM253 6c35 8 66 27 91 52c-17 9 -34 16 -52 22c-10 -31 -23 -57 -39 -74z" />
+    <glyph glyph-name="ion-ios-world" unicode="&#xf4d3;" horiz-adv-x="416" 
+d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM208 1c106 0 191 85 191 191s-85 191 -191 191v0v0v0c-106 0 -191 -85 -191 -191s86 -191 191 -191v0v0v0zM274 276c6 -22 9 -48 10 -76h-68v68c20 1 39 4 58 8
+zM216 366c20 -6 41 -34 54 -75c-17 -4 -36 -6 -54 -7v82zM145 291c13 42 35 69 55 75v-82c-19 1 -37 3 -55 7zM333 315c-15 -8 -31 -15 -48 -20c-9 29 -21 52 -36 67c32 -8 61 -24 84 -47zM299 200c-1 29 -4 56 -10 80c19 6 37 14 54 23c23 -28 38 -64 40 -103h-84zM132 200
+c1 28 3 54 9 76c19 -5 39 -7 59 -8v-68h-68zM284 184c-1 -28 -4 -54 -10 -76c-19 5 -38 7 -58 8v68h68zM141 108c-6 22 -8 48 -9 76h68v-68c-20 -1 -40 -3 -59 -8zM200 18c-20 6 -42 33 -55 75c18 4 36 6 55 7v-82zM249 22c15 15 27 38 36 67c17 -5 33 -11 48 -19
+c-23 -23 -52 -40 -84 -48zM167 362c-15 -15 -27 -39 -36 -67c-16 5 -33 11 -48 19c22 23 52 40 84 48zM289 104c6 24 9 51 10 80h84c-2 -39 -17 -75 -40 -103c-17 9 -35 17 -54 23zM216 100c18 -1 37 -3 54 -7c-13 -42 -34 -69 -54 -75v82zM127 280c-6 -24 -11 -51 -11 -80
+h-83c2 39 17 75 40 103c17 -9 35 -17 54 -23zM116 184c1 -29 4 -56 10 -80c-19 -6 -36 -14 -53 -23c-23 28 -38 64 -40 103h83zM83 70c15 8 32 14 48 19c9 -28 21 -52 36 -67c-32 8 -62 25 -84 48z" />
+    <glyph glyph-name="ion-ipad" unicode="&#xf1f9;" horiz-adv-x="288" 
+d="M0 375c0 5 4 9 9 9h270c5 0 9 -4 9 -9v-366c0 -5 -4 -9 -9 -9h-270c-5 0 -9 4 -9 9v366zM144 10c8 0 14 6 14 14s-7 14 -14 14c-8 0 -14 -6 -14 -14s6 -14 14 -14zM32 329v-275c0 -4 3 -6 6 -6h211c3 0 7 2 7 6v275c0 4 -4 7 -7 7h-211c-3 0 -6 -3 -6 -7z" />
+    <glyph glyph-name="ion-iphone" unicode="&#xf1fa;" horiz-adv-x="192" 
+d="M168 384c13 0 24 -11 24 -24v-336c0 -13 -11 -24 -24 -24h-144c-13 0 -24 11 -24 24v336c0 13 11 24 24 24h144zM80 348v0c0 -2 2 -4 4 -4h24c2 0 4 2 4 4v0c0 2 -2 4 -4 4h-24c-2 0 -4 -2 -4 -4zM68 352c-2 0 -4 -2 -4 -4s2 -4 4 -4s4 2 4 4s-2 4 -4 4zM96 16
+c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM176 64v256h-160v-256h160z" />
+    <glyph glyph-name="ion-ipod" unicode="&#xf1fb;" horiz-adv-x="224" 
+d="M112 137c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM196 384c15 0 28 -12 28 -28v-328c0 -16 -13 -28 -28 -28h-168c-15 0 -28 12 -28 28v328c0 16 13 28 28 28h168zM112 32c40 0 72 32 72 72s-32 72 -72 72s-72 -32 -72 -72s32 -72 72 -72z
+M192 221v118c-1 7 -6 12 -12 13h-136c-7 -1 -12 -7 -12 -15v-114c0 -8 6 -15 14 -15h131c8 0 14 5 15 13z" />
+    <glyph glyph-name="ion-jet" unicode="&#xf295;" horiz-adv-x="326" 
+d="M222 80l-2 -13l53 -58l-18 -27l-74 9l-18 -55l-19 55l-73 -9l-18 27l53 58l-2 13l-104 -35l3 53l114 103s26 173 28 192c5 40 18 55 18 55s13 -15 18 -55c2 -19 28 -192 28 -192l114 -103l3 -53z" />
+    <glyph glyph-name="ion-key" unicode="&#xf296;" horiz-adv-x="192" 
+d="M144 147c28 -17 48 -48 48 -83c0 -53 -43 -96 -96 -96s-96 43 -96 96c0 36 19 67 48 84c0 0 7 16 12 41c0 4 11 6 11 12v20c0 5 -7 9 -7 11v8v8c0 2 0 4 1 6c0 1 1 1 1 2l2 1l4 4v1c2 2 3 4 3 6c0 1 1 8 1 9c0 3 -2 6 -4 8l-1 1l-4 4v0l-1 1v0c-2 2 -3 5 -3 8v7
+c0 3 2 7 4 9v0l5 5v0c2 2 4 3 4 6v24c0 3 -2 6 -4 8v1l-4 4l-1 1c-2 2 -3 5 -3 8v18c0 11 0 19 9 23c3 1 14 3 23 3c20 0 30 -8 32 -36c0 0 7 -81 9 -143s7 -90 7 -90zM96 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-knife" unicode="&#xf297;" horiz-adv-x="64" 
+d="M62 416c2 0 2 -1 2 -6v-412c0 -15 -10 -30 -24 -30v0v0c-14 0 -24 15 -24 30c1 19 14 83 16 130v0c1 30 -32 31 -32 70c0 134 35 191 54 214c2 2 5 4 8 4z" />
+    <glyph glyph-name="ion-laptop" unicode="&#xf1fc;" horiz-adv-x="512" 
+d="M480 342v-262h-448v262c0 6 4 10 10 10h428c6 0 10 -4 10 -10zM448 112v208h-384v-208h384zM0 59v5h512v-5c-70 -20 -116 -27 -256 -27s-186 7 -256 27z" />
+    <glyph glyph-name="ion-leaf" unicode="&#xf1fd;" horiz-adv-x="422" 
+d="M412 69c18 -3 10 -41 -5 -39c0 0 -21 -1 -63 12c0 0 -16 -19 -39 -30c-26 -12 -118 -33 -197 38c-108 97 -120 354 -100 333c86 -90 197 -47 270 -106c55 -44 88 -127 77 -192c0 0 5 -8 57 -16zM316 65c5 5 10 16 10 24c-161 52 -252 160 -252 160s104 -143 242 -184z
+" />
+    <glyph glyph-name="ion-levels" unicode="&#xf298;" horiz-adv-x="350" 
+d="M46 349c11 -5 18 -16 18 -29s-7 -24 -18 -29v-275c0 -9 -7 -16 -16 -16s-16 7 -16 16v278c-8 6 -14 15 -14 26s6 20 14 26v22c0 9 7 16 16 16s16 -7 16 -16v-19zM142 155c9 -6 15 -16 15 -27s-6 -21 -15 -27v-85c0 -9 -7 -16 -16 -16s-16 7 -16 16v84
+c-10 5 -17 16 -17 28s7 23 17 28v212c0 9 7 16 16 16s16 -7 16 -16v-213zM238 285c10 -6 16 -16 16 -28s-6 -22 -16 -28v-213c0 -9 -7 -16 -16 -16s-16 7 -16 16v213c-10 6 -16 16 -16 28s6 22 16 28v83c0 9 7 16 16 16s16 -7 16 -16v-83zM350 65c0 -12 -6 -22 -16 -28v-21
+c0 -9 -7 -16 -16 -16s-16 7 -16 16v21c-10 6 -16 16 -16 28s6 22 16 28v275c0 9 7 16 16 16s16 -7 16 -16v-275c10 -6 16 -16 16 -28z" />
+    <glyph glyph-name="ion-lightbulb" unicode="&#xf299;" horiz-adv-x="256" 
+d="M128 416c71 0 128 -56 128 -124c0 -5 0 -9 -1 -14s-2 -11 -3 -16v-2c-17 -63 -45 -71 -59 -167v-1c-2 -9 -10 -12 -20 -12h-90c-10 0 -18 3 -20 12v1c-14 96 -42 104 -59 167v2c-1 5 -2 11 -3 16s-1 9 -1 14c0 68 57 124 128 124zM190 52v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8
+v-1c1 -2 2 -3 2 -5s-1 -4 -2 -6v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8v-1c1 -2 2 -4 2 -6c0 -5 -4 -9 -10 -11h-1c-6 -1 -13 -2 -19 -3h-2c-6 -1 -11 -5 -14 -9v0c-4 -5 -10 -10 -18 -10s-15 6 -19 11v0c-3 4 -7 7 -13 8h-2c-6 1 -13 2 -19 3h-1c-6 2 -10 6 -10 11c0 2 1 4 2 6v1
+c2 2 3 4 3 7s-1 5 -3 8v1c-1 2 -2 4 -2 6s1 3 2 5v1c2 3 3 5 3 8s-1 4 -3 7v1v0c-1 2 -2 4 -2 6c0 4 -1 6 7 6h114c8 0 7 -2 7 -6c0 -2 -1 -4 -2 -6v0z" />
+    <glyph glyph-name="ion-link" unicode="&#xf1fe;" horiz-adv-x="384" 
+d="M192 240v0v0v0zM304 288c44 0 80 -36 80 -80v-32c0 -44 -36 -80 -80 -80h-112c-33 0 -60 20 -73 48c-4 10 -7 20 -7 32v32h48v-32c0 -18 14 -32 32 -32h112c18 0 32 14 32 32v32c0 18 -14 32 -32 32v0h-16c-6 31 -32 48 -32 48h48zM266 240c4 -10 6 -21 6 -32v-32v0h-48
+v0v32c0 18 -14 32 -32 32v0h-112c-18 0 -32 -14 -32 -32v-32c0 -18 14 -32 32 -32h16c6 -31 32 -48 32 -48h-48c-44 0 -80 36 -80 80v32c0 44 36 80 80 80h112c33 0 62 -20 74 -48z" />
+    <glyph glyph-name="ion-load-a" unicode="&#xf29a;" horiz-adv-x="384" 
+d="M144 352c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM0 192c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM312 304c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM132 340c10 -10 15 -22 15 -36s-5 -26 -15 -36s-22 -15 -36 -15
+s-26 5 -36 15s-15 22 -15 36s5 26 15 36s22 15 36 15s26 -5 36 -15zM352 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM297 79c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM176 32c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32
+s-32 11 -32 32zM56 80c0 27 13 40 40 40s40 -13 40 -40s-13 -40 -40 -40s-40 13 -40 40z" />
+    <glyph glyph-name="ion-load-b" unicode="&#xf29b;" 
+d="M256 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM224 128v0c18 0 32 -14 32 -32v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96c0 18 14 32 32 32zM416 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96
+c-18 0 -32 14 -32 32s14 32 32 32h96zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96zM314 237c-12 -12 -33 -12 -45 0v0c-12 12 -12 34 0 46l68 67c12 12 33 12 45 0v0c12 -12 12 -33 0 -45zM179 147v0c12 -12 12 -33 0 -46
+l-68 -67c-12 -12 -33 -12 -45 0s-12 33 0 45l67 68c12 12 34 12 46 0zM382 79v0c12 -12 12 -33 0 -45s-33 -12 -45 0l-68 68c-12 12 -12 33 0 45s33 12 45 0zM179 282v0c12 -12 12 -33 0 -45s-34 -12 -46 0l-67 68c-12 12 -12 33 0 45s33 12 45 0z" />
+    <glyph glyph-name="ion-load-c" unicode="&#xf29c;" 
+d="M448 222c0 -3 0 -6 -1 -9c-4 -8 -15 -12 -23 -7c-4 2 -6 7 -7 11c-1 5 -1 9 -2 14c-4 20 -12 40 -22 58c-12 21 -28 41 -47 56c-18 15 -40 26 -62 33c-21 6 -42 9 -64 9h-4c-3 0 -6 -1 -9 -1c-6 0 -14 -1 -20 -2c-13 -2 -25 -6 -37 -11c-21 -8 -40 -20 -57 -35
+s-31 -33 -42 -52c-12 -22 -20 -45 -24 -70c-2 -11 -2 -23 -2 -34c0 -6 0 -11 1 -16c1 -6 2 -13 3 -19c5 -24 14 -47 28 -67c13 -20 29 -38 48 -52c20 -15 42 -26 65 -33c25 -7 50 -9 76 -7c25 2 50 9 73 20c11 5 22 12 32 19s19 15 27 24c4 4 8 9 12 14s7 10 10 15
+c6 10 12 20 17 31c4 8 8 16 11 25c2 4 3 9 4 13s1 7 2 11c1 -9 1 -18 -1 -26c-1 -5 -2 -11 -4 -16c-1 -5 -3 -10 -5 -15c-4 -10 -8 -19 -13 -28c-6 -11 -12 -21 -20 -30s-16 -18 -25 -26c-18 -15 -40 -27 -62 -36c-23 -9 -48 -14 -73 -15s-51 3 -75 11c-23 7 -45 19 -65 33
+c-19 14 -36 31 -50 50c-7 10 -13 20 -18 31s-9 21 -13 33c-6 18 -9 37 -10 56c-1 20 1 39 5 58c5 24 15 47 28 68c12 19 26 35 42 50s35 27 55 36c23 11 48 19 74 21c10 1 19 1 29 1c13 0 26 -2 38 -4c24 -5 47 -14 68 -26s41 -29 57 -48c15 -18 27 -37 36 -58
+c4 -10 7 -21 10 -32c2 -8 5 -17 6 -26z" />
+    <glyph glyph-name="ion-load-d" unicode="&#xf29d;" horiz-adv-x="384" 
+d="M368 208c9 0 16 -7 16 -16s-7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80zM112 192c0 -9 -7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80c9 0 16 -7 16 -16zM192 112c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM192 384
+c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM261 232c-4 8 -2 18 6 22l69 40c8 4 18 2 22 -6s2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6zM123 152c4 -8 2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6s-2 18 6 22l69 40c8 4 18 2 22 -6zM254 117
+l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM118 352l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM232 261c-8 4 -10 14 -6 22l40 69c4 8 14 10 22 6s10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6zM152 123
+c8 -4 10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6s-10 14 -6 22l40 69c4 8 14 10 22 6zM352 118c8 -4 10 -14 6 -22s-14 -10 -22 -6l-69 40c-8 4 -10 14 -6 22s14 10 22 6zM32 266c-8 4 -10 14 -6 22s14 10 22 6l69 -40c8 -4 10 -14 6 -22s-14 -10 -22 -6z" />
+    <glyph glyph-name="ion-location" unicode="&#xf1ff;" horiz-adv-x="239" 
+d="M119 384c66 0 120 -54 120 -120c0 -115 -120 -264 -120 -264s-119 149 -119 264c0 66 53 120 119 120zM119 206c31 0 57 25 57 56s-26 57 -57 57s-56 -26 -56 -57s25 -56 56 -56z" />
+    <glyph glyph-name="ion-lock-combination" unicode="&#xf4d4;" horiz-adv-x="384" 
+d="M320 271c39 -35 64 -86 64 -143c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 57 25 108 64 143v49c0 71 57 128 128 128s128 -57 128 -128v-49zM96 320v-26c28 16 61 26 96 26s68 -10 96 -26v26c0 53 -43 96 -96 96s-96 -43 -96 -96zM192 -32c88 0 160 72 160 160
+s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM192 272c80 0 144 -64 144 -144s-64 -144 -144 -144s-144 64 -144 144s64 144 144 144zM315 95c2 9 4 18 4 29h-7v7h8c0 11 -2 20 -5 30l-25 -7l-4 12l25 8c-4 10 -8 18 -14 26l-11 -8l-4 6l11 8c-6 8 -13 16 -21 22
+l-15 -21l-11 8l15 20c-8 6 -17 11 -27 14l-4 -13l-6 2l5 13c-9 3 -20 5 -29 5v-13v-6h-16v6v13c-11 -1 -19 -2 -29 -5l4 -12l-6 -2l-4 12c-10 -3 -19 -8 -27 -14l15 -20l-10 -8l-15 21c-8 -6 -16 -14 -22 -22l11 -8l-4 -5l-10 8c-6 -8 -10 -17 -14 -27l24 -8l-5 -12l-25 7
+c-3 -10 -3 -19 -3 -30h6v-7h-5c0 -11 2 -20 4 -29l24 7l4 -12l-24 -8c4 -10 8 -19 14 -27l9 7l4 -5l-9 -7c6 -8 13 -16 21 -22l15 21l10 -8l-15 -20c8 -5 17 -11 27 -14l3 11l7 -2l-4 -11c10 -3 18 -4 29 -5v13v6h16v-6v-13c9 1 19 2 29 5l-5 12l6 2l4 -12c10 3 19 8 27 14
+l-15 20l11 8l15 -21c8 6 15 14 21 22l-11 7l4 6l10 -8c6 8 11 17 15 27l-25 8l4 12zM111 128c0 54 27 81 81 81s81 -27 81 -81s-27 -81 -81 -81s-81 27 -81 81z" />
+    <glyph glyph-name="ion-locked" unicode="&#xf200;" horiz-adv-x="384" 
+d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46s43 -73 43 -115v-31h22c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340zM97 255v-31h17h155h18v31c0 27 -10 61 -28 80v0v1
+c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80z" />
+    <glyph glyph-name="ion-log-in" unicode="&#xf29e;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-96 0 -177 60 -209 144h34c9 -20 23 -40 39 -56c36 -36 85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56c-16 -16 -30 -36 -39 -56h-34c32 84 113 144 209 144z
+M175 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91z" />
+    <glyph glyph-name="ion-log-out" unicode="&#xf29f;" 
+d="M335 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91zM359 56c3 3 6 5 8 8h41c-40 -58 -108 -96 -184 -96c-124 0 -224 100 -224 224s100 224 224 224c76 0 144 -38 184 -96h-41c-2 3 -5 5 -8 8c-36 36 -84 56 -135 56s-100 -20 -136 -56s-56 -85 -56 -136
+s20 -100 56 -136s85 -56 136 -56s99 20 135 56z" />
+    <glyph glyph-name="ion-loop" unicode="&#xf201;" horiz-adv-x="334" 
+d="M184 148v-58c49 8 86 50 86 102c0 16 -4 30 -10 44c-3 6 -5 12 -9 17l47 43c1 -1 2 -3 3 -4c21 -28 33 -62 33 -100v-4c-2 -72 -47 -131 -111 -154c-12 -4 -26 -8 -39 -9v-57l-76 67l-26 23l44 39zM0 196c2 72 48 133 113 155c12 4 24 7 37 8v57l76 -67l26 -23l-44 -39
+l-59 -51l1 58c-49 -8 -86 -51 -86 -102c0 -16 4 -31 10 -45c3 -6 5 -11 9 -16l-47 -44c-1 2 -2 3 -3 5c-20 28 -33 63 -33 100v4z" />
+    <glyph glyph-name="ion-magnet" unicode="&#xf2a0;" horiz-adv-x="384" 
+d="M192 416c115 0 192 -78 192 -200c0 -49 -3 -77 -15 -128c-16 -66 -39 -113 -39 -113v-1c-2 -3 -6 -6 -10 -6c-1 0 -3 1 -4 1l-2 1l-50 20l-2 1c-3 2 -5 5 -5 9c0 1 0 3 1 4v1c7 16 27 59 37 101s13 63 13 108c0 71 -52 122 -116 122s-116 -51 -116 -122
+c0 -45 3 -66 13 -108s30 -85 37 -101v-1c1 -1 1 -3 1 -4c0 -4 -2 -7 -5 -9l-2 -1l-50 -20l-2 -1c-1 0 -3 -1 -4 -1c-4 0 -8 3 -10 6v1s-24 47 -40 113c-12 51 -14 79 -14 128c0 122 77 200 192 200zM109 4c-9 19 -27 59 -36 98l-42 -12c13 -53 30 -92 35 -104l43 17v1z
+M317 -14c5 12 23 51 36 104l-43 12c-9 -39 -26 -79 -35 -98v-1z" />
+    <glyph glyph-name="ion-male" unicode="&#xf2a1;" 
+d="M448 256l-63 63l-69 -69c22 -30 36 -66 36 -106c0 -97 -79 -176 -176 -176s-176 79 -176 176s79 176 176 176c40 0 76 -14 106 -36l69 69l-63 63h160v-160zM266 54c24 24 38 56 38 90s-14 66 -38 90s-56 38 -90 38s-66 -14 -90 -38s-38 -56 -38 -90s14 -66 38 -90
+s56 -38 90 -38s66 14 90 38z" />
+    <glyph glyph-name="ion-man" unicode="&#xf202;" horiz-adv-x="168" 
+d="M84 341c-21 0 -37 17 -37 38s16 37 37 37s37 -16 37 -37s-16 -38 -37 -38zM121 333c28 0 47 -24 47 -48v-114c0 -22 -32 -22 -32 0v105h-5v-286c0 -28 -41 -31 -43 0v165h-1h-7v-165c-1 -29 -43 -30 -43 0v286h-6v-105c0 -22 -31 -22 -31 0v114c0 24 19 48 47 48h37h37z
+" />
+    <glyph glyph-name="ion-map" unicode="&#xf203;" 
+d="M441 311c4 -3 7 -8 7 -14v-281c0 -6 -2 -11 -7 -14c-2 -1 -5 -2 -7 -2c-3 0 -6 0 -8 2l-97 66l-97 -66c-5 -3 -10 -3 -15 0l-97 66l-97 -66c-5 -3 -10 -3 -15 0s-8 8 -8 14v281c0 6 3 11 7 14l105 71c5 3 10 3 15 0l97 -66l98 66c5 3 10 3 15 0zM103 95v242l-71 -50v-242
+zM135 95l73 -49v129l-4 -11c-7 2 -13 6 -20 10l8 13c5 -3 11 -6 16 -8v109l-73 49v-101c4 -2 9 -4 13 -7l-10 -13c-1 1 -2 1 -3 2v-123zM240 46l73 49v109c0 -1 -1 -1 -1 -2l-6 -6l-12 11l6 6c3 3 5 7 8 10l5 -5v119l-73 -49v-112h7l3 -15c-3 0 -6 -1 -9 -1h-1v-114zM416 46
+v242l-71 49v-88c3 1 5 1 8 2l4 -16c-4 -1 -8 -1 -12 -3v-137zM97 227c-3 -1 -11 -5 -14 -7l-11 12c4 3 8 6 12 8c3 2 6 3 9 4l5 -15c-2 -1 1 -1 -1 -2zM265 182c5 3 10 5 15 10l11 -12c-6 -6 -12 -10 -19 -13zM67 192v-1l-15 5v1c2 7 4 13 9 20l13 -9c-4 -5 -5 -10 -7 -16z
+M166 210c3 -4 7 -8 11 -11l-11 -12c-4 4 -8 9 -12 13l-3 3l12 11c1 -1 2 -3 3 -4zM376 218l-11 12l10 10l-10 10l11 12l10 -11l11 11l11 -12l-10 -10l10 -10l-11 -12l-11 11z" />
+    <glyph glyph-name="ion-medkit" unicode="&#xf2a2;" 
+d="M440 304c4 0 8 -4 8 -8v-288c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v288c0 4 4 8 8 8h120v31c1 28 22 49 51 49h45h45c30 0 50 -21 51 -49v-31h120zM160 331v-27h128v27v1v1c0 10 -9 19 -19 19h-45h-45c-10 0 -19 -9 -19 -19v-1v-1zM320 128v64h-64v64h-64v-64h-64v-64
+h64v-64h64v64h64z" />
+    <glyph glyph-name="ion-merge" unicode="&#xf33f;" horiz-adv-x="384" 
+d="M320 224c35 0 64 -29 64 -64s-29 -64 -64 -64c-24 0 -44 13 -55 32h-10c-61 0 -115 25 -159 74v-115c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -19 -8 -37 -22 -49
+c4 -9 17 -35 37 -58c32 -35 70 -53 112 -53h10c11 19 31 32 55 32zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 128c18 0 32 14 32 32s-14 32 -32 32
+s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-mic-a" unicode="&#xf204;" horiz-adv-x="288" 
+d="M0 210c0 10 9 19 20 19s19 -9 19 -19v-14c0 -28 12 -53 31 -72s45 -31 74 -31s55 12 74 31s31 44 31 72v14c0 10 8 19 19 19s20 -9 20 -19v-14c0 -66 -46 -120 -108 -136c-1 0 -3 -1 -4 -1c-6 -2 -10 -7 -12 -13v-58c0 -11 -9 -20 -20 -20v0c-11 0 -20 9 -20 20v58
+c-2 6 -6 11 -12 13c-1 0 -3 1 -4 1c-62 16 -108 70 -108 136v14zM67 340c0 42 34 76 77 76s78 -34 78 -76v-144c0 -42 -35 -75 -78 -75s-77 33 -77 75v144z" />
+    <glyph glyph-name="ion-mic-b" unicode="&#xf205;" horiz-adv-x="160" 
+d="M80 416c35 0 65 -23 76 -59c6 -18 4 -45 2 -55s-8 -20 -14 -28c-3 -4 -7 -7 -11 -9c-1 0 -1 -1 -2 -1c-3 -1 -6 -2 -10 -3c-12 -3 -25 -5 -39 -5v0h-1h-1v0c-14 0 -29 2 -41 5c-4 1 -7 2 -10 3c-1 0 -1 1 -2 1c-4 2 -8 5 -11 9c-6 8 -12 18 -14 28s-4 37 2 55
+c11 36 41 59 76 59zM119 247c6 0 12 -5 12 -12v-2c-5 -67 -18 -241 -19 -252c0 0 -3 -13 -32 -13v0c-29 0 -32 13 -32 13c-1 11 -13 185 -18 252v2c0 7 5 12 11 12h1c1 0 1 -1 2 -1c2 0 4 -1 6 -1c9 -2 21 -2 31 -2s20 0 29 2c2 0 4 1 6 1c1 0 1 1 2 1h1zM90 166v33
+c0 6 -4 11 -10 11s-10 -5 -10 -11v-33c0 -6 4 -11 10 -11s10 5 10 11z" />
+    <glyph glyph-name="ion-mic-c" unicode="&#xf206;" horiz-adv-x="256" 
+d="M201 416c30 0 55 -23 55 -52v-28h-59v-37h59v-43h-59v-37h59v-43h-59v-37h59v-42c0 -29 -25 -52 -55 -52h-30v-77h-86v77h-30c-30 0 -55 23 -55 52v42h152v37h-152v43h152v37h-152v43h152v37h-152v28c0 29 25 52 55 52h146z" />
+    <glyph glyph-name="ion-minus-circled" unicode="&#xf207;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-256v-32h256z" />
+    <glyph glyph-name="ion-minus-round" unicode="&#xf208;" horiz-adv-x="384" 
+d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322z" />
+    <glyph glyph-name="ion-minus" unicode="&#xf209;" horiz-adv-x="384" 
+d="M0 160v64h384v-64h-384z" />
+    <glyph glyph-name="ion-model-s" unicode="&#xf2c1;" horiz-adv-x="512" 
+d="M509 57v-8v0v-1v-3v0c0 -3 -1 -5 -1 -7c-1 -12 -2 -18 -6 -20c-3 -2 -6 -2 -10 -2h-43s-10 1 -11 16v8c20 1 39 1 52 0c10 0 13 0 16 6c2 3 2 7 3 11zM3 57c1 -4 1 -8 3 -11c3 -6 6 -6 16 -6c13 1 32 1 52 0v-8c-1 -15 -8 -16 -11 -16h-43s-7 0 -10 2c-4 2 -6 8 -7 20v7
+v0v3v1v0v8zM512 151c0 -31 -2 -58 -2 -68c0 -4 0 -11 -1 -18c-1 -4 -1 -8 -3 -11c-3 -6 -6 -6 -16 -6c-13 1 -32 1 -52 0c-13 0 -27 -2 -39 -2c-30 -1 -21 4 -34 4s-63 -2 -109 -2s-97 2 -110 2s-4 -5 -34 -4c-12 0 -25 2 -38 2c-20 1 -39 1 -52 0c-10 0 -13 0 -16 6
+c-2 3 -2 7 -3 11c-1 7 -1 14 -1 18c0 10 -2 37 -2 68s4 61 6 64c1 2 8 9 26 21s17 10 20 18c-3 1 -5 3 -7 3c-4 0 -4 -3 -12 -3s-24 1 -28 5c-4 3 -5 5 -5 8s2 9 5 13s19 6 27 7s10 0 12 -1c4 -2 3 -22 3 -22l9 -1c5 13 12 41 24 62c13 23 26 30 32 32s10 2 48 6s69 5 96 5
+s58 -1 96 -5s42 -4 48 -6s19 -9 32 -32c12 -21 19 -49 24 -62l9 1s-1 20 3 22c2 1 4 2 12 1s24 -3 27 -7s5 -10 5 -13s-1 -4 -5 -8s-20 -5 -28 -5s-8 3 -12 3c-2 0 -4 -2 -7 -3c3 -8 2 -6 20 -18s25 -19 26 -21c2 -3 6 -33 6 -64zM86 303c-5 -11 -11 -33 -10 -36
+s-1 -5 15 -4s117 3 165 3s149 -2 165 -3s14 1 15 4s-5 25 -10 36s-17 31 -26 37c-2 1 -17 7 -54 9c-34 2 -72 3 -90 3s-56 -1 -90 -3c-37 -2 -52 -8 -54 -9c-7 -4 -21 -26 -26 -37zM123 178c7 2 11 2 11 2s-17 16 -48 25s-49 11 -66 10c0 0 -3 -16 0 -27s8 -10 16 -12
+s13 -5 16 -4s7 4 12 4s29 -4 38 -4s14 4 21 6zM358 99c15 2 34 19 21 33c-18 19 -15 19 -55 24c-35 4 -61 4 -68 4s-33 0 -68 -4c-40 -5 -37 -5 -55 -24c-13 -14 6 -31 21 -33c14 -2 74 -3 102 -3s88 1 102 3zM492 188c3 11 0 27 0 27c-17 1 -35 -1 -66 -10s-48 -26 -48 -26
+s4 1 11 -1s12 -6 21 -6s33 4 38 4s9 -3 12 -4s8 2 16 4s13 1 16 12z" />
+    <glyph glyph-name="ion-monitor" unicode="&#xf20a;" 
+d="M437 384c6 0 11 -5 11 -11v-266c0 -6 -5 -11 -11 -11h-426c-6 0 -11 5 -11 11v266c0 6 5 11 11 11h426zM416 128v224h-384v-224h384zM270 0h-92c-28 0 -42 3 -30 12s30 16 30 23c0 4 1 45 1 45h45h45s1 -41 1 -45c0 -7 18 -14 30 -23s-2 -12 -30 -12z" />
+    <glyph glyph-name="ion-more" unicode="&#xf20b;" horiz-adv-x="384" 
+d="M50 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM192 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM334 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48z" />
+    <glyph glyph-name="ion-mouse" unicode="&#xf340;" horiz-adv-x="256" 
+d="M128 416h-1h5h-4zM251 255c2 1 2 1 4 1h1v-176c0 -37 -21 -71 -53 -91c-5 -3 -9 -5 -14 -7v-1v0c-18 -9 -39 -13 -61 -13c-71 0 -128 50 -128 112v176h1c2 0 3 0 5 -1v0c34 -13 76 -23 122 -23s88 10 122 23h1zM189 -18c5 2 10 4 14 7c-5 -3 -9 -5 -14 -7v0v-1v1v0z
+M203 -11c-4 -3 -9 -5 -14 -7c5 2 9 4 14 7zM132 416c69 -2 124 -51 124 -112v-23c-2 -2 -4 -4 -6 -5c-1 -1 -3 0 -4 -1c-23 -10 -50 -16 -82 -19h-1h-2c-11 0 -17 0 -17 10v86c0 9 -7 16 -16 16s-16 -7 -16 -16v-85c0 -11 -6 -11 -17 -11h-2c-32 3 -61 9 -84 19v0
+c-1 0 -1 1 -2 1c-3 1 -5 3 -7 5v23c0 61 57 111 127 112h5z" />
+    <glyph glyph-name="ion-music-note" unicode="&#xf20c;" horiz-adv-x="384" 
+d="M362 416c12 0 22 -9 22 -21v-303s-3 -43 -12 -55v0c-9 -15 -25 -21 -43 -21h-37c-28 0 -52 20 -52 48s24 48 52 48h60v192l-208 -38v-232c0 -8 -3 -27 -13 -41c-1 -2 -2 -3 -3 -5c0 -1 -1 -1 -2 -2v0c-9 -11 -23 -18 -38 -18h-37c-28 0 -51 20 -51 48s23 48 51 48v0h61
+v286c1 14 13 28 27 32l218 33s3 1 5 1z" />
+    <glyph glyph-name="ion-navicon-round" unicode="&#xf20d;" horiz-adv-x="384" 
+d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 352c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 96c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32
+h322z" />
+    <glyph glyph-name="ion-navicon" unicode="&#xf20e;" horiz-adv-x="320" 
+d="M0 175v32h320v-32h-320zM0 271v32h320v-32h-320zM0 79v32h320v-32h-320z" />
+    <glyph glyph-name="ion-navigate" unicode="&#xf2a3;" 
+d="M448 416l-192 -448v256h-256z" />
+    <glyph glyph-name="ion-network" unicode="&#xf341;" horiz-adv-x="384" 
+d="M384 352c0 -24 -13 -44 -32 -55v-93l-128 -64v-53c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v53l-128 64v93c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-53l96 -48l96 48v53c-19 11 -32 31 -32 55
+c0 35 29 64 64 64s64 -29 64 -64zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 320c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-no-smoking" unicode="&#xf2c2;" 
+d="M328 144v48h16v-48h-16zM80 144v48h90l48 -48h-138zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 9 -35 15h-1c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2
+c12 -4 24 -9 35 -15v0zM224 22c37 0 72 12 100 32l-238 238c-20 -28 -32 -63 -32 -100c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2zM362 93c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2
+c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -71 -12 -99 -32zM320 150l-42 42h42v-42zM352 144v48h16v-48h-16zM328 235c16 -7 16 -27 16 -34v-1h-16v1c0 8 -1 17 -7 20c-4 2 -13 4 -39 4h-3c-13 0 -24 0 -33 13c-5 8 -5 19 -2 29c-4 1 -8 1 -12 3c-17 7 -26 20 -26 38
+c0 33 27 44 39 44v-16c-1 0 -23 -2 -23 -28c0 -11 5 -19 16 -23c9 -4 18 -3 18 -3c3 0 6 -2 7 -5s2 -6 0 -8c-5 -7 -7 -18 -4 -22c4 -6 7 -6 20 -6h3c24 0 37 -2 46 -6zM368 200v0h-16c0 28 -4 41 -7 46c-6 10 -14 14 -25 14h-30c-3 0 -5 2 -6 4s-1 6 0 8c0 0 8 18 6 32
+c-1 8 -6 17 -27 17v16c24 0 40 -11 43 -30c2 -11 0 -23 -3 -31h17c16 0 30 -8 39 -22c6 -10 9 -28 9 -54z" />
+    <glyph glyph-name="ion-nuclear" unicode="&#xf2a4;" 
+d="M176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM448 176c0 -27 -5 -53 -15 -78s-23 -47 -40 -66s-36 -35 -59 -48l-79 136c22 12 33 31 33 56h160zM224 240
+c-12 0 -23 -3 -33 -9l-80 138c35 20 73 31 113 31s78 -10 113 -30l-81 -139c-10 6 -21 9 -32 9zM160 176c0 -25 11 -44 33 -56l-79 -136c-35 20 -62 46 -83 80s-31 71 -31 112h160z" />
+    <glyph glyph-name="ion-outlet" unicode="&#xf342;" 
+d="M338 416c61 0 110 -51 110 -113v-222c0 -62 -49 -113 -110 -113h-228c-61 0 -110 51 -110 113v222c0 62 49 113 110 113h228zM143 197v102c0 11 -9 21 -20 21h-23c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h23c11 0 20 9 20 20v1zM265 52v29
+c0 23 -18 42 -41 42s-41 -19 -41 -42v-29v0c0 -11 9 -20 20 -20h21h21c11 0 20 7 20 18v2zM368 197v102c0 11 -9 21 -20 21h-24c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h24c11 0 20 9 20 20v1z" />
+    <glyph glyph-name="ion-paintbrush" unicode="&#xf4d5;" 
+d="M118 165c52 0 102 -41 90 -102c-11 -52 -54 -71 -90 -77c-30 -5 -100 0 -118 35c24 9 34 26 34 49c0 49 32 95 84 95zM436 388c13 -13 17 -30 5 -45l-154 -175c2 -9 1 -17 -3 -23l-50 -58v0v0c-2 -2 -4 -2 -6 0c-1 1 -1 2 -1 3v1c2 53 -41 87 -89 90v0h-2s-2 0 -2 1
+c-2 2 -2 4 0 6l59 49c6 4 14 4 23 2l175 154c15 12 32 8 45 -5zM134 188v0v0v0z" />
+    <glyph glyph-name="ion-paintbucket" unicode="&#xf4d6;" horiz-adv-x="480" 
+d="M112 384l32 32l275 -276l-58 -12l-163 -160l-198 192l152 152zM309 160l-110 110l-110 -110h220zM419 140c0 0 61 -66 61 -99s-27 -60 -61 -60s-60 27 -60 60s60 99 60 99z" />
+    <glyph glyph-name="ion-paper-airplane" unicode="&#xf2c3;" 
+d="M0 176l448 240l-112 -448l-112 112l-80 -112l-16 160zM319 31l80 323l-322 -173l83 -31l192 154l-128 -176z" />
+    <glyph glyph-name="ion-paperclip" unicode="&#xf20f;" horiz-adv-x="160" 
+d="M149 293c6 0 11 -5 11 -12v-195c0 -28 -10 -49 -24 -63c-15 -15 -36 -23 -56 -23c-40 0 -80 31 -80 88v234c0 24 11 44 29 54s39 11 57 0s29 -30 29 -54l-1 -225c0 -13 -3 -24 -9 -32s-16 -12 -25 -12c-17 0 -34 15 -34 44v173c0 6 6 12 12 12s11 -6 11 -12v-173
+c0 -14 5 -21 11 -21c2 0 5 2 7 4c3 4 5 10 5 17v225c0 15 -6 28 -17 34s-24 6 -35 0s-17 -19 -17 -34v-234c0 -44 29 -64 57 -64s57 19 57 63v195c0 6 6 11 12 11z" />
+    <glyph glyph-name="ion-pause" unicode="&#xf210;" horiz-adv-x="256" 
+d="M96 12c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72c7 0 12 -5 12 -12v-360zM244 384c7 0 12 -5 12 -12v-360c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72z" />
+    <glyph glyph-name="ion-person-add" unicode="&#xf211;" 
+d="M397 120h-42v51h-51v42h51v51h42v-51h51v-42h-51v-51zM384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27
+c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" />
+    <glyph glyph-name="ion-person-stalker" unicode="&#xf212;" 
+d="M393 123c42 -16 52 -26 53 -33c2 -9 2 -90 2 -90h-98c0 18 0 71 -1 77c-1 10 -1 29 -55 50c-8 3 -14 5 -19 7c18 8 15 15 15 28c0 19 -9 11 -15 47c-2 14 -4 5 -9 28c-3 12 1 12 1 18s-1 10 -2 22c-1 14 11 52 57 52s59 -38 58 -52c-1 -12 -2 -16 -2 -22
+c-1 -6 4 -6 1 -18c-5 -23 -7 -14 -9 -28c-6 -36 -16 -28 -16 -47c0 -29 -2 -23 39 -39zM325 0h-163h-162s0 65 2 77c2 10 15 22 69 43c54 20 50 17 50 55c0 24 -12 8 -20 54c-3 18 -5 7 -11 36c-3 15 2 16 1 23s-2 14 -3 29c-2 19 15 67 74 67s77 -49 75 -67
+c-1 -15 -2 -22 -3 -29s5 -8 2 -23c-6 -29 -9 -18 -12 -36c-8 -46 -20 -30 -20 -54c0 -32 -2 -36 31 -48c6 -2 11 -4 19 -7c54 -21 67 -33 69 -43c1 -6 2 -28 2 -47v-30z" />
+    <glyph glyph-name="ion-person" unicode="&#xf213;" horiz-adv-x="384" 
+d="M384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64
+c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" />
+    <glyph glyph-name="ion-pie-graph" unicode="&#xf2a5;" 
+d="M1 192c0 5 -1 11 -1 16c0 115 93 208 208 208c5 0 11 -1 16 -1v-32v-191h-191h-32zM78 46c-26 32 -42 71 -45 114h223v223c43 -3 82 -19 114 -45c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78z" />
+    <glyph glyph-name="ion-pin" unicode="&#xf2a6;" horiz-adv-x="224" 
+d="M188 220c20 -10 36 -31 36 -55c0 -17 -3 -21 -15 -21h-81l-12 -176h-8l-12 176h-81c-12 0 -15 5 -15 21c0 24 16 45 36 55v0c1 0 3 1 4 2c7 4 12 11 14 19l18 118v5c0 7 -4 10 -10 13v0c-1 0 -1 1 -2 1c-7 3 -12 9 -12 17c0 20 6 21 18 21h92c12 0 18 -1 18 -21
+c0 -8 -5 -14 -12 -17c-1 0 -1 -1 -2 -1v0c-6 -3 -10 -6 -10 -13v-5l18 -118c2 -8 7 -15 14 -19c1 -1 3 -2 4 -2v0z" />
+    <glyph glyph-name="ion-pinpoint" unicode="&#xf2a7;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c32 32 51 75 55 120l-63 8v16l63 8c-4 45 -23 88 -55 120s-75 51 -120 55l-8 -63h-16l-8 63c-45 -4 -88 -23 -120 -55s-51 -75 -55 -120l63 -8v-16l-63 -8
+c4 -45 23 -88 55 -120s75 -51 120 -55l8 63h16l8 -63c45 4 88 23 120 55z" />
+    <glyph glyph-name="ion-pizza" unicode="&#xf2a8;" horiz-adv-x="352" 
+d="M315 318c10 -4 12 -13 9 -20l-148 -330s-143 320 -148 331s2 16 9 19c39 18 90 28 139 28s96 -9 139 -28zM112 256c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM176 109c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM240 224
+c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM342 382c6 -3 10 -6 10 -13c0 -1 0 -3 -1 -5l-8 -19c-3 -5 -8 -9 -14 -9c-1 0 -3 1 -6 2c-41 18 -95 30 -147 30s-102 -11 -147 -30c-3 -1 -4 -2 -6 -2c-6 0 -11 4 -14 9l-8 19s-1 2 -1 5c0 8 6 12 10 14
+c49 21 107 33 166 33s118 -13 166 -34z" />
+    <glyph glyph-name="ion-plane" unicode="&#xf214;" 
+d="M250 136c0 -7 1 -69 -6 -102c-1 -4 3 -4 5 -7l51 -33c2 -2 3 -8 3 -8l1 -18l-68 16l-12 -32l-12 32l-68 -16l1 18s0 6 2 8l52 33c2 3 6 3 5 7c-7 33 -6 95 -6 102s-8 5 -8 5l-62 -13l-128 -49c0 23 2 26 9 31l183 131s5 63 5 113c0 24 12 78 27 78s27 -54 27 -78
+c0 -53 5 -113 5 -113l183 -131c6 -4 9 -7 9 -31l-128 49l-62 13s-8 2 -8 -5z" />
+    <glyph glyph-name="ion-planet" unicode="&#xf343;" horiz-adv-x="512" 
+d="M96 182c39 -24 85 -48 134 -69c44 -19 87 -35 126 -46c-27 -22 -62 -35 -100 -35c-85 0 -155 66 -160 150zM107 251c1 4 3 8 5 11c10 21 26 40 44 55c27 22 62 35 100 35c85 0 155 -66 160 -150v-10c0 -21 -4 -41 -11 -59c-1 -4 -3 -8 -5 -11c-6 1 -13 3 -19 5
+c-39 11 -82 26 -126 45c-56 24 -108 52 -148 79zM430 163c57 -35 87 -62 81 -82c-4 -12 -19 -17 -44 -17c-50 0 -136 23 -231 64c-141 61 -246 140 -235 175c4 12 20 20 44 17c22 -3 47 -9 73 -18c-8 -9 -8 -12 -14 -22c-23 5 -44 8 -59 8h-6c2 -2 5 -6 8 -9
+c11 -11 27 -24 46 -37c41 -29 97 -59 156 -85c44 -19 89 -35 128 -46c36 -10 68 -15 90 -15h6c-2 2 -5 6 -8 9c-10 10 -24 22 -41 34c4 11 5 12 6 24z" />
+    <glyph glyph-name="ion-play" unicode="&#xf215;" horiz-adv-x="320" 
+d="M309 215c7 -6 11 -14 11 -23s-4 -17 -11 -23l-278 -166c-4 -2 -7 -3 -11 -3c-11 0 -20 9 -20 20v0v344v0c0 11 9 20 20 20c4 0 8 -1 11 -3z" />
+    <glyph glyph-name="ion-playstation" unicode="&#xf30a;" horiz-adv-x="512" 
+d="M400 245c0 -11 0 -22 -2 -33c-2 -10 -5 -20 -10 -28c-4 -7 -10 -13 -18 -17c-7 -4 -16 -6 -24 -6c-13 0 -31 4 -42 9v131v2c0 9 -7 17 -15 17h-1c-9 0 -16 -8 -16 -17v-3v-300l-80 26v358s28 -4 75 -18s67 -21 84 -31c8 -5 15 -11 21 -17c7 -7 13 -14 17 -23
+c8 -16 10 -33 11 -50zM87 90c-4 -2 -8 -3 -11 -6c-1 -1 -3 -3 -2 -5s4 -4 6 -5c6 -2 13 -3 19 -3c7 0 15 0 22 2c5 1 9 3 14 5c30 10 41 12 41 12v-42c-14 -2 -36 -4 -50 -4c-30 -1 -60 4 -88 13c-9 3 -19 6 -27 12c-4 3 -8 8 -10 13c-2 4 -1 9 1 13s5 8 9 11
+c9 6 18 10 28 14c8 4 17 7 26 10c35 12 111 37 111 37v-47s-62 -20 -89 -30zM512 102c0 -5 -2 -9 -5 -13c-6 -7 -14 -11 -22 -15s-17 -8 -26 -11c-54 -19 -171 -59 -171 -59v48s92 30 133 44c6 2 11 4 16 8c2 2 4 3 3 6c-1 2 -4 4 -6 5c-6 2 -13 3 -19 3
+c-10 0 -20 -2 -30 -5c-29 -10 -97 -32 -97 -32v49s45 14 67 16c8 1 23 1 31 1c26 0 54 -3 79 -11c5 -2 8 -3 14 -5c9 -3 18 -8 25 -14c4 -4 8 -9 8 -15z" />
+    <glyph glyph-name="ion-plus-circled" unicode="&#xf216;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-112v112h-32v-112h-112v-32h112v-112h32v112h112z" />
+    <glyph glyph-name="ion-plus-round" unicode="&#xf217;" horiz-adv-x="384" 
+d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-129v-129c0 -17 -14 -31 -32 -31s-32 14 -32 31v129h-129c-17 0 -31 14 -31 32s14 32 31 32h129v129c0 17 14 31 32 31s32 -14 32 -31v-129h129z" />
+    <glyph glyph-name="ion-plus" unicode="&#xf218;" horiz-adv-x="384" 
+d="M384 224v-64h-160v-160h-64v160h-160v64h160v160h64v-160h160z" />
+    <glyph glyph-name="ion-podium" unicode="&#xf344;" 
+d="M0 0v192h128v-192h-128zM160 0v288h128v-288h-128zM320 0v128h128v-128h-128z" />
+    <glyph glyph-name="ion-pound" unicode="&#xf219;" 
+d="M93 96h-93v54h101l13 84h-99v54h107l22 128h64l-22 -128h106l22 128h63l-22 -128h93v-54h-102l-12 -84h99v-54h-107l-22 -128h-63l22 128h-107l-22 -128h-63zM177 234l-12 -84h106l12 84h-106v0z" />
+    <glyph glyph-name="ion-power" unicode="&#xf2a9;" 
+d="M224 192c-18 0 -32 14 -32 32v160c0 18 14 32 32 32s32 -14 32 -32v-160c0 -18 -14 -32 -32 -32zM347 379c61 -40 101 -109 101 -187c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 78 40 147 101 187v0c5 3 11 5 17 5c18 0 32 -14 32 -32c0 -6 -2 -12 -5 -17
+c-2 -3 -4 -6 -7 -8c-1 -1 -3 -2 -4 -3c-8 -6 -16 -12 -23 -19c-30 -30 -47 -70 -47 -113s17 -83 47 -113s70 -47 113 -47s83 17 113 47s47 70 47 113s-17 83 -47 113c-7 7 -15 13 -23 19c-1 1 -3 2 -4 3c-3 2 -5 5 -7 8c-3 5 -5 11 -5 17c0 18 14 32 32 32c6 0 12 -2 17 -5
+v0z" />
+    <glyph glyph-name="ion-pricetag" unicode="&#xf2aa;" 
+d="M439 187c12 -12 12 -31 0 -43l-165 -167c-11 -11 -30 -11 -42 -1l-3 3l-206 209l-6 5c-6 7 -9 15 -10 24v0v2v0l-7 98v4v0c0 12 4 24 13 33l49 49c8 9 20 13 31 13h4l100 -4v0c12 0 22 -4 30 -12v0l2 -2v0l210 -211v0v0zM112 256c26 0 48 22 48 48s-22 48 -48 48
+s-48 -22 -48 -48s22 -48 48 -48z" />
+    <glyph glyph-name="ion-pricetags" unicode="&#xf2ab;" 
+d="M440 209c10 -11 11 -28 0 -39l-29 -29c11 11 10 28 0 39v0v0l-190 191v0l-1 1h-1c-8 7 -16 12 -27 12v0l-90 3h-4c-9 0 -19 -3 -26 -10l28 27c8 8 17 12 27 12h4l90 -4v0c11 0 19 -4 27 -11h1l1 -1v0l190 -191v0v0zM396 166v0c11 -11 11 -29 0 -40l-108 -109v1l-26 -27
+l-2 -2l-13 -13c-10 -10 -26 -10 -37 -1l-3 3l-186 188l-5 5c-5 6 -9 14 -10 22v0v2v0l-6 88v3v1c0 11 4 21 12 29l44 45l1 1l1 1c7 6 17 9 26 9h4l90 -3v0c11 0 19 -4 27 -11v0l2 -1v0l189 -191v0zM79 308c-12 -8 -21 -21 -21 -37c0 -24 19 -43 43 -43c16 0 29 9 37 21
+c4 7 7 14 7 22c0 24 -20 44 -44 44c-8 0 -15 -3 -22 -7z" />
+    <glyph glyph-name="ion-printer" unicode="&#xf21a;" 
+d="M392 320c28 0 56 -19 56 -55v-131c0 -31 -28 -54 -56 -54h-40v-112h-8h-8h-224h-11h-5v112h-40c-28 0 -56 24 -56 62v123c0 38 28 55 56 55h40v64h256v-64h40zM336 -16v176h-224v-176h224zM336 320v48h-224v-48h224zM384 256v16h-17v-16h17zM128 112v16h192v-16h-192z
+M128 64v16h192v-16h-192zM128 16v16h192v-16h-192z" />
+    <glyph glyph-name="ion-pull-request" unicode="&#xf345;" horiz-adv-x="384" 
+d="M64 384c35 0 64 -29 64 -64c0 -24 -13 -44 -32 -55v-178c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v178c-19 11 -32 31 -32 55c0 35 29 64 64 64zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM64 288
+c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM351 88c20 -11 33 -32 33 -56c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 23 12 44 31 55v156c0 16 -4 26 -11 33c-10 9 -26 12 -52 12v-64l-96 96l96 96v-64c42 1 74 -8 96 -29c21 -19 31 -46 31 -80v-155z
+M320 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
+    <glyph glyph-name="ion-qr-scanner" unicode="&#xf346;" horiz-adv-x="416" 
+d="M48 324v-68h-48v68c0 33 28 60 61 60h67v-48h-68c-7 0 -12 -5 -12 -12zM356 384c33 0 60 -27 60 -60v-68h-48v68c0 7 -6 12 -13 12h-67v48h68zM368 61v67h48v-67c0 -33 -27 -61 -60 -61h-68v49h68c7 0 12 5 12 12zM60 49h68v-49h-67c-33 0 -61 28 -61 61v67h48v-67
+c0 -7 5 -12 12 -12z" />
+    <glyph glyph-name="ion-quote" unicode="&#xf347;" horiz-adv-x="384" 
+d="M128 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15zM352 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15z" />
+    <glyph glyph-name="ion-radio-waves" unicode="&#xf2ac;" 
+d="M160 192c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM112 192c0 -18 5 -35 13 -50s19 -28 33 -37l-23 -25c-6 5 -13 10 -18 16c-25 26 -37 59 -37 96s12 70 37 96c5 6 12 11 18 16l23 -25c-14 -9 -25 -22 -33 -37s-13 -32 -13 -50zM336 192
+c0 18 -5 35 -13 50s-19 28 -33 37l23 25c6 -5 13 -10 18 -16c25 -26 37 -59 37 -96s-12 -70 -37 -96c-5 -6 -12 -11 -18 -16l-23 25c14 9 25 22 33 37s13 32 13 50zM32 192c0 -27 6 -53 17 -77s27 -43 47 -59l-23 -24c-6 5 -12 10 -17 16c-18 19 -31 41 -41 65
+c-10 25 -15 51 -15 79s5 54 15 79c10 24 23 46 41 65c5 6 11 11 17 16l23 -24c-10 -8 -18 -17 -26 -27s-14 -21 -20 -32s-10 -24 -13 -37s-5 -26 -5 -40zM416 192c0 27 -6 53 -17 77s-27 43 -47 59l23 24c6 -5 12 -10 17 -16c18 -19 31 -41 41 -65c10 -25 15 -51 15 -79
+s-5 -54 -15 -79c-10 -24 -23 -46 -41 -65c-4 -5 -10 -10 -17 -16l-23 24c20 16 36 35 47 59s17 50 17 77z" />
+    <glyph glyph-name="ion-record" unicode="&#xf21b;" horiz-adv-x="416" 
+d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208z" />
+    <glyph glyph-name="ion-refresh" unicode="&#xf21c;" 
+d="M352 96l-104 112h74c-7 65 -64 112 -130 112c-71 0 -128 -57 -128 -128s57 -128 128 -128c28 0 53 8 75 24l6 5l43 -46l-7 -6c-34 -26 -74 -41 -117 -41c-91 0 -167 64 -187 149v0c0 1 -1 2 -1 3v1v2s-1 2 -1 3v1c0 1 -1 3 -1 4v0c-1 6 -2 13 -2 19v1v4v5v5v4v1
+c0 6 1 13 2 19v0c0 1 1 3 1 4v1c0 1 1 1 1 2v3v1c0 1 1 2 1 3v0c20 85 96 149 187 149v0v0c11 0 21 -1 31 -3h2h2c57 -10 106 -47 133 -96c13 -23 21 -49 23 -77h65z" />
+    <glyph glyph-name="ion-reply-all" unicode="&#xf21d;" horiz-adv-x="416" 
+d="M257 256c153 0 159 -208 159 -208c-51 93 -91 102 -159 102v-92l-152 134l152 144v-80zM0 192l144 136v-57l-82 -79l82 -68v-58z" />
+    <glyph glyph-name="ion-reply" unicode="&#xf21e;" horiz-adv-x="384" 
+d="M384 48c-53 93 -122 102 -224 102v-92l-160 134l160 144v-80c187 0 224 -208 224 -208z" />
+    <glyph glyph-name="ion-ribbon-a" unicode="&#xf348;" horiz-adv-x="352" 
+d="M272 416l80 -96l-64 -134c-24 30 -59 49 -99 53zM80 416l83 -177c-40 -4 -75 -23 -99 -53l-64 134zM189 416h67l-53 -112h-27h-27l-53 112h80h13zM176 224c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM176 0c53 0 96 43 96 96
+s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM176 184c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88z" />
+    <glyph glyph-name="ion-ribbon-b" unicode="&#xf349;" horiz-adv-x="384" 
+d="M192 376c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88zM192 416c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM192 192c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM83 194c26 -30 65 -50 109 -50
+c12 0 23 1 34 4l-34 -74l-48 -106l-48 80h-96zM301 194l83 -146h-96l-48 -80l-40 88l45 98c22 9 41 23 56 40z" />
+    <glyph glyph-name="ion-sad-outline" unicode="&#xf4d7;" 
+d="M367 164c3 -9 -2 -17 -11 -19c-3 -1 -7 0 -10 1c-5 2 -9 5 -11 10s-4 12 -13 15s-14 0 -19 -3c-4 -3 -10 -3 -15 -1c-3 1 -7 3 -9 6c-6 8 -3 17 5 22c15 9 29 13 49 6s29 -21 34 -37zM165 195c8 -5 10 -14 4 -22c-2 -3 -6 -5 -9 -6c-5 -2 -11 -2 -15 1c-5 3 -10 6 -19 3
+s-11 -10 -13 -15s-6 -8 -11 -10c-3 -1 -7 -2 -10 -1c-9 2 -14 10 -11 19c5 16 14 30 34 37s35 3 50 -6zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56
+s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM317 89c5 -7 3 -17 -4 -22c-3 -2 -6 -3 -9 -3c-5 0 -10 3 -13 7c0 0 -19 25 -67 25s-67 -25 -67 -25c-3 -4 -8 -7 -13 -7c-3 0 -6 1 -9 3c-7 5 -9 15 -4 22c1 2 28 39 93 39
+s92 -37 93 -39z" />
+    <glyph glyph-name="ion-sad" unicode="&#xf34a;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM113 156c2 5 4 12 13 15s14 0 19 -3c4 -3 10 -3 15 -1c3 1 7 3 9 6c6 8 4 17 -4 22c-15 9 -30 13 -50 6s-29 -21 -34 -37c-3 -9 2 -17 11 -19c3 -1 7 0 10 1c5 2 9 5 11 10z
+M313 67c7 5 9 15 4 22c-1 2 -28 39 -93 39s-92 -37 -93 -39c-5 -7 -3 -17 4 -22c3 -2 6 -3 9 -3c5 0 10 3 13 7c0 0 19 25 67 25s67 -25 67 -25c3 -4 8 -7 13 -7c3 0 6 1 9 3zM356 145c9 2 14 10 11 19c-5 16 -14 30 -34 37s-34 3 -49 -6c-8 -5 -11 -14 -5 -22
+c2 -3 6 -5 9 -6c5 -2 11 -2 15 1c5 3 10 6 19 3s11 -10 13 -15s6 -8 11 -10c3 -1 7 -2 10 -1z" />
+    <glyph glyph-name="ion-scissors" unicode="&#xf34b;" horiz-adv-x="384" 
+d="M341 332c-13 -33 -117 -172 -117 -172l-32 -32s-31 -13 -50 -43s-33 -71 -33 -71v0c-7 -26 -28 -46 -53 -46c-31 0 -56 29 -56 64s25 64 56 64c13 0 25 -5 34 -13c2 -1 3 -3 4 -4v0l2 -2c4 -4 7 -2 14 11c8 15 17 35 27 54s38 59 38 59l17 23l144 192
+c23 -20 18 -51 5 -84zM56 0c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32zM192 160c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM143 183c-30 41 -90 125 -100 149c-13 33 -18 64 5 84l134 -178l-3 -4v0v0l-17 -23v-1v0
+c-1 -1 -10 -13 -19 -27zM328 96c31 0 56 -29 56 -64s-25 -64 -56 -64c-25 0 -47 20 -54 46v0s-13 41 -32 71c-11 17 -26 28 -36 35l29 29l1 1h1c1 1 1 2 2 4c3 -4 5 -9 7 -12c10 -19 20 -39 28 -54c7 -13 10 -15 14 -11c1 1 0 1 1 2h1c1 1 2 3 4 4c9 8 21 13 34 13zM328 0
+c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32z" />
+    <glyph glyph-name="ion-search" unicode="&#xf21f;" horiz-adv-x="384" 
+d="M381 61c4 -4 4 -10 0 -14l-43 -44c-2 -2 -5 -3 -8 -3s-5 1 -7 3l-84 86c-25 -15 -52 -23 -80 -23c-87 0 -159 71 -159 159s72 159 159 159s158 -71 158 -159c0 -27 -7 -54 -21 -78zM159 322c-53 0 -97 -43 -97 -97s44 -97 97 -97s96 43 96 97s-43 97 -96 97z" />
+    <glyph glyph-name="ion-settings" unicode="&#xf2ad;" horiz-adv-x="416" 
+d="M402 310c10 -6 15 -25 14 -36c-1 -17 -7 -36 -25 -54c-1 -1 -2 -1 -3 -2c-26 -25 -62 -30 -94 -20c-1 1 -2 2 -4 2c-5 1 -10 0 -13 -4l-36 -39c52 -50 107 -96 107 -96c2 -2 2 -5 0 -7l-50 -51c-2 -2 -5 -2 -7 0c0 0 -44 55 -93 107l-92 -98c-14 -16 -40 -15 -55 0
+c-15 16 -15 42 1 56l97 93l-12 12c-2 2 -3 7 -1 10l2 5c-25 26 -36 33 -56 32s-36 -13 -48 -28s-10 -52 -8 -62s-7 -6 -12 0c-9 10 -23 50 -6 93s42 69 48 75s16 15 24 21s21 -1 27 5c4 4 5 11 5 16l-4 4c-2 2 -2 5 0 7l31 31c2 2 5 2 7 0l50 -50c2 -2 2 -6 0 -8l-31 -31
+c-2 -2 -5 -2 -7 0l-8 9c-7 0 -15 -5 -17 -10c-3 -6 -6 -21 -3 -33c3 -11 13 -20 36 -43l5 3c4 2 8 1 10 -1c0 0 1 -2 13 -14l38 37c4 3 5 7 4 13c0 2 0 4 -1 5c-10 33 -6 69 19 96l2 2c18 18 36 25 53 26c10 1 30 -5 35 -15l-48 -48l-2 -3l-1 -1c-1 -1 -1 -2 -1 -4
+s0 -3 1 -5l2 -2l2 -2l41 -42l3 -3l1 -1c1 -1 2 -1 4 -1s3 0 4 1l2 1l2 3z" />
+    <glyph glyph-name="ion-share" unicode="&#xf220;" horiz-adv-x="384" 
+d="M288 70v59l38 31v-109c0 -11 -8 -19 -19 -19h-288c-11 0 -19 9 -19 19v218c0 11 8 19 19 19h120c-29 -18 -43 -38 -43 -38h-58v-180h250zM256 224c-84 0 -116 -24 -160 -96c0 0 5 164 160 164v60l128 -96l-128 -96v64z" />
+    <glyph glyph-name="ion-shuffle" unicode="&#xf221;" 
+d="M338 267c-52 0 -83 -43 -120 -92c-41 -55 -88 -120 -171 -120h-47v63h47c52 0 84 47 121 96c41 55 87 116 170 116h29v54l81 -81l-81 -84v48h-29zM121 230c-21 21 -42 35 -74 36c-34 1 -47 0 -47 0v63h47c48 0 83 -20 113 -48c-10 -12 -19 -24 -28 -36
+c-4 -5 -7 -10 -11 -15zM367 118v47l81 -84l-81 -81v54h-29c-50 0 -87 23 -117 53c12 14 22 28 32 41c2 3 5 6 7 9c22 -24 46 -39 78 -39h29z" />
+    <glyph glyph-name="ion-skip-backward" unicode="&#xf222;" horiz-adv-x="384" 
+d="M12 352h8c7 0 12 -5 12 -12v-113l187 122c2 2 5 3 8 3c8 0 16 -7 16 -17v-63l118 78c2 2 5 2 8 2c8 0 15 -7 15 -17v-286c0 -10 -7 -17 -15 -17c-3 0 -5 1 -8 3l-118 78v-64c0 -10 -8 -17 -16 -17c-3 0 -5 1 -8 3l-187 122v-113c0 -7 -5 -12 -12 -12h-8
+c-7 0 -12 5 -12 12v296c0 7 5 12 12 12z" />
+    <glyph glyph-name="ion-skip-forward" unicode="&#xf223;" horiz-adv-x="384" 
+d="M372 352c7 0 12 -5 12 -12v-296c0 -7 -5 -12 -12 -12h-8c-7 0 -12 5 -12 12v113l-187 -122c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v64l-119 -78c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v286c0 10 7 17 15 17c3 0 6 0 8 -2l119 -78v63c0 10 7 17 15 17c3 0 6 -1 8 -3
+l187 -122v113c0 7 5 12 12 12h8z" />
+    <glyph glyph-name="ion-social-android-outline" unicode="&#xf224;" horiz-adv-x="352" 
+d="M272 240h-192v-60v-89h24h16v-15v-52c0 -4 4 -8 8 -8s8 4 8 8v52v15h17h49h15v-15v-52c0 -2 1 -4 3 -6h1v0c1 -1 2 -2 4 -2h1v0v0c4 0 7 4 7 8v52v15h17h22v89v60zM288 256v0v-76v-90c0 -7 -3 -15 -10 -15h-29v-51c0 -13 -10 -24 -23 -24v0h-1c-6 0 -11 2 -15 5
+c-5 4 -9 11 -9 19v51h-49v-51c0 -13 -11 -24 -24 -24s-24 11 -24 24v51h-28c-7 0 -12 8 -12 15v90v76h224zM328 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM328 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96
+c0 13 11 24 24 24zM24 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM24 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM175 354c-14 0 -27 -3 -38 -6l-10 -4c-28 -12 -40 -37 -44 -56h186
+c-4 18 -15 43 -44 56l-10 4c-12 4 -25 6 -39 6v0v0h-1zM105 384v0h1l19 -23c13 5 30 9 50 9h1c20 0 36 -4 50 -9l20 23v0s1 -1 2 -1c1 -1 2 -3 2 -3l-19 -22c48 -21 56 -71 57 -86h-224c1 15 9 66 57 87l-19 22c0 1 1 1 2 2zM127 309c-7 0 -14 6 -14 13s6 14 14 14
+c7 0 13 -7 13 -14s-5 -13 -13 -13zM225 309c-7 0 -13 6 -13 13s5 14 13 14c7 0 13 -7 13 -14s-6 -13 -13 -13z" />
+    <glyph glyph-name="ion-social-android" unicode="&#xf225;" horiz-adv-x="352" 
+d="M64 180v76h224v-76v-90c0 -7 -4 -14 -11 -14h-28v-52c0 -13 -11 -24 -24 -24v0h-1c-6 0 -10 2 -14 5c-5 4 -9 11 -9 19v52h-49v-52c0 -13 -11 -24 -24 -24s-24 11 -24 24v52h-29c-7 0 -11 7 -11 14v90zM328 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24
+s-24 11 -24 24v96c0 13 11 24 24 24zM24 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM231 359c48 -21 56 -72 57 -87h-224c1 15 8 66 56 87l-18 22c0 1 0 1 1 2s3 1 3 1l19 -23c14 5 31 9 51 9s36 -4 50 -9l20 23c0 1 1 0 2 -1
+l2 -2zM127 309c8 0 13 6 13 13s-6 14 -13 14c-8 0 -14 -7 -14 -14s7 -13 14 -13zM225 309c7 0 14 6 14 13s-7 14 -14 14c-8 0 -13 -7 -13 -14s6 -13 13 -13z" />
+    <glyph glyph-name="ion-social-angular-outline" unicode="&#xf4d8;" 
+d="M224 384l-188 -69l39 -230l149 -80l149 80l39 230zM224 416v0l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96l-27 56h-122l-27 -56h-40l128 280l128 -280h-40zM182 192h84l-42 89z" />
+    <glyph glyph-name="ion-social-angular" unicode="&#xf4d9;" 
+d="M182 192l42 89l42 -89h-84zM224 416l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96h40l-128 280l-128 -280h40l27 56h122z" />
+    <glyph glyph-name="ion-social-apple-outline" unicode="&#xf226;" horiz-adv-x="320" 
+d="M238 278c-15 0 -26 -4 -37 -8c-10 -4 -21 -8 -35 -8s-25 4 -37 8c-11 4 -22 8 -34 8c-11 0 -23 -3 -34 -10c-12 -7 -23 -18 -31 -31c-12 -18 -16 -47 -13 -77c3 -34 16 -69 35 -99c13 -21 30 -45 50 -45h1c8 0 13 3 20 6c10 5 23 10 44 10v0c21 0 34 -5 44 -10
+c7 -3 12 -6 19 -6v0c22 0 44 35 52 48c8 12 12 20 17 31c-12 7 -22 16 -30 28c-10 15 -17 33 -18 52c-1 18 2 37 10 53c6 12 14 22 24 30c-14 13 -31 20 -47 20zM238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1
+c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16zM214 364c-11 -5 -21 -13 -28 -22c-4 -5 -9 -13 -13 -23c-1 -3 -2 -6 -2 -9c11 4 21 11 28 21c4 5 12 18 15 33z
+M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" />
+    <glyph glyph-name="ion-social-apple" unicode="&#xf227;" horiz-adv-x="320" 
+d="M238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16z
+M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" />
+    <glyph glyph-name="ion-social-bitcoin-outline" unicode="&#xf2ae;" horiz-adv-x="320" 
+d="M184 400h-8v-48v-16h-16h-32h-16v16v48h-9v-48v-16h-16h-72v-16h13c11 0 19 0 25 -3s10 -7 13 -13s3 -8 3 -20v-178c0 -11 0 -18 -3 -24v-1c-1 -3 -4 -10 -12 -14h-1c-5 -3 -8 -3 -17 -3h-13l-3 -16h67h16v-16v-48h9v48v16h16h32h16v-16v-48h8v49v16h15c23 1 41 5 55 10
+c16 6 28 15 37 26c8 11 12 29 13 42c1 14 -1 29 -4 36s-8 16 -21 23c-7 4 -14 6 -21 8l-46 11l43 19c4 2 7 4 12 9c6 5 9 12 11 16c2 5 4 13 3 22c-1 17 -4 29 -10 37c-7 9 -17 16 -31 21c-12 5 -24 7 -41 8l-15 1v15v47zM200 416v0v-63c20 -1 32 -4 45 -9
+c16 -6 29 -15 38 -27s12 -28 13 -45c1 -10 0 -20 -3 -28s-8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 24 -18 29 -30c4 -10 6 -30 5 -44c-1 -16 -6 -37 -16 -51c-11 -14 -26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-65h-40v64h-32v-64h-41v64h-87l8 48h28
+c9 0 8 1 11 2s4 3 5 6s1 9 1 18v178c0 9 0 10 -1 12s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40zM160 298v-74h-32v74h32zM160 176v0v-90h-32v90h32zM200 294v0c6 -2 10 -7 14 -12c4 -6 6 -13 6 -21s-2 -15 -7 -21c-4 -5 -7 -9 -13 -12v66zM200 174v0
+c5 -1 8 -1 12 -3c8 -3 14 -7 19 -13s8 -15 8 -24c0 -11 -2 -19 -10 -26s-13 -11 -23 -15c-2 -1 -4 0 -6 -1v82z" />
+    <glyph glyph-name="ion-social-bitcoin" unicode="&#xf2af;" horiz-adv-x="320" 
+d="M314 169c4 -10 7 -30 6 -44c-1 -16 -5 -37 -16 -51s-26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-64h-40v64h-32v-64h-41v64h-87l9 48h26c9 0 9 0 12 1s4 4 5 7s2 8 2 17v173c0 9 -1 16 -2 18s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40v-64c20 -1 33 -4 46 -9
+c16 -6 28 -15 37 -27s12 -28 13 -45c1 -10 0 -20 -3 -28c-2 -8 -8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 23 -18 28 -30zM128 298v-74h32v74h-32zM128 86h32v90h-32v-90zM200 294v-66c6 3 9 7 13 12c5 6 7 12 7 20s-2 15 -6 21c-4 5 -8 11 -14 13z
+M229 107c8 7 10 15 10 26c0 9 -3 19 -8 25s-12 10 -20 13c-4 2 -6 2 -11 3v-82c2 0 5 1 7 2c10 4 14 6 22 13z" />
+    <glyph glyph-name="ion-social-buffer-outline" unicode="&#xf228;" horiz-adv-x="384" 
+d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM183 366l-156 -75l156 -75c2 -1 5 -1 9 -1s7 0 9 1l156 75l-156 75c-2 1 -5 2 -9 2s-7 -1 -9 -2zM377 200c9 -4 9 -12 0 -16l-169 -81
+c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM201 117l156 75l-19 9l-123 -59c-6 -3 -15 -5 -23 -5s-17 2 -23 5l-123 59l-19 -9l156 -75
+c2 -1 5 -2 9 -2s7 1 9 2zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17zM201 18l156 75l-19 9
+l-123 -60c-6 -3 -15 -4 -23 -4s-17 1 -23 4l-123 60l-19 -9l156 -75c2 -1 5 -2 9 -2s7 1 9 2z" />
+    <glyph glyph-name="ion-social-buffer" unicode="&#xf229;" horiz-adv-x="384" 
+d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM377 200c9 -4 9 -12 0 -16l-169 -81c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0
+s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3
+c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17z" />
+    <glyph glyph-name="ion-social-chrome-outline" unicode="&#xf4da;" 
+d="M224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM224 371c-57 0 -109 -27 -141 -68l54 -93c8 40 43 72 87 72h155c-30 54 -89 89 -155 89zM291 192c0 37 -30 67 -67 67s-67 -30 -67 -67s30 -67 67 -67s67 30 67 67zM45 192
+c0 -91 67 -166 154 -177l54 93c-9 -3 -19 -6 -29 -6c-34 0 -61 18 -77 45v0l-78 135c-16 -27 -24 -58 -24 -90zM224 13c99 0 179 80 179 179c0 24 -4 46 -13 67h-108c19 -17 32 -40 32 -67c0 -17 -5 -32 -13 -45v0z" />
+    <glyph glyph-name="ion-social-chrome" unicode="&#xf4db;" 
+d="M157 192c0 37 30 67 67 67s67 -30 67 -67s-30 -67 -67 -67s-67 30 -67 67zM445 230c2 -12 3 -25 3 -38c0 -106 -74 -195 -174 -218c-10 -2 -20 -4 -30 -5c-7 -1 -13 -1 -20 -1c-8 0 -17 0 -25 1v0v0v0v1l102 177c8 13 13 28 13 45c0 27 -13 50 -32 67h156
+c3 -9 5 -19 7 -29v0c-2 10 -4 20 -7 29v0c3 -9 5 -19 7 -29v0zM224 103c10 0 20 2 29 5l-78 -135v0c-42 9 -79 30 -108 59c-42 41 -67 97 -67 160c0 31 6 61 18 88c7 16 16 31 26 45v0l103 -178c16 -27 43 -44 77 -44zM59 343v0v1c24 26 55 47 90 59c23 8 49 13 75 13
+c73 0 138 -36 179 -90h1c10 -14 18 -29 25 -44v0c-7 15 -15 30 -25 44h-1c10 -14 19 -29 26 -44h-205c-44 0 -79 -32 -87 -72z" />
+    <glyph glyph-name="ion-social-codepen-outline" unicode="&#xf4dc;" 
+d="M356 244c5 -3 7 -6 7 -12v-81c0 -6 -3 -10 -8 -13c-41 -27 -82 -55 -123 -82c-6 -4 -11 -4 -17 0c-41 27 -81 55 -122 82c-5 3 -8 7 -8 13v80c0 6 3 11 8 14c41 27 81 54 122 81c6 4 11 4 17 0c41 -27 83 -55 124 -82zM236 296v-54c0 -1 1 -2 2 -3c16 -11 31 -21 47 -32
+c1 -1 3 -1 4 0l40 26zM212 295c0 0 -62 -41 -93 -62c14 -9 27 -17 40 -26c1 -1 3 -1 4 0c15 10 31 21 46 31c1 1 3 4 3 6v51zM109 211v-40l30 20zM212 87v53c0 1 -2 3 -3 4c-15 10 -31 21 -46 31c-2 1 -3 1 -5 0l-39 -26c31 -21 93 -62 93 -62zM227 165l39 26s-34 23 -40 27
+c-1 1 -4 0 -5 -1c-5 -3 -9 -6 -14 -9c-8 -6 -25 -17 -25 -17l39 -26c2 -1 4 -1 6 0zM236 87l93 62l-38 26c-2 2 -5 2 -7 0c-15 -10 -30 -21 -45 -31c-2 -2 -3 -3 -3 -6v-51zM338 171v40l-30 -20zM224 384c-51 0 -100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136
+s85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224z" />
+    <glyph glyph-name="ion-social-codepen" unicode="&#xf4dd;" 
+d="M209 144c1 -1 3 -3 3 -4v-53s-62 41 -93 62l39 26c2 1 3 1 5 0c15 -10 31 -21 46 -31zM163 207c-1 -1 -3 -1 -4 0c-13 9 -26 17 -40 26c31 21 93 62 93 62v-51c0 -2 -2 -5 -3 -6c-15 -10 -31 -21 -46 -31zM238 239c-1 1 -2 2 -2 3v54l93 -63l-40 -26c-1 -1 -3 -1 -4 0
+c-16 11 -31 21 -47 32zM226 218c6 -4 40 -27 40 -27l-39 -26c-2 -1 -4 -1 -6 0l-39 26s17 11 25 17c5 3 9 6 14 9c1 1 4 2 5 1zM109 211l30 -20l-30 -20v40zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM363 151v81
+c0 6 -2 9 -7 12c-41 27 -83 55 -124 82c-6 4 -11 4 -17 0c-41 -27 -81 -54 -122 -81c-5 -3 -8 -8 -8 -14v-80c0 -6 3 -10 8 -13c41 -27 81 -55 122 -82c6 -4 11 -4 17 0c41 27 82 55 123 82c5 3 8 7 8 13zM284 175c2 2 5 2 7 0l38 -26l-93 -62v51c0 3 1 4 3 6
+c15 10 30 21 45 31zM338 171l-30 20l30 20v-40z" />
+    <glyph glyph-name="ion-social-css3-outline" unicode="&#xf4de;" horiz-adv-x="384" 
+d="M291 81l-99 -28l-98 28l-7 78h48l4 -40l53 -15v0v0l54 15l5 64h-112l-4 50h121l4 51h-184l-4 49h241zM0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36z" />
+    <glyph glyph-name="ion-social-css3" unicode="&#xf4df;" horiz-adv-x="384" 
+d="M192 109v0zM0 416h384l-35 -403l-157 -45l-157 45zM291 81l22 252h-241l4 -49h184l-4 -51h-121l4 -50h112l-5 -64l-54 -15v0v0l-53 15l-4 40h-48l7 -78l98 -28z" />
+    <glyph glyph-name="ion-social-designernews-outline" unicode="&#xf22a;" 
+d="M259 302v-53l-65 103zM0 188zM297 352l151 -119v-201h-248l-200 156h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h41l-2 98l63 -98h36v84v80zM432 48v178l-119 92v1v-47v-83v-17h-15h-37h-9l-4 8l-33 50l1 -42v-16h-16h-41h-16v16v29c-3 -6 -7 -12 -12 -17
+c-8 -9 -18 -16 -30 -21s-24 -7 -38 -7h-16l159 -124h226zM59 298h-1h-3v-57h4c8 0 13 2 17 6c5 6 6 15 6 22c0 26 -12 29 -23 29zM59 314v0c25 0 39 -16 39 -45c0 -28 -14 -44 -40 -44h-19v89h20z" />
+    <glyph glyph-name="ion-social-designernews" unicode="&#xf22b;" 
+d="M258 303l1 -53l-64 102zM297 352l151 -118v-202h-248l-200 157v0h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h40l-2 99l64 -99h36v83v80zM98 270c0 -28 -14 -44 -40 -44h-19v89h19c26 0 40 -16 40 -45z" />
+    <glyph glyph-name="ion-social-dribbble-outline" unicode="&#xf22c;" horiz-adv-x="384" 
+d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM314 296c-17 -25 -47 -47 -85 -64c5 -10 9 -20 13 -31c33 3 75 4 110 2c-2 35 -16 68 -38 93zM192 352c-14 0 -26 -2 -39 -5c23 -23 43 -53 62 -87c34 14 62 33 79 55
+c-28 23 -63 37 -102 37zM120 334c-41 -21 -71 -58 -83 -103h25c44 0 85 6 121 17c-19 34 -40 63 -63 86zM32 200v-8c0 -40 15 -78 40 -106c24 45 67 83 122 106c4 2 8 3 14 4c-3 8 -6 16 -10 24c-40 -13 -88 -20 -138 -21c-9 0 -19 1 -28 1zM192 32c20 0 39 3 57 10
+c-3 25 -8 53 -15 79c-4 17 -10 33 -16 49c-7 -2 -13 -4 -17 -6c-48 -22 -86 -56 -107 -98c27 -21 61 -34 98 -34zM278 58c40 26 68 67 73 116c-30 2 -68 3 -99 0c4 -12 9 -25 12 -38c7 -27 11 -52 14 -78z" />
+    <glyph glyph-name="ion-social-dribbble" unicode="&#xf22d;" horiz-adv-x="384" 
+d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM192 32c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM242 201c-4 11 -8 21 -13 31c25 11 47 24 63 39c15 -19 26 -42 28 -67c-26 0 -55 -1 -78 -3z
+M271 292c-15 -12 -34 -23 -56 -32c-12 22 -24 41 -38 59c5 1 10 1 15 1c30 0 57 -11 79 -28zM142 310c15 -18 28 -39 41 -62c-34 -10 -72 -16 -113 -17c11 36 38 65 72 79zM319 176c-4 -33 -21 -63 -46 -83c-3 14 -5 28 -9 43c-3 13 -8 26 -12 38c21 2 45 3 67 2zM194 192
+c-43 -18 -79 -46 -104 -78c-16 22 -26 49 -26 78v7c49 1 95 8 134 21c4 -8 7 -16 10 -24c-6 -1 -10 -2 -14 -4zM219 170c6 -16 11 -32 15 -49c4 -15 7 -31 10 -46c-16 -7 -34 -11 -52 -11c-31 0 -59 11 -81 29c22 30 53 54 90 71c4 2 11 4 18 6z" />
+    <glyph glyph-name="ion-social-dropbox-outline" unicode="&#xf22e;" horiz-adv-x="384" 
+d="M113 371l79 -66l-114 -71l-78 63zM27 295l52 -42l86 53l-53 46zM306 235l78 -63l-78 -51v-39l-114 -69l-114 68v39l-78 52l78 63l114 -71l-79 -66l-19 12v-20l98 -59l98 59v20l-19 -12l-79 66zM79 217l-52 -44l85 -55l53 44zM219 162l53 -44l85 56l-52 43zM384 297
+l-78 -63l-114 71l79 66zM219 305l86 -52l52 42l-85 56z" />
+    <glyph glyph-name="ion-social-dropbox" unicode="&#xf22f;" horiz-adv-x="384" 
+d="M113 371l79 -66l-114 -71l-78 63zM0 172l78 62l114 -70l-79 -66zM192 164l114 70l78 -62l-113 -74zM384 297l-78 -63l-114 71l79 66zM192 150l80 -66l34 22v-25l-114 -68l-114 68v25l34 -22z" />
+    <glyph glyph-name="ion-social-euro-outline" unicode="&#xf4e0;" horiz-adv-x="320" 
+d="M214 384c-53 0 -91 -9 -115 -27c-22 -16 -33 -40 -33 -74v-11v-17h-16h-34v-16h34h16v-15v-48v-17h-16h-34v-16h34h16v-15v-27c0 -34 11 -58 33 -74c24 -18 62 -27 115 -27c31 0 59 2 88 8l-5 35c-30 -4 -55 -7 -80 -7c-36 0 -59 6 -74 19c-19 16 -21 40 -21 60v13v15h16
+h103l3 16h-106h-16v17v48v15h16h118l2 16h-120h-16v17v2c0 16 2 39 21 55c16 13 39 19 74 19c24 0 51 -3 80 -7l5 35c-29 6 -57 8 -88 8zM214 400v0c35 0 68 -3 106 -12l-9 -65c-37 6 -68 9 -94 9c-64 0 -79 -22 -79 -58v-3h139l-8 -48h-131v-48h124l-7 -48h-117v-12
+c0 -44 15 -63 79 -63c26 0 57 3 94 9l9 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v26h-50v48h50v48h-50v48h50v12c0 76 49 117 164 117z" />
+    <glyph glyph-name="ion-social-euro" unicode="&#xf4e1;" horiz-adv-x="320" 
+d="M138 176h124l-7 -48h-117v-13c0 -44 15 -63 79 -63c26 0 56 3 93 9l10 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v27h-50v48h50v48h-50v48h50v11c0 76 49 117 164 117c35 0 68 -3 106 -12l-10 -65c-37 6 -67 9 -93 9c-64 0 -79 -22 -79 -58v-2h138l-7 -48
+h-131v-48z" />
+    <glyph glyph-name="ion-social-facebook-outline" unicode="&#xf230;" horiz-adv-x="192" 
+d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38zM170 208l4 32h-45h-17v17v37c0 10 1 21 9 30c10 11 25 12 37 12h18v32h-40c-28 0 -49 -6 -60 -18c-10 -11 -15 -27 -15 -51v-43v-16h-15h-30v-32h30h15v-16
+v-176h51v176v16h17h41z" />
+    <glyph glyph-name="ion-social-facebook" unicode="&#xf231;" horiz-adv-x="192" 
+d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38z" />
+    <glyph glyph-name="ion-social-foursquare-outline" unicode="&#xf34c;" horiz-adv-x="320" 
+d="M302 284c-12 -60 -25 -131 -27 -138zM281 416c35 0 45 -20 37 -57c-3 -16 -10 -44 -16 -75l-27 -137c-3 -13 -8 -35 -39 -35h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM280 352c6 31 6 32 -24 32h-195
+c-29 0 -29 -3 -29 -28v-297c0 -38 1 -38 3 -38s10 8 29 31c0 0 78 89 79 90c2 2 3 2 6 2h62c26 0 28 6 33 31c4 21 36 177 36 177zM302 284c6 31 13 59 16 75zM233 352c5 0 9 -5 8 -11l-8 -44c-1 -4 -6 -9 -11 -9h-75c-8 0 -8 -5 -8 -13v-6c0 -8 0 -13 8 -13h64
+s11 -6 10 -12s-11 -51 -12 -54s-4 -9 -11 -9h-62c-9 0 -11 -1 -17 -8l-54 -63c-1 -1 -1 -1 -1 0v231c0 5 5 11 11 11h158z" />
+    <glyph glyph-name="ion-social-foursquare" unicode="&#xf34d;" horiz-adv-x="320" 
+d="M281 416c35 0 45 -20 37 -57c-10 -49 -40 -202 -43 -213c-3 -13 -8 -34 -39 -34h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM275 146c3 11 33 164 43 213zM267 351c2 9 -5 16 -12 16h-191
+c-9 0 -15 -8 -15 -15v-296c0 -1 1 -1 2 0c0 0 70 84 78 94s11 11 23 11h64c9 0 14 8 15 12s8 43 10 51s-6 16 -13 16h-82c-10 0 -18 8 -18 18v13c0 10 8 17 18 17h96s14 6 15 12z" />
+    <glyph glyph-name="ion-social-freebsd-devil" unicode="&#xf2c4;" horiz-adv-x="512" 
+d="M503 333c19 -37 8 -81 -20 -108s-60 -33 -60 -33c2 -32 16 -59 -41 -102c-43 -32 2 -90 2 -90c10 -14 23 -19 32 -32h-272s15 14 -7 32c0 0 -20 17 -18 29s6 13 9 15s0 7 0 7l-19 19s-13 -13 -44 -13c-38 0 -65 39 -65 39h46s-6 -8 -7 -13c-1 -4 1 -5 1 -5s11 -6 22 -6
+c17 0 33 12 33 12l-24 22l-15 -4l-16 37l39 -10l-1 -15l28 -18s9 9 7 27s-9 26 -9 26s-4 0 -9 -4s-6 -6 -6 -6l-10 44s43 -19 50 -63c3 -20 -6 -35 -6 -35l17 -10s6 5 17 7s23 2 29 -8s5 -12 4 -19s0 -9 6 -11s6 -6 11 -8s15 -6 21 -2s8 11 8 18v16s-9 8 -32 20
+s-54 22 -66 40s-12 44 0 57c9 10 23 25 26 35c4 14 4 42 4 42s-10 16 -8 40c2 30 22 84 96 114c0 0 -40 -55 -20 -80c0 0 37 11 77 9c31 -2 56 -12 73 -28s25 -23 47 -17s28 17 28 33c0 19 -16 51 -16 51s36 -7 58 -51zM195 245c14 4 21 -11 21 -11c14 25 30 60 22 64
+s-64 -25 -66 -88c0 0 6 31 23 35zM232 230c5 7 34 8 37 -17c4 -35 -24 -57 -24 -57s7 -2 23 2c17 4 43 29 43 70s-21 66 -41 62s-38 -60 -38 -60z" />
+    <glyph glyph-name="ion-social-github-outline" unicode="&#xf232;" 
+d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5
+c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4
+c-89 30 -153 116 -153 218c0 127 100 230 224 230zM146 -0c-15 0 -28 4 -38 9c14 -10 28 -17 44 -23v6v8h-6zM157 73c-16 4 -35 10 -52 24c6 -6 11 -11 13 -16c7 -12 14 -17 25 -17c4 0 9 1 12 2c1 2 1 5 2 7zM347 14c17 13 32 28 45 46c26 37 40 80 40 126
+c0 29 -5 58 -16 84c-10 25 -26 48 -45 68s-41 34 -66 45c-26 11 -53 17 -81 17s-55 -6 -81 -17c-25 -11 -47 -25 -66 -45s-35 -42 -45 -68c-11 -26 -16 -55 -16 -84c0 -46 14 -89 40 -126c10 -14 22 -27 35 -38c-7 8 -11 16 -13 22c-7 18 -15 24 -17 25h-2v1
+c-5 3 -20 13 -15 28c3 9 12 15 25 15h1v0v0c13 -1 24 -6 32 -13c-21 19 -37 48 -37 98c0 24 7 47 21 66c-3 13 -6 34 5 62l3 8l7 2c2 0 5 1 10 1c12 0 31 -3 60 -22c17 4 35 6 53 6v0v0c18 0 36 -2 53 -6c29 19 48 22 60 22c5 0 8 -1 10 -1l7 -2l3 -7c11 -27 8 -50 5 -63
+c14 -19 21 -41 21 -66c0 -92 -55 -117 -92 -125c3 -8 5 -18 5 -30v-51v-6c18 7 35 16 51 28z" />
+    <glyph glyph-name="ion-social-github" unicode="&#xf233;" 
+d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5
+c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4
+c-89 30 -153 116 -153 218c0 127 100 230 224 230z" />
+    <glyph glyph-name="ion-social-google-outline" unicode="&#xf34e;" horiz-adv-x="256" 
+d="M191 366c12 -10 37 -30 37 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -17 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 2 14 5 20c-6 0 -11 -1 -16 -1
+c-54 0 -85 40 -85 79c0 23 11 48 33 67c29 24 63 28 91 28h106l-33 -18h-32zM155 142c-4 1 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16
+c-9 -11 -11 -25 -11 -38c0 -34 20 -89 64 -89c13 0 27 6 35 14z" />
+    <glyph glyph-name="ion-social-google" unicode="&#xf34f;" horiz-adv-x="288" 
+d="M210 172c22 -18 45 -36 45 -73c0 -49 -48 -99 -140 -99c-80 0 -115 39 -115 77c0 10 3 42 42 65c27 16 61 20 85 22c-4 7 -8 16 -8 27c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 70 29 95 29h133l-60 -33h-13
+c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 20 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 38 -15 54c-7 13 -20 27 -40 27c-11 0 -22 -5 -29 -13c-6 -7 -9 -18 -9 -31z
+M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -32 -2 -51 -8c-16 -6 -37 -16 -37 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44z" />
+    <glyph glyph-name="ion-social-googleplus-outline" unicode="&#xf234;" 
+d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1
+c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16
+c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" />
+    <glyph glyph-name="ion-social-googleplus" unicode="&#xf235;" 
+d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13
+c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z
+M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" />
+    <glyph glyph-name="ion-social-hackernews-outline" unicode="&#xf236;" horiz-adv-x="384" 
+d="M352 352h-320v-320h320v320zM384 384v0v-384h-384v384h384zM233 289h45l-64 -120v-72h-40v72l-66 120h47l40 -84z" />
+    <glyph glyph-name="ion-social-hackernews" unicode="&#xf237;" horiz-adv-x="384" 
+d="M0 384h384v-384h-384v384zM214 169l64 120h-45l-38 -84l-40 84h-47l66 -120v-72h40v72z" />
+    <glyph glyph-name="ion-social-html5-outline" unicode="&#xf4e2;" horiz-adv-x="384" 
+d="M0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36zM84 184l-13 150h241l-4 -50h-184l4 -51h176l-14 -151l-98 -28l-99 28l-6 77h48l3 -39l54 -15l53 15l6 64h-167z" />
+    <glyph glyph-name="ion-social-html5" unicode="&#xf4e3;" horiz-adv-x="384" 
+d="M0 416h384l-35 -403l-157 -45l-157 45zM308 284l4 50h-241l13 -150h167l-6 -64l-53 -15l-54 15l-3 39h-48l6 -78l99 -27l98 28l14 151h-176l-4 51h184z" />
+    <glyph glyph-name="ion-social-instagram-outline" unicode="&#xf350;" horiz-adv-x="384" 
+d="M384 336v-289c0 -26 -22 -47 -48 -47h-288c-26 0 -48 21 -48 47v289c0 26 22 48 48 48h288c26 0 48 -22 48 -48zM192 272c-44 0 -80 -36 -80 -80s36 -80 80 -80s80 36 80 80s-36 80 -80 80zM352 288v48c0 9 -7 16 -16 16h-48c-9 0 -16 -7 -16 -16v-48c0 -9 7 -16 16 -16
+h48c9 0 16 7 16 16zM337 32c9 0 15 7 15 16v176h-52c3 -10 4 -21 4 -32c0 -30 -11 -58 -32 -79s-50 -33 -80 -33s-58 12 -79 33s-33 49 -33 79c0 11 2 22 5 32h-53v-176c0 -9 8 -16 17 -16h288z" />
+    <glyph glyph-name="ion-social-instagram" unicode="&#xf351;" horiz-adv-x="384" 
+d="M112 192c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM113 271c-14 -14 -23 -29 -28 -47h-85v112c0 13 4 25 14 34s22 14 35 14h288c13 0 24 -5 33 -14s14 -21 14 -34v-112h-84c-5 18 -14 33 -28 47c-22 22 -49 33 -80 33s-57 -11 -79 -33zM352 300
+v39c0 4 -2 7 -4 9s-5 4 -9 4h-38c-4 0 -7 -2 -9 -4s-4 -5 -4 -9v-39c0 -4 2 -7 4 -9s5 -3 9 -3h38c4 0 7 1 9 3s4 5 4 9zM272 113c22 22 32 48 32 79h80v-144c0 -13 -5 -24 -14 -34s-20 -14 -33 -14h-288c-13 0 -24 4 -34 14s-15 21 -15 34v144h81c0 -31 10 -57 32 -79
+s48 -33 79 -33s58 11 80 33z" />
+    <glyph glyph-name="ion-social-javascript-outline" unicode="&#xf4e4;" 
+d="M160 344h-48v-196c0 -30 -6 -50 -17 -64c-11 -13 -26 -20 -48 -20c-9 0 -18 1 -25 2l-4 -30c11 -2 25 -4 37 -4c34 0 59 8 76 25c19 18 29 48 29 90v197zM176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80z
+M350 352c-34 0 -62 -9 -82 -26c-19 -15 -28 -36 -28 -60c0 -20 7 -36 21 -51c14 -14 34 -26 61 -36c23 -8 38 -15 48 -24c12 -11 18 -23 18 -38c0 -16 -7 -31 -20 -40c-12 -9 -28 -14 -48 -14c-28 0 -52 8 -70 15l-7 -32c18 -8 44 -14 72 -14c38 0 70 9 90 27
+c18 16 27 38 27 63c0 21 -5 36 -17 50s-31 27 -58 37v0v0c-38 15 -72 28 -72 63c0 14 7 27 19 36c11 9 26 13 45 13c24 0 43 -5 57 -11l10 32c-19 6 -42 10 -66 10zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48
+c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" />
+    <glyph glyph-name="ion-social-javascript" unicode="&#xf4e5;" 
+d="M176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106
+c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" />
+    <glyph glyph-name="ion-social-linkedin-outline" unicode="&#xf238;" horiz-adv-x="384" 
+d="M119 64v0h-55v171h55v-171zM93 261v0v0c-18 0 -29 13 -29 29c0 17 12 30 30 30s29 -13 29 -30c0 -16 -12 -29 -30 -29zM257 239c36 0 63 -24 63 -75v-100h-55v94c0 22 -8 37 -28 37c-15 0 -24 -10 -28 -20c-2 -4 -2 -9 -2 -14v-97h-55v171h55v-24c8 11 21 28 50 28z
+M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM350 32c1 0 2 1 2 2v316c0 1 -1 2 -2 2h-316s-2 -1 -2 -2v-315s1 -3 3 -3h315z" />
+    <glyph glyph-name="ion-social-linkedin" unicode="&#xf239;" horiz-adv-x="384" 
+d="M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM119 64v171h-55v-171h55zM93 261c18 0 30 13 30 29c0 17 -11 30 -29 30s-30 -13 -30 -30c0 -16 11 -29 29 -29v0zM320 64v100c0 51 -27 75 -63 75
+c-29 0 -42 -17 -50 -28v24h-55v-171h55v97c0 5 0 10 2 14c4 10 13 20 28 20c20 0 28 -15 28 -37v-94h55z" />
+    <glyph glyph-name="ion-social-markdown" unicode="&#xf4e6;" 
+d="M416 352c18 0 32 -14 32 -32v-256c0 -18 -14 -32 -32 -32h-384c-18 0 -32 14 -32 32v256c0 18 14 32 32 32h384zM252 96v0v192h-56l-42 -68l-42 68h-56v-192h56v96l42 -54l42 54v-96h56zM336 96v0l70 96h-42v96h-56v-96h-42z" />
+    <glyph glyph-name="ion-social-nodejs" unicode="&#xf4e7;" horiz-adv-x="384" 
+d="M192 -32c-6 0 -12 2 -17 5l-53 32c-8 5 -4 6 -1 7c11 4 14 5 25 12c1 1 3 1 4 0l39 -23c1 -1 4 -1 5 0l156 92c1 1 2 2 2 4v187c0 2 0 4 -2 5l-156 94c-1 1 -3 1 -4 0l-155 -94c-2 -1 -3 -3 -3 -5v-187c0 -2 0 -3 2 -4l40 -24c24 -12 38 1 38 15v183c0 3 2 5 5 5h22
+c3 0 5 -2 5 -5v-183c0 -33 -19 -52 -49 -52c-9 0 -17 1 -37 11l-41 24c-10 6 -17 18 -17 30v190c0 12 7 24 17 30l158 95c10 6 24 6 34 0l158 -95c10 -6 17 -18 17 -30v-190c0 -12 -7 -24 -17 -30l-158 -94c-5 -3 -11 -5 -17 -5v0zM241 96c-65 0 -84 31 -84 59c0 3 1 5 4 5
+h21c2 0 5 -2 5 -4c3 -22 16 -31 54 -31c33 0 47 11 47 29c0 11 -3 18 -55 23c-43 4 -71 15 -71 51c0 33 28 52 73 52c46 0 76 -14 79 -51c0 -1 -1 -2 -2 -3s-2 -2 -3 -2h-20c-2 0 -5 2 -5 4c-4 17 -16 23 -49 23c-36 0 -41 -12 -41 -22c0 -12 5 -16 54 -23s72 -16 72 -51
+c0 -36 -29 -59 -79 -59v0v0z" />
+    <glyph glyph-name="ion-social-octocat" unicode="&#xf4e8;" 
+d="M146 161c9 0 16 -4 22 -13s10 -20 10 -32s-4 -22 -10 -31s-14 -13 -22 -13c-9 0 -17 4 -23 13s-9 19 -9 31s3 24 9 32c6 9 14 13 23 13zM303 161c9 0 16 -4 22 -13s9 -20 9 -32s-3 -22 -9 -31s-13 -13 -22 -13s-18 4 -24 13s-9 19 -9 31s3 24 9 32c6 9 15 13 24 13z
+M414 276c24 -27 34 -66 34 -96c0 -24 -1 -46 -6 -65c-6 -19 -13 -35 -21 -47c-9 -12 -19 -23 -32 -32s-24 -17 -34 -21s-22 -8 -36 -10c-13 -2 -24 -4 -31 -4c0 0 -28 -1 -64 -1s-64 1 -64 1c-7 0 -18 2 -31 4c-14 2 -26 6 -36 10s-22 12 -34 21c-13 9 -23 20 -32 32
+c-8 12 -15 28 -21 47c-5 19 -6 41 -6 65c0 31 10 70 34 96c0 0 -2 14 0 39s7 48 16 69c30 -3 67 -20 112 -51c15 4 36 6 62 6c28 0 48 -2 62 -6c20 14 39 24 58 33c19 8 33 13 41 15s13 3 13 3c9 -21 14 -44 16 -69s0 -39 0 -39v0zM348 42c28 13 42 40 42 81
+c0 24 -8 43 -26 59c-9 9 -20 13 -32 15s-31 1 -56 -1s-40 -4 -52 -4s-25 2 -42 3s-30 3 -39 3c-10 0 -20 1 -31 -2s-21 -7 -28 -14c-17 -15 -25 -35 -25 -59c0 -41 13 -68 41 -81c27 -13 69 -18 123 -18h2c54 0 95 5 123 18z" />
+    <glyph glyph-name="ion-social-pinterest-outline" unicode="&#xf2b0;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136c14 -14 31 -25 48 -34c1 6 2 10 3 16c4 18 29 122 29 122
+s-8 15 -8 36c0 33 20 58 44 58c20 0 30 -16 30 -34c0 -20 -13 -51 -20 -79c-6 -24 12 -43 35 -43c42 0 71 54 71 119c0 49 -33 85 -93 85c-68 0 -110 -50 -110 -107c0 -20 6 -33 15 -44c4 -5 5 -6 3 -12c-1 -4 -4 -14 -5 -18c-2 -6 -6 -8 -11 -6c-31 13 -46 48 -46 86
+c0 64 54 140 160 140c86 0 142 -63 142 -129c0 -88 -49 -153 -121 -153c-24 0 -47 13 -55 28c0 0 -12 -52 -15 -62c-2 -6 -4 -13 -7 -19c15 -4 31 -6 47 -6c51 0 100 20 136 56z" />
+    <glyph glyph-name="ion-social-pinterest" unicode="&#xf2b1;" 
+d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-22 0 -44 3 -64 9c8 14 18 31 23 48c3 10 16 62 16 62c8 -15 30 -28 54 -28c72 0 121 65 121 153c0 66 -56 129 -142 129c-106 0 -160 -76 -160 -140c0 -39 15 -73 46 -86c5 -2 10 0 12 6c1 4 3 14 4 18
+c2 6 1 7 -3 12c-9 11 -15 24 -15 44c0 57 42 107 110 107c60 0 94 -36 94 -85c0 -65 -29 -119 -71 -119c-24 0 -42 19 -36 43c7 28 20 59 20 79c0 18 -10 34 -30 34c-24 0 -43 -25 -43 -58c0 -21 7 -36 7 -36s-25 -104 -29 -122c-4 -17 -5 -35 -4 -51
+c-79 35 -134 113 -134 205c0 124 100 224 224 224z" />
+    <glyph glyph-name="ion-social-python" unicode="&#xf4e9;" horiz-adv-x="384" 
+d="M129 199c-29 -5 -49 -30 -49 -57v-43v-3h-15c-29 0 -54 29 -62 69c-2 9 -3 17 -3 27v1c0 53 29 95 65 95h127v16h-96v29c0 26 7 40 46 47c13 2 29 4 45 4s39 -1 55 -4c25 -4 46 -22 46 -47v-57v-31c0 -21 -14 -38 -33 -43c-4 -1 -8 -2 -13 -2h-104h3c-4 0 -8 0 -12 -1z
+M140 321c10 0 17 7 17 17s-7 18 -17 18s-18 -8 -18 -18s8 -17 18 -17zM380 225c3 -10 4 -21 4 -33c0 -16 -3 -30 -7 -43c-11 -31 -33 -53 -58 -53h-127v-16h96v-26c0 -26 -23 -40 -46 -47c-35 -10 -68 -9 -97 0c-25 7 -49 22 -49 47v54v33c0 21 14 36 33 41c4 1 8 2 13 2
+h104c3 0 6 1 9 1c27 4 49 28 49 62v38v3h15c28 0 52 -26 61 -63zM244 65c-10 0 -18 -7 -18 -17s8 -18 18 -18s17 8 17 18s-7 17 -17 17z" />
+    <glyph glyph-name="ion-social-reddit-outline" unicode="&#xf23a;" horiz-adv-x="449" 
+d="M259 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM127 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM449 197c0 -20 -9 -36 -27 -45c1 -5 1 -9 1 -14c0 -38 -19 -71 -58 -98s-85 -40 -140 -40s-102 13 -141 40
+s-58 59 -58 97c0 5 0 10 1 15c-18 9 -27 24 -27 45c0 14 5 25 15 35s21 15 35 15c13 0 24 -4 33 -13c36 25 79 39 129 41h7l29 98l86 -17c8 19 21 28 41 28c12 0 22 -4 31 -13s13 -20 13 -32s-4 -23 -13 -32s-19 -13 -31 -13s-23 4 -32 13s-13 19 -13 31l-69 14l-24 -77
+c50 -2 94 -16 129 -41c10 9 21 13 34 13c9 0 16 -3 24 -7s14 -10 18 -18s7 -16 7 -25zM375 366c-4 0 -8 -1 -11 -2s-6 -4 -8 -6s-5 -6 -6 -9s-2 -6 -2 -10c0 -8 3 -14 8 -19s12 -8 19 -8c5 0 9 1 13 3s8 6 10 10s4 9 4 14c0 8 -3 14 -8 19s-12 8 -19 8zM18 197
+c0 -11 5 -20 14 -27c7 19 19 37 37 53c-6 4 -12 6 -19 6c-3 0 -7 0 -10 -1s-6 -3 -9 -5s-5 -4 -7 -7s-4 -6 -5 -9s-1 -6 -1 -10zM355 55c34 23 50 51 50 83v9c-1 6 -3 12 -5 18c-6 16 -15 30 -30 43c-5 4 -10 9 -15 12v0c-36 25 -79 37 -130 37s-95 -12 -131 -37v0
+c-5 -3 -10 -8 -15 -12c-15 -13 -24 -27 -30 -43c-2 -6 -4 -12 -5 -18v-9c0 -32 16 -60 50 -83c36 -25 80 -37 131 -37s94 12 130 37zM417 170c9 6 14 16 14 27c0 9 -3 17 -9 23s-13 9 -22 9c-7 0 -14 -2 -20 -6c18 -16 30 -34 37 -53zM289 90l13 -12
+c-20 -20 -45 -30 -77 -30s-58 10 -78 30l13 12c16 -16 38 -24 65 -24s48 8 64 24z" />
+    <glyph glyph-name="ion-social-reddit" unicode="&#xf23b;" horiz-adv-x="449" 
+d="M449 197c0 -20 -11 -37 -27 -45c1 -5 1 -9 1 -14c0 -76 -89 -138 -199 -138s-198 61 -198 137c0 5 0 10 1 15c-16 8 -27 25 -27 45c0 28 23 50 50 50c13 0 24 -5 33 -13c33 23 79 39 129 41h2l31 103l90 -18c8 14 22 24 39 24v0h1c25 0 44 -20 44 -45s-19 -45 -44 -45h-1
+v0c-23 0 -42 17 -44 40l-67 14l-22 -74c49 -3 93 -17 125 -40c9 8 21 13 34 13c27 0 49 -22 49 -50zM34 177c5 15 15 29 29 41c-4 3 -9 5 -15 5c-14 0 -25 -11 -25 -25c0 -9 4 -17 11 -21zM358 339c0 -9 7 -17 16 -17s17 8 17 17s-8 17 -17 17s-16 -8 -16 -17zM127 160
+c0 -18 14 -32 32 -32s32 14 32 32s-14 31 -32 31s-32 -13 -32 -31zM224 48c48 0 77 29 78 30l-13 12s-25 -24 -65 -24c-41 0 -64 24 -64 24l-13 -12c1 -1 29 -30 77 -30zM291 128c18 0 32 14 32 32s-14 31 -32 31s-32 -13 -32 -31s14 -32 32 -32zM415 176c7 5 11 13 11 22
+c0 14 -11 25 -25 25c-6 0 -11 -2 -15 -5c14 -12 24 -27 29 -42z" />
+    <glyph glyph-name="ion-social-rss-outline" unicode="&#xf23c;" horiz-adv-x="384" 
+d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM56 16c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM240 16c-2 26 -8 52 -19 77
+c-12 28 -30 54 -52 76s-48 40 -76 52c-25 10 -51 16 -77 18v-47c50 -3 92 -22 123 -53s50 -73 53 -123h48zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80zM227 228c56 -56 89 -131 93 -212h48c-8 190 -162 344 -352 352v-48c81 -4 155 -36 211 -92z" />
+    <glyph glyph-name="ion-social-rss" unicode="&#xf23d;" horiz-adv-x="384" 
+d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80z" />
+    <glyph glyph-name="ion-social-sass" unicode="&#xf4ea;" horiz-adv-x="512" 
+d="M512 119v-8c-1 -9 -7 -17 -15 -22s-12 -4 -13 -3s1 3 4 5c13 8 17 20 10 33c-5 10 -15 16 -26 20c-24 8 -48 7 -72 0c4 -12 7 -23 -2 -34c-10 -12 -23 -19 -39 -22c-7 -2 -14 2 -15 9c-3 19 17 36 30 47c-7 11 -11 24 -14 37c-15 -17 -31 -40 -26 -61
+c3 -14 -1 -27 -14 -36s-30 -14 -46 -11c-4 1 -6 5 -5 8c2 14 25 32 35 43c2 2 3 4 1 7c-6 12 -10 23 -14 36c-13 -29 -30 -80 -57 -98c-9 -6 -17 -4 -21 5c-3 8 -2 20 -1 29c-6 -13 -11 -27 -20 -38c-7 -8 -24 -7 -30 1c-16 21 -13 50 -5 73l-29 -15c7 -16 8 -32 4 -49
+c-5 -19 -17 -35 -35 -46c-19 -12 -64 -24 -77 4c-7 16 -4 30 6 44c17 24 48 37 74 50c-32 23 -80 42 -96 80c-15 35 17 68 43 89c59 48 166 95 244 59c15 -7 36 -24 31 -52c-4 -24 -13 -39 -28 -54c-32 -32 -152 -77 -176 -15c-1 1 -1 4 1 4c2 -1 20 -15 43 -16
+c17 -1 36 3 52 8c33 11 71 33 80 67c4 13 -2 28 -15 34c-49 24 -116 -4 -159 -26c-33 -17 -84 -45 -82 -87c1 -37 56 -60 81 -82c15 7 42 15 52 27c11 13 26 25 44 26c8 0 14 -3 16 -10c2 -6 1 -11 0 -19c5 4 11 4 15 -1c12 -14 -22 -50 -10 -66c14 14 21 42 30 59
+c4 8 17 51 26 53c7 2 18 4 25 0c2 -1 3 -3 2 -5c-7 -19 -7 -33 3 -52c14 20 29 43 34 67c1 2 3 3 5 4c7 2 18 3 25 0c3 -1 3 -2 2 -5c-7 -22 -6 -38 6 -58c31 11 69 15 97 -5c-3 2 -7 5 0 0c5 -4 3 -2 0 0c12 -8 19 -18 21 -32zM113 94v0c1 7 -1 13 -3 20
+c-24 -8 -66 -35 -64 -62c1 -10 8 -13 17 -12s19 7 27 13c14 11 22 24 23 41zM216 166c1 3 -2 5 -5 4c-29 -8 -43 -57 -33 -81c1 -3 4 -3 6 -1c17 16 28 56 32 78zM286 84c8 -3 27 17 26 27c-8 -9 -18 -18 -26 -27zM367 102c11 6 16 19 12 30c-8 -6 -21 -19 -20 -31
+c0 -2 6 0 8 1z" />
+    <glyph glyph-name="ion-social-skype-outline" unicode="&#xf23e;" horiz-adv-x="384" 
+d="M106 352c-41 0 -74 -33 -74 -73c0 -13 4 -25 10 -36l6 -11l-2 -12c-2 -10 -3 -20 -3 -30c0 -40 16 -77 44 -105s67 -44 107 -44c9 0 19 1 28 3l11 2l9 -5c11 -6 24 -9 36 -9c41 0 74 33 74 73c0 11 -3 22 -8 32l-5 10l3 11c2 10 3 21 3 32c0 40 -16 77 -44 105
+s-67 43 -107 43c-9 0 -18 0 -26 -2l-12 -2l-10 7c-12 7 -26 11 -40 11zM106 384v0c21 0 40 -6 56 -16c10 2 21 2 32 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3
+c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105zM288 104c-8 -12 -21 -21 -37 -28s-36 -10 -58 -10c-26 0 -48 5 -65 14c-12 7 -22 15 -30 26s-12 22 -12 33c0 7 3 12 8 17s11 7 19 7c6 0 12 -2 16 -6s7 -8 10 -15s7 -13 11 -18
+s8 -9 15 -12s16 -5 27 -5c15 0 28 4 37 10s13 13 13 22c0 7 -2 13 -7 17c-5 5 -11 9 -19 11c-8 3 -20 5 -34 8c-19 4 -35 9 -48 14c-13 6 -24 13 -32 23s-11 22 -11 36s4 25 12 36c8 10 20 19 36 25c15 6 34 8 54 8c16 0 30 -1 42 -5s23 -9 31 -15s14 -13 18 -20
+s5 -14 5 -21c0 -6 -2 -12 -7 -17s-11 -8 -19 -8c-7 0 -12 2 -16 5c-3 3 -7 7 -11 14c-5 8 -10 15 -16 20s-17 8 -31 8c-13 0 -23 -3 -31 -8s-12 -11 -12 -18c0 -4 2 -7 4 -10c3 -3 6 -6 11 -8s10 -5 15 -6s13 -3 25 -6c15 -3 28 -6 40 -10s23 -8 32 -14s15 -13 20 -22
+s8 -20 8 -32c0 -15 -5 -28 -13 -40z" />
+    <glyph glyph-name="ion-social-skype" unicode="&#xf23f;" horiz-adv-x="384" 
+d="M373 151c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105c21 0 41 -6 57 -16c10 2 20 2 31 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39z
+M288 104c9 12 12 25 12 40c0 12 -2 23 -7 32s-12 16 -21 22s-19 10 -31 14s-26 7 -41 10c-12 3 -20 5 -25 6s-10 4 -15 6s-7 5 -10 8c-2 3 -4 6 -4 10c0 7 3 13 11 18s19 7 32 7c14 0 25 -2 31 -7s11 -12 16 -20c4 -7 8 -11 11 -14c4 -3 9 -5 16 -5c8 0 13 3 18 8s8 11 8 17
+c0 7 -2 14 -6 21s-10 14 -18 20s-18 11 -30 15s-27 5 -43 5c-20 0 -38 -2 -53 -8c-16 -6 -28 -15 -36 -25c-8 -11 -12 -22 -12 -36s3 -26 11 -36s19 -17 32 -23c13 -5 29 -10 48 -14c14 -3 26 -5 34 -8c8 -2 14 -6 19 -11c5 -4 7 -10 7 -17c0 -9 -4 -17 -13 -23
+s-22 -9 -37 -9c-11 0 -20 2 -27 5s-11 6 -15 11s-8 12 -11 19s-6 11 -10 15s-10 6 -16 6c-8 0 -14 -2 -19 -7s-8 -10 -8 -17c0 -11 4 -22 12 -33s18 -19 30 -26c17 -9 39 -14 65 -14c22 0 42 3 58 10s29 16 37 28z" />
+    <glyph glyph-name="ion-social-snapchat-outline" unicode="&#xf4eb;" horiz-adv-x="480" 
+d="M240 400v0v0c-71 0 -128 -54 -118 -128c2 -15 3 -32 4 -45c0 0 -2 -5 -12 -5c-6 0 -15 2 -28 7c-2 1 -4 1 -6 1c-8 0 -13 -6 -14 -12c0 -5 4 -11 8 -13c14 -7 47 -10 47 -33s-23 -47 -41 -64s-64 -21 -64 -21s0 -21 32 -29s32 -5 33 -13c2 -15 1 -22 11 -22c2 0 4 1 6 1
+c8 1 20 3 32 3c11 0 23 -2 34 -9c23 -15 41 -34 76 -34s53 19 76 34c11 7 24 9 35 9c12 0 23 -2 31 -3c2 0 4 -1 6 -1c10 0 9 7 11 22c1 8 1 5 33 13s32 29 32 29s-46 4 -64 21s-41 41 -41 64s33 26 47 33c4 2 9 8 9 13c-1 6 -6 12 -14 12c-2 0 -5 0 -7 -1
+c-13 -5 -21 -6 -27 -6c-10 0 -13 4 -13 4c1 13 2 30 4 45c10 74 -47 128 -118 128zM240 416v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5
+c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1
+c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4
+c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0z
+M240 219c-21 0 -41 8 -56 23c-3 3 -3 9 0 12s9 3 12 0c12 -12 27 -19 44 -19c16 0 32 7 44 19c3 3 9 3 12 0s3 -9 0 -12c-15 -15 -35 -23 -56 -23zM176 296c0 16 5 24 16 24s16 -8 16 -24s-5 -24 -16 -24s-16 8 -16 24zM272 296c0 16 5 24 16 24s16 -8 16 -24
+s-5 -24 -16 -24s-16 8 -16 24z" />
+    <glyph glyph-name="ion-social-snapchat" unicode="&#xf4ec;" horiz-adv-x="480" 
+d="M480 88c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27
+s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52
+c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5
+c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14zM192 320c-9 0 -16 -11 -16 -24s7 -24 16 -24s16 11 16 24s-7 24 -16 24zM296 242c3 3 3 9 0 12
+s-9 3 -12 0c-12 -12 -28 -19 -44 -19c-17 0 -32 7 -44 19c-3 3 -9 3 -12 0s-3 -9 0 -12c15 -15 35 -23 56 -23s41 8 56 23zM288 272c9 0 16 11 16 24s-7 24 -16 24s-16 -11 -16 -24s7 -24 16 -24z" />
+    <glyph glyph-name="ion-social-tumblr-outline" unicode="&#xf240;" horiz-adv-x="256" 
+d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16
+c9 -6 19 -8 31 -8zM240 17v29c-15 -6 -31 -10 -47 -10c-15 0 -28 3 -40 10c-10 6 -17 15 -21 25c-2 6 -4 17 -4 52v117h96v32h-96v112h-32c-2 -16 -7 -36 -14 -50c-8 -16 -17 -29 -30 -40c-11 -9 -23 -17 -36 -23v-31h48v-156c0 -21 2 -32 4 -38c3 -8 10 -15 18 -22
+c9 -8 19 -14 31 -18c13 -4 29 -6 46 -6c16 0 28 2 41 5c11 2 23 6 36 12z" />
+    <glyph glyph-name="ion-social-tumblr" unicode="&#xf241;" horiz-adv-x="256" 
+d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16
+c9 -6 19 -8 31 -8z" />
+    <glyph glyph-name="ion-social-tux" unicode="&#xf2c5;" horiz-adv-x="383" 
+d="M189 347c2 2 -1 -1 0 0c2 2 4 4 6 5c-3 -2 -5 -4 -7 -8c0 1 0 2 1 3zM361 52c7 -4 23 -11 21 -22c-2 -10 -17 -15 -24 -19c-15 -8 -28 -14 -41 -25c-9 -8 -17 -15 -29 -17c-11 -2 -25 -1 -33 8c-5 5 -7 11 -15 12c-25 5 -54 4 -79 0c-13 -2 -21 -11 -32 -17
+c-10 -5 -20 -5 -30 -1c-13 5 -27 10 -41 13s-29 5 -43 9c-31 8 -5 30 -11 50c-3 12 -10 29 8 30c9 1 27 -1 31 11c2 7 -2 15 2 22s-1 17 1 25c4 18 19 32 25 49c5 14 8 25 18 37c9 11 22 22 29 34c10 18 9 35 8 55c-1 17 -1 33 -2 50c0 33 20 60 58 60h14
+c38 0 63 -32 64 -69c0 -19 -5 -38 5 -67c15 -27 36 -48 52 -73c10 -16 16 -31 20 -49c3 -14 9 -31 7 -45c-1 -6 -2 -9 -4 -11c3 -1 7 -2 9 -5c3 -4 2 -11 0 -26c-1 -8 5 -15 12 -19zM137 -3c2 20 -15 39 -25 56c-10 16 -21 43 -39 52c-8 4 -19 5 -23 -5c-2 -7 0 -19 -2 -22
+c-4 -9 -14 -10 -23 -11c-6 0 -17 0 -17 -8c1 -10 10 -20 7 -30c-2 -7 -8 -12 -8 -19c0 -14 38 -15 47 -17c19 -4 37 -14 57 -16c12 -1 25 7 26 20zM253 62c-2 10 2 -10 0 0s-5 28 1 35c4 5 10 6 17 5c0 4 1 9 3 12c8 13 29 8 39 0l-1 2c-3 4 -8 9 -13 10c0 0 4 12 2 34
+c-4 40 -33 62 -33 62c27 -30 27 -58 27 -72c0 -6 -1 -18 -4 -24c-4 -1 -7 -2 -11 -4c-10 -5 -8 2 -8 10c0 18 -2 36 -7 54c-3 9 -7 17 -13 24c-4 5 -4 9 -5 15c-3 12 -9 22 -16 32c-7 9 -7 17 -5 28c1 7 2 14 -6 17c-6 2 -26 5 -27 14c-1 6 -1 16 5 20c16 14 30 -11 17 -24
+c-3 -3 7 -4 8 -4c4 1 4 7 5 10c1 4 1 9 1 13c0 17 -18 32 -34 21c-6 -4 -9 -11 -10 -17c0 -2 -1 -20 0 -20c-4 0 -7 5 -11 5c-3 0 -7 0 -10 -1c0 0 2 14 -2 22c-4 9 -18 16 -24 4s-3 -25 0 -31s4 -6 4 -6c2 1 5 4 5 4s-6 3 -7 11c-1 9 3 14 7 15s10 -2 12 -8s0 -13 0 -13
+c-7 -6 -30 -18 -22 -28c14 -18 33 -15 52 -9c8 3 18 5 24 12c3 3 11 2 8 -4c-2 -5 -18 -7 -22 -9c-9 -4 -18 -8 -28 -10c-6 -1 -13 -5 -28 9c7 -6 8 -16 17 -20c13 -6 33 9 44 15c1 1 16 5 14 0c-1 -4 -11 -7 -15 -9c-11 -6 -23 -21 -36 -22c-8 -1 -21 16 -25 22
+c-1 1 -5 9 -6 4c-1 -8 2 -14 -3 -21c-6 -9 -11 -18 -13 -29c-1 -6 0 -11 -3 -16c-11 -15 -17 -33 -19 -51c0 -4 3 -43 -5 -41c-18 5 -17 33 -14 47c-3 -12 -8 -30 2 -44c12 -15 99 -55 53 -80c7 -14 14 -25 12 -41c8 7 2 20 -1 28c0 0 17 -12 38 -10c17 2 32 7 46 16
+c6 4 11 9 16 14c1 2 4 6 6 7l1 -11c2 -17 -12 -27 -10 -34c4 8 11 14 13 24c3 12 0 24 -2 36zM155 323v0v-3c2 0 2 5 1 8c-1 4 -3 6 -4 6h-2c3 -2 5 -6 5 -11zM210 335c3 -2 0 0 0 0c3 -2 5 -5 5 -10v-3c2 0 3 4 2 7s-3 6 -5 6h-2zM347 15c24 11 -24 -10 0 0
+c24 11 35 17 20 26c-17 10 -26 13 -26 29c0 5 4 16 2 22c-1 4 -6 5 -9 5c-10 -10 -17 -25 -34 -25c-14 0 -25 11 -28 24c-4 2 -10 1 -13 -4c-6 -12 1 -29 3 -41c2 -18 -4 -35 -2 -53c2 -21 26 -22 40 -13c16 10 29 22 47 30z" />
+    <glyph glyph-name="ion-social-twitch-outline" unicode="&#xf4ed;" horiz-adv-x="416" 
+d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM368 160v208h-304v-272h80v-64l64 64h96zM272 176v129h48v-129h-48zM160 176v129h48v-129h-48z" />
+    <glyph glyph-name="ion-social-twitch" unicode="&#xf4ee;" horiz-adv-x="416" 
+d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM208 176v129h-48v-129h48zM320 176v129h-48v-129h48z" />
+    <glyph glyph-name="ion-social-twitter-outline" unicode="&#xf242;" horiz-adv-x="472" 
+d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48
+c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15zM414 301c3 2 8 6 11 8c-2 0 -11 -2 -19 -1s-21 5 -21 5s14 13 18 17l11 11c-4 -1 -10 -2 -14 -3l-8 -2l-6 6
+c-15 16 -37 26 -59 26c-45 0 -81 -37 -81 -81c0 -6 1 -12 2 -18l5 -21l-22 1c-42 2 -81 13 -118 32c-28 14 -53 34 -75 56c-1 -6 -2 -13 -2 -19c0 -27 14 -53 36 -68c0 0 33 -23 46 -29c-24 -2 -56 0 -56 0c-8 0 -16 1 -24 3c8 -28 32 -50 62 -56l61 -10l-61 -21
+c-7 -2 -14 -3 -21 -3c15 -20 38 -34 64 -34l45 -1l-35 -28c-18 -14 -38 -25 -60 -33c-10 -3 -19 -6 -29 -8c27 -9 55 -14 84 -14c40 0 78 8 112 24c31 14 58 34 81 60c22 24 38 53 50 84c11 30 17 62 17 92v12l-1 8z" />
+    <glyph glyph-name="ion-social-twitter" unicode="&#xf243;" horiz-adv-x="472" 
+d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48
+c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15z" />
+    <glyph glyph-name="ion-social-usd-outline" unicode="&#xf352;" horiz-adv-x="320" 
+d="M125 345c11 2 19 3 19 3v-131l-22 6c-15 5 -27 11 -36 19c-12 10 -19 25 -19 43c0 13 4 24 11 33c6 8 13 14 22 19c7 4 17 6 25 8zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM252 151
+c10 -10 15 -24 15 -42c0 -9 -1 -18 -5 -27s-11 -17 -20 -24c-8 -6 -18 -11 -31 -15c-6 -2 -11 -3 -17 -4s-18 -1 -18 -1v145l20 -5c10 -3 19 -6 28 -9c10 -4 20 -10 28 -18zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14s-16 5 -26 8v-107c6 1 10 2 14 3
+c11 3 20 8 27 13s11 11 14 18zM315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23
+s20 -11 31 -14v120c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46
+c-7 4 -13 8 -22 10v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM293 72c7 12 11 27 11 44c0 8 -1 16 -4 24s-7 15 -12 22s-12 13 -20 19c-8 5 -18 10 -29 13c-5 1 -13 3 -24 6h-1l-4 1c-7 2 -13 4 -21 6l-13 3v137
+s9 -1 19 -4s19 -6 28 -12c15 -9 25 -24 30 -43h38c-2 8 -4 15 -8 22c-7 13 -16 24 -28 32c-12 9 -27 16 -43 20c-8 2 -16 4 -23 5l-13 2v31h-32v-31l-14 -2c-7 -1 -14 -2 -20 -4c-15 -4 -29 -10 -41 -18s-21 -16 -28 -28c-7 -11 -10 -24 -10 -40c0 -8 1 -15 3 -23
+c2 -7 6 -14 11 -21s14 -13 23 -19c10 -6 22 -10 37 -14v0v0c4 -1 8 -2 11 -3c5 -1 11 -3 16 -4l12 -3v-151s-8 1 -20 4s-26 8 -36 15c-11 8 -20 18 -26 30c-4 7 -6 16 -8 24h-36c2 -11 5 -23 10 -32c8 -14 17 -26 30 -35c13 -10 28 -16 46 -21c8 -2 17 -4 26 -5l14 -2v-33
+h32v33l15 1c9 1 17 3 26 5c17 4 32 10 45 18s23 19 31 31z" />
+    <glyph glyph-name="ion-social-usd" unicode="&#xf353;" horiz-adv-x="320" 
+d="M315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23s20 -11 31 -14v120
+c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46c-7 4 -13 8 -22 10
+v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14
+s-16 5 -26 8v-107c6 1 10 2 14 3c11 3 20 8 27 13s11 11 14 18z" />
+    <glyph glyph-name="ion-social-vimeo-outline" unicode="&#xf244;" 
+d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-10 -4 -19 -5 -27 -5c-17 0 -31 9 -44 27c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-2 2 -5 3 -8 3s-6 -1 -9 -3
+c-10 -6 -28 -18 -28 -18l-21 27c26 24 82 71 82 71c11 9 33 25 48 27h8c18 0 32 -7 42 -22c11 -17 15 -37 18 -57c7 -41 12 -82 24 -122c3 -10 7 -20 12 -29c4 -7 9 -10 14 -10c4 0 7 2 11 5s7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26h-7
+c-11 0 -20 -2 -32 -7c6 24 24 62 54 84c20 14 45 20 67 20c10 0 20 -2 27 -4c23 -8 36 -23 41 -46zM418 244c13 30 17 59 11 87c-4 19 -13 28 -30 34c-6 2 -14 3 -22 3c-21 0 -42 -6 -57 -17c-16 -12 -29 -30 -38 -48h6h8c23 -1 39 -19 40 -41c0 -10 0 -22 -4 -34
+c-11 -29 -29 -58 -51 -85c-4 -4 -7 -9 -12 -13c-7 -6 -15 -8 -22 -8c-8 0 -18 3 -27 18c-7 11 -11 22 -14 32c-10 31 -14 64 -19 95c-2 10 -3 19 -5 29c-3 17 -6 36 -16 51c-7 10 -16 15 -28 15h-6c-8 -1 -25 -11 -40 -23c-2 -2 -43 -37 -70 -61l2 -3c5 4 12 7 16 10
+c6 3 12 5 18 5c7 0 13 -3 18 -7c8 -7 13 -12 16 -18c6 -11 12 -24 16 -37c13 -44 26 -88 38 -133c5 -19 13 -41 26 -59s23 -20 31 -20c6 0 13 1 21 4c23 8 43 25 61 41c32 29 57 63 83 99v0c21 28 37 55 50 84z" />
+    <glyph glyph-name="ion-social-vimeo" unicode="&#xf245;" 
+d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-31 -11 -52 -5 -71 22c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-5 4 -11 3 -17 0c-10 -6 -28 -18 -28 -18l-21 27
+c26 24 82 71 82 71c11 9 33 25 48 27c21 3 38 -4 50 -22c11 -17 15 -37 18 -57c7 -41 11 -82 23 -122c3 -10 8 -20 13 -29c7 -11 15 -13 25 -5c4 3 7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26s-24 -1 -39 -7c6 24 24 62 54 84c29 21 71 24 94 16
+s36 -23 41 -46z" />
+    <glyph glyph-name="ion-social-whatsapp-outline" unicode="&#xf4ef;" 
+d="M178 294c4 -11 15 -39 16 -42s2 -6 0 -10s-3 -6 -6 -9s-6 -7 -9 -9c-3 -3 -6 -6 -3 -12s14 -24 30 -39c21 -20 38 -27 44 -30s9 -3 12 1s15 16 19 21s8 5 13 3s31 -17 37 -20s10 -5 11 -7s0 -13 -5 -26s-28 -24 -38 -25s-11 -8 -67 16s-90 84 -93 88s-22 31 -21 58
+s17 41 22 46s11 7 15 7h10s9 0 13 -11zM228 384c-50 0 -97 -20 -133 -55c-35 -35 -55 -81 -55 -131c0 -34 9 -67 27 -96l8 -13l-5 -14l-19 -57l61 19l13 4l12 -6c28 -15 59 -23 91 -23c50 0 97 19 133 54c35 35 55 82 55 132s-20 96 -55 131c-36 35 -83 55 -133 55zM228 416
+v0c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218z" />
+    <glyph glyph-name="ion-social-whatsapp" unicode="&#xf4f0;" 
+d="M228 416c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218zM337 115c5 13 6 24 5 26s-5 4 -11 7s-32 18 -37 20s-9 2 -13 -3s-16 -17 -19 -21s-6 -4 -12 -1s-23 10 -44 30
+c-16 15 -27 33 -30 39s0 9 3 12c3 2 6 6 9 9s4 5 6 9s1 7 0 10s-12 31 -16 42s-10 11 -13 11h-10s-10 -2 -15 -7s-21 -19 -22 -46s18 -54 21 -58s37 -64 93 -88s57 -17 67 -16s33 12 38 25z" />
+    <glyph glyph-name="ion-social-windows-outline" unicode="&#xf246;" 
+d="M432 167h-216v-149l216 -32v181zM448 183v0v-215l-248 36v179h248zM168 167h-152v-120l152 -22v142zM184 183v0v-177l-184 27v150h184zM432 398v0l-216 -31v-152h216v183zM448 416v0v-217h-248v182zM168 360v0l-152 -22v-123h152v145zM184 378v0v-179h-184v153z" />
+    <glyph glyph-name="ion-social-windows" unicode="&#xf247;" 
+d="M448 183v0v-215l-248 36v179h248zM184 183v0v-177l-184 27v150h184zM448 416v0v-217h-248v182zM184 378v0v-179h-184v153z" />
+    <glyph glyph-name="ion-social-wordpress-outline" unicode="&#xf248;" horiz-adv-x="384" 
+d="M192 384c106 0 192 -86 192 -192c0 -9 -1 -18 -2 -26c-12 -85 -79 -153 -165 -164c-8 -1 -17 -2 -25 -2c-106 0 -192 86 -192 192s86 192 192 192zM19 192c0 -68 40 -127 98 -155l-83 225c-10 -21 -15 -45 -15 -70zM214 21c12 2 24 4 35 8c0 1 -1 2 -1 3l-53 145l-33 -96
+v0l-19 -55c15 -5 32 -7 49 -7c8 0 15 1 22 2zM216 273l62 -186l17 58c9 22 13 41 13 56c0 21 -7 35 -14 47c-9 14 -17 27 -17 41c0 16 12 30 29 30h2c-31 28 -71 45 -116 45c-60 0 -113 -30 -144 -77c4 0 8 -1 11 -1c18 0 46 3 46 3c9 1 10 -14 1 -15c0 0 -10 -1 -20 -1
+l63 -187l38 113l-27 74c-9 0 -18 1 -18 1c-9 0 -8 16 1 15c0 0 28 -3 45 -3c18 0 46 3 46 3c9 1 11 -14 2 -15c0 0 -10 -1 -20 -1zM279 43c45 26 77 71 84 125c1 8 2 16 2 24c0 30 -8 58 -22 83c1 -6 1 -12 1 -18c0 -18 -3 -37 -13 -62l-39 -113z" />
+    <glyph glyph-name="ion-social-wordpress" unicode="&#xf249;" horiz-adv-x="384" 
+d="M195 177l53 -146c0 -1 6 -13 9 -19c-3 -1 -5 -2 -8 -3v0c-10 -3 -21 -6 -32 -7c-8 -1 -17 -2 -25 -2c-17 0 -34 2 -50 6v0c-2 0 -3 2 -5 2l25 73v0zM17 268c6 0 7 -1 15 -1l93 -255c-3 1 -5 2 -8 3c-63 27 -109 87 -116 158c-1 6 -1 13 -1 19c0 25 7 53 17 76zM366 273
+c11 -24 18 -52 18 -81c0 -9 -1 -18 -2 -26c-9 -65 -50 -120 -107 -147c-2 -1 -3 -1 -5 -2l22 65l39 113c10 25 13 45 13 62v19v0c-1 18 -10 44 -36 43h-2c-17 0 -29 -14 -29 -30c0 -14 8 -27 17 -41c7 -12 14 -26 14 -47c0 -15 -4 -34 -13 -56l-17 -58l-62 186
+c10 0 20 1 20 1c9 1 7 16 -2 15c0 0 -28 -3 -46 -3c-17 0 -45 3 -45 3c-9 1 -10 -15 -1 -15c0 0 9 -1 18 -1l27 -74l-38 -113l-63 187c10 0 20 2 20 2c9 1 8 15 -1 14c0 0 -28 -2 -46 -2h-34c5 9 11 17 17 25c35 44 90 72 150 72c24 0 48 -5 69 -13c34 -13 63 -36 85 -65
+c2 -2 3 -5 5 -7c6 -8 11 -17 15 -26z" />
+    <glyph glyph-name="ion-social-yahoo-outline" unicode="&#xf24a;" horiz-adv-x="320" 
+d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4zM178 180l111 184h-1c-7 0 -15 0 -24 2l-90 -150l-14 -23l-14 23l-89 150c-9 -2 -17 -2 -25 -2h-1l111 -184l2 -4
+v-5v-151c6 1 11 0 16 0s11 1 16 0v151v5z" />
+    <glyph glyph-name="ion-social-yahoo" unicode="&#xf24b;" horiz-adv-x="320" 
+d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4z" />
+    <glyph glyph-name="ion-social-yen-outline" unicode="&#xf4f1;" horiz-adv-x="384" 
+d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80zM304 192h-59l13 24l99 184v0h-43l-122 -240l-122 240h-43l99 -184l13 -24h-59v-16h68l20 -44v-36h-88v-16h88v-96h48v96h88v16h-88v37
+l21 43h67v16z" />
+    <glyph glyph-name="ion-social-yen" unicode="&#xf4f2;" horiz-adv-x="384" 
+d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80z" />
+    <glyph glyph-name="ion-social-youtube-outline" unicode="&#xf24c;" horiz-adv-x="512" 
+d="M265 352v0h-9h-9c-65 0 -118 -2 -168 -4h-1h-1c-23 0 -42 -22 -42 -49v-1v-1c-2 -34 -3 -70 -3 -105v0v0c0 -35 1 -70 3 -104v-2v-1c0 -14 5 -26 14 -36c8 -9 17 -13 28 -13h1h1c52 -2 108 -4 166 -4h11v0v0h11c58 0 113 2 166 4h1h1c11 0 20 4 28 13c9 10 14 22 14 36v1
+v2c2 34 3 68 3 104v0v0c0 36 -1 71 -3 105v1v2c0 27 -19 49 -42 49h-1h-1c-49 2 -103 3 -168 3zM265 384v0c58 0 115 0 170 -3c41 0 74 -36 74 -81c2 -36 3 -72 3 -108s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-55 -3 -111 -4 -168 -4h-11h-11c-57 0 -113 1 -168 4
+c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 82 73 82c55 2 112 3 170 3h9h9zM207 94v197l145 -99z" />
+    <glyph glyph-name="ion-social-youtube" unicode="&#xf24d;" horiz-adv-x="512" 
+d="M509 299c2 -36 3 -71 3 -107s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-58 -3 -118 -4 -179 -4s-121 1 -179 4c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 81 73 81c55 3 112 4 170 4h9h9c58 0 115 -1 170 -4c41 0 74 -36 74 -81zM207 94l145 98l-145 99
+v-197z" />
+    <glyph glyph-name="ion-soup-can-outline" unicode="&#xf4f3;" horiz-adv-x="320" 
+d="M160 304c-88 0 -160 29 -160 64s72 64 160 64s160 -29 160 -64s-72 -64 -160 -64zM160 415c-70 0 -126 -19 -126 -43s56 -43 126 -43s126 19 126 43s-56 43 -126 43zM161 288c88 0 158 29 159 64c0 -5 0 -33 -8 -40v-240c0 -35 -64 -64 -152 -64s-152 29 -152 64v240
+c-8 6 -8 40 -8 40c0 -35 73 -64 161 -64zM280 72v80c-18 -10 -43 -17 -72 -21h-2c-6 -20 -24 -35 -46 -35s-40 15 -46 35h-2c-29 4 -54 11 -72 21v-80c1 -2 9 -10 30 -18c24 -9 55 -14 90 -14s67 5 91 14c21 8 29 16 29 18zM280 184v91c-33 -12 -75 -19 -119 -19
+c-45 0 -87 7 -121 19v-91c18 -10 43 -17 73 -21h3c7 17 24 29 44 29s37 -12 44 -29h3c30 4 55 11 73 21zM178 -16zM160 -16h1h-1v0zM312 32l8 -16c0 -7 -3 -14 -8 -20c-21 -26 -81 -44 -152 -44s-131 18 -152 44c-5 6 -8 13 -8 20l8 16v16c0 -35 63 -64 152 -64
+s152 28 152 64v-16z" />
+    <glyph glyph-name="ion-soup-can" unicode="&#xf4f4;" horiz-adv-x="320" 
+d="M0 368c0 43 53 64 160 64s160 -21 160 -64s-53 -64 -160 -64s-160 21 -160 64zM160 8c-44 0 -80 6 -109 18s-43 28 -43 46v128c0 -9 4 -19 13 -27s21 -15 37 -21s33 -10 54 -13c1 -12 7 -23 16 -31s20 -12 32 -12s23 4 32 12s15 19 16 31c31 4 56 12 75 23s29 24 29 38
+v-128c0 -18 -14 -34 -43 -46s-65 -18 -109 -18zM160 288c44 0 82 6 113 18s47 28 47 46v-8c0 -5 -1 -11 -2 -18s-3 -11 -6 -14v-96c0 -14 -10 -27 -29 -38s-44 -19 -76 -23c-2 11 -8 19 -17 26s-19 11 -30 11s-21 -4 -30 -11s-15 -15 -17 -26c-32 4 -57 12 -76 23
+s-29 24 -29 38v96c-5 5 -8 18 -8 40c0 -18 16 -34 47 -46s69 -18 113 -18zM312 56v-24l8 -16c0 -7 -3 -14 -8 -20c-11 -13 -30 -24 -58 -32s-59 -12 -94 -12s-66 4 -94 12s-47 19 -58 32c-5 6 -8 13 -8 20l8 16v24c0 -18 14 -34 43 -46s65 -18 109 -18s80 6 109 18
+s43 28 43 46z" />
+    <glyph glyph-name="ion-speakerphone" unicode="&#xf2b2;" 
+d="M39 266c0 -37 20 -69 50 -86c-1 0 -2 1 -3 1s-4 1 -5 1v0c-35 3 -62 33 -69 69c-6 0 -12 7 -12 16c0 8 5 15 11 16c6 42 40 75 81 75h8c-36 -15 -61 -51 -61 -92zM433 357c10 -25 15 -56 15 -88s-5 -63 -15 -88l-3 -9c-6 -14 -15 -26 -24 -34c-10 -10 -22 -19 -34 -20h-3
+c-7 0 -15 2 -22 5c-3 2 -10 5 -10 5c-22 10 -84 28 -115 29c-4 -8 -10 -20 -12 -30c-2 -9 -6 -27 -7 -61c-1 -32 1 -59 3 -82c0 -2 1 -5 1 -7c0 -6 -2 -9 -9 -9h-77c-6 0 -9 3 -9 6v7c2 72 25 140 26 145c2 9 5 17 7 30c2 12 -27 13 -40 24c-29 17 -47 49 -47 86
+c0 41 25 77 59 92h42h19c58 3 114 21 163 50c1 1 3 1 4 2v0c8 4 16 6 24 6c13 0 26 -6 37 -16c9 -9 18 -21 24 -35c1 -3 2 -5 3 -8zM410 180c9 22 15 54 15 89s-6 66 -15 88c-8 18 -19 29 -30 29s-21 -11 -29 -29c-9 -22 -15 -53 -15 -88s6 -67 15 -89c8 -19 18 -33 29 -33
+s22 15 30 33z" />
+    <glyph glyph-name="ion-speedometer" unicode="&#xf2b3;" 
+d="M312 192l8 -8l-64 -84v-4c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32h4zM224 352c124 0 224 -100 224 -224c0 -34 -8 -67 -22 -96h-36c15 27 25 57 26 88h-32v16h32c-1 29 -9 56 -22 81l-27 -15l-8 13l27 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8
+l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -8 -23 -16 -33 -26s-19 -21 -26 -33l28 -16l-8 -13l-28 15c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -31 11 -61 26 -88h-36c-14 29 -22 62 -22 96c0 124 100 224 224 224z" />
+    <glyph glyph-name="ion-spoon" unicode="&#xf2b4;" horiz-adv-x="128" 
+d="M128 288c0 64 -26 128 -64 128s-64 -64 -64 -128v0c1 -25 16 -54 37 -64l1 -1v0c3 -2 10 -6 10 -10c0 0 -16 -199 -16 -210s4 -20 10 -26s14 -9 22 -9v0v0c8 0 16 3 22 9s10 13 10 26s-16 210 -16 210c0 4 7 8 10 10l1 1c22 10 37 38 37 64z" />
+    <glyph glyph-name="ion-star" unicode="&#xf24e;" 
+d="M448 248l-139 -104l55 -176l-140 112l-140 -112l55 176l-139 104h172l52 168l53 -168h171z" />
+    <glyph glyph-name="ion-stats-bars" unicode="&#xf2b5;" horiz-adv-x="352" 
+d="M96 32v320h64v-320h-64zM0 32v96h64v-96h-64zM192 32v160h64v-160h-64zM288 32v224h64v-224h-64z" />
+    <glyph glyph-name="ion-steam" unicode="&#xf30b;" horiz-adv-x="512" 
+d="M480 240c0 -20 -16 -37 -37 -37c-20 0 -37 16 -37 37c0 20 16 37 37 37c20 0 37 -17 37 -37zM443 309c38 0 69 -31 69 -69s-31 -70 -69 -70l-67 -48c-2 -26 -24 -47 -51 -47c-25 0 -46 18 -51 41l-196 78c-8 -5 -16 -7 -26 -7c-28 0 -52 24 -52 52s24 52 52 52
+c25 0 45 -18 50 -41l196 -79c8 5 17 8 27 8c2 0 3 -1 5 -1l43 62c0 38 32 69 70 69zM443 286c-26 0 -47 -20 -47 -46s21 -47 47 -47s46 21 46 47s-20 46 -46 46zM52 277c-21 0 -38 -17 -38 -38s17 -38 38 -38c3 0 5 0 8 1l-16 6v0c-15 7 -22 24 -16 39s24 23 39 17v0l19 -7
+c-6 12 -19 20 -34 20zM325 165c-3 0 -6 -1 -9 -1l16 -6c16 -6 23 -24 17 -40s-23 -23 -39 -17c-6 3 -13 6 -19 8c6 -12 19 -20 34 -20c21 0 38 17 38 38s-17 38 -38 38z" />
+    <glyph glyph-name="ion-stop" unicode="&#xf24f;" horiz-adv-x="384" 
+d="M373 384c6 0 11 -5 11 -11v-362c0 -6 -5 -11 -11 -11h-362c-6 0 -11 5 -11 11v362c0 6 5 11 11 11h362z" />
+    <glyph glyph-name="ion-thermometer" unicode="&#xf2b6;" horiz-adv-x="160" 
+d="M127 112c20 -14 33 -38 33 -64c0 -44 -36 -80 -80 -80s-80 36 -80 80c0 27 13 51 33 65v257c0 26 21 46 47 46s47 -20 47 -46v-258zM65 370v-50h30v50c0 8 -7 14 -15 14s-15 -6 -15 -14zM96 160v16h-16v-16h16zM96 192v64h-16v-64h16z" />
+    <glyph glyph-name="ion-thumbsdown" unicode="&#xf250;" horiz-adv-x="384" 
+d="M24 195c-10 5 -18 17 -18 29c0 14 8 25 20 30c-4 5 -6 12 -6 19c0 14 8 25 20 30c-3 5 -5 11 -5 17c0 18 11 24 35 30s74 12 126 9c23 -1 55 -7 76 -7v32h112v-240h-112v16c-15 -1 -31 -4 -40 -14c-22 -23 -40 -65 -40 -108c0 -19 1 -29 -4 -34c-13 -13 -44 9 -52 37
+c-9 34 -1 62 1 87h-103c-19 0 -34 15 -34 34c0 15 10 29 24 33zM336 352c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
+    <glyph glyph-name="ion-thumbsup" unicode="&#xf251;" horiz-adv-x="384" 
+d="M360 189c10 -5 18 -17 18 -29c0 -14 -8 -25 -20 -30c4 -5 6 -12 6 -19c0 -14 -8 -25 -20 -30c3 -5 5 -11 5 -17c0 -18 -11 -24 -35 -30s-74 -12 -126 -9c-23 1 -55 7 -76 7v-32h-112v240h112v-16c15 1 31 4 40 14c22 23 40 65 40 108c0 19 -1 29 4 34c13 13 44 -9 52 -37
+c9 -34 1 -62 -1 -87h103c19 0 34 -15 34 -34c0 -15 -10 -29 -24 -33zM48 32c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
+    <glyph glyph-name="ion-toggle-filled" unicode="&#xf354;" 
+d="M320 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM320 320c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM320 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
+    <glyph glyph-name="ion-toggle" unicode="&#xf355;" 
+d="M320 288h-192c-53 0 -96 -43 -96 -96s43 -96 96 -96h192c53 0 96 43 96 96s-43 96 -96 96zM320 320v0c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM128 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48
+s-22 48 -48 48zM128 272v0c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80z" />
+    <glyph glyph-name="ion-transgender" unicode="&#xf4f5;" horiz-adv-x="512" 
+d="M368 448h144v-144h-40v76l-101 -100c8 -17 13 -36 13 -56c0 -63 -46 -115 -104 -126v-52h72v-46h-72v-64h-48v64h-72v46h72v52c-59 11 -104 63 -104 126c0 20 5 39 13 56l-22 22l-36 -36l-33 33l36 36l-46 45v-76h-40v144h144v-40h-70l43 -42l36 36l33 -33l-36 -36
+l17 -17c23 22 54 36 89 36c27 0 53 -8 74 -23c0 0 6 -5 15 -13l93 92h-70v40zM256 144c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
+    <glyph glyph-name="ion-trash-a" unicode="&#xf252;" horiz-adv-x="352" 
+d="M261 320v0h91v-32h-9s-5 -1 -8 -4s-4 -9 -4 -9l-19 -241c-2 -29 -2 -34 -36 -34h-200c-34 0 -34 5 -36 34l-19 242s-1 6 -4 9s-8 3 -8 3h-9v32h91v29c0 19 14 35 34 35h101c20 0 35 -16 35 -35v-29zM112 349v-29h128v29c0 10 -9 15 -19 15h-91c-10 0 -18 -5 -18 -15z
+M104 64h20l-10 192h-21zM187 64v192h-22v-192h22zM249 64l10 192h-20l-11 -192h21z" />
+    <glyph glyph-name="ion-trash-b" unicode="&#xf253;" horiz-adv-x="320" 
+d="M318 315c3 -12 4 -11 -7 -11h-302c-11 0 -10 -1 -7 11c2 9 4 13 4 13c3 9 9 9 19 11l53 7c7 1 7 1 10 7c9 20 10 31 20 31h103c10 0 12 -11 21 -31c3 -6 3 -6 10 -7l53 -6c10 -2 16 -2 19 -11c0 0 2 -5 4 -14zM283 272c17 0 18 -2 17 -15l-19 -242c-2 -12 -2 -15 -17 -15
+h-208c-15 0 -15 3 -17 15l-19 242c-1 12 0 15 17 15h246z" />
+    <glyph glyph-name="ion-trophy" unicode="&#xf356;" 
+d="M448 345c0 -25 2 -73 -22 -122c-15 -30 -36 -55 -63 -75c-23 -16 -49 -28 -77 -35c-16 -17 -32 -27 -46 -31v-33s0 -49 99 -49h13v-32h-256v32h13c85 0 97 35 99 46v36c-14 4 -30 14 -46 31c-28 7 -55 19 -77 35c-27 20 -48 45 -63 75c-17 36 -21 71 -22 97v0v11v0v21v0
+h80c-2 35 0 64 0 64h143h1h1h142s2 -29 0 -64h81v-7zM51 237c17 -34 43 -61 77 -78c-22 40 -33 84 -42 135c-1 8 -2 17 -3 26h-51c1 -23 5 -53 19 -83zM397 237c14 30 18 60 19 83h-51c-1 -9 -3 -18 -4 -26c-9 -51 -20 -95 -42 -135c34 17 61 43 78 78z" />
+    <glyph glyph-name="ion-tshirt-outline" unicode="&#xf4f6;" 
+d="M146 362l-104 -31l11 -32l39 4l38 5l-2 -38l-14 -255h220l-14 255l-2 38l38 -5l39 -4l11 32l-104 31c-6 -8 -13 -14 -21 -19c-15 -10 -34 -15 -57 -15v0v0c-34 1 -59 11 -78 34zM288 400v0l160 -48l-32 -88l-64 8l16 -289h-288l16 289l-64 -8l-32 88l160 48
+c14 -27 31 -39 64 -40c33 0 50 13 64 40z" />
+    <glyph glyph-name="ion-tshirt" unicode="&#xf4f7;" 
+d="M448 352l-32 -88l-64 8l16 -288h-288l16 288l-64 -8l-32 88l160 48c14 -27 31 -39 64 -40c33 0 50 13 64 40z" />
+    <glyph glyph-name="ion-umbrella" unicode="&#xf2b7;" 
+d="M344 160v0v0v0zM104 160v0v0v0zM240 399c116 -8 208 -109 208 -227v-12c-4 25 -26 52 -52 52c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52s-49 -12 -52 -45v-135c0 -17 -6 -33 -18 -45s-29 -19 -46 -19c-35 0 -63 29 -63 64c0 9 7 16 16 16s16 -7 16 -16
+c0 -18 14 -32 31 -32c18 0 32 14 32 32v134c-1 24 -26 46 -52 46c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52c-27 0 -49 -26 -52 -52v18c0 118 92 213 208 221v1c0 9 7 16 16 16s16 -7 16 -16v-1z" />
+    <glyph glyph-name="ion-university" unicode="&#xf357;" 
+d="M224 384l224 -111l-92 -60l-132 -85l-160 102v-198l-32 16v203l-32 21zM358 192l10 -82c-16 -12 -112 -78 -144 -110c-32 32 -128 98 -144 110l9 82l135 -88z" />
+    <glyph glyph-name="ion-unlocked" unicode="&#xf254;" horiz-adv-x="384" 
+d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46c20 -21 33 -51 39 -82h-53c-5 18 -13 35 -24 47v0v1c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80v-31h265
+c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340z" />
+    <glyph glyph-name="ion-upload" unicode="&#xf255;" 
+d="M366 215c45 0 82 -37 82 -83s-37 -84 -82 -84h-110v80h48l-80 84l-80 -84h48v-80h-102c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" />
+    <glyph glyph-name="ion-usb" unicode="&#xf2b8;" horiz-adv-x="256" 
+d="M16 228v0v0zM256 320c0 -11 -6 -21 -14 -27v0c-2 -1 -3 -5 -3 -7c-1 -20 -3 -36 -9 -50c-7 -19 -20 -33 -39 -46c-17 -12 -29 -21 -36 -34c-7 -12 -11 -28 -11 -53v-24c0 -7 2 -13 10 -18c4 -2 7 -6 10 -9c8 -9 14 -21 14 -34c0 -28 -22 -50 -50 -50s-50 22 -50 50v1v0
+c0 18 10 33 24 42c5 4 9 5 9 18v0c0 14 -3 17 -10 27s-18 17 -32 26c-19 13 -33 27 -40 46c-6 15 -8 31 -9 39s-2 9 -4 11c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32c0 -10 -4 -20 -12 -26c-3 -2 -4 -11 -4 -14v0v0c0 -9 3 -18 7 -28c10 -21 45 -44 52 -44
+s8 5 8 12v196s-1 2 -3 4h-1v1v0c-9 6 -15 16 -15 27c0 18 14 32 32 32s32 -14 32 -32c0 -11 -5 -21 -14 -27v0c-2 -2 -2 -3 -2 -5v-140c0 -10 2 -12 8 -11c13 3 48 30 52 43c3 10 6 23 7 41v1c0 2 -2 4 -3 6c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32zM32 240
+c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM128 368c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM224 304c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
+    <glyph glyph-name="ion-videocamera" unicode="&#xf256;" 
+d="M335 263v-66l113 35v-89v-88l-113 35v-65c0 -5 -4 -9 -9 -9h-317c-5 0 -9 4 -9 9v12v55v171c0 5 4 9 9 9h208v38c0 4 -6 10 -10 10h-176v48h178c36 0 65 -29 65 -64v-32h52c5 0 9 -4 9 -9zM226 107c20 0 36 16 36 36s-16 35 -36 35s-36 -15 -36 -35c0 -10 4 -19 11 -26
+h-68c7 7 11 16 11 26c0 20 -16 36 -36 36s-36 -16 -36 -36s16 -36 36 -36h12h95h11z" />
+    <glyph glyph-name="ion-volume-high" unicode="&#xf257;" 
+d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 27 52 27 84s-10 60 -27 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146zM365 369l20 15
+c39 -54 63 -120 63 -192s-24 -138 -63 -192l-20 15c36 49 58 111 58 177s-22 128 -58 177z" />
+    <glyph glyph-name="ion-volume-low" unicode="&#xf258;" horiz-adv-x="288" 
+d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100z" />
+    <glyph glyph-name="ion-volume-medium" unicode="&#xf259;" horiz-adv-x="370" 
+d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146z" />
+    <glyph glyph-name="ion-volume-mute" unicode="&#xf25a;" 
+d="M224 231l47 51v-180l-47 51h-65v78h65zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-39 0 -76 10 -108 27l-1 1c-69 38 -115 112 -115 196c0 124 100 224 224 224c39 0 75 -10 107 -28h1zM362 93c20 28 33 62 33 99c0 66 -38 123 -92 151
+c-6 3 -11 6 -17 8c-19 7 -40 11 -62 11c-37 0 -71 -12 -99 -32l73 -74h-76l-36 35c-20 -28 -32 -62 -32 -99c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c19 -7 39 -11 61 -11c37 0 72 12 100 32l-20 20v77z" />
+    <glyph glyph-name="ion-wand" unicode="&#xf358;" 
+d="M192 208l48 48l48 -48l-48 -48zM0 16l176 176l48 -48l-176 -176zM224 352v64h32v-64h-32zM398 344l-45 -45l-23 22l46 45zM127 299l-45 45l22 22l45 -45zM376 50l-46 45l23 23l45 -46zM384 192v32h64v-32h-64z" />
+    <glyph glyph-name="ion-waterdrop" unicode="&#xf25b;" horiz-adv-x="320" 
+d="M175 409c40 -41 145 -160 145 -288c0 -85 -72 -153 -160 -153c-56 0 -106 27 -134 69c-6 9 -11 19 -15 29c-7 17 -11 35 -11 55v4c1 67 31 131 64 183c20 31 42 57 59 77c9 10 16 18 22 24l1 1v0c4 3 8 6 14 6c5 0 10 -3 14 -6v0zM160 24c55 0 100 45 100 100
+c0 14 -3 28 -8 40c-17 -65 -70 -116 -136 -130c13 -6 28 -10 44 -10z" />
+    <glyph glyph-name="ion-wifi" unicode="&#xf25c;" 
+d="M224 352c80 0 156 -30 214 -84l10 -10l-10 -9l-32 -32l-10 -10l-9 9c-44 41 -103 64 -163 64s-119 -23 -163 -64l-9 -9l-10 10l-32 32l-10 9l10 10c58 54 134 84 214 84v0zM365 192l11 -10l-10 -10l-33 -32l-9 -9l-10 8c-25 22 -57 35 -90 35s-65 -13 -90 -35l-10 -8
+l-9 9l-33 32l-10 10l11 10c37 33 83 52 132 54v0h9v0v0c52 0 102 -19 141 -54zM224 32l-10 10l-52 52l-11 10l12 10c17 11 32 20 61 20s47 -9 62 -20l11 -10l-10 -10l-53 -52z" />
+    <glyph glyph-name="ion-wineglass" unicode="&#xf2b9;" horiz-adv-x="256" 
+d="M167 153c-11 -4 -24 -8 -24 -32v-94c0 -11 4 -19 12 -25c3 -2 7 -4 15 -6c32 -9 48 -16 50 -18c2 -1 4 -3 4 -7c0 0 -14 -3 -96 -3s-96 3 -96 3c0 4 2 6 4 7c2 2 18 9 50 18c8 2 11 4 14 6c8 6 11 14 11 25v94c0 24 -11 28 -22 32s-18 6 -26 11c-12 7 -23 16 -32 26
+c-20 23 -31 52 -31 87c0 50 4 100 8 114s14 25 31 25h178c17 0 27 -11 31 -25s8 -65 8 -115c0 -35 -11 -63 -31 -86c-9 -10 -20 -19 -32 -26c-8 -5 -15 -7 -26 -11zM128 178c26 0 50 11 67 28l6 6c16 18 22 35 23 65s-2 83 -8 107h-177c-7 -35 -8 -80 -7 -108s7 -46 23 -64
+c2 -3 4 -6 7 -8c17 -16 41 -26 66 -26zM208 277c0 -10 -1 -20 -4 -29s-8 -18 -15 -25l-5 -5c-14 -14 -34 -23 -56 -23c-21 0 -41 8 -55 22l-6 6c-7 7 -12 16 -15 25s-3 15 -4 29c-1 9 0 34 1 53c1 10 2 19 3 22h153c1 -6 2 -14 2 -22c1 -21 1 -45 1 -53zM192 269v0v26
+c0 4 -4 8 -8 8s-8 -4 -8 -8v-26c0 -3 1 -6 3 -7c1 -1 3 -1 5 -1c4 0 8 3 8 8zM191 316c1 2 1 4 1 6s-2 4 -4 5s-4 1 -6 1s-4 -1 -5 -3s-1 -4 -1 -6s2 -4 4 -5s4 -1 6 -1s4 1 5 3z" />
+    <glyph glyph-name="ion-woman" unicode="&#xf25d;" horiz-adv-x="192" 
+d="M30 299c3 12 17 33 42 34h48c24 -1 38 -22 42 -34l29 -104c6 -23 -21 -32 -27 -10l-26 96h-9l46 -169h-43v-127c0 -23 -31 -23 -31 0v127h-10v-127c0 -23 -32 -23 -32 0v127h-42l45 169h-7l-27 -96c-7 -21 -33 -13 -27 10zM133 379c0 -21 -17 -37 -37 -37s-37 16 -37 37
+s17 37 37 37s37 -16 37 -37z" />
+    <glyph glyph-name="ion-wrench" unicode="&#xf2ba;" 
+d="M430 333c14 -14 19 -31 18 -44s-6 -39 -32 -65s-77 -42 -113 -24c-5 3 -13 5 -21 -3c-10 -9 -202 -215 -202 -215c-17 -19 -48 -18 -66 0s-19 49 0 66c0 0 207 194 215 202s5 16 3 22c-20 47 2 89 24 112c22 24 51 31 65 32c13 1 31 -5 44 -18l-57 -56l10 -56l55 -10z
+M59 5c6 6 6 17 0 23s-16 6 -22 0s-6 -17 0 -23s16 -6 22 0z" />
+    <glyph glyph-name="ion-xbox" unicode="&#xf30c;" 
+d="M95 200c-49 -72 -50 -139 -50 -143c-28 38 -45 84 -45 135c0 67 30 128 77 169l3 -1c51 -18 93 -68 93 -68s-38 -33 -78 -92zM448 192c0 -51 -17 -97 -45 -135c0 4 -1 71 -50 143c-40 59 -78 92 -78 92s42 50 93 68l3 1c47 -41 77 -102 77 -169zM169 367
+c-37 17 -65 12 -72 10c36 25 80 39 127 39s91 -14 127 -39c-7 2 -35 6 -72 -10c-29 -13 -55 -35 -55 -35s-26 22 -55 35zM327 155c40 -49 54 -85 62 -108l2 -5c-41 -46 -101 -74 -167 -74s-126 28 -167 74l1 5c8 23 23 59 63 108c46 57 103 94 103 94s57 -37 103 -94z" />
+  </font>
+</defs></svg>
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.ttf b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.ttf
new file mode 100644
index 0000000..c4e4632
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.ttf
Binary files differ
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.woff b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.woff
new file mode 100644
index 0000000..5f3a14e
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/fonts/ionicons.woff
Binary files differ
diff --git a/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/readme.md b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/readme.md
new file mode 100644
index 0000000..f530251
--- /dev/null
+++ b/ecomp-portal-FE-os/client/bower_components_external/ionicons-2.0.1/readme.md
@@ -0,0 +1,60 @@
+# Ionicons
+
+
+The premium icon font for [Ionic](http://ionicframework.com/). Designed by [@benjsperry](https://twitter.com/benjsperry).
+
+Note: All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Drifty, nor vice versa.
+
+Visit [ionicons.com](http://ionicons.com) and  check out the search feature, which has keywords identifying common icon names and styles. For example, if you search for “arrow” we call up every icon that could possibly be used as an arrow. We’ve also included each icon’s class name for easy copy/pasting when you’re developing!
+
+We intend for this icon pack to be used with [Ionic](http://ionicframework.com/), but it’s by no means limited to it. Use them wherever you see fit, personal or commercial. They are free to use and licensed under [MIT](http://opensource.org/licenses/MIT).
+
+
+## Getting Started
+
+ 1. Download and extract the font pack
+ 2. Copy the `ionicons.css` to your project
+ 3. Copy the `fonts` folder to your project
+ 4. Ensure the font urls within `ionicons.css` properly reference the `fonts` path within your project.
+ 5. Include a reference to the `ionicons.css` file from every webpage you need to use it.
+
+Or install with [component](https://github.com/component/component):
+
+    $ component install driftyco/ionicons
+    
+Or perhaps you're known to use [bower](http://bower.io/)?
+   
+    $ bower install ionicons
+
+
+## HTML Example
+
+You can use [ionicons.com](http://ionicons.com) to easily find the icon you want to use. Once you've copied the desired icon's CSS classname, simply add the `icon` and icon's classname, such as `ion-home` to an HTML element.
+
+    <i class="icon ion-home"></i>
+
+
+## Build Instructions
+
+This repo already comes with all the files built and ready to go, but can also build the fonts from the source. Requires Python, FontForge and Sass:
+
+1) Install FontForge, which is the program that creates the font files from the SVG files:
+
+    $ brew install fontforge ttfautohint
+
+2) Install [Sass](http://sass-lang.com/)
+
+    $ gem install sass
+
+3) Add or subtract files from the `src/` folder you'd like to be apart of the font files.
+
+4) Modify any settings in the `builder/manifest.json` file. You can change the name of the font-family and CSS classname prefix.
+
+5) Run the build command:
+
+    python ./builder/generate.py
+
+
+## License
+
+Ionicons is licensed under the [MIT license](http://opensource.org/licenses/MIT).
diff --git a/ecomp-portal-FE-os/client/configurations/dev.json b/ecomp-portal-FE-os/client/configurations/dev.json
new file mode 100644
index 0000000..6d6c4ca
--- /dev/null
+++ b/ecomp-portal-FE-os/client/configurations/dev.json
@@ -0,0 +1,93 @@
+{
+	"api": {
+		"userApps": "http://localhost:8080/ecompportal/portalApi/userApps",
+		"persUserApps": "http://localhost:8080/ecompportal/portalApi/persUserApps",
+		"appCatalog": "http://localhost:8080/ecompportal/portalApi/appCatalog",
+		"accountAdmins": "http://localhost:8080/ecompportal/portalApi/accountAdmins",
+		"availableApps": "http://localhost:8080/ecompportal/portalApi/availableApps",
+		"allAvailableApps": "http://localhost:8080/ecompportal/portalApi/allAvailableApps",
+		"userProfile": "http://localhost:8080/ecompportal/portalApi/userProfile",
+		"queryUsers": "http://localhost:8080/ecompportal/portalApi/queryUsers",
+		"adminAppsRoles": "http://localhost:8080/ecompportal/portalApi/adminAppsRoles",
+		"adminApps": "http://localhost:8080/ecompportal/portalApi/adminApps",
+		"appsForSuperAdminAndAccountAdmin": "http://localhost:8080/ecompportal/portalApi/appsForSuperAdminAndAccountAdmin",
+		"accountUsers": "http://localhost:8080/ecompportal/portalApi/app/:appId/users",
+		"saveNewUser": "http://localhost:8080/ecompportal-be-os/portalApi/saveNewUser",
+		"userAppRoles": "http://localhost:8080/ecompportal/portalApi/userAppRoles",
+		"onboardingApps": "http://localhost:8080/ecompportal/portalApi/onboardingApps",
+		"widgets": "http://localhost:8080/ecompportal/portalApi/widgets",
+		"widgetsValidation": "http://localhost:8080/ecompportal/portalApi/widgets/validation",
+		"functionalMenuForAuthUser": "http://localhost:8080/ecompportal/portalApi/functionalMenuForAuthUser",
+		"functionalMenuForEditing": "http://localhost:8080/ecompportal/portalApi/functionalMenuForEditing",
+		"functionalMenuForNotificationTree": "http://localhost:8080/ecompportal/portalApi/functionalMenuForNotificationTree",
+		"functionalMenu": "http://localhost:8080/ecompportal/portalApi/functionalMenu",
+		"functionalMenuItemDetails": "http://localhost:8080/ecompportal/portalApi/functionalMenuItemDetails/:menuId",
+		"appRoles": "http://localhost:8080/ecompportal/portalApi/appRoles/:appId",
+		"appThumbnail": "http://localhost:8080/ecompportal/portalApi/appThumbnail/:appId",
+		"functionalMenuItem": "http://localhost:8080/ecompportal/portalApi/functionalMenuItem",
+		"regenerateFunctionalMenuAncestors": "http://localhost:8080/ecompportal/portalApi/regenerateFunctionalMenuAncestors",
+		"listOfApp": "http://localhost:8080/ecompportal/portalApi/getAppList",
+		"setFavoriteItem": "http://localhost:8080/ecompportal/portalApi/setFavoriteItem",
+		"getFavoriteItems": "http://localhost:8080/ecompportal/portalApi/getFavoriteItems",
+		"removeFavoriteItem": "http://localhost:8080/ecompportal/portalApi/removeFavoriteItem/:menuId",
+		"ping": "http://localhost:8080/ecompportal/portalApi/ping",
+		"functionalMenuStaticInfo": "http://localhost:8080/ecompportal/portalApi/functionalMenuStaticInfo",
+		"portalAdmins": "http://localhost:8080/ecompportal/portalApi/portalAdmins",
+		"portalAdmin": "http://localhost:8080/ecompportal/portalApi/portalAdmin",
+		"getManifest": "http://localhost:8080/ecompportal/portalApi/manifest",
+		"getActiveUser": "http://localhost:8080/ecompportal/portalApi/dashboard/activeUsers",
+		"getSearchAllByStringResults": "http://localhost:8080/ecompportal/portalApi/dashboard/search",
+		"commonWidget": "http://localhost:8080/ecompportal/portalApi/dashboard/widgetData",
+		"deleteCommonWidget": "http://localhost:8080/ecompportal/portalApi/dashboard/deleteData",
+		"getContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/list",
+		"getAppsAndContacts": "http://localhost:8080/ecompportal/portalApi/contactus/allapps",
+		"saveContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/save",
+		"deleteContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/delete",
+		"getContactUSPortalDetails": "http://localhost:8080/ecompportal/portalApi/contactus/feedback",
+		"getAppCategoryFunctions": "http://localhost:8080/ecompportal/portalApi/contactus/functions",
+		"onlineUserUpdateRate": "http://localhost:8080/ecompportal/portalApi/dashboard/onlineUserUpdateRate",
+		"storeAuditLog": "http://localhost:8080/ecompportal/portalApi/auditLog/store",
+		"leftmenuItems": "http://localhost:8080/ecompportal/portalApi/leftmenuItems",
+		"getFunctionalMenuRole":"http://localhost:8080/ecompportal/portalApi/getFunctionalMenuRole",
+		"getNotifications": "http://localhost:8080/ecompportal/portalApi/getNotifications",
+		"getMessageRecipients": "http://localhost:8080/ecompportal/portalApi/getMessageRecipients",
+		"getAdminNotifications": "http://localhost:8080/ecompportal/portalApi/getAdminNotifications",
+		"getAllAppRoleIds": "http://localhost:8080/ecompportal/portalApi/getNotificationAppRoles",
+		"getNotificationHistory": "http://localhost:8080/ecompportal/portalApi/getNotificationHistory",
+		"notificationUpdateRate": "http://localhost:8080/ecompportal/portalApi/notificationUpdateRate",
+		"notificationRead": "http://localhost:8080/ecompportal/portalApi/notificationRead",
+		"saveNotification": "http://localhost:8080/ecompportal/portalApi/saveNotification",
+		"getNotificationRoles":"http://localhost:8080/ecompportal/portalApi/notificationRole",
+		"getRole": "http://localhost:8080/ecompportal/portalApi/get_role",
+		"getRoles": "http://localhost:8080/ecompportal/portalApi/get_roles",
+		"toggleRole": "http://localhost:8080/ecompportal/portalApi/role_list/toggleRole",
+		"removeRole": "http://localhost:8080/ecompportal/portalApi/role_list/removeRole",
+		"saveRole": "http://localhost:8080/ecompportal/portalApi/role/saveRole.htm",
+		"toggleRoleRoleFunction": "http://localhost:8080/ecompportal/portalApi/role/removeRoleFunction.htm",
+		"addRoleRoleFunction": "http://localhost:8080/ecompportal/portalApi/role/addRoleFunction.htm",
+		"toggleRoleChildRole": "http://localhost:8080/ecompportal/portalApi/role/removeChildRole.htm",
+		"addRoleChildRole": "http://localhost:8080/ecompportal/portalApi/role/addChildRole.htm",
+		"getRoleFunctions": "http://localhost:8080/ecompportal/portalApi/get_role_functions",
+		"saveRoleFunction": "http://localhost:8080/ecompportal/portalApi/role_function_list/saveRoleFunction.htm",
+		"removeRoleFunction": "http://localhost:8080/ecompportal/portalApi/role_function_list/removeRoleFunction.htm",
+       	"userAppsOrderBySortPref": "http://localhost:8080/ecompportal/portalApi/userAppsOrderBySortPref",
+	   	"userAppsOrderByName": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByName",
+        "saveUserAppsSortingPreference": "http://localhost:8080/ecompportal/portalApi/saveUserAppsSortingPreference",
+        "userAppsSortTypePreference": "http://localhost:8080/ecompportal/portalApi/userAppsSortTypePreference",
+        "userAppsOrderByLastUsed": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByLastUsed",
+        "userAppsOrderByMostUsed": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByMostUsed",
+        "userAppsOrderByManual": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByManual",
+        "saveUserAppsSortingManual": "http://localhost:8080/ecompportal/portalApi/saveUserAppsSortingManual",
+        "saveUserWidgetsSortManual": "http://localhost:8080/ecompportal/portalApi/saveUserWidgetsSortManual",
+        "updateWidgetsSortPref": "http://localhost:8080/ecompportal/portalApi/updateWidgetsSortPref",    
+        "UpdateUserAppsSortManual": "http://localhost:8080/ecompportal/portalApi/UpdateUserAppsSortManual",
+	   	"widgetCatalogSelection": "http://localhost:8080/ecompportal/portalApi/widgetCatalogSelection",
+	   	"widgetCommon": "http://localhost:8080/ecompportal/portalApi/microservices",
+	   	"getWidthThresholdLeftMenu":"http://localhost:8080/ecompportal/portalApi/dashboard/windowWidthThresholdLeftMenu",
+        "getWidthThresholdRightMenu":"http://localhost:8080/ecompportal/portalApi/dashboard/windowWidthThresholdRightMenu",
+	   	"appCatalogRoles" : "http://localhost:8080/ecompportal/portalApi/appCatalogRoles",
+	   	"saveUserAppRoles":"http://localhost:8080/ecompportal/portalApi/saveUserAppRoles",
+	   	"userApplicationRoles":"http://localhost:8080/ecompportal/portalApi/userApplicationRoles"
+	},
+	"cookieDomain": "org.openecomp"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/configurations/devServer.json b/ecomp-portal-FE-os/client/configurations/devServer.json
new file mode 100644
index 0000000..39660b1
--- /dev/null
+++ b/ecomp-portal-FE-os/client/configurations/devServer.json
@@ -0,0 +1,101 @@
+{
+	"api": {
+		"userApps": "http://localhost:8080/ecompportal/portalApi/userApps",
+		"persUserApps": "http://localhost:8080/ecompportal/portalApi/persUserApps",
+		"appCatalog": "http://localhost:8080/ecompportal/portalApi/appCatalog",
+		"accountAdmins": "http://localhost:8080/ecompportal/portalApi/accountAdmins",
+		"availableApps": "http://localhost:8080/ecompportal/portalApi/availableApps",
+		"allAvailableApps": "http://localhost:8080/ecompportal/portalApi/allAvailableApps",
+		"userProfile": "http://localhost:8080/ecompportal/portalApi/userProfile",
+		"queryUsers": "http://localhost:8080/ecompportal/portalApi/queryUsers",
+		"adminAppsRoles": "http://localhost:8080/ecompportal/portalApi/adminAppsRoles",
+		"adminApps": "http://localhost:8080/ecompportal/portalApi/adminApps",
+		"appsForSuperAdminAndAccountAdmin": "http://localhost:8080/ecompportal/portalApi/appsForSuperAdminAndAccountAdmin",
+		"accountUsers": "http://localhost:8080/ecompportal/portalApi/app/:appId/users",
+		"userAppRoles": "http://localhost:8080/ecompportal/portalApi/userAppRoles",
+		"onboardingApps": "http://localhost:8080/ecompportal/portalApi/onboardingApps",
+		"widgets": "http://localhost:8080/ecompportal/portalApi/widgets",
+		"widgetsValidation": "http://localhost:8080/ecompportal/portalApi/widgets/validation",
+		"functionalMenuForAuthUser": "http://localhost:8080/ecompportal/portalApi/functionalMenuForAuthUser",
+		"functionalMenuForEditing": "http://localhost:8080/ecompportal/portalApi/functionalMenuForEditing",
+		"functionalMenuForNotificationTree": "http://localhost:8080/ecompportal/portalApi/functionalMenuForNotificationTree",
+		"functionalMenu": "http://localhost:8080/ecompportal/portalApi/functionalMenu",
+		"functionalMenuItemDetails": "http://localhost:8080/ecompportal/portalApi/functionalMenuItemDetails/:menuId",
+		"appRoles": "http://localhost:8080/ecompportal/portalApi/appRoles/:appId",
+		"functionalMenuItem": "http://localhost:8080/ecompportal/portalApi/functionalMenuItem",
+		"regenerateFunctionalMenuAncestors": "http://localhost:8080/ecompportal/portalApi/regenerateFunctionalMenuAncestors",
+		"listOfApp": "http://localhost:8080/ecompportal/portalApi/getAppList",
+		"setFavoriteItem": "http://localhost:8080/ecompportal/portalApi/setFavoriteItem",
+		"getFavoriteItems": "http://localhost:8080/ecompportal/portalApi/getFavoriteItems",
+		"removeFavoriteItem": "http://localhost:8080/ecompportal/portalApi/removeFavoriteItem/:menuId",
+		"ping": "http://localhost:8080/ecompportal/portalApi/ping",
+		"functionalMenuStaticInfo": "http://localhost:8080/ecompportal/portalApi/functionalMenuStaticInfo",
+		"portalAdmins": "http://localhost:8080/ecompportal/portalApi/portalAdmins",
+		"portalAdmin": "http://localhost:8080/ecompportal/portalApi/portalAdmin",
+		"getKpiDashUserStoriesStats": "http://localhost:8080/ecompportal/portalApi/get_user_stories_stats",
+		"getKpiDashUserApiStats": "http://localhost:8080/ecompportal/portalApi/get_user_api_stats",
+		"getKpiDashLocStats": "http://localhost:8080/ecompportal/portalApi/get_loc_stats",
+		"getKpiDashLocStatsCat": "http://localhost:8080/ecompportal/portalApi/get_loc_stats_cat",
+		"getKpiDashServiceSupported": "http://localhost:8080/ecompportal/portalApi/get_kpi_service_supported",
+		"getKpiDashPublishedDelivered": "http://localhost:8080/ecompportal/portalApi/execute_get_published_delivered",
+		"getKpiDashFeedStats": "http://localhost:8080/ecompportal/portalApi/execute_get_feed_stats",
+		"getKpiDashUserApis": "http://localhost:8080/ecompportal/portalApi/get_user_api_stats",
+		"getKpiDashGeoMapUrl": "http://localhost:8080/ecompportal/portalApi/get_geo_map_url",
+		"getKpiDashRCloudAUrl": "http://localhost:8080/ecompportal/portalApi/get_rcloud_a_url",
+		"getKpiDashGeoMapApiUrl": "http://localhost:8080/ecompportal/portalApi/get_geo_map_api_url",
+		"getManifest": "http://localhost:8080/ecompportal/portalApi/manifest",
+		"getActiveUser": "http://localhost:8080/ecompportal/portalApi/dashboard/activeUsers",
+		"getSearchAllByStringResults": "http://localhost:8080/ecompportal/portalApi/dashboard/search",
+		"commonWidget": "http://localhost:8080/ecompportal/portalApi/dashboard/widgetData",
+		"deleteCommonWidget": "http://localhost:8080/ecompportal/portalApi/dashboard/deleteData",
+		"getContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/list",
+		"getAppsAndContacts": "http://localhost:8080/ecompportal/portalApi/contactus/allapps",
+		"saveContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/save",
+		"deleteContactUS": "http://localhost:8080/ecompportal/portalApi/contactus/delete",
+		"getContactUSPortalDetails": "http://localhost:8080/ecompportal/portalApi/contactus/feedback",
+		"getAppCategoryFunctions": "http://localhost:8080/ecompportal/portalApi/contactus/functions",
+		"onlineUserUpdateRate": "http://localhost:8080/ecompportal/portalApi/dashboard/onlineUserUpdateRate",
+		"storeAuditLog": "http://localhost:8080/ecompportal/portalApi/auditLog/store",
+		"leftmenuItems": "http://localhost:8080/ecompportal/portalApi/leftmenuItems",
+		"getFunctionalMenuRole":"http://localhost:8080/ecompportal/portalApi/getFunctionalMenuRole",
+		"getNotifications": "http://localhost:8080/ecompportal/portalApi/getNotifications",
+		"getAdminNotifications": "http://localhost:8080/ecompportal/portalApi/getAdminNotifications",
+		"getAllAppRoleIds": "http://localhost:8080/ecompportal/portalApi/getNotificationAppRoles",
+		"getNotificationHistory": "http://localhost:8080/ecompportal/portalApi/getNotificationHistory",
+		"notificationUpdateRate": "http://localhost:8080/ecompportal/portalApi/notificationUpdateRate",
+		"notificationRead": "http://localhost:8080/ecompportal/portalApi/notificationRead",
+		"saveNotification": "http://localhost:8080/ecompportal/portalApi/saveNotification",
+		"getNotificationRoles":"http://localhost:8080/ecompportal/portalApi/notificationRole",
+		"getRole": "http://localhost:8080/ecompportal/portalApi/get_role",
+		"getRoles": "http://localhost:8080/ecompportal/portalApi/get_roles",
+		"toggleRole": "http://localhost:8080/ecompportal/portalApi/role_list/toggleRole",
+		"removeRole": "http://localhost:8080/ecompportal/portalApi/role_list/removeRole",
+		"saveRole": "http://localhost:8080/ecompportal/portalApi/role/saveRole.htm",
+		"toggleRoleRoleFunction": "http://localhost:8080/ecompportal/portalApi/role/removeRoleFunction.htm",
+		"addRoleRoleFunction": "http://localhost:8080/ecompportal/portalApi/role/addRoleFunction.htm",
+		"toggleRoleChildRole": "http://localhost:8080/ecompportal/portalApi/role/removeChildRole.htm",
+		"addRoleChildRole": "http://localhost:8080/ecompportal/portalApi/role/addChildRole.htm",
+		"getRoleFunctions": "http://localhost:8080/ecompportal/portalApi/get_role_functions",
+		"saveRoleFunction": "http://localhost:8080/ecompportal/portalApi/role_function_list/saveRoleFunction.htm",
+		"removeRoleFunction": "http://localhost:8080/ecompportal/portalApi/role_function_list/removeRoleFunction.htm",
+       	"userAppsOrderBySortPref": "http://localhost:8080/ecompportal/portalApi/userAppsOrderBySortPref",
+	   	"userAppsOrderByName": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByName",
+        "saveUserAppsSortingPreference": "http://localhost:8080/ecompportal/portalApi/saveUserAppsSortingPreference",
+        "userAppsSortTypePreference": "http://localhost:8080/ecompportal/portalApi/userAppsSortTypePreference",
+        "userAppsOrderByLastUsed": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByLastUsed",
+        "userAppsOrderByMostUsed": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByMostUsed",
+        "userAppsOrderByManual": "http://localhost:8080/ecompportal/portalApi/userAppsOrderByManual",
+        "saveUserAppsSortingManual": "http://localhost:8080/ecompportal/portalApi/saveUserAppsSortingManual",
+        "saveUserWidgetsSortManual": "http://localhost:8080/ecompportal/portalApi/saveUserWidgetsSortManual",
+        "updateWidgetsSortPref": "http://localhost:8080/ecompportal/portalApi/updateWidgetsSortPref",    
+        "UpdateUserAppsSortManual": "http://localhost:8080/ecompportal/portalApi/UpdateUserAppsSortManual",
+	   	"widgetCatalogSelection": "http://localhost:8080/ecompportal/portalApi/widgetCatalogSelection",
+	   	"widgetCommon": "http://localhost:8080/ecompportal/portalApi/microservices",
+	   	"getWidthThresholdLeftMenu":"http://localhost:8080/ecompportal/portalApi/dashboard/windowWidthThresholdLeftMenu",
+        "getWidthThresholdRightMenu":"http://localhost:8080/ecompportal/portalApi/dashboard/windowWidthThresholdRightMenu",
+	   	"appCatalogRoles" : "http://localhost:8080/ecompportal/portalApi/appCatalogRoles",
+	   	"saveUserAppRoles":"http://localhost:8080/ecompportal/portalApi/saveUserAppRoles",
+	   	"userApplicationRoles":"http://localhost:8080/ecompportal/portalApi/userApplicationRoles"
+	},
+	"cookieDomain": "openecomp.org"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/configurations/integ.json b/ecomp-portal-FE-os/client/configurations/integ.json
new file mode 100644
index 0000000..15571a2
--- /dev/null
+++ b/ecomp-portal-FE-os/client/configurations/integ.json
@@ -0,0 +1,93 @@
+{
+	"api": {
+		"userApps": "portalApi/userApps",
+		"persUserApps": "portalApi/persUserApps",
+		"appCatalog": "portalApi/appCatalog",
+		"accountAdmins": "portalApi/accountAdmins",
+		"availableApps": "portalApi/availableApps",
+		"allAvailableApps": "portalApi/allAvailableApps",
+		"userProfile": "portalApi/userProfile",
+		"queryUsers": "portalApi/queryUsers",
+		"adminAppsRoles": "portalApi/adminAppsRoles",
+		"adminApps": "portalApi/adminApps",
+		"appsForSuperAdminAndAccountAdmin": "portalApi/appsForSuperAdminAndAccountAdmin",
+		"accountUsers": "portalApi/app/:appId/users",
+		"saveNewUser": "portalApi/saveNewUser",
+		"userAppRoles": "portalApi/userAppRoles",
+		"onboardingApps": "portalApi/onboardingApps",
+		"widgets": "portalApi/widgets",
+		"widgetsValidation": "portalApi/widgets/validation",
+		"functionalMenuForAuthUser": "portalApi/functionalMenuForAuthUser",
+		"functionalMenuForEditing": "portalApi/functionalMenuForEditing",
+		"functionalMenuForNotificationTree": "portalApi/functionalMenuForNotificationTree",
+		"functionalMenu": "portalApi/functionalMenu",
+		"functionalMenuItemDetails": "portalApi/functionalMenuItemDetails/:menuId",
+		"appRoles": "portalApi/appRoles/:appId",
+		"appThumbnail": "portalApi/appThumbnail/:appId",
+		"functionalMenuItem": "portalApi/functionalMenuItem",
+		"regenerateFunctionalMenuAncestors": "portalApi/regenerateFunctionalMenuAncestors",
+		"listOfApp": "portalApi/getAppList",
+		"setFavoriteItem": "portalApi/setFavoriteItem",
+		"getFavoriteItems": "portalApi/getFavoriteItems",
+		"removeFavoriteItem": "portalApi/removeFavoriteItem/:menuId",
+		"ping": "portalApi/ping",
+		"functionalMenuStaticInfo": "portalApi/functionalMenuStaticInfo",
+		"portalAdmins": "portalApi/portalAdmins",
+		"portalAdmin": "portalApi/portalAdmin",
+		"getManifest": "portalApi/manifest",
+		"getActiveUser": "portalApi/dashboard/activeUsers",
+		"getSearchAllByStringResults": "portalApi/dashboard/search",
+		"commonWidget": "portalApi/dashboard/widgetData",
+		"deleteCommonWidget": "portalApi/dashboard/deleteData",
+		"getContactUS": "portalApi/contactus/list",
+		"getAppsAndContacts": "portalApi/contactus/allapps",
+		"saveContactUS": "portalApi/contactus/save",
+		"deleteContactUS": "portalApi/contactus/delete",
+		"getContactUSPortalDetails": "portalApi/contactus/feedback",
+		"getAppCategoryFunctions": "portalApi/contactus/functions",
+		"onlineUserUpdateRate": "portalApi/dashboard/onlineUserUpdateRate",
+		"storeAuditLog": "portalApi/auditLog/store",
+		"leftmenuItems": "portalApi/leftmenuItems",
+		"getFunctionalMenuRole":"portalApi/getFunctionalMenuRole",
+		"getNotifications": "portalApi/getNotifications",
+		"getMessageRecipients":"portalApi/getMessageRecipients",
+		"getAdminNotifications": "portalApi/getAdminNotifications",
+		"getAllAppRoleIds": "portalApi/getNotificationAppRoles",
+		"getNotificationHistory": "portalApi/getNotificationHistory",
+		"notificationUpdateRate": "portalApi/notificationUpdateRate",
+		"notificationRead": "portalApi/notificationRead",
+		"saveNotification": "portalApi/saveNotification",
+		"getNotificationRoles":"portalApi/notificationRole",
+		"getRole": "portalApi/get_role",
+		"getRoles": "portalApi/get_roles",
+		"toggleRole": "portalApi/role_list/toggleRole",
+		"removeRole": "portalApi/role_list/removeRole",
+		"saveRole": "portalApi/role/saveRole.htm",
+		"toggleRoleRoleFunction": "portalApi/role/removeRoleFunction.htm",
+		"addRoleRoleFunction": "portalApi/role/addRoleFunction.htm",
+		"toggleRoleChildRole": "portalApi/role/removeChildRole.htm",
+		"addRoleChildRole": "portalApi/role/addChildRole.htm",
+		"getRoleFunctions": "portalApi/get_role_functions",
+		"saveRoleFunction": "portalApi/role_function_list/saveRoleFunction.htm",
+		"removeRoleFunction": "portalApi/role_function_list/removeRoleFunction.htm",
+       	"userAppsOrderBySortPref": "portalApi/userAppsOrderBySortPref",
+	   	"userAppsOrderByName": "portalApi/userAppsOrderByName",
+        "saveUserAppsSortingPreference": "portalApi/saveUserAppsSortingPreference",
+        "userAppsSortTypePreference": "portalApi/userAppsSortTypePreference",
+        "userAppsOrderByLastUsed": "portalApi/userAppsOrderByLastUsed",
+        "userAppsOrderByMostUsed": "portalApi/userAppsOrderByMostUsed",
+        "userAppsOrderByManual": "portalApi/userAppsOrderByManual",
+        "saveUserAppsSortingManual": "portalApi/saveUserAppsSortingManual",
+        "saveUserWidgetsSortManual": "portalApi/saveUserWidgetsSortManual",
+        "updateWidgetsSortPref": "portalApi/updateWidgetsSortPref",    
+        "UpdateUserAppsSortManual": "portalApi/UpdateUserAppsSortManual",
+	   	"widgetCatalogSelection": "portalApi/widgetCatalogSelection",
+	   	"widgetCommon": "portalApi/microservices",
+	   	"getWidthThresholdLeftMenu":"portalApi/dashboard/windowWidthThresholdLeftMenu",
+        "getWidthThresholdRightMenu":"portalApi/dashboard/windowWidthThresholdRightMenu",
+	   	"appCatalogRoles" : "portalApi/appCatalogRoles",
+	   	"saveUserAppRoles":"portalApi/saveUserAppRoles",
+	   	"userApplicationRoles":"portalApi/userApplicationRoles"
+	},
+	"cookieDomain": "openecomp.org"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/configurations/mock.json b/ecomp-portal-FE-os/client/configurations/mock.json
new file mode 100644
index 0000000..20962f1
--- /dev/null
+++ b/ecomp-portal-FE-os/client/configurations/mock.json
@@ -0,0 +1,101 @@
+{
+	"api": {
+		"userApps": "http://localhost:9001/ecompportal/portalApi/userApps",
+		"persUserApps": "http://localhost:9001/ecompportal/portalApi/persUserApps",
+		"appCatalog": "http://localhost:9001/ecompportal/portalApi/appCatalog",
+		"accountAdmins": "http://localhost:9001/ecompportal/portalApi/accountAdmins",
+		"availableApps": "http://localhost:9001/ecompportal/portalApi/availableApps",
+		"allAvailableApps": "http://localhost:9001/ecompportal/portalApi/allAvailableApps",
+		"userProfile": "http://localhost:9001/ecompportal/portalApi/userProfile",
+		"queryUsers": "http://localhost:9001/ecompportal/portalApi/queryUsers",
+		"adminAppsRoles": "http://localhost:9001/ecompportal/portalApi/adminAppsRoles",
+		"adminApps": "http://localhost:9001/ecompportal/portalApi/adminApps",
+		"appsForSuperAdminAndAccountAdmin": "http://localhost:9001/ecompportal/portalApi/appsForSuperAdminAndAccountAdmin",
+		"accountUsers": "http://localhost:9001/ecompportal/portalApi/app/:appId/users",
+		"userAppRoles": "http://localhost:9001/ecompportal/portalApi/userAppRoles",
+		"onboardingApps": "http://localhost:9001/ecompportal/portalApi/onboardingApps",
+		"widgets": "http://localhost:9001/ecompportal/portalApi/widgets",
+		"widgetsValidation": "http://localhost:9001/ecompportal/portalApi/widgets/validation",
+		"functionalMenuForAuthUser": "http://localhost:9001/ecompportal/portalApi/functionalMenuForAuthUser",
+		"functionalMenuForEditing": "http://localhost:9001/ecompportal/portalApi/functionalMenuForEditing",
+		"functionalMenuForNotificationTree": "http://localhost:9001/ecompportal/portalApi/functionalMenuForNotificationTree",
+		"functionalMenu": "http://localhost:9001/ecompportal/portalApi/functionalMenu",
+		"functionalMenuItemDetails": "http://localhost:9001/ecompportal/portalApi/functionalMenuItemDetails/:menuId",
+		"appRoles": "http://localhost:9001/ecompportal/portalApi/appRoles/:appId",
+		"functionalMenuItem": "http://localhost:9001/ecompportal/portalApi/functionalMenuItem",
+		"regenerateFunctionalMenuAncestors": "http://localhost:9001/ecompportal/portalApi/regenerateFunctionalMenuAncestors",
+		"listOfApp": "http://localhost:9001/ecompportal/portalApi/getAppList",
+		"setFavoriteItem": "http://localhost:9001/ecompportal/portalApi/setFavoriteItem",
+		"getFavoriteItems": "http://localhost:9001/ecompportal/portalApi/getFavoriteItems",
+		"removeFavoriteItem": "http://localhost:9001/ecompportal/portalApi/removeFavoriteItem/:menuId",
+		"ping": "http://localhost:9001/ecompportal/portalApi/ping",
+		"functionalMenuStaticInfo": "http://localhost:9001/ecompportal/portalApi/functionalMenuStaticInfo",
+		"portalAdmins": "http://localhost:9001/ecompportal/portalApi/portalAdmins",
+		"portalAdmin": "http://localhost:9001/ecompportal/portalApi/portalAdmin",
+		"getKpiDashUserStoriesStats": "http://localhost:9001/ecompportal/portalApi/get_user_stories_stats",
+		"getKpiDashUserApiStats": "http://localhost:9001/ecompportal/portalApi/get_user_api_stats",
+		"getKpiDashLocStats": "http://localhost:9001/ecompportal/portalApi/get_loc_stats",
+		"getKpiDashLocStatsCat": "http://localhost:9001/ecompportal/portalApi/get_loc_stats_cat",
+		"getKpiDashServiceSupported": "http://localhost:9001/ecompportal/portalApi/get_kpi_service_supported",
+		"getKpiDashPublishedDelivered": "http://localhost:9001/ecompportal/portalApi/execute_get_published_delivered",
+		"getKpiDashFeedStats": "http://localhost:9001/ecompportal/portalApi/execute_get_feed_stats",
+		"getKpiDashUserApis": "http://localhost:9001/ecompportal/portalApi/get_user_api_stats",
+		"getKpiDashGeoMapUrl": "http://localhost:9001/ecompportal/portalApi/get_geo_map_url",
+		"getKpiDashRCloudAUrl": "http://localhost:9001/ecompportal/portalApi/get_rcloud_a_url",
+		"getKpiDashGeoMapApiUrl": "http://localhost:9001/ecompportal/portalApi/get_geo_map_api_url",
+		"getManifest": "http://localhost:9001/ecompportal/portalApi/manifest",
+		"getActiveUser": "http://localhost:9001/ecompportal/portalApi/dashboard/activeUsers",
+		"getSearchAllByStringResults": "http://localhost:9001/ecompportal/portalApi/dashboard/search",
+		"commonWidget": "http://localhost:9001/ecompportal/portalApi/dashboard/widgetData",
+		"deleteCommonWidget": "http://localhost:9001/ecompportal/portalApi/dashboard/deleteData",
+		"getContactUS": "http://localhost:9001/ecompportal/portalApi/contactus/list",
+		"getAppsAndContacts": "http://localhost:9001/ecompportal/portalApi/contactus/allapps",
+		"saveContactUS": "http://localhost:9001/ecompportal/portalApi/contactus/save",
+		"deleteContactUS": "http://localhost:9001/ecompportal/portalApi/contactus/delete",
+		"getContactUSPortalDetails": "http://localhost:9001/ecompportal/portalApi/contactus/feedback",
+		"getAppCategoryFunctions": "http://localhost:9001/ecompportal/portalApi/contactus/functions",
+		"onlineUserUpdateRate": "http://localhost:9001/ecompportal/portalApi/dashboard/onlineUserUpdateRate",
+		"storeAuditLog": "http://localhost:9001/ecompportal/portalApi/auditLog/store",
+		"leftmenuItems": "http://localhost:9001/ecompportal/portalApi/leftmenuItems",
+		"getFunctionalMenuRole":"http://localhost:9001/ecompportal/portalApi/getFunctionalMenuRole",
+		"getNotifications": "http://localhost:9001/ecompportal/portalApi/getNotifications",
+		"getAdminNotifications": "http://localhost:9001/ecompportal/portalApi/getAdminNotifications",
+		"getAllAppRoleIds": "http://localhost:9001/ecompportal/portalApi/getNotificationAppRoles",
+		"getNotificationHistory": "http://localhost:9001/ecompportal/portalApi/getNotificationHistory",
+		"notificationUpdateRate": "http://localhost:9001/ecompportal/portalApi/notificationUpdateRate",
+		"notificationRead": "http://localhost:9001/ecompportal/portalApi/notificationRead",
+		"saveNotification": "http://localhost:9001/ecompportal/portalApi/saveNotification",
+		"getNotificationRoles":"http://localhost:9001/ecompportal/portalApi/notificationRole",
+		"getRole": "http://localhost:9001/ecompportal/portalApi/get_role",
+		"getRoles": "http://localhost:9001/ecompportal/portalApi/get_roles",
+		"toggleRole": "http://localhost:9001/ecompportal/portalApi/role_list/toggleRole",
+		"removeRole": "http://localhost:9001/ecompportal/portalApi/role_list/removeRole",
+		"saveRole": "http://localhost:9001/ecompportal/portalApi/role/saveRole.htm",
+		"toggleRoleRoleFunction": "http://localhost:9001/ecompportal/portalApi/role/removeRoleFunction.htm",
+		"addRoleRoleFunction": "http://localhost:9001/ecompportal/portalApi/role/addRoleFunction.htm",
+		"toggleRoleChildRole": "http://localhost:9001/ecompportal/portalApi/role/removeChildRole.htm",
+		"addRoleChildRole": "http://localhost:9001/ecompportal/portalApi/role/addChildRole.htm",
+		"getRoleFunctions": "http://localhost:9001/ecompportal/portalApi/get_role_functions",
+		"saveRoleFunction": "http://localhost:9001/ecompportal/portalApi/role_function_list/saveRoleFunction.htm",
+		"removeRoleFunction": "http://localhost:9001/ecompportal/portalApi/role_function_list/removeRoleFunction.htm",
+       	"userAppsOrderBySortPref": "http://localhost:9001/ecompportal/portalApi/userAppsOrderBySortPref",
+	   	"userAppsOrderByName": "http://localhost:9001/ecompportal/portalApi/userAppsOrderByName",
+        "saveUserAppsSortingPreference": "http://localhost:9001/ecompportal/portalApi/saveUserAppsSortingPreference",
+        "userAppsSortTypePreference": "http://localhost:9001/ecompportal/portalApi/userAppsSortTypePreference",
+        "userAppsOrderByLastUsed": "http://localhost:9001/ecompportal/portalApi/userAppsOrderByLastUsed",
+        "userAppsOrderByMostUsed": "http://localhost:9001/ecompportal/portalApi/userAppsOrderByMostUsed",
+        "userAppsOrderByManual": "http://localhost:9001/ecompportal/portalApi/userAppsOrderByManual",
+        "saveUserAppsSortingManual": "http://localhost:9001/ecompportal/portalApi/saveUserAppsSortingManual",
+        "saveUserWidgetsSortManual": "http://localhost:9001/ecompportal/portalApi/saveUserWidgetsSortManual",
+        "updateWidgetsSortPref": "http://localhost:9001/ecompportal/portalApi/updateWidgetsSortPref",    
+        "UpdateUserAppsSortManual": "http://localhost:9001/ecompportal/portalApi/UpdateUserAppsSortManual",
+	   	"widgetCatalogSelection": "http://localhost:9001/ecompportal/portalApi/widgetCatalogSelection",
+	   	"widgetCommon": "http://localhost:9001/ecompportal/portalApi/microservices",
+	   	"getWidthThresholdLeftMenu":"http://localhost:9001/ecompportal/portalApi/dashboard/windowWidthThresholdLeftMenu",
+        "getWidthThresholdRightMenu":"http://localhost:9001/ecompportal/portalApi/dashboard/windowWidthThresholdRightMenu",
+	   	"appCatalogRoles" : "http://localhost:9001/ecompportal/portalApi/appCatalogRoles",
+	   	"saveUserAppRoles":"http://localhost:9001/ecompportal/portalApi/saveUserAppRoles",
+	   	"userApplicationRoles":"http://localhost:9001/ecompportal/portalApi/userApplicationRoles"
+	},
+	"cookieDomain": "openecomp.org"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/index.html b/ecomp-portal-FE-os/client/index.html
new file mode 100644
index 0000000..89620af
--- /dev/null
+++ b/ecomp-portal-FE-os/client/index.html
@@ -0,0 +1,301 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<!doctype html>
+<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title></title>
+    <meta name="description" content="">
+    <meta name="viewport" content="width=device-width">
+    <!--<base href="/ecompportal/">-->
+    <!--!!!!!!!!!!!!!!!!!!!!! moved base href from here to script tag in body, please change base href based on your server -->
+    <!-- nabil - add this part to gruntfile -->
+    <link rel="stylesheet" href="bower_components_external/ionicons-2.0.1/css/ionicons.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/base.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/btn.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/demo.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/dtpk.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/frms.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/sldr.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/style.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/tbs.css">
+    <link rel="stylesheet" href="bower_components_external/angular.att.abs-2.17.0/styles/pages/iconography.css">
+
+    <link rel="stylesheet" href="bower_components_external/angular-att-gridster/styles/ui-gridster.css">
+    <link rel="stylesheet" href="bower_components_external/angular-att-gridster/css/angular-gridster.css">
+    
+    <link rel="stylesheet" href="bower_components_external/b2b/css/b2b-angular/b2b-angular.css">
+    <link rel="stylesheet" href="bower_components_external/b2b/js/b2b-angular/font_icons.css">
+
+    
+    
+    <!-- end -->
+
+<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
+<!-- build:css(client) app/vendor.css -->
+<!-- bower:css -->
+<link rel="stylesheet" href="bower_components/angular-material/angular-material.css" />
+<link rel="stylesheet" href="bower_components/ui-select/dist/select.css" />
+<link rel="stylesheet" href="bower_components/ng-dialog/css/ngDialog.css" />
+<link rel="stylesheet" href="bower_components/ng-dialog/css/ngDialog-theme-default.css" />
+<link rel="stylesheet" href="bower_components/jqTree/jqtree.css" />
+<link rel="stylesheet" href="bower_components/angular-gridster/dist/angular-gridster.css" />
+<!-- endbower -->
+<!-- endbuild -->  
+
+<!-- kpi dashboard related styles -->
+<!--  kpi start -->
+<!--  kpi end -->
+
+
+<!-- build:css({.tmp,client}) app/app.css -->
+<link rel="stylesheet" href="app/app.css">
+<!-- injector:css -->
+<!-- endinjector -->
+<!-- endbuild -->
+
+	 <style>
+
+   html, body{
+    height: 100%;
+    overflow:hidden;
+	}
+
+    </style>
+
+</head>
+<body ng-app="ecompApp">
+<script>
+	    if (!String.prototype.includes) {
+		  String.prototype.includes = function(search, start) {
+		    'use strict';
+		    if (typeof start !== 'number') {
+		      start = 0;
+		    }
+
+		    if (start + search.length > this.length) {
+		      return false;
+		    } else {
+		      return this.indexOf(search, start) !== -1;
+		    }
+		  };
+		}
+
+	    function nthIndex(str, pat, n){
+	        var L= str.length, i= -1;
+	        while(n-- && i++<L){
+	        i= str.indexOf(pat, i);
+	        if (i < 0) break;
+	        }
+	         return i;
+        }
+
+	    
+		var base = window.location.pathname.substring(0, window.location.pathname.indexOf("/",2)+1);
+		document.write("<base href='" + base + "' />");
+
+		
+	    
+	   
+</script>
+
+<script type="text/javascript">
+
+	// onLoad='isCascadeFrame(this)'
+	if (self != top && !self.window.location.pathname.includes("unKnownError")) {
+	var e = document.body;
+	var parent = e.parentNode;
+	e.parentNode.removeChild(e);
+	//var textnode = document.createTextNode("An unknown error has occured. Please contact your system administrator"); 
+	//parent.appendChild(textnode);
+	window.location = "unKnownError";
+	}
+
+</script>
+
+<!--[if lt IE 7]>
+<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
+<![endif]-->
+
+<!-- Add your site or application content here -->
+<div ui-view="header"></div>
+<div ui-view="tabbar"></div>
+<div ng-show="ContentModel.IsVisible" class="slide">
+	<div ui-view="content"></div>
+	<div ui-view="sidebar"></div>
+	<div ui-view="userbar" style="float:right"></div>
+</div>
+<div ui-view="error"></div>
+<div ui-view="footer"></div>
+
+<!--[if lt IE 9]>
+<script src="../bower_components/es5-shim/es5-shim.js"></script>
+<script src="../bower_components/json3/lib/json3.min.js"></script>
+<![endif]-->
+<!-- build:js({client,node_modules}) app/vendor.js -->
+<!-- bower:js -->
+<script src="bower_components/jquery/dist/jquery.js"></script>
+<script src="bower_components/es5-shim/es5-shim.js"></script>
+<script src="bower_components/angular/angular.js"></script>
+<script src="bower_components/angular-animate/angular-animate.js"></script>
+<script src="bower_components/angular-route/angular-route.js"></script>
+<script src="bower_components/angular-aria/angular-aria.js"></script>
+<script src="bower_components/angular-messages/angular-messages.js"></script>
+<script src="bower_components/angular-material/angular-material.js"></script>
+<script src="bower_components/json3/lib/json3.js"></script>
+<script src="bower_components/angular-resource/angular-resource.js"></script>
+<script src="bower_components/angular-cookies/angular-cookies.js"></script>
+<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
+<script src="bower_components/lodash/lodash.js"></script>
+<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
+<script src="bower_components/ui-select/dist/select.js"></script>
+<script src="bower_components/angular-touch/angular-touch.js"></script>
+<script src="bower_components/angular-smart-table/dist/smart-table.js"></script>
+<script src="bower_components/hammerjs/hammer.js"></script>
+<script src="bower_components/angular-gestures/gestures.min.js"></script>
+<script src="bower_components/angular-cache/dist/angular-cache.js"></script>
+<script src="bower_components/ng-dialog/js/ngDialog.js"></script>
+<script src="bower_components/jqTree/tree.jquery.js"></script>
+<script src="bower_components/angular-uuid/uuid.min.js"></script>
+<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
+<script src="bower_components/jquery-mousewheel/jquery.mousewheel.js"></script>
+<script src="bower_components/jquery.newstape/dist/jquery.newstape.min.js"></script>
+<script src="bower_components/oclazyload/dist/ocLazyLoad.js"></script>
+<script src="bower_components/d3/index-browserify.js"></script>
+<script src="bower_components/javascript-detect-element-resize/detect-element-resize.js"></script>
+<script src="bower_components/angular-gridster/src/angular-gridster.js"></script>
+<!-- endbower -->
+<!-- endbuild -->
+
+<!-- nabil - add this part to gruntfile -->
+<script src="bower_components_external/angular.att.abs-2.17.0/att-abs-tpls.js"></script>
+<script src="bower_components_external/angular-att-gridster/ui-gridster-tpls.js"></script>
+<script src="bower_components_external/angular-gridster/angular-gridster.min.js"></script>
+<script src="bower_components_external/bowser/bowser.js"></script>
+
+
+
+
+<script src="bower_components_external/b2b/js/b2b-angular/b2b-library.min.js"></script>
+<!-- end-->
+
+<!-- Avoid ^M (control-M, i.e., carriage-return, i.e., Windows line endings here. -->
+
+<!-- build:js(.tmp) app/app.js -->
+<script src="app/app.js"></script>
+  <!-- injector:js -->
+  <script src="app/configurations.js"></script>
+  <script src="app/directives/auto-focus/auto-focus.directive.js"></script>
+  <script src="app/directives/b2b-leftnav-ext/b2b-leftnav-ext.directive.js"></script>
+  <script src="app/directives/file-upload/file-upload.directive.js"></script>
+  <script src="app/directives/image-upload/image-upload.directive.js"></script>
+  <script src="app/directives/left-menu/left-menu.directive.js"></script>
+  <script src="app/directives/multiple-select/multiple-select.directive.js"></script>
+  <script src="app/directives/multiple-select/multiple-select2.directive.js"></script>
+  <script src="app/directives/right-click-menu/right-click-menu.directive.js"></script>
+  <script src="app/directives/right-click/ng-right-click-directive.js"></script>
+  <script src="app/directives/right-menu/right-menu.directive.js"></script>
+  <script src="app/directives/scroll-top/scroll-top.directive.js"></script>
+  <script src="app/directives/search-users/search-users.controller.js"></script>
+  <script src="app/directives/search-users/search-users.directive.js"></script>
+  <script src="app/filters/elipsis/elipsis.filter.js"></script>
+  <script src="app/filters/trusted-url/trusted-url.filter.js"></script>
+  <script src="app/router.js"></script>
+  <script src="app/services/admins/admins.service.js"></script>
+  <script src="app/services/applications/applications.service.js"></script>
+  <script src="app/services/audit-log/audit-log.service.js"></script>
+  <script src="app/services/base64/base64.service.js"></script>
+  <script src="app/services/be-property-reader/be-property-reader.service.js"></script>
+  <script src="app/services/catalog/catalog.service.js"></script>
+  <script src="app/services/confirm-box/confirm-box.service.js"></script>
+  <script src="app/services/contact-us/contact-us.service.js"></script>
+  <script src="app/services/dashboard/dashboard.service.js"></script>
+  <script src="app/services/error-messages/error-messages.service.js"></script>
+  <script src="app/services/external-request-access-service/external-request-access-service.js"></script>
+  <script src="app/services/functionalMenu/functionalMenu.service.js"></script>
+  <script src="app/services/global-constants/global-constants.js"></script>
+  <script src="app/services/manifest/manifest.service.js"></script>
+  <script src="app/services/menus/menus.service.js"></script>
+  <script src="app/services/microservice/microservice.service.js"></script>
+  <script src="app/services/notification/notification.service.js"></script>
+  <script src="app/services/portal-admins/portal-admins.service.js"></script>
+  <script src="app/services/role/role.service.js"></script>
+  <script src="app/services/support/getAccess/get-access.service.js"></script>
+  <script src="app/services/support/session/session.service.js"></script>
+  <script src="app/services/userProfile/userProfile.service.js"></script>
+  <script src="app/services/userbar/userbar.update.service.js"></script>
+  <script src="app/services/users/users.service.js"></script>
+  <script src="app/services/utils/utils.service.js"></script>
+  <script src="app/services/widgets-catalog/widgets-catalog.service.js"></script>
+  <script src="app/services/widgets/widgets.service.js"></script>
+  <script src="app/views/admins/add-admin-dialogs/new-admin.controller.js"></script>
+  <script src="app/views/admins/admins.controller.js"></script>
+  <script src="app/views/applications/application-details-dialog/application-details.controller.js"></script>
+  <script src="app/views/applications/applications.controller.js"></script>
+  <script src="app/views/catalog/add-catalog-dialogs/new-catalog.controller.js"></script>
+  <script src="app/views/catalog/catalog.controller.js"></script>
+  <script src="app/views/catalog/catalogconfirmation.controller.js"></script>
+  <script src="app/views/confirmation-box/confirmation-box.controller.js"></script>
+  <script src="app/views/dashboard/dashboard-widget.controller.js"></script>
+  <script src="app/views/dashboard/dashboard.controller.js"></script>
+  <script src="app/views/dashboard/newsticker.controller.js"></script>
+  <script src="app/views/footer/footer.controller.js"></script>
+  <script src="app/views/functionalMenu/functionalMenu-dialog/menu-details.controller.js"></script>
+  <script src="app/views/functionalMenu/functionalMenu.controller.js"></script>
+  <script src="app/views/functionalMenu/jqTreeContextMenu.js"></script>
+  <script src="app/views/header/header.controller.js"></script>
+  <script src="app/views/microservice-onboarding/microservice-add-details/microservice-add-details.js"></script>
+  <script src="app/views/microservice-onboarding/microservice-onboarding.controller.js"></script>
+  <script src="app/views/notification-history/notificationhistory.controller.js"></script>
+  <script src="app/views/portal-admin/new-portal-admin/new-portal-admin.controller.js"></script>
+  <script src="app/views/portal-admin/portal-admin-controller.js"></script>
+  <script src="app/views/role/role-controller.js"></script>
+  <script src="app/views/role/role-function-list-controller.js"></script>
+  <script src="app/views/role/role-list-controller.js"></script>
+  <script src="app/views/role/rolefunctionpopupController.js"></script>
+  <script src="app/views/role/rolepopupmodelController.js"></script>
+  <script src="app/views/search/search.controller.js"></script>
+  <script src="app/views/sidebar/sidebar.controller.js"></script>
+  <script src="app/views/support/contact-us/contact-us-manage/contact-us-manage.controller.js"></script>
+  <script src="app/views/support/contact-us/contact-us.controller.js"></script>
+  <script src="app/views/support/get-access/get-access.controller.js"></script>
+  <script src="app/views/tabs/tabs.controller.js"></script>
+  <script src="app/views/user-notifications-admin/user.notifications.Json.details.controller.js"></script>
+  <script src="app/views/user-notifications-admin/user.notifications.controller.js"></script>
+  <script src="app/views/user-notifications-admin/user.notifications.modal.controller.js"></script>
+  <script src="app/views/userbar/userbar.controller.js"></script>
+  <script src="app/views/users/new-user-dialogs/bulk-user.controller.js"></script>
+  <script src="app/views/users/new-user-dialogs/new-user.controller.js"></script>
+  <script src="app/views/users/users.controller.js"></script>
+  <script src="app/views/widget-catalog/widget-catalog.controller.js"></script>
+  <script src="app/views/widget-onboarding/widget-details-dialog/widget-details.controller.js"></script>
+  <script src="app/views/widget-onboarding/widget-onboarding.controller.js"></script>
+  <script src="app/views/widgets/widget-details-dialog/widget-details.controller.js"></script>
+  <script src="app/views/widgets/widgets.controller.js"></script>
+  <!-- endinjector -->
+<!-- endbuild -->
+
+
+</body>
+</html>
diff --git a/ecomp-portal-FE-os/client/robots.txt b/ecomp-portal-FE-os/client/robots.txt
new file mode 100644
index 0000000..9417495
--- /dev/null
+++ b/ecomp-portal-FE-os/client/robots.txt
@@ -0,0 +1,3 @@
+# robotstxt.org
+
+User-agent: *
diff --git a/ecomp-portal-FE-os/client/src/app.js b/ecomp-portal-FE-os/client/src/app.js
new file mode 100644
index 0000000..8a1897f
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/app.js
@@ -0,0 +1,122 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+var app = angular.module('ecompApp', [
+        'ngCookies',
+        'ngResource',
+        'ngSanitize',
+        'ui.router',
+        'ecomp.conf',
+        'ngMessages',
+        'ui.select',
+        'angular-cache',
+        'ngDialog',
+        'gridster',
+        'angular-gestures',
+        'uuid',
+        'ui.bootstrap',
+        'ngMaterial',
+        'oc.lazyLoad',
+        'b2b.att'
+    ])
+    .config(($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, ngDialogProvider, $controllerProvider, hammerDefaultOptsProvider) => {
+    	app.controllerProvider = $controllerProvider;
+        $urlRouterProvider.otherwise('/error404');
+        $locationProvider.html5Mode(true);
+
+        //initialize get if not there
+        if (!$httpProvider.defaults.headers.get) {
+             $httpProvider.defaults.headers.get = {};
+        }
+        var myHostName;
+        myHostName = location.host;
+
+
+        //withCredentials flag on the XHR object - add cookie to XHR requests
+        if (!(myHostName.includes("localhost"))) {  // Don't load this for Mock
+            $httpProvider.defaults.withCredentials = true;
+        }
+        
+        $httpProvider.defaults.useXDomain = true;
+        $httpProvider.defaults.timeout = 30000;
+
+        //default configuration for ngDialog modal
+        ngDialogProvider.setDefaults({
+            className: 'ngdialog-theme-default',
+            showClose: true,
+            closeByDocument: false,
+            closeByEscape: false
+        });
+        
+        //hammer defaults for gestures
+        hammerDefaultOptsProvider.set({
+            recognizers: [[Hammer.Pan, 'enabled']]
+        });
+
+        if (!(myHostName.includes("localhost"))) {
+            $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
+            $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
+            $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
+        }
+
+
+        //interceptor here:
+        var interceptor = function ($q, $injector, $log) {
+            return {
+                'responseError': function (rejection) {
+                    $log.error('Interceptor rejection: ' + JSON.stringify(rejection));
+                    var $state = $injector.get('$state');
+                    switch (rejection.status) {
+                        case 401:
+                            var globalLoginUrl = rejection.headers()['global-login-url'];
+                            if (globalLoginUrl) {
+                                window.location = globalLoginUrl +
+                                    (globalLoginUrl.indexOf('?') === -1 ? '?' : '') +
+                                    '&retUrl=' + encodeURI(window.location);
+                                return;
+                            }
+                            break;
+                        default:
+                        //handle internal server error
+                    }
+                    return $q.reject(rejection);
+                }
+            };
+        };
+        $httpProvider.interceptors.push(interceptor);
+
+    }).run(($http, CacheFactory) => {
+        //default configuration for cache factory
+        $http.defaults.cache = CacheFactory('defaultCache', {
+            maxAge: 15 * 60 * 1000, // Items added to this cache expire after 15 minutes
+            cacheFlushInterval: 60 * 60 * 1000, // This cache will clear itself every hour
+            deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
+        });
+    });
+
+
+angular.module( 'ecompApp' ).config( [
+'$compileProvider',
+function( $compileProvider )
+{
+	$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/);
+}
+]);
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/app.less b/ecomp-portal-FE-os/client/src/app.less
new file mode 100644
index 0000000..1c99e06
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/app.less
@@ -0,0 +1,82 @@
+// injector
+@import 'directives/left-menu/left-menu.less';
+@import 'directives/multiple-select/multiple-select.less';
+@import 'directives/right-menu/right-menu.less';
+@import 'directives/search-users/search-users.less';
+@import 'styles/att-abs.less';
+@import 'styles/buttons.less';
+@import 'styles/ecomp-general.less';
+@import 'styles/fonts.less';
+@import 'styles/form.less';
+@import 'styles/mixins.less';
+@import 'styles/ng-dialog.less';
+@import 'styles/reset.less';
+@import 'styles/select2.less';
+@import 'styles/spinner.less';
+@import 'styles/sprites.less';
+@import 'styles/variables.less';
+@import 'views/admins/add-admin-dialogs/new-admin.modal.less';
+@import 'views/admins/admins.less';
+@import 'views/applications/application-details-dialog/application-details.modal.less';
+@import 'views/applications/applications.less';
+@import 'views/catalog/catalog.less';
+@import 'views/confirmation-box/confirmation-box.less';
+@import 'views/dashboard/dashboard-widget.controller.less';
+@import 'views/dashboard/dashboard.less';
+@import 'views/errors/error.less';
+@import 'views/footer/footer.less';
+@import 'views/functionalMenu/functionalMenu-dialog/modal-details.modal.less';
+@import 'views/functionalMenu/functionalMenu.less';
+@import 'views/header/header.less';
+@import 'views/home/applications-home/applications-home.less';
+@import 'views/notification-history/notificationhistory.less';
+@import 'views/portal-admin/new-portal-admin/new-portal-admin.modal.less';
+@import 'views/portal-admin/portal-admins.less';
+@import 'views/search/search.less';
+@import 'views/sidebar/sidebar.less';
+@import 'views/support/contact-us/contact-us-manage/contact-us-manage.controller.less';
+@import 'views/support/contact-us/contact-us.less';
+@import 'views/support/get-access/get-access.less';
+@import 'views/tabs/tabs.less';
+@import 'views/user-notifications-admin/user.notifications.less';
+@import 'views/user-notifications-admin/user.notifications.modal.less';
+@import 'views/userbar/userbar.less';
+@import 'views/users/new-user-dialogs/bulk-user.modal.less';
+@import 'views/users/new-user-dialogs/new-user.modal.less';
+@import 'views/users/users.less';
+@import 'views/widget-catalog/widget-catalog.less';
+@import 'views/widget-onboarding/widget-details-dialog/widget-details.modal.less';
+@import 'views/widget-onboarding/widget-onboarding.less';
+@import 'views/widgets/widget-details-dialog/widget-details.modal.less';
+@import 'views/widgets/widgets.less';
+// endinjector
+
+html { height: 100%; overflow-y: hidden;}
+* { box-sizing: border-box; }
+body {
+    font: normal 12px Omnes-ECOMP-W02, Arial;
+}
+
+/* Responsive: Portrait tablets and up */
+@media screen and (min-width: 768px) {
+    .container {
+        //max-width: 730px;
+    }
+}
+#page-content{
+	padding-left:230px;
+}
+
+#input-user-search{
+	width:280px;
+}
+
+.tab-cross-sign-opensrc{
+	top:-30px !important;
+	 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ 	 top:-70px;
+	}  
+}
+.checkbox-field-openSRC{
+    height: 15px !important;
+      }
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js
new file mode 100644
index 0000000..92207df
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.directive.js
@@ -0,0 +1,111 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 1/28/16.
+ */
+(function () {
+    class RightMenu {
+        constructor($rootScope,$window,$timeout) {
+            this.templateUrl = 'app/directives/right-menu/right-menu.tpl.html';
+            this.restrict = 'AE';
+            this.$rootScope = $rootScope;
+            this.$window = $window;
+            this.$timeout=$timeout;
+            this.link = this._link.bind(this);
+            this.scope = {              
+                userList :'='
+            }
+        }
+
+        _link(scope) {
+            let init = () => {
+                scope.isOpen = true;
+                scope.rightSideToggleBtn = 'Collapse';
+                
+                scope.openInNewTab = (url) => {
+                	if(url == "self") {
+                		alert("Cannot chat with self!");
+                	} else {
+	              	 	var win = window.open(url, '_blank');
+	              	 	setCookie(url.split("chat_id=")[1], 'source', 1);
+	              	 	//window.localStorage.setItem(url.split("chat_id=")[1],'source'); 
+	                   	win.focus();
+                	}
+                };
+                     
+            };
+
+            init();
+            
+           
+            scope.toggleSidebar = () => {
+                scope.isOpen = !scope.isOpen;
+                if(scope.isOpen){
+                	scope.rightSideToggleBtn = 'Collapse';
+                }else{
+                	scope.rightSideToggleBtn = 'Expand';
+                }
+            };
+
+        	scope.scrollbarWidth  =function(){
+        	    var $outer = $('<div>').css({visibility: 'hidden', width: 100, overflow: 'scroll'}).appendTo('body'),
+        	    				widthWithScroll = $('<div>').css({width: '100%'}).appendTo($outer).outerWidth();
+        	    $outer.remove();
+        	    return 100 - widthWithScroll;
+        	};
+ 
+            scope.calculateUserbarOffset = function(){           	
+            	var userbarWid = $("#online-userbar").width()==0?75:$("#online-userbar").width();
+            	var scrollbarWid = scope.scrollbarWidth();
+	    		var userbarOffset = scrollbarWid+userbarWid-1;
+	    		/*Setting the offset for userbar*/
+	    		$("#online-userbar").css("left",-userbarOffset);    	
+	    		/*Setting the offset for user bar toggle button*/
+	    		$(".ecomp-right-sidebar-toggle-btn").css("right",scrollbarWid);
+            }
+            this.$timeout(scope.calculateUserbarOffset, 0);
+            
+            scope.isBrowserInternetExplorer = false;
+            scope.browserName = bowser.name;
+
+            if (bowser.msie || bowser.msedge) {
+                scope.isBrowserInternetExplorer = true;
+            } else {
+                scope.isBrowserInternetExplorer = false;
+            }
+            
+            scope.calculateUserBarHeight = () => {
+           	 var footerOff = $('#online-userbar').offset().top;
+        		var headOff = $('#footer').offset().top;
+        		var userbarHeight=  parseInt($(".online-user-container").css('height'),10);
+        		var defaultOffSet = 45;
+        		// console.log(headOff - footerOff-defaultOffSet);
+        		$(".online-user-container").css({
+    				"height" : headOff - footerOff-defaultOffSet
+    			});
+            };       
+            angular.element(this.$window).bind('resize', function(){
+            	 scope.calculateUserBarHeight();
+            });
+        }
+        
+    }
+    angular.module('ecompApp').directive('rightMenu', ($rootScope,$window,$timeout) => new RightMenu($rootScope,$window,$timeout));
+})();
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less
new file mode 100644
index 0000000..102ac22
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.less
@@ -0,0 +1,182 @@
+/**
+ * Created by nnaffar on 1/28/16.
+ */
+@sidebar-width: 200px;
+@transition-duration: 0.25s;
+@overlayer-opacity: 0.65;
+
+
+.close-button {
+  //width: @sidebar-width;
+  .blackText24m;
+  //.bg_u;
+  font-size: 3em;
+  line-height: 18px;
+  position: absolute;
+  cursor: pointer;
+  vertical-align: middle;
+  top: @second-level-top;
+  left: 0;
+  -webkit-font-smoothing: antialiased;
+  height: 53px;
+  z-index: 101;
+  //box-shadow: 0 4px 5px rgba(0, 0, 0, .2);
+
+}
+.ecomp-right-sidebar-container{
+  position: absolute;
+  display: block;
+  left: 0;
+  z-index: 100;
+  transition: left @transition-duration;
+  margin-top: -15px;
+
+  .ecomp-right-sidebar-main {
+    //background-color: ;
+    position: absolute;
+    margin-top: 115px;
+    
+    height: 100vh;
+    .bg_portalWhite;//white for 1702
+    box-shadow: 0 4px 5px rgba(0, 0, 0, .2);
+	left: -90px; 
+	width:75px; 
+	padding:0px; 
+	height: 100vh; 
+
+
+
+    .accordion-container{
+      margin-top: 45px;
+    }
+    .portal-accordion-font{
+      font-size: .875rem;
+      color: #666;
+      display: inline-block;
+      font-family: Arial;
+
+    }
+
+    .portal-accordion-active{
+      color: #199DDF !important;
+    }
+
+    .sub-item{
+      .portal-accordion-font;
+      cursor: pointer;
+      height: 37px;
+      line-height: 37px;
+      padding-left: 20px;
+      padding-bottom: 10px;
+      vertical-align: middle;
+      width: 100%;
+    }
+    .sub-item:hover{
+      .portal-accordion-active;
+    }
+
+    .parent-item{
+      .portal-accordion-font;
+      border-bottom: 1px solid #bbb;
+      cursor: pointer;
+      height: 37px;
+      line-height: 37px;
+      padding-bottom: 10px;
+      vertical-align: middle;
+      width: 100%;
+    }
+    .parent-item:hover{
+      .portal-accordion-active;
+    }
+
+  }
+}
+
+.open-userbar {
+  left: 0;
+  transition: left .25s ease-in-out;
+   -moz-transition: left .25s ease-in-out;
+   -webkit-transition: left .25s ease-in-out;
+}
+
+.close-userbar {
+  left: 91px;
+  transition: left .25s ease-in-out;
+   -moz-transition: left .25s ease-in-out;
+   -webkit-transition: left .25s ease-in-out;
+}
+
+.content-overlayed {
+  position: fixed;
+  top: 110px;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: none repeat scroll 0 0 rgb(242, 242, 242);
+  z-index: 9999;
+}
+.fade-animation{
+  opacity: @overlayer-opacity;
+  transition: opacity @transition-duration ease-in-out;
+}
+.fade-animation.ng-hide {
+  opacity:0;
+  transition: opacity @transition-duration ease-in-out;
+}
+
+.activeUserIcon { 
+	transition: all .2s ease-in-out; 
+	display: block; 
+	margin-left: auto; margin-right: auto; height:55px; width:55px; border-radius: 50%;
+	
+}
+.activeUserIcon:hover { transform: scale(1.5); }
+
+.ecomp-right-sidebar-toggle{
+	position: absolute; 
+	top: 400px; 
+	right: 35px;
+}
+.ecomp-right-sidebar-toggle-btn{
+	position:relative;
+}
+.open-userbar-toggle {
+ // right: 0;
+  transition: right .25s ease-in-out;
+   -moz-transition: right .25s ease-in-out;
+   -webkit-transition: right .25s ease-in-out;
+}
+
+.close-userbar-toggle {
+  right: -36px;
+  transition: right .25s ease-in-out;
+   -moz-transition: right .25s ease-in-out;
+   -webkit-transition: right .25s ease-in-out;
+}
+
+.ecomp-right-sidebar-title{
+	font-family: Arial;
+	font-size: 14px;
+	color: #ef6f00;
+	margin-bottom:20px;
+	text-align: center;
+}
+
+.ecomp-right-sidebar-toggle a{
+	transform: rotate(-90deg);
+	z-index:2
+}
+.ecomp-right-sidebar-toggle button{
+	transform: rotate(-90deg);
+	z-index:2;
+	width: 100px!important;
+    height: 30px !important;
+    padding-bottom: 26px !important;
+	}
+	.btn:last-child {
+    margin-right: 6px !important;
+}
+
+.right-menu-button{
+	font-family: Omnes-ECOMP-W02,Arial
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html
new file mode 100644
index 0000000..d779cae
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/right-menu/right-menu.tpl.html
@@ -0,0 +1,42 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div id="ecomp-right-sidebar-container" class="ecomp-sidebar-container" ng-class="isOpen ? 'open-sidebar': 'close-sidebar'">
+    <div id="online-userbar" class="ecomp-sidebar-main" style="right: 0px; width:75px; padding:0px;" >
+        <div class="online-user-container" id="online-user-container" style="margin-top:45px; overflow-y:auto; overflow-x:hidden">
+        	<div class="ecomp-right-sidebar-title">Online Users</div>
+            <div ng-repeat="user in userList">
+                <div class="child-row" style="height:85px;">
+					<div>
+						<a href="javascript:void(0)" ng-click="openInNewTab(user.linkQ)" ><img class="activeUserIcon" ng-src="assets/images/photo.png"  alt="User Link" ></a>
+						<div style="font-family: Arial; font-size:10px; text-align: center;" >{{user.userId}}</div>
+					</div>
+				</div>
+			</div>
+        </div>
+    </div>    
+</div>
+<div id="user-sidebar-toggle" class="ecomp-right-sidebar-toggle"  ng-class="isOpen ? 'open-userbar-toggle': 'close-userbar-toggle'">
+	<div id="user-sidebar-toggle-button" class="ecomp-right-sidebar-toggle-btn">
+		<button href="javascript:void(0)"  ng-click="toggleSidebar()" class="btn btn-alt btn-small">
+			<span id="user-chevron-down" class="icon-chevron-down" ng-show="isOpen"></span>
+			<span id="user-chevron-up" class="icon-chevron-up" ng-hide="isOpen"><span class="right-menu-button">Users</span></span>
+		</button>
+	</div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js
new file mode 100644
index 0000000..e6e7661
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.controller.js
@@ -0,0 +1,168 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+
+'use strict';
+(function () {
+    class SearchUsersCtrl {
+
+        constructor($log, usersService,adminsService, $scope,confirmBoxService) {
+
+            $scope.UserSearchsIsNull=false;
+            $scope.userExist = false;
+            this.scrollApi = {};//scrollTop directive
+            $scope.txtResults = 'result';
+             
+            this.showAddUser = false;
+            this.showSearch = true;
+            this.newUser ={
+        			firstName:'',
+        			lastName:'',
+        			emailAddress:'',
+
+        			middleName:'',
+        			loginId:'',
+        			loginPwd:'',
+                    loginPwdCheck:''
+        	};
+
+            let activeRequests = [];
+            let clearReq = (req) => {
+                activeRequests.splice(activeRequests.indexOf(req), 1);
+            };
+           
+            this.showAddUserSection = () => {
+            	 this.showAddUser = true;
+	           	 this.showSearch = false;
+            }
+            
+           this.addNewUserFun = () => {
+        	   if (this.newUser.loginId =='' || this.newUser.loginPwd == '' || this.newUser.firstName == '' || this.newUser.lastName =='' || this.newUser.emailAddress ==''||this.newUser.loginPwd ==''){
+        		   var warningMsg = "Please enter a value for all fields marked with *.";
+        		   confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+        		   return;
+        	   } else if (this.newUser.loginPwd != this.newUser.loginPwdCheck) {
+        		   var warningMsg = "Passwords do not match, please try again.";
+        		   confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+        		   return;
+        	   }
+        	   else {
+        		   // check password length complexity.
+        		   var warningMsg = adminsService.isComplexPassword(this.newUser.loginPwd);
+        		   if (warningMsg != null) {
+        			   confirmBoxService.showInformation(warningMsg).then(isConfirmed => {return;});
+        			   return;
+        		   }
+        	   } // password
+
+        	   adminsService.addNewUser(this.newUser,'Yes').then(res=> {
+	       			
+	   				if(res.message == 'Record already exist'){
+	   					
+	   					this.showAddUser = true;
+	   	           	    this.showSearch = false;
+	   					$scope.userExist = true;
+	   					
+	   				}else{
+	   					
+	   					$scope.userExist = false;
+	   					this.selectedUser = this.newUser;
+		   				this.selectedUser.orgUserId = this.newUser.loginId;
+		   				this.searchUsersResults = [];
+		   				this.searchUsersResults.push(this.newUser);
+		   				this.showAddUser = false;
+		   				this.showSearch = true;
+		   				this.newUser ={
+		               			firstName:'',
+		               			lastName:'',
+		               			emailAdress:'',
+		               			middleName:'',
+		               			loginId:'',
+		               			loginPwd:'',
+	                            loginPwdCheck:''
+		               	};
+                        this.searchUserString ='';
+		   				$scope.UserSearchsIsNull = false;	   					
+	   				}
+	   				
+	
+	               }).catch(err=> {
+	                   $log.error('adminsService: addNewUser error:: ', err);
+	                  // $scope.errMsg=err;
+	                   confirmBoxService.showInformation('Add New User failed: ' + err);
+	                  
+	               }).finally(() => {
+	                   //this.isLoadingTable = false;
+	            	   
+	               });
+           }
+           
+            this.searchUsers = () => {
+                this.isLoading = true;
+                if(this.searchUsersInProgress){
+                    return;
+                }
+                this.selectedUser = null;
+                this.searchUsersInProgress = true;
+                this.searchUsersResults = null;
+
+                let searchUsersReq = usersService.searchUsers(this.searchUserString);
+                activeRequests.push(searchUsersReq);
+                searchUsersReq.promise().then(usersList => {
+                    $log.debug('searchUsers found the following users: ', JSON.stringify(usersList));
+                    this.searchUsersResults = usersList;
+                    $log.debug('searchUsersResults length: ', usersList.length);
+                    if (usersList.length != 1) {
+                        $scope.txtResults = 'results'
+                    } else {
+                        $scope.txtResults = 'result'
+                    }
+                    $scope.UserSearchsIsNull=false;
+                }).catch(err => {
+                    $log.error('SearchUsersCtrl.searchUsers: ' + err);
+                    $scope.UserSearchsIsNull=true;
+                }).finally(() => {
+                    this.scrollApi.scrollTop();
+                    this.searchUsersInProgress = false;
+                    clearReq(searchUsersReq);
+                    this.isLoading = false;
+                });
+            };
+
+            let init = () => {
+                this.isLoading = false;
+                this.searchUsersInProgress = false;
+            };
+
+            this.setSelectedUser = user => {
+                this.selectedUser = user;
+            };
+
+            init();
+
+            $scope.$on('$destroy', () => {
+                activeRequests.forEach(req => {
+                    req.cancel();
+                });
+            });
+        }
+    }
+    SearchUsersCtrl.$inject = ['$log', 'usersService','adminsService', '$scope','confirmBoxService'];
+    angular.module('ecompApp').controller('SearchUsersCtrl', SearchUsersCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less
new file mode 100644
index 0000000..2fb9786
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.less
@@ -0,0 +1,159 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+ .search-users-directive{
+  .title {
+    //.n18r;
+    .dGray18r;  //AT&T Dark Gray
+    border-bottom: @blue-active 3px solid;
+
+  }
+  
+  .add-user-section{
+      margin-top:0px;
+      margin-left:10px;
+  }
+  
+  .input-text-new-user {
+	  font-style: italic;
+	  padding: 7px 10px;
+	  width: 200px !important;
+	  display: inline-block;
+	  position: relative;
+	  margin-bottom: 10px;
+	  border-radius: 6px;
+	  border: 1px solid #d8d8d8;
+	  height: 32px;
+	  border-color: slategrey !important;
+  }
+  
+  .input-new-user-div{
+	display:inline-block;
+    width: 240px;
+	margin-left:10px;
+  }
+  
+  .add-user-button {
+	  cursor: pointer;
+	  float:right;
+	  width: 120px;
+	 
+	  margin-left : 5px;
+    
+	  .btn-blue;
+	
+	  line-height: 32px;
+	  height: 29px;
+    text-align: center;
+    vertical-align: middle;
+    line-height: 28px;
+	
+	  &::before {
+	    .ico_add_user;
+	    content: '\f211';
+	    font-family: "Ionicons";
+	    vertical-align: middle;
+	    display: inline-block;
+	    margin-right: 8px;
+      line-height: 16px;
+	  }
+  }
+
+  .main {
+    margin: 16px;
+    .search-instructions {
+      .dGray14r;
+      margin-bottom: 8px;
+    }
+    .search {
+      .input-field {
+        display: inline-block;
+        width: 250px;
+        height: 30px;
+      }
+      .search-button {
+        .btn-blue;
+        width: 90px;
+        display: inline-block;
+        float: right;
+      }
+    }
+
+    .search-results {
+      margin-top: 10px;
+      .results-title {
+        .dGray14r;
+        margin-bottom: 8px;
+      }
+
+      .results-container {
+        height: 208px;
+        overflow-y: auto;
+        .user {
+          padding-left: 10px;
+          padding-top: 6px;
+          height: 48px;
+
+          border-top: 1px solid @portalGray;
+          border-right: 1px solid @portalGray;
+          border-left: 1px solid @portalGray;
+
+          &:last-child {
+            border-bottom: 1px solid @portalGray;
+          }
+
+          cursor: pointer;
+          &:hover {
+            background-color: @funcBkgGray;
+          }
+
+          &.selected {
+            background-color: @funcBkgGray;
+          }
+
+          .main-name {
+            .dGray14r;
+
+          }
+          .sub-job-title {
+            .gray13r;
+
+          }
+        }
+
+      }
+
+    }
+    .error-text {
+      margin-top: 25px;
+      font-weight: 400;
+      font-size: 16px;
+      text-align: left;
+      color: @err;
+    }
+
+    .no-user-found {
+      margin-top: 16px;
+      .dGray14r;
+    }
+    .add-new-user-btn{
+    	margin-top:10px;
+    }
+  }
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html
new file mode 100644
index 0000000..ef65992
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/directives/search-users/search-users.tpl.html
@@ -0,0 +1,143 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="search-users-directive">
+    <form name="searchUsersForm" novalidate>
+        <div class="title" ng-bind="searchUsers.searchTitle"></div>
+        <div class="main">
+           <div ng-if="searchUsers.showSearch">
+	            <div class="search-instructions">Enter first name, last name or User ID</div>
+	            <div class="search">
+	                <input id="input-user-search"
+	                       autocomplete="off"
+	                       type="text"
+	                       name="searchString"
+	                       placeholder="Search"
+	                       ng-model="searchUsers.searchUserString"
+	                       ng-keyup="$event.keyCode===13 && searchUsersForm.searchString.$valid && searchUsers.searchUsers()"
+	                       pattern="[a-zA-Z0-9-'\s]{1,}"
+	                       maxlength="80"
+	                       required="true" auto-focus tabindex="0"/>
+	               
+	               	<button class="btn btn-alt btn-small" tabindex="2" id="button-search-users"
+	               		ng-class="{disabled: searchUsersForm.searchString.$invalid || searchUsers.searchUsersInProgress}"
+	                	ng-click="searchUsersForm.searchString.$valid && searchUsers.searchUsers()">Search
+	                </button>
+	                
+	                <button class="btn btn-alt btn-small" id="Create-New-User-button" ng-click="searchUsers.showAddUserSection()">
+	                	<i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;New User
+	                </button> 
+	                
+	            </div>
+	
+	            <span class="ecomp-spinner" ng-show="searchUsers.isLoading"></span>
+	            <div ng-show="UserSearchsIsNull===false">
+	                <div class="search-results"
+	                     ng-show="!searchUsers.isLoading
+	                     && searchUsers.searchUsersResults
+	                     && searchUsers.searchUsersResults.length">
+	                    <div id="search-results" ng-show="UserSearchsIsNull===false"
+	                         class="results-title"
+	                         ng-bind="'Showing ' + searchUsers.searchUsersResults.length + ' results'"></div>
+	                    <div class="results-container" scroll-top="searchUsers.scrollApi">
+	                        <div id="search-result-{{$index}}"
+	                             class="user"
+	                             ng-repeat="user in (searchUsers.searchUsersResults | orderBy:['firstName','lastName','orgUserId']) | limitTo: 100 track by $index"
+	                             ng-click="searchUsers.setSelectedUser(user)"
+	                             ng-class="{selected: user.orgUserId === searchUsers.selectedUser.orgUserId}">
+	                            <div id="main-name-{{$index}}" class="main-name">
+	                                <span id="result-first-name-{{$index}}" ng-bind="::user.firstName"></span>
+	                                <span id="result-last-name-{{$index}}"  ng-bind="::user.lastName"></span>
+	                                <span id="result-uuid-{{$index}}" ng-bind="::user.orgUserId"></span></div>
+	                            <div id="job-title-{{$index}}" class="sub-job-title" ng-bind="::user.jobTitle"></div>
+	                            <br/>
+	                        </div>
+	                    </div>
+	                </div>
+	            </div>
+	            
+	            <div class="error-text"
+	                 id="user-search-error-403"
+	                 ng-show="UserSearchsIsNull===true">
+	                No match found.
+	            </div>
+	            
+	            <div id="no-user-found"
+	                 class="no-user-found"
+	                 ng-show="searchUsers.searchUsersResults && searchUsers.searchUsersResults.length===0 && !searchUsers.searchUsersInProgress">
+	                 No users found
+	            </div>
+            </div>
+
+            
+            <div id="addWidget" class="add-user-section" ng-if="searchUsers.showAddUser">
+				<div>	        
+					<div class="input-new-user-div" >
+						  <div  class="">*First Name</div>
+						  <input  type="text"  ng-model="searchUsers.newUser.firstName"/>						            
+					</div>
+					<div class="input-new-user-div" >
+						  <div  class="">Middle Name</div>
+						  <input  type="text"  ng-model="searchUsers.newUser.middleName"/>						            
+					</div>
+					<div class="input-new-user-div" >
+						  <div class="">*Last Name</div>
+						  <input  type="text" ng-model="searchUsers.newUser.lastName"/>
+					</div>
+					<div class="input-new-user-div" >
+						  <div class="">*Email Address ID</div>
+						  <input  type="text" ng-model="searchUsers.newUser.emailAddress"/>
+					</div>
+					<div class="input-new-user-div" >
+						  <div class="">*Login ID</div>
+						  <input  type="text" ng-model="searchUsers.newUser.loginId"/>
+					</div>
+					<div class="input-new-user-div" >
+						  <div class="">*Login Password</div>
+						  <input  type="password" ng-model="searchUsers.newUser.loginPwd"/>
+					</div>
+					<div class="input-new-user-div" >
+						  <div class="">*Confirm Login Password</div>
+						  <input  type="password" ng-model="searchUsers.newUser.loginPwdCheck"/>
+					</div>
+				<div ng-show="searchUsers.newUser.loginPwdCheck.length>=searchUsers.newUser.loginPwd.length&&searchUsers.newUser.loginPwdCheck.length>0&&searchUsers.newUser.loginPwd!=searchUsers.newUser.loginPwdCheck"
+						style="color: #cf2a2a; font-size: 12px;">
+						<small
+							style="position: absolute; margin-top: -6px;">The passwords do not match. Try again.
+						</small>
+	            </div>
+	            <div ng-show="userExist==true"
+						style="color: #cf2a2a; font-size: 12px;">
+						<small
+							style="position: absolute; margin-top: -6px;">User with same loginId already exists. Try again.
+						</small>
+	            </div>
+				</div>
+                <div class="add-new-user-btn">
+                	<button class="btn btn-alt btn-small" ng-click="searchUsers.addNewUserFun()">Add New User</button>
+				</div>
+				</div>
+																		
+
+		    </div>
+            
+        </div>
+
+    </form>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/router.js b/ecomp-portal-FE-os/client/src/router.js
new file mode 100644
index 0000000..88afa39
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/router.js
@@ -0,0 +1,238 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+angular.module('ecompApp')
+    .config($stateProvider => {
+        $stateProvider
+           .state('root', {
+            abstract: true,
+            views: {
+                'header@': {
+                    templateUrl: 'app/views/header/header.tpl.html',
+                    controller: 'HeaderCtrl',
+                    controllerAs: 'header'
+                },
+                'tabbar@': {
+                    templateUrl: 'app/views/tabs/tabs.tpl.html',
+                    controller: 'TabsCtrl',
+                    controllerAs: 'tabsHome'
+                },
+                'sidebar@':{
+                    templateUrl: 'app/views/sidebar/sidebar.tpl.html',
+                    controller: 'SidebarCtrl',
+                    controllerAs: 'sidebar'
+                },
+                'userbar@':{
+                    templateUrl: 'app/views/userbar/userbar.tpl.html',
+                    controller: 'UserbarCtrl',
+                    controllerAs: 'userbar'
+                },
+                'footer@': {
+                    templateUrl: 'app/views/footer/footer.tpl.html',
+                    controller: 'FooterCtrl',
+                    controllerAs: 'footer'
+                }
+            }
+        }).state('root.applicationsHome', {
+            url: '/applicationsHome',
+            views: {
+            	'content@': {
+                    templateUrl: 'app/views/dashboard/dashboard.tpl.html',
+                    controller: 'DashboardCtrl',
+                    controllerAs: 'dashboard'
+                }
+            }
+        }).state('root.appCatalog', {
+            url: '/appCatalog',
+            views: {
+            	'content@': {
+                    templateUrl: 'app/views/catalog/catalog.tpl.html',
+                    controller: 'CatalogCtrl',
+                    controllerAs: 'catalog'
+                }
+            }
+        }).state('root.widgetCatalog', {
+            url: '/widgetCatalog',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/widget-catalog/widget-catalog.tpl.html',
+                    controller: 'WidgetCatalogCtrl',
+                    controllerAs: 'widgetCatalog'
+                }
+            }
+        }).state('root.admins', {
+            url: '/admins',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/admins/admins.tpl.html',
+                    controller: 'AdminsCtrl',
+                    controllerAs: 'admins'
+                }
+            }
+        }).state('root.roles', {
+            url: '/roles',
+            views: {
+                'content@': { 
+                    templateUrl: 'app/views/role/role_list.html',
+                    controller: 'roleListController',
+                    controllerAs: 'roles'
+                }
+            }
+        }).state('root.role', {
+            url: '/role/:roleId',
+            views: {
+                'content@': { 
+                    templateUrl: 'app/views/role/role.html',
+                    controller: 'roleController',
+                    controllerAs: 'role'
+                }
+            }
+        }).state('root.roleFunctions', {
+            url: '/roleFunctions',
+            views: {
+                'content@': { 
+                    templateUrl: 'app/views/role/role_function_list.html',
+                    controller: 'roleFunctionListController',
+                    controllerAs: 'roleFunctions'
+                }
+            }
+        }).state('root.users', {
+            url: '/users',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/users/users.tpl.html',
+                    controller: 'UsersCtrl',
+                    controllerAs: 'users'
+                }
+            }
+        }).state('root.applications', {
+            url: '/applications',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/applications/applications.tpl.html',
+                    controller: 'ApplicationsCtrl',
+                    controllerAs: 'apps'
+                }
+            }
+        }).state('root.microserviceOnboarding', {
+            url: '/microserviceOnboarding',
+            views: {
+                'content@': {
+		            templateUrl: 'app/views/microservice-onboarding/microservice-onboarding.tpl.html',
+		            controller: 'MicroserviceOnboardingCtrl',
+		            controllerAs: 'microserviceOnboarding'
+                }
+            }
+        }).state('root.widgetOnboarding', {
+            url: '/widgetOnboarding',
+            views: {
+                'content@': {
+                	templateUrl: 'app/views/widget-onboarding/widget-onboarding.tpl.html',
+                	controller: 'WidgetOnboardingCtrl',
+                	controllerAs: 'widgetOnboarding'
+                }
+            }
+        }).state('root.functionalMenu', {
+            url: '/functionalMenu',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/functionalMenu/functionalMenu.tpl.html',
+                    controller: 'FunctionalMenuCtrl',
+                    controllerAs: 'functionalMenu'
+                }
+            }
+        }).state('root.getAccess', {
+            url: '/getAccess',
+            params: {
+                appName: null,
+              },
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/support/get-access/get-access.tpl.html',
+                    controller: 'GetAccessCtrl',
+                    controllerAs: 'access'
+                }
+            }
+        }).state('root.contactUs', {
+            url: '/contactUs',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/support/contact-us/contact-us.tpl.html',
+                    controller: 'ContactUsCtrl',
+                    controllerAs: 'contact'
+                }
+            }
+        }).state('root.userNotifications', {
+            url: '/userNotifications',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/user-notifications-admin/user.notifications.tpl.html',
+                    controller: 'userNotificationsCtrl',
+                    controllerAs: 'userNotifications'
+                }
+            }
+        }).state('root.notificationHistory', {
+            url: '/notificationHistory',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/notification-history/notificationhistory.tpl.html',
+                    controller: 'notificationHistoryCtrl',
+                    controllerAs: 'notificationHistory'
+                }
+            }
+        }).state('root.portalAdmins', {
+            url: '/portalAdmins',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/portal-admin/portal-admin.tpl.html',
+                    controller: 'PortalAdminsCtrl',
+                    controllerAs: 'portalAdmin'
+                }
+            }
+        }).state('root.error404', {
+            url: '/error404',
+            views: {
+                'content@': {
+                    templateUrl: 'app/views/errors/error.404.tpl.html',
+                    controller: 'ErrorCtrl',
+                    controllerAs: 'error'
+                }
+            }
+        }).state('noUserError', {
+            url: '/noUserError',
+            views: {
+                'error@': {
+                    templateUrl: 'app/views/errors/error.tpl.html',
+                    controller: 'ErrorCtrl',
+                    controllerAs: 'error'
+                }
+            }
+        }).state('unKnownError', {
+            url: '/unKnownError',
+            views: {
+                'error@': {
+                    templateUrl: 'app/views/errors/error.tpl.html',
+                    controller: 'ErrorCtrl',
+                    controllerAs: 'error'
+                }
+            }
+        });
+    });
diff --git a/ecomp-portal-FE-os/client/src/services/support/session/session.service.js b/ecomp-portal-FE-os/client/src/services/support/session/session.service.js
new file mode 100644
index 0000000..eca3719
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/services/support/session/session.service.js
@@ -0,0 +1,76 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+(function () {
+    class SessionService {
+        constructor($q, $log, $http, conf,uuid,$sce) {
+            this.$q = $q;
+            this.$log = $log;
+            this.$http = $http;
+            this.conf = conf;
+            this.uuid = uuid;
+            this.$sce = $sce;
+        }
+        
+        logout(appStr) {
+            this.$log.info('SessionService::logout from App');
+            let deferred = this.$q.defer();
+            this.$log.info('SessionService appStr: ', appStr);
+           
+                        var eaccessPattern = '\https?\:\/\/[^/]+/[^/]+/[^/]+';
+            var standardPattern = '\https?\:\/\/[^/]+/[^/]+';
+            
+           
+            var contextUrl = appStr.match(new RegExp(standardPattern));
+            var logoutUrl  = contextUrl + '/logout.htm' ;
+            this.$sce.trustAsResourceUrl(logoutUrl);
+			console.log('logoutUrl ' + logoutUrl);
+			//window.open(logoutUrl, '_blank','width=100,height=100');
+			jQuery('#reg-logout-div').append("<iframe style='display:none' src='" + logoutUrl + "' />");
+
+
+           /*
+            this.$http({
+                method: "POST",
+                url: logoutUrl,
+                cache: false
+            }).then( res => {
+                // If response comes back as a redirected HTML page which IS NOT a success
+            	this.$log.info(res);
+                if (Object.keys(res).length === 0) {
+                    deferred.reject("ecomp::session-service::logout Failed");
+                } else {
+                    this.$log.debug('query results: ', res);
+                    this.$log.info('ecomp::session-service::logout Succeeded');
+                    deferred.resolve(res);
+                }
+            }).catch( status => {
+            	this.$log.error('query error: ',status);
+                deferred.reject(status);
+            });
+            return deferred.promise;    
+            */       
+        }
+
+    }
+    SessionService.$inject = ['$q', '$log', '$http', 'conf','uuid4','$sce'];
+    angular.module('ecompApp').service('sessionService', SessionService)
+})();
diff --git a/ecomp-portal-FE-os/client/src/services/userProfile/userProfile.service.js b/ecomp-portal-FE-os/client/src/services/userProfile/userProfile.service.js
new file mode 100644
index 0000000..dc0022a
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/services/userProfile/userProfile.service.js
@@ -0,0 +1,202 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+(function () {
+    class UserProfileService {
+    	
+        constructor($q, $log, $http, conf, uuid, utilsService) {
+            this.$q = $q;
+            this.$log = $log;
+            this.$http = $http;
+            this.conf = conf;
+            this.uuid = uuid;
+            this.utilsService = utilsService;
+            this.userProfile = null;
+            this.debug = false;
+        }
+
+        getUserProfile() {
+            if (this.debug)
+            	this.$log.debug('UserProfileService::getUserProfile: get logged user profile');
+            let deferred = this.$q.defer();
+            let url = this.conf.api.userProfile;
+            this.$http({
+                    method: "GET",
+                    url: url,
+                    cache: false,
+                    headers: {
+                        'X-ECOMP-RequestID':this.uuid.generate()
+                    }
+                })
+                .then( res => {
+                	if (this.debug)
+                		this.$log.debug('UserProfileService::getUserProfile: result is ' + JSON.stringify(res));
+                    // Res is always JSON, but the data object might be an HTML error page.
+                    if (! this.utilsService.isValidJSON(res.data)) {
+                    	var msg = 'UserProfileService::getUserProfile: result data is not JSON';
+                    	if (this.debug)
+                    		this.$log.debug(msg);
+                    	deferred.reject(msg);
+                    } else {
+                    	if (this.debug)
+                    		this.$log.debug('UserProfileService::getUserProfile: success');
+                    	this.userProfile = res.data;
+                        deferred.resolve(res.data);
+                    }
+                })
+                .catch( status => {
+                    this.$log.error('UserProfileService::getUserProfile caught exception: ' + JSON.stringify(status));
+                    deferred.reject(status);
+                });
+            return deferred.promise;
+        }
+        
+        getSortedUserIdCombination(user1, user2) {
+        	
+        	var combination = "";
+        	if(user1<user2) {
+        		combination =  user1+"-"+user2;
+        	} else if (user1>user2){
+        		combination =  user2+"-"+user1;
+        	} else {
+        		
+        		return "self";
+        	}
+        	
+        	var collaborateUrl =  'opencollaboration?chat_id=' + combination ;
+        	
+        	return collaborateUrl;
+        	
+        	
+        	
+        }
+        
+        getFunctionalMenuStaticInfo() {
+        	if (this.debug)
+        		this.$log.debug('UserProfileService::getFunctionalMenuStaticInfo: start');
+            let deferred = this.$q.defer();
+            let url = this.conf.api.functionalMenuStaticInfo;
+            this.$http({
+                    method: "GET",
+                    url : url,
+                    cache: false,
+                    headers: {
+                        'X-ECOMP-RequestID':this.uuid.generate()
+                    }
+                }).then( res => {
+                	if (this.debug)
+                		this.$log.debug('UserProfileService::getFunctionalMenuStaticInfo: result is ' + JSON.stringify(res));
+                    // Res is always JSON, but the data object might be an HTML error page.
+                    if (! this.utilsService.isValidJSON(res.data)) {
+                    	var msg = 'UserProfileService::getFunctionalMenuStaticInfo: result data is not JSON';
+                    	if (this.debug)
+                    		this.$log.debug(msg);
+                    	deferred.reject(msg);
+                    } else {
+                        if (this.debug)
+                        	this.$log.debug('UserProfileService::getFunctionalMenuStaticInfo Succeeded');
+                        deferred.resolve(res.data);
+                    }
+                }).catch( status => {
+                    this.$log.error('UserProfileService::getFunctionalMenuStaticInfo caught exception: ' + JSON.stringify(status));
+                    deferred.reject(status);
+                });
+            return deferred.promise;
+        }
+        
+        getActiveUser() {	
+            if (this.debug)
+            	this.$log.debug('UserProfileService::getActiveUser: start');
+            let deferred = this.$q.defer();
+            let url = this.conf.api.getActiveUser;           
+            this.$http({
+                    method: 'GET',
+                    url : url,
+                    cache: false,
+                    headers: {
+                        'X-ECOMP-RequestID':  this.uuid.generate()
+                    }
+                }).then( res => {
+                	if (this.debug) {
+                		this.$log.debug('UserProfileService::getActiveUser: result is ' + JSON.stringify(res));
+                		this.$log.debug('UserProfileService::getActiveUser: isValidJSON is ' + this.utilsService.isValidJSON(res.data));
+                	}
+                    // Res is always JSON, but the data object might be an HTML error page.
+                	// res.data should be a list of Org IDs; an empty list is NOT an error.
+                    if (! this.utilsService.isValidJSON(res.data)) {
+                    	var msg = 'UserProfileService::getActiveUser: result data is not JSON';
+                    	if (this.debug)
+                    		this.$log.debug(msg);
+                    	deferred.reject(msg);
+                    }
+                    else {
+                    	if (this.debug)
+                    		this.$log.debug('UserProfileService::getActiveUser: success');
+                        deferred.resolve(res.data);
+                    }
+                }).catch( status => {
+                    this.$log.error('UserProfileService::getActiveUser caught exception: ' + JSON.stringify(status));
+                    deferred.reject(status);
+                });
+            return deferred.promise;
+        }
+        
+        
+        getUserAppRoles(userId) {
+            if (this.debug)
+            	this.$log.debug('UserProfileService::getUserAppRoles: get logged user profile');
+            let deferred = this.$q.defer();
+            this.$http({
+                    method: "GET",
+                    url: this.conf.api.userApplicationRoles,
+                    params: {userId:userId},
+                    cache: false,
+                    headers: {
+                        'X-ECOMP-RequestID':this.uuid.generate()
+                    }
+                })
+                .then( res => {
+                	if (this.debug)
+                		this.$log.debug('UserProfileService::getUserAppRoles: result is ' + JSON.stringify(res));
+                    // Res is always JSON, but the data object might be an HTML error page.
+                    if (! this.utilsService.isValidJSON(res.data)) {
+                    	var msg = 'UserProfileService::getUserAppRoles: result data is not JSON';
+                    	if (this.debug)
+                    		this.$log.debug(msg);
+                    	deferred.reject(msg);
+                    } else {
+                    	if (this.debug)
+                    		this.$log.debug('UserProfileService::getUserAppRoles: success');
+                        deferred.resolve(res.data);
+                    }
+                })
+                .catch( status => {
+                    this.$log.error('UserProfileService::getUserAppRoles caught exception: ' + JSON.stringify(status));
+                    deferred.reject(status);
+                });
+
+            return deferred.promise;
+        }
+        
+    }
+    UserProfileService.$inject = ['$q', '$log', '$http', 'conf', 'uuid4', 'utilsService'];
+    angular.module('ecompApp').service('userProfileService', UserProfileService)
+})();
diff --git a/ecomp-portal-FE-os/client/src/styles/att-abs.less b/ecomp-portal-FE-os/client/src/styles/att-abs.less
new file mode 100644
index 0000000..3cf1044
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/styles/att-abs.less
@@ -0,0 +1,92 @@
+//portal abs table component
+.c-ecomp-portal-abs-table{
+    width: 100%;
+    height: 600px;
+    overflow-x: auto;
+    overflow-y: auto;
+    background-color: @portalLightGray;
+
+    .tablesorter-default {
+        //border: 1px solid @q;
+
+        th,
+        thead td {
+            .dGray16m;
+            color: #333333;
+            background-color: @portalLightGray;
+            border-collapse: collapse;
+            //border-top-style: none;
+            border: 1px solid @q;
+            padding: 0;
+            font-weight: 700;
+            height: 38px;
+        }
+
+        tbody tr td {
+            .dGray16m;
+            border-left: 1px solid @portalLGray;
+            background-color: @portalWhite;
+            border-bottom: 1px solid @portalLGray;
+            height: 32px;
+            div {
+                line-height: 32px;
+            }
+        }
+
+        .td-first {
+            border-left: none;
+        }
+
+        .tablesorter-search-highlight {
+            font-weight: bold;
+        }
+
+
+        tr:first-child {
+            border-bottom: 1px solid @portalLGray;
+        }
+
+        th:first-child{
+            border-right: 1px solid @portalLGray;
+        }
+        th:nth-child(2){
+            border-right: 1px solid @portalLGray;
+        }
+        th:nth-child(3){
+            border-right: 1px solid @portalLGray;
+        }
+
+        tr:last-child {
+            td {
+                border-bottom-style:  none;
+            }
+        }
+
+
+    }
+}
+
+//portal abs select component
+.c-ecomp-portal-abs-select{
+    width: @select-width;
+    display: inline-block;
+    margin-right: 10px;
+    .select2-chosen{
+        width: @select-width;
+        line-height: 20px;
+    }
+    .select2-container .select2-choice {
+        width: @select-width;
+        border-radius: 6px;
+        border-color: @portalLGray;
+    }
+
+  .select2-results {
+    width: @select-width;
+    background-color: @portalWhite;
+  }
+
+    .form-field, .form-field-input-container {
+        width: @select-width;
+    }
+}
diff --git a/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.js b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.js
new file mode 100644
index 0000000..da7cd4a
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.js
@@ -0,0 +1,268 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+(function () {
+    class AppDetailsModalCtrl {
+        constructor($scope, $log, applicationsService, errorMessageByCode,
+                    ECOMP_URL_REGEX,userProfileService, $cookies, confirmBoxService) {
+//            let emptyImg = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+            // empty image should really be empty, or it causes problems for the back end
+            let emptyImg = null;
+            this.emptyImgForPreview = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+
+            let newAppModel = {
+                'id': null,
+                'name': null,
+                'imageUrl': null,
+                'description': null,
+                'notes': null,
+                'url': null,
+                'alternateUrl': null,
+                'restUrl': null,
+                'isOpen': false,
+                'username': null,
+                'appPassword': null,
+                'thumbnail': emptyImg,
+                'isEnabled': true,
+                'restrictedApp': false
+            };
+
+            let init = () => {
+                $log.info('AppDetailsModalCtrl::init');
+                this.isSaving = false;
+                if($scope.ngDialogData && $scope.ngDialogData.app){
+                    $log.debug('AppDetailsModalCtrl:init:: Edit app mode for', $scope.ngDialogData.app);
+                    this.isEditMode = true;
+                    this.app = _.clone($scope.ngDialogData.app);
+                }else{
+                    $log.debug('AppDetailsModalCtrl:init:: New app mode');
+                    this.isEditMode = false;
+                    this.app = _.clone(newAppModel);
+                }
+                this.originalImage = null
+            };
+
+            this.ECOMP_URL_REGEX = ECOMP_URL_REGEX;
+
+            this.imageApi = {};
+            this.removeImage = () => {
+                $log.debug('AppDetailsModalCtrl:removeImage:: entering removeImage');
+
+                confirmBoxService.confirm("Are you sure you want to remove the image?").then(isConfirmed => {
+                    if(isConfirmed){
+                        this.imageApi.clearFile();
+                        this.app.thumbnail = emptyImg;
+                        this.originalImage = null;
+                        this.app.imageUrl = null;
+                    }
+                }).catch(err => {
+                    $log.error('AppDetailsModalCtrl:removeImage error:: ',err);
+                });
+            };
+
+            //This part handles conflict errors (409)
+            this.conflictMessages = {};
+            this.scrollApi = {};
+            let handleConflictErrors = err => {
+                if(!err.data){
+                    return;
+                }
+                if(!err.data.length){ //support objects
+                    err.data = [err.data]
+                }
+                _.forEach(err.data, item => {
+                    _.forEach(item.fields, field => {
+                        //set conflict message
+                        this.conflictMessages[field.name] = errorMessageByCode[item.errorCode];
+                        //set field as invalid
+                        $scope.appForm[field.name].$setValidity('conflict', false);
+                        //set watch once to clear error after user correction
+                        watchOnce[field.name]();
+                    });
+                });
+                this.scrollApi.scrollTop();
+            };
+
+            let resetConflict = fieldName => {
+                delete this.conflictMessages[fieldName];
+                if($scope.appForm[fieldName]){
+                    $scope.appForm[fieldName].$setValidity('conflict', true);
+                }
+            };
+
+
+            let emptyCookies = () => {
+                $log.debug('AppDetailsModalCtrl:emptyCookies:: entering emptyCookies');
+                userProfileService.getUserProfile()
+                    .then(profile=> {
+                        // $log.info(profile);
+                        $scope.orgUserId = profile.attuid;
+                        $log.debug('AppDetailsModalCtrl:emptyCookies for the following attuid: ' + profile.attuid);
+                        if ($cookies.getObject($scope.orgUserId + '_apps') != undefined && $cookies.getObject($scope.orgUserId + '_apps') != null) {
+                            $cookies.remove($scope.orgUserId + '_apps');
+                            $log.debug('AppDetailsModalCtrl:emptyCookies removed: ' + $scope.orgUserId + '_apps');
+                        }
+                        if ($cookies.getObject($scope.orgUserId + '_widget') != undefined && $cookies.getObject($scope.orgUserId + '_widget') != null) {
+                            $cookies.remove($scope.orgUserId + '_widget');
+                            $log.debug('AppDetailsModalCtrl:emptyCookies removed: ' + $scope.orgUserId + '_widget');
+                        }
+                    }).catch(err => {
+                        $log.error('AppDetailsModalCtrl:emptyCookies error:: '+ JSON.stringify(err));
+                    });
+            };
+
+
+            let watchOnce = {
+                name: () => {
+                    let unregisterName = $scope.$watch('appDetails.app.name', (newVal, oldVal) => {
+                        // $log.debug('newVal, oldVal = ' + newVal.toLowerCase() + " | " + oldVal.toLowerCase())
+                        if(newVal.toLowerCase() !== oldVal.toLowerCase()){
+                            resetConflict('name');
+                            unregisterName();
+                        }
+                    });
+                },
+                url: () => {
+                    let unregisterUrl = $scope.$watch('appDetails.app.url', (newVal, oldVal) => {
+                        if(newVal.toLowerCase() !== oldVal.toLowerCase()) {
+                            resetConflict('url');
+                            unregisterUrl();
+                        }
+                    });
+                }
+            };
+            //***************************
+
+            this.saveChanges = () => {
+                //if valid..
+                if($scope.appForm.$invalid){
+                    return;
+                }
+                this.isSaving = true;
+                // For a restricted app, null out all irrelevant fields
+                if (this.app.restrictedApp) {
+                    this.app.restUrl = null;
+                    this.app.isOpen = true;
+                    this.app.username = null;
+                    this.app.appPassword = null;
+                    this.app.uebTopicName = null;
+                    this.app.uebKey = null;
+                    this.app.uebSecret = null;
+                }
+                if(this.isEditMode){
+                    applicationsService.updateOnboardingApp(this.app)
+                        .then(() => {
+                            $log.debug('AppDetailsModalCtrl:updateOnboardingApp:: App update succeeded!');
+                            $scope.closeThisDialog(true);
+                            emptyCookies();
+                        }).catch(err => {
+                            switch (err.status) {
+                                case '409':         // Conflict
+                                    handleConflictErrors(err);
+                                    break;
+                                case '500':         // Internal Server Error
+                                    confirmBoxService.showInformation('There was a problem updating the application changes. ' +
+                                        'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+                                    break;
+                                case '403':         // Forbidden... possible webjunction error to try again
+                                    confirmBoxService.showInformation('There was a problem updating the application changes. ' +
+                                        'Please try again. If the problem persists, then try again later. Error: ' + err.status).then(isConfirmed => {});
+                                    break;
+                                default:
+                                    confirmBoxService.showInformation('There was a problem updating the application changes. ' +
+                                        'Please try again. If the problem persists, then try again later. Error: ' + err.status).then(isConfirmed => {});
+                            }
+                            $log.error('applicationsService:updateOnboardingApp error:: '+ JSON.stringify(err));
+                        }).finally(()=>{
+                            this.isSaving = false;
+                            // for bug in IE 11
+                            var objOffsetVersion = objAgent.indexOf("MSIE");
+                            if (objOffsetVersion != -1) {
+                                $log.debug('AppDetailsModalCtrl:updateOnboardingApp:: Browser is IE, forcing Refresh');
+                                $window.location.reload();            // for bug in IE 11
+                            }
+                            // for bug in IE 11
+                        });
+                }else{
+                    applicationsService.addOnboardingApp(this.app)
+                        .then(() => {
+                            $log.debug('App creation succeeded!');
+                            $scope.closeThisDialog(true);
+                            emptyCookies();
+                        }).catch(err => {
+                            switch (err.status) {
+                                case '409':         // Conflict
+                                    handleConflictErrors(err);
+                                    break;
+                                case '500':         // Internal Server Error
+                                    confirmBoxService.showInformation('There was a problem adding the application information. ' +
+                                        'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+                                    break;
+                                default:
+                                    confirmBoxService.showInformation('There was a problem updating the application changes. ' +
+                                        'Please try again. If the problem persists, then try again later. Error: ' +
+                                        err.status).then(isConfirmed => {});
+                            }
+                            $log.error('applicationsService:addOnboardingApp error:: '+ JSON.stringify(err));
+                        }).finally(()=>{
+                            this.isSaving = false;
+                            // for bug in IE 11
+                            var objOffsetVersion = objAgent.indexOf("MSIE");
+                            if (objOffsetVersion != -1) {
+                                $log.debug('applicationsService:addOnboardingApp:: Browser is IE, forcing Refresh');
+                                $window.location.reload();            // for bug in IE 11
+                            }
+                            // for bug in IE 11
+                        });
+                }
+            };
+
+
+            init();
+
+            $scope.$watch('appDetails.originalImage', (newVal, oldVal) => {
+              if((!newVal || !newVal.resized) && !this.app.imageUrl){
+                  if (!newVal) {
+                      $log.debug('applicationsService:$scope.$watch:: originalImage: newVal is null');
+                  } else {
+                      $log.debug('applicationsService:$scope.$watch:: originalImage: newVal is not resized and no imageUrl');
+                  }
+                  this.app.imageUrl = null;
+                  this.app.thumbnail = emptyImg;
+                  return;
+              }
+
+                if(!(_.isEqual(newVal, oldVal))){
+                    $log.debug('applicationsService:$scope.$watch:: thumbnail updated!');
+                    this.app.imageUrl = null;
+                    this.app.thumbnail = newVal.resized.dataURL;
+                }
+            });
+
+            $scope.$on('$stateChangeStart', e => {
+                //Disable navigation when modal is opened
+                e.preventDefault();
+            });
+        }
+    }
+    AppDetailsModalCtrl.$inject = ['$scope', '$log', 'applicationsService', 'errorMessageByCode',
+        'ECOMP_URL_REGEX','userProfileService','$cookies', 'confirmBoxService'];
+    angular.module('ecompApp').controller('AppDetailsModalCtrl', AppDetailsModalCtrl);
+})();
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.spec.js b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.spec.js
new file mode 100644
index 0000000..34042c1
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.controller.spec.js
@@ -0,0 +1,19 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
diff --git a/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.modal.html b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.modal.html
new file mode 100644
index 0000000..ad659aa
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/application-details-dialog/application-details.modal.html
@@ -0,0 +1,201 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="application-details-modal">
+    <div id="title" class="title">Application Details</div>
+
+    <div class="app-properties-main" scroll-top="appDetails.scrollApi">
+        <form name="appForm" novalidate autocomplete="off">
+            <!-- We can remove this script once we get to AT&T Corporate Firefox version 47
+                  autocomplete="off" won't work until v47 -->
+            <script type="text/javascript">
+                document.getElementById("appForm").reset();
+            </script>
+            <div id="app-left-container" class="left-container">
+                <div class="property">
+                    <input id="checkbox-app-is-restricted" type="checkbox" class="checkbox-field checkbox-field-openSRC" ng-disabled="appDetails.isEditMode" ng-model="appDetails.app.restrictedApp" ng-checked="appDetails.app.restrictedApp"/>
+                    <div class="property-label checkbox-label">Hyperlink only application</div>
+                </div>
+                <div class="property required">
+                    <div class="property-label">Application Name</div>
+                    <input id="input-app-name"  type="text"
+                           ng-model="appDetails.app.name"
+                           maxlength="100"
+                           name="name"
+                           ng-pattern="/^[a-zA-Z0-9_\-\s\&]*$/"
+                           required/>
+
+                    <div id="error-container-conflict" class="error-container" ng-show="appDetails.conflictMessages.name" id="conflictMessages-name">
+                        <small id="app-name-error-conflict" class="err-message" ng-bind="appDetails.conflictMessages.name"></small>
+                    </div>
+                    <div id="error-container-edit" class="error-container" ng-show="appForm.name.$dirty || appDetails.isEditMode">
+                        <div ng-messages="appForm.name.$error" class="error-container">
+                            <small id="app-name-error-required" class="err-message" ng-message="required">Application name is required</small>
+                            <small id="app-name-error-alpha-num" class="err-message" ng-message="pattern">Application name must be alphanumeric</small>
+                        </div>
+                    </div>
+                </div>
+                <!--<div class="property">-->
+                <!--<div class="property-label">Description</div>-->
+                <!--<input class="input-field" type="text" ng-model="appDetails.app.description"/>-->
+                <!--</div>-->
+                <!--<div class="property">-->
+                <!--<div class="property-label">Notes</div>-->
+                <!--<input class="input-field" type="text" ng-model="appDetails.app.notes"/>-->
+                <!--</div>-->
+                <div class="property required">
+                    <div id="url-property-label" class="property-label">URL</div>
+                    <input  id="input-app-url"
+                           ng-model="appDetails.app.url"
+                           maxlength="256"
+                           name="url"
+                           type="url" placeholder="https://"
+                           ng-pattern="appDetails.ECOMP_URL_REGEX"
+                           required />
+                    <div id="app-error-url" class="error-container" ng-show="appDetails.conflictMessages.url" id="div-app-name-err-url">
+                        <small class="err-message" ng-bind="appDetails.conflictMessages.url"></small>
+                    </div>
+                    <div id="app-error-url-message" class="error-container" ng-show="appForm.url.$dirty || appDetails.isEditMode">
+                        <div ng-messages="appForm.url.$error" class="error-container">
+                            <small id="error-app-url-req" class="err-message" ng-message="required">Application URL is required</small>
+                            <!--<small id="error-app-url-invalid" class="err-message" ng-message="pattern">Application URL must be a valid URL</small>-->
+                            <small id="error-app-url-invalid" class="err-message" ng-show="appForm.url.$error.url">Application URL must be a valid URL</small>
+                        </div>
+                    </div>
+                    <!--<span class="err-message" ng-show="appForm.url.$error.url"> Not valid URL!</span>-->
+                </div>
+
+
+                <div class="property" ng-show="!appDetails.app.restrictedApp">
+                    <div class="property-label">Rest API URL</div>
+                    <input  id="input-app-rest-url"
+                           ng-model="appDetails.app.restUrl"
+                           name="restUrl"
+                           type="url" placeholder="https://"
+                           ng-pattern="appDetails.ECOMP_URL_REGEX"
+                           maxlength="256"/>
+                    <div id="app-error-rest-message" class="error-container" ng-show="appForm.restUrl.$dirty || appDetails.isEditMode">
+                        <div ng-messages="appForm.restUrl.$error" class="error-container">
+                            <!--<small class="err-message" ng-message="pattern">Application REST URL must be a valid URL</small>-->
+                            <small class="err-message" ng-show="appForm.restUrl.$error.url">Application REST URL must be a valid URL</small>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="property required" ng-show="!appDetails.app.restrictedApp">
+                    <div id="username-property-label"  class="property-label">Username</div>
+                    <input  type="text"
+                           ng-model="appDetails.app.username"
+                           name="username"
+                           maxlength="256"
+                           ng-required="!appDetails.app.restrictedApp"/>
+                    <div id="app-error-username-container" class="error-container" ng-show="appForm.username.$dirty || appDetails.isEditMode">
+                        <div ng-messages="appForm.username.$error" class="error-container">
+                            <small  id="error-appusername-reqd" class="err-message" ng-message="required">My Logins App Username is required</small>
+                        </div>
+                    </div>
+                </div>
+                <div class="property required" ng-show="!appDetails.app.restrictedApp">
+                    <div id="pwd-property-label"  class="property-label">Password</div>
+                    <input  type="password"  id="input-mylogins-password"
+                           ng-model="appDetails.app.appPassword" autocomplete="new-password"
+                           name="appPassword"
+                           maxlength="256"
+                           ng-required="!appDetails.app.restrictedApp"/>
+                    <div id="app-error-password-container" class="error-container" ng-show="appForm.appPassword.$dirty || appDetails.isEditMode">
+                        <div ng-messages="appForm.appPassword.$error" class="error-container">
+                            <small id="error-mylogins-password-reqd" class="err-message" ng-message="required">My Logins App Password is required</small>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="right-container">
+                <div class="property">
+                    <div class="property-label">Upload Image</div>
+                    <input type="file" id="input-app-image-upload"
+                           class="input-file-field"
+                           accept="image/*"
+                           ng-model="appDetails.originalImage"
+                           name="appImage"
+                           image-upload="appDetails.originalImage"
+                           image-upload-resize-max-height="300"
+                           image-upload-resize-max-width="360"
+                           image-upload-resize-quality="0.7"
+                           image-upload-api="appDetails.imageApi" style="height: 24px;"/>
+
+                    <div id="app-error-image-upload" class="error-container" ng-show="appForm.appImage.$dirty">
+                        <div ng-messages="appForm.appImage.$error" class="error-container">
+                            <small id="error-app-invalid-image" class="err-message" ng-message="mimeType">Uploaded file must be an image</small>
+                            <small id="error-app-invalid-image-size" class="err-message" ng-message="imageSize">Image file must be smaller than 1MB</small>
+                        </div>
+                    </div>
+
+                    <div class="property-label preview">
+                        <span class="left-label">Preview</span>
+                        <span class="remove" ng-click="appDetails.removeImage()">Remove</span>
+                    </div>
+                    <img id="image-app-preview" class="image-preview" ng-src="{{appDetails.app.imageLink || appDetails.app.thumbnail || appDetails.emptyImgForPreview}}"/>
+                    <div id="property-communication-inbox" class="property" ng-show="!appDetails.app.restrictedApp">
+                        <div id="property-communication-inbox-label" class="property-label">Communication Inbox</div>
+                        <input  type="text" id="input-UEB-topicname"
+                               ng-model="appDetails.app.uebTopicName"
+                               name="uebTopicName" readonly="readonly"/>
+                    </div>
+
+                    <div id="property-communication-key" class="property" ng-show="!appDetails.app.restrictedApp">
+                        <div id="property-communication-key-label" class="property-label">Communication Key</div>
+                        <input  type="text" id="input-UEB-communication-key"
+                               ng-model="appDetails.app.uebKey"
+                               name="uebKey" readonly="readonly" />
+                    </div>
+
+                    <div id="property-communication-secret" class="property" ng-show="!appDetails.app.restrictedApp">
+                        <div id="property-communication-secret-label" class="property-label">Communication Secret</div>
+                        <input  type="text" id="input-UEB-communication-secret"
+                               ng-model="appDetails.app.uebSecret"
+                               name="uebSecret" readonly="readonly" />
+                    </div>
+
+                    <div id="property-guest-access" class="property">
+                        <input id="checkbox-app-is-open" type="checkbox" class="checkbox-field checkbox-field-openSRC" ng-model="appDetails.app.isOpen" ng-checked="appDetails.app.isOpen || appDetails.app.restrictedApp" ng-disabled="appDetails.app.restrictedApp"/>
+                        <div id="property-guest-checkbox-label" class="property-label checkbox-label">Allow guest access</div>
+                    </div>
+                    <div id="property-active" class="property">
+                        <input id="checkbox-app-is-enabled" type="checkbox" class=" checkbox-field checkbox-field-openSRC " ng-model="appDetails.app.isEnabled"/>
+                        <div id="property-active-checkbox-label" class="property-label checkbox-label">Active</div>
+                    </div>
+
+                </div>
+
+            </div>
+        </form>
+    </div>
+
+    <div class="dialog-control">
+        <span class="ecomp-save-spinner" ng-show="appDetails.isSaving"></span> 
+         <button id="button-save-app" class="btn btn-alt btn-small" ng-class="{disabled: appForm.$invalid}" ng-click="appDetails.saveChanges()">Save</button>
+        <button id="button-app-cancel" class="btn btn-alt btn-small" ng-click="closeThisDialog()">Cancel</button>
+    </div>
+</div>
+
+<script type="application/javascript">
+    $(document).ready(function(){
+        $(".ngdialog-content").css("top","-150px")
+    });
+</script>
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/views/applications/applications.controller.js b/ecomp-portal-FE-os/client/src/views/applications/applications.controller.js
new file mode 100644
index 0000000..08f0066
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/applications.controller.js
@@ -0,0 +1,123 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+(function () {
+    class ApplicationsCtrl {
+
+    	constructor($log, $cookies, conf, ngDialog,
+        			applicationsService, confirmBoxService, userProfileService, utilsService) {
+            this.emptyImgForPreview = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+            let getOnboardingApps = () => {
+                this.isLoadingTable = true;
+                applicationsService.getOnboardingApps()
+                    .then(appsList => {
+                    	// Use proper back-end URL to load image
+                    	for (var i = 0; i < appsList.length; i++) {
+                    		appsList[i].imageLink = '';
+                    		if (appsList[i].imageUrl)
+                    			appsList[i].imageLink = conf.api.appThumbnail.replace(':appId', appsList[i].id);
+                    	}
+                    	this.appsList = appsList;
+                    }).catch(err => {
+                        confirmBoxService.showInformation('There was a problem retrieving the Applications. ' +
+                            'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                        $log.error('ApplicationsCtrl:openAddNewAppModal: Error: ', err);
+                    }).finally(()=> {
+                        this.isLoadingTable = false;
+                    });
+            };
+
+            let init = () => {
+                this.isLoadingTable = false;
+                getOnboardingApps();
+                this.searchString = '';
+                this.appsTableHeaders = [
+                    {name: 'Application Name', value: 'name', isSortable: true},
+                    {name: 'Active', value: 'isEnabled', isSortable: true},
+                    {name: 'Integration Type', value: 'restrictedApp', isSortable: true},
+                    {name: 'Guest Access', value: 'isOpen', isSortable: true},
+                    {name: 'URL', value: 'url', isSortable: true},
+                    {name: 'REST URL', value: 'restUrl', isSortable: true},                
+                    {name: 'Communication Topic', value: 'uebTopicName', isSortable: true},
+                    {name: 'Communication Key', value: 'uebKey', isSortable: true},
+                    {name: 'Communication Secret', value: 'uebSecret', isSortable: true},
+                ];
+                this.appsList = [];
+            };
+
+            init();
+
+            this.openAddNewAppModal = (selectedApp) => {
+                let data = null;
+                if (selectedApp) {
+                    if (!selectedApp.id) {
+                        $log.error('App id not found');
+                        return;
+                    }
+                    data = {
+                        app: selectedApp
+                    }
+                }
+                ngDialog.open({
+                    templateUrl: 'app/views/applications/application-details-dialog/application-details.modal.html',
+                    controller: 'AppDetailsModalCtrl',
+                    controllerAs: 'appDetails',
+                    data: data
+                }).closePromise.then(needUpdate => {
+                    if (needUpdate.value === true) {
+                        $log.debug('ApplicationsCtrl:openAddNewAppModal: updating table data...');
+                        getOnboardingApps();
+                    }
+                });
+
+
+            };
+
+            this.deleteApp = application => {
+                $log.debug('ApplicationsCtrl:deleteApp:: ', application.name);
+
+                confirmBoxService.deleteItem(application.name).then(isConfirmed => {
+                    if(isConfirmed){
+                        if(!application || !application.id){
+                            $log.error('ApplicationsCtrl:deleteApp:: No application or ID... cannot delete');
+                            return;
+                        }
+                        applicationsService.deleteOnboardingApp(application.id).then(() => {
+                            this.appsList.splice(this.appsList.indexOf(application), 1);
+                        }).catch(err => {
+                            confirmBoxService.showInformation('There was a problem deleting the Application. ' +
+                                'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                            $log.error('ApplicationsCtrl:deleteApp: Error: ', err);
+                        });
+                    }
+                }).catch(err => {
+                    confirmBoxService.showInformation('There was a problem deleting the Application. ' +
+                        'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                    $log.error('ApplicationsCtrl:deleteApp error:: ', err);
+                });
+
+            };
+
+        }
+    }
+    ApplicationsCtrl.$inject = ['$log', '$cookies', 'conf', 'ngDialog',
+    				'applicationsService', 'confirmBoxService', 'userProfileService', 'utilsService'];
+    angular.module('ecompApp').controller('ApplicationsCtrl', ApplicationsCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/views/applications/applications.controller.spec.js b/ecomp-portal-FE-os/client/src/views/applications/applications.controller.spec.js
new file mode 100644
index 0000000..3841a2b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/applications.controller.spec.js
@@ -0,0 +1,19 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
diff --git a/ecomp-portal-FE-os/client/src/views/applications/applications.tpl.html b/ecomp-portal-FE-os/client/src/views/applications/applications.tpl.html
new file mode 100644
index 0000000..edded4b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/applications/applications.tpl.html
@@ -0,0 +1,81 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="w-ecomp-main">
+    <div class="w-ecomp-main-container">
+
+        <div class="applications-page-main" id="page-content">
+            <div id='app-title' class="w-ecomp-main-view-title">
+            	 <h1 class="heading-page" >Application Onboarding</h1>           
+            </div>
+            <div class="apps-table">
+                <div class="table-control">
+               		 <div class="table-control-fields">		
+						<div >
+							<input id="input-table-search" placeholder="Search in entire table" class="table-search-field" type="text" data-ng-model="searchAppName">
+						</div>
+					</div>    
+					<div class="table-control-buttons">
+						<button class="btn btn-alt btn-small" ng-click="apps.openAddNewAppModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;Add App</button> 
+					</div> 
+                </div>
+                <span class="ecomp-spinner" ng-show="apps.isLoadingTable"></span>
+                
+                
+                <div b2b-table table-data="apps.appsList"  ng-hide="apps.isLoadingTable"	search-string="searchAppName" class="b2b-table-div">
+					<table>
+						<thead b2b-table-row type="header">
+								<th b2b-table-header id="col1" sortable="false" >Thumbnail</th>
+								<th b2b-table-header id="col2" key="name" sortable="true" >Application Name</th>
+								<th b2b-table-header id="col3" sortable="false" >Active?</th>
+								<th b2b-table-header id="col4" sortable="false" >Integration Type</th>
+								<th b2b-table-header id="col5" sortable="false" >Guest Access</th>
+	                            <th b2b-table-header id="app-header-URL" sortable="false">URL</th>
+	                            <th b2b-table-header id="app-header-RESTURL" sortable="false">REST URL</th>
+	                            <th b2b-table-header id="app-header-Topic" sortable="false">Communication Topic</th>
+	                            <th b2b-table-header id="app-header-CommKey" sortable="false">Communication Key</th>
+	                            <th b2b-table-header id="app-header-Secret" sortable="false">Communication Secret</th>
+	                            <th b2b-table-header id="app-header-delete" sortable="false">Delete</th>	                            	                            
+							</tr>
+						</thead>
+						<tbody b2b-table-row type="body" 	row-repeat="rowData in apps.appsList">
+							<tr>
+								<td b2b-table-body id="rowheader_t1_{{$index}}" headers="col1" ng-click="apps.openAddNewAppModal(rowData)">
+									<img id="{{$index}}-app-imageUrl" class="small-thumbnail" ng-src="{{rowData.imageLink || apps.emptyImgForPreview}}">
+								</td>
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col2" ng-bind="rowData.name" ng-click="apps.openAddNewAppModal(rowData)"></td>
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col3" ng-click="apps.openAddNewAppModal(rowData)">{{(rowData.isEnabled) ? 'yes' : 'no'}}</td>
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col4" ng-click="apps.openAddNewAppModal(rowData)">{{(rowData.restrictedApp) ? 'link' : 'standard'}}</td>		
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col5" ng-click="apps.openAddNewAppModal(rowData)">{{(rowData.isOpen) ? 'yes' : 'no'}}</td>			
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col7" ng-click="apps.openAddNewAppModal(rowData)">{{rowData.url | elipsis: 27}}</td>	
+								<td b2b-table-body headers="rowheader_t1_{{$index}} col8" ng-click="apps.openAddNewAppModal(rowData)">{{rowData.restUrl | elipsis: 27}}</td>	
+        						<td b2b-table-body headers="rowheader_t1_{{$index}} col11" ng-click="apps.openAddNewAppModal(rowData)"ng-bind="rowData.uebTopicName"></td>	
+                               	<td b2b-table-body headers="rowheader_t1_{{$index}} col12" ng-click="apps.openAddNewAppModal(rowData)"ng-bind="rowData.uebKey"></td>	
+            					<td b2b-table-body headers="rowheader_t1_{{$index}} col13" ng-click="apps.openAddNewAppModal(rowData)"ng-bind="rowData.uebSecret"></td>	
+        						<td b2b-table-body headers="rowheader_t1_{{$index}} col14" >
+        							<span class="icon-misc-trash" ng-click="apps.deleteApp(rowData)"></span>
+        						</td>		
+							</tr>
+						</tbody>
+					</table>
+				</div>               
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.controller.js b/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.controller.js
new file mode 100644
index 0000000..5372841
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.controller.js
@@ -0,0 +1,218 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 12/20/15.
+ */
+'use strict';
+(function () {
+    class NewCatalogModalCtrl {
+        constructor($scope, $log, usersService, catalogService, applicationsService, confirmBoxService) {
+            let init = () => {
+                //$log.info('NewUserModalCtrl::init');
+                this.isSaving = false;
+                this.adminApps =[];
+                this.appRoles = [];
+                $scope.userAppRoles = [];
+                $scope.titleText = "Request for Access in MyLogins:";
+                $scope.title ="Request is pending in MyLogins for the following Roles";
+                this.isGettingAdminApps = false;
+                if($scope.ngDialogData && $scope.ngDialogData.selectedUser && $scope.ngDialogData.dialogState){
+                    this.selectedUser = $scope.ngDialogData.selectedUser;
+                    this.dialogState = $scope.ngDialogData.dialogState;
+                    this.isShowBack = false;
+                    if(this.dialogState === 2){
+                        this.getUserAppsRoles();
+                    }
+                }
+            };
+
+            this.appChanged = (index) => {
+                let myApp = this.adminApps[index];
+                //$log.debug('NewUserModalCtrl::appChanged: index: ', index, '; app id: ', myApp.id, 'app name: ',myApp.name);
+                myApp.isChanged = true;
+                this.anyChanges = true;
+            }
+            
+            this.deleteApp = (app) => {
+                let appMessage = this.selectedUser.firstName + ' ' + this.selectedUser.lastName;
+                confirmBoxService.deleteItem(appMessage).then(isConfirmed => {
+                    if(isConfirmed){
+                        this.anyChanges = true;
+                        app.isChanged = true;
+                        app.isDeleted = true; // use this to hide the app in the display
+                        app.appRoles.forEach(function(role){
+                            role.isApplied = false;
+                        });
+                    }
+                }).catch(err => {
+                    $log.error('NewUserModalCtrl::deleteApp error: ',err);
+                    confirmBoxService.showInformation('There was a problem deleting the the applications. ' +
+                        'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+                });
+            };
+      
+            this.getUserAppsRoles = () => {
+
+                //$log.debug('NewUserModalCtrl::getUserAppsRoles: about to call getAdminAppsSimpler');
+                this.isGettingAdminApps = true;
+                catalogService.getAppCatalog().then((apps) => {
+                    //$log.debug('NewUserModalCtrl::getUserAppsRoles: beginning of then for getAdminAppsSimpler');
+                	
+                	this.isGettingAdminApps = false;
+                    if (!apps || !apps.length) {
+                        $log.error('NewUserModalCtrl::getUserApps error: no admin apps found');
+                        return null;
+                    }
+                    //$log.debug('NewUserModalCtrl::getUserAppsRoles: then for getAdminAppsSimpler: step 2');
+                    //$log.debug('NewUserModalCtrl::getUserAppsRoles: admin apps: ', apps);
+                    
+                    this.dialogState = 2; 
+                    this.isLoading = true;
+                    this.adminApps = apps;
+                   
+        			catalogService.getuserAppRolesCatalog(this.selectedUser.headerText).then(
+        					function(result) {
+        						// $log.debug('CatalogCtrl:storeSelection result is ', result);
+        						
+        						$scope.userAppRoles = result;
+        						$scope.displyUserAppCatalogRoles = true;
+        						if(result.length === 1 && result[0].requestedRoleId === null)
+        							{
+        							$scope.title= "Removal Request is pending in MyLogins";
+        							}
+        						
+        						   if($scope.userAppRoles.length==0)
+        							{
+        							$scope.displyUserAppCatalogRoles = false;
+        							}
+        					});
+                    apps.forEach(app => {
+                        if(app.name === this.selectedUser.headerText){
+                        //$log.debug('NewUserModalCtrl::getUserAppsRoles: app: id: ', app.id, 'name: ',app.name);
+                        // Keep track of which app has changed, so we know which apps to update using a BE API
+                        app.isChanged = false;
+                        // Each of these specifies a state, which corresponds to a different message and style that gets displayed
+                        app.isLoading = true;
+                        app.isError = false;
+                        app.isDeleted = false;
+                        app.printNoChanges = false;
+                        app.isUpdating = false;
+                        app.isErrorUpdating = false;
+                        app.isDoneUpdating = false;
+                        app.errorMessage = "";
+                        usersService.getUserAppRoles(app.id, this.selectedUser.attuid).promise().then((userAppRolesResult) => {
+                            //$log.debug('NewUserModalCtrl::getUserAppsRoles: got a result for app: ',app.id,': ',app.name,': ',userAppRolesResult);
+                           	app.appRoles = userAppRolesResult;
+                           	app.isLoading = false;
+                        }).catch(err => {
+                            $log.error(err);
+                            app.isError = true;
+                            app.isLoading = false;
+                            app.errorMessage = err.headers('FEErrorString');
+                            //$log.debug('NewUserModalCtrl::getUserAppsRoles: in new-user.controller: response header: '+err.headers('FEErrorString'));
+                        }).finally(()=>{
+                            this.numberAppsProcessed++;
+                            if (this.numberAppsProcessed === this.adminApps.length) {
+                                this.isLoading = false;
+                            }
+                        });
+                        }
+                    })
+                    return;
+                }).catch(err => {
+                    $log.error(err);
+                })
+
+            }
+           
+			
+            /**
+             * Update the selected user apps with the new roles.
+             * If no roles remain, set the user to inactive.
+             */
+            this.updateUserAppsRoles = () => {
+                // $log.debug('NewUserModalCtrl::updateUserAppsRoles: entering updateUserAppsRoles');
+                if(!this.selectedUser || !this.selectedUser.attuid || !this.adminApps){
+                    $log.error('NewUserModalCtrl::updateUserAppsRoles: mmissing arguments');
+                    return;
+                }
+                this.isSaving = true;
+                confirmBoxService.makeUserAppRoleCatalogChanges('Are you sure you want to make these  changes?')
+                                            .then(confirmed => {
+                                              	if(confirmed === true){
+                //$log.debug('NewUserModalCtrl::updateUserAppsRoles: going to update user: ' + this.selectedUser.attuid);
+                this.numberAppsProcessed = 0;
+                this.numberAppsSucceeded = 0;
+                this.adminApps.forEach(app => {
+                    if (app.isChanged) {
+                        //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have changed; going to update: id: ', app.id, '; name: ', app.name);
+                        app.isUpdating = true;
+                        var UserAppRolesRequest = {
+                        	attuid: this.selectedUser.attuid,
+                        	appId: app.id, 
+                        	appRoles: app.appRoles,
+                        	appName: app.name
+                        };                 
+                        this.isSaving = true;
+                        $log.debug('going to update user: ' + this.selectedUser.attuid + ' with app roles: ' + JSON.stringify(this.adminAppsRoles));
+                                applicationsService.saveUserAppsRoles(UserAppRolesRequest).then(res => {
+                                	 app.isUpdating = false;
+                                     $scope.closeThisDialog(true);
+                                }).catch(err => {
+                                    $log.error('NewAdminModalCtrl.updateAdminAppsRoles:: Failed - ' + err);
+                                }).finally(()=> {
+                                    this.isSaving = false;
+                                })
+                    	}
+                });
+                            	}else{
+                                	this.isSaving = false;
+                                }
+                    
+
+           
+                });
+                
+            };
+
+            /**
+             * Navigate between dialog screens using step number: 1,2,...
+             */
+            this.navigateBack = () => {
+                if (this.dialogState === 1) {
+                    //back from 1st screen?
+                }
+                if (this.dialogState === 3) {
+                    this.dialogState = 1;
+                }
+            };
+
+            init();
+
+            $scope.$on('$stateChangeStart', e => {
+                //Disable navigation when modal is opened
+                //**Nabil - note: this will cause the history back state to be replaced with current state
+                e.preventDefault();
+            });
+        }
+    }
+    NewCatalogModalCtrl.$inject = ['$scope', '$log', 'usersService', 'catalogService', 'applicationsService', 'confirmBoxService'];
+    angular.module('ecompApp').controller('NewCatalogModalCtrl', NewCatalogModalCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.modal.html b/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.modal.html
new file mode 100644
index 0000000..1cf96f7
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/catalog/add-catalog-dialogs/new-catalog.modal.html
@@ -0,0 +1,113 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="new-catalog-modal">
+
+	<div class="user-catalog-roles" ng-show="userInfo.dialogState===2">
+	      <div >
+           <div class=display-userApp-Catalog-Roles >{{titleText}}</div>
+	     <div class="title"
+			ng-bind="userInfo.selectedUser.firstName + ' ' + userInfo.selectedUser.lastName + ' (' + userInfo.selectedUser.attuid + ')'"></div>
+     </div>
+		<div class="app-roles-main">
+
+			<div class="app-catalog-roles-list">
+				<div class="app-catalog-item" ng-repeat="app in userInfo.adminApps"
+					ng-if="app.name === userInfo.selectedUser.headerText"
+					id="app-name-{{app.name.split(' ').join('-')}}">
+					<div class="app-catalog-item-left"
+						id="div-app-name-{{app.name.split(' ').join('-')}}">{{app.name
+						| elipsis: 27}}</div>
+					<div class="app-catalog-item-right"
+						id="div-app-name-dropdown-{{app.name.split(' ').join('-')}}"
+						ng-show="!app.isError && !app.isLoading && !app.noChanges && !app.isUpdating && !app.isDoneUpdating && !app.isErrorUpdating"
+						ng-if="userAppRoles.length===0">
+						<multiple-select id="app-roles" unique-data="{{$index}}"
+							placeholder="Select roles" ng-model="app.appRoles"
+							on-change="userInfo.appChanged($index)" name-attr="roleName"
+							value-attr="isApplied"></multiple-select>
+					</div>
+
+					<div class="app-catalog-item-right"
+						id="div-app-name-dropdown-{{app.name.split(' ').join('-')}}"
+						ng-show="!app.isError && !app.isLoading && !app.noChanges && !app.isUpdating && !app.isDoneUpdating && !app.isErrorUpdating"
+						ng-if="userAppRoles.length!==0">
+						<multiple-select2 id="app-roles" unique-data="{{$index}}"
+							placeholder="Select roles" ng-model="app.appRoles"
+							on-change="userInfo.appChanged($index)" name-attr="roleName"
+							value-attr="isApplied"></multiple-select2>
+					</div>
+
+
+					<div id="app-item-no-contact" class="app-catalog-item-right-error"
+						ng-show="app.isError">{{app.errorMessage | elipsis: 35}}</div>
+					<div id="app-item-contacting"
+						class="app-catalog-item-right-contacting" ng-show="app.isLoading">Contacting
+						application...</div>
+					<div id="app-item-no-changes"
+						class="app-catalog-item-right-contacting" ng-show="app.noChanges">No
+						changes</div>
+					<div id="app-item-no-updating"
+						class="app-catalog-item-right-contacting" ng-show="app.isUpdating">Updating
+						application...</div>
+					<div id="app-item-done-updating"
+						class="app-catalog-item-right-contacting"
+						ng-show="app.isDoneUpdating">Finished updating application</div>
+					<div id="app-item-cannot-update"
+						class="app-catalog-item-right-error" ng-show="app.isErrorUpdating">Could
+						not update application...</div>
+					<div id='ecomp-small-spinner' class="ecomp-small-spinner"
+						ng-show="app.isLoading"></div>
+				</div>
+
+				&nbsp;
+
+				<div class="usr-app-roles" ng-show=displyUserAppCatalogRoles>
+					<div class="userApp-Catalog-Roles-label">{{title}}</div>
+					&nbsp;
+					<div class="display-userApp-Catalog-Roles-value"
+						style="height: 150px; width: 200px; overflow-y: auto;">
+						<div ng-repeat="getUserApplicationRole in userAppRoles">
+
+							<div class="userAppCatalog-lbl-value">
+								<span class="userAppCatalog-lbl-value-spn">
+									{{getUserApplicationRole.rolename}}</span>
+							</div>
+
+						</div>
+					</div>
+
+				</div>
+			</div>
+
+			<div class="dialog-control">
+				<span id="ecomp-save-spinner" class="ecomp-save-spinner"
+					ng-show="userInfo.isSaving || userInfo.isGettingAdminApps"></span>
+				<button id="new-user-next-button" class="next-button"
+					ng-click="userInfo.updateUserAppsRoles()"
+					ng-disabled="(!userInfo.anyChanges == true)">Submit</button>
+				<div id="new-user-cancel-button" class="cancel-button"
+					ng-click="closeThisDialog()">Cancel</div>
+			</div>
+
+		</div>
+
+	</div>
+
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/dashboard/dashboard.tpl.html b/ecomp-portal-FE-os/client/src/views/dashboard/dashboard.tpl.html
new file mode 100644
index 0000000..cf5c2ee
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/dashboard/dashboard.tpl.html
@@ -0,0 +1,173 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="w-ecomp-dashboard-home" id="widgets">
+	<div class="dashboard-home-container" id="page-content">
+		<div align="center" id="errorInfo"
+			style="display: none; font-size: 12px; margin-left: 5px">
+			<span style="color: red">You don't have a user account in that
+				application. Please ask the system administrator. </span>
+		</div>
+		<div class="portals-list" style="margin-bottom: 0px;">
+			<div>
+				<div class="simulateGridHeader">
+					<span class="simulateGridHeaderTitle">Applications <span
+						class="dashboardSortHeader">Sort by:</span></span>
+						
+						<div style="float: right; margin-right:7px; margin-top:5px">
+						<select id="sort-by-{{selectedSortType.value}}" name="dropdown1" b2b-dropdown  ng-model="selectedSortType.value" ng-change="selectedSortTypeChanged(selectedSortType.value)">  
+				        <option b2b-dropdown-list option-repeat="d in sort_options" value="{{d.value}}">{{d.title}}</option>
+				                </select>
+				                </div>
+						
+				</div>
+				<div class="dashboard-boarder">
+					<div class="gridster-container override_background">
+						<div ng-if="appsViewData.length==0">
+							<div class="app-error-block">
+								<i class="icon-information full-linear-icon-information"
+									style="margin-left: 50%; font-size: 90px; color: black"></i> <br>
+								<div class="activity-error-msg1">
+									You do not have access to any application or function in ECOMP
+									Portal.
+								</div>
+							</div>
+						</div>
+
+						<div ng-if="appsViewData.length>0" id="page-content"
+							class="content" gridster="dashboard.gridsterAppOpts">
+							<ul>
+								<li gridster-item="item" ng-repeat="item in appsViewData">
+									<div class="gridster-box" ng-if="item.addRemoveApps == null">
+										<div class="gridster-box-header">
+											<i class="icon-content-gridguide"></i>
+											<h3 style="cursor: context-menu">{{item.headerText |
+												elipsis: 14}}</h3>
+										</div>
+										<div class="gridster-box-content"
+											ng-style="{'cursor':'pointer',
+											'background-image': 'url('+(item.imageLink)+')',
+											'background-color':'white',
+											'background-repeat': 'no-repeat',
+											'background-size': '170px 130px'}"
+											ng-click="dashboard.goToPortal(item);dashboard.auditLog(item)"
+											ng-hide="users.isLoadingTable && !users.getUserAppsIsDone">
+										</div>
+									</div>
+									<div class="gridster-box" ng-if="item.addRemoveApps">
+										<div class="gridster-box-header" style="cursor: pointer;"
+											ng-click="dashboard.goToCatalog()">
+											<i class="icon-content-gridguide"></i>
+											<h3>Select applications...</h3>
+
+										</div>
+										<div class="gridster-box-content"
+											ng-style="{'cursor':'pointer',
+										'order': item.order, 
+										'text-align': 'center',
+										'background-color':'white',
+										'background-repeat': 'no-repeat',
+										'background-size': '170px 130px',
+										'padding': '4px',
+										'opacity': '1'}"
+											ng-click="dashboard.goToCatalog()" class="gridsterContent">
+											<label style="font-size: 12px;">Click
+												here to personalize <br> this applications page
+											</label> <i class="icon-controls-add-maximize"
+												style="font-size: 80px; color: #067ab4"></i>
+										</div>
+									</div>
+								</li>
+							</ul>
+						</div>
+
+					</div>
+
+				</div>
+			</div>
+
+			<br> <br>
+
+
+			<div 
+				ng-show=dashboard.isCommError>Failed to communicate with the
+				widget microservice.</div>
+			
+			<div id="widget-boarder" class="content" gridster="dashboard.gridsterWidgetOpts">
+				<ul>
+					<li gridster-item="widget" ng-repeat="widget in widgetsViewData">
+						<div class="box">
+							<div class="box-header">
+							<i style="cursor:move;" class="icon-content-gridguide"></i>
+								<h3>{{ widget.headerText}}</h3>
+								<div class="box-header-btns pull-right"
+									ng-if="isAdminPortalAdmin == true" class="ng-scope"
+										ng-show="widget.widgetIdentifier != ''">
+										<a id="widgetHeaderBtns"
+											class="widgetHeaderBtn widgetHeaderBtnPosition singleBtnBorder"
+											ng-class="singleBtnBorder" alt="Settings"
+											ng-mousedown="showImpResOption=!showImpResOption"
+											ng-mouseleave="showImpResOption=false" title="Settings"
+											ddh-accessibility-click="13,32" tabindex="0"><span
+											style="color: #888;"><img
+											ng-src="assets/images/generic.png"
+											style="margin-bottom: 3px; margin-left: 3px;" alt="..."
+											aria-label="Tap or Click to move"
+											src="assets/images/generic.png"></span></a>
+
+										<ul class="optionsMenu"
+											style="max-width: 130px; height: 32px; display: block"
+											ng-show="showImpResOption"
+											ng-mouseenter="showImpResOption=true"
+											ng-mouseleave="showImpResOption=false">
+											<!-- ngIf: widget.duplicateAllowed -->
+											<li
+												ng-click="editWidgetModalPopup(importResData, widget.widgetIdentifier);">
+												<a class="optionsMenuLink" href="javascript:void(0)"
+												ddh-accessibility-click="13,32">Edit</a>
+											</li>
+											<!-- end ngIf: widget.duplicateAllowed  -->
+										</ul>
+
+								</div>
+							</div>
+							<div class="box-content">
+							<div  dyn-attr="widget.attrb"></div>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+			<div></div>
+			<div class="gridster-container override_background">
+				<div id="dashboardAddWidgetPreference"
+					ng-style="{'cursor':'pointer'}"
+					ng-click="dashboard.goToWidgetCatLog()">
+					<i class="icon-controls-add-maximize"></i> Add Widget
+				</div>
+				&nbsp;
+				<div id="dashboardDefaultPreference" ng-style="{'cursor':'pointer'}"
+					ng-click="restoreSortSelected()">
+					<i class="icon-arrows-replay-restart"></i> Reset Widget Layout
+				</div>
+			</div>
+		</div>
+
+	</div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/footer/footer.controller.js b/ecomp-portal-FE-os/client/src/views/footer/footer.controller.js
new file mode 100644
index 0000000..34d3d96
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/footer/footer.controller.js
@@ -0,0 +1,48 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+(function () {
+    class FooterCtrl {
+        constructor($scope, $rootScope, manifestService, $log) {
+            this.manifestService = manifestService;
+            this.$log = $log;
+            this.$scope = $scope;
+            this.$rootScope = $rootScope;
+
+            $scope.buildinfo = null;
+
+            $rootScope.showFooter = true;
+            $scope.date = new Date();
+
+                   
+            manifestService.getManifest().then( jsonObj => {
+                // $log.debug('FooterCtrl.getManifest: ', JSON.stringify(jsonObj));
+                $scope.buildInfo = jsonObj;
+
+                }).catch(err=> {
+                    $log.error('FooterCtrl::updateTableData error :',err);
+                });
+            };
+
+        }
+
+    FooterCtrl.$inject = ['$scope', '$rootScope', 'manifestService', '$log'];
+    angular.module('ecompApp').controller('FooterCtrl', FooterCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/views/footer/footer.controller.spec.js b/ecomp-portal-FE-os/client/src/views/footer/footer.controller.spec.js
new file mode 100644
index 0000000..3841a2b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/footer/footer.controller.spec.js
@@ -0,0 +1,19 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
diff --git a/ecomp-portal-FE-os/client/src/views/footer/footer.less b/ecomp-portal-FE-os/client/src/views/footer/footer.less
new file mode 100644
index 0000000..59c8622
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/footer/footer.less
@@ -0,0 +1,104 @@
+.w-ecomp-footer {
+    z-index: 101;
+    background-color: #222;
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    height: @footer-height;
+    .white12r;
+
+    a {
+        .white12r;
+        font-family: Arial;
+        font-size: 11px;
+    }
+
+    .footer-image {
+        margin: auto;
+
+    }
+
+    .build-number {
+        float: right;
+        padding: 5px;
+    }
+    .footer-content {
+        align-items: center;
+        text-align: center;
+        vertical-align: middle;
+        display: flex;
+        justify-content: center;
+        //width: @table-width;
+        margin: auto;
+
+    }
+	
+    [class*="icon-primary-"], .cssIcon-globe:before {
+	    color: #0574ac;
+	    display: inline-block;
+	    font-family: 'icoPrimary' !important;
+	    font-style: normal;
+	    font-size: 20px;
+	    font-weight: normal;
+	    font-variant: normal;
+	    height: 1em;
+	    margin-right: 7px;
+	    text-transform: none;
+	    line-height: 1;
+	    -webkit-font-smoothing: antialiased;
+	    -moz-osx-font-smoothing: grayscale;
+	    position: relative;
+	    speak: none;
+	    -webkit-user-select: none;
+	    -moz-user-select: none;
+	    -ms-user-select: none;
+	    user-select: none;
+	    vertical-align: middle;
+	    width: 1em;
+	}
+
+	.footer-logo {
+		color: #000 !important;
+	}
+	.footerWrapper .footer-logo .logo-title {
+	    color: #fff;
+	    margin-left: 10px;
+	    display: inline-block;
+	    font-size: 25px;
+	    margin-top: 0px;
+	    font-family: Arial;
+		font-weight: normal;
+	}
+	.displayInline {
+		display: inline-block;
+		margin-left: 20px; 
+		margin-top: 20px;
+	}
+	.footerWrapper .copyright-text {
+	    color: #fff; 
+	    font-size: 11px;
+	    font-family: Arial;
+	    margin-bottom:0px; 
+	    margin-top: 15px; 
+	    line-height: 1rem; 
+	    margin-top: 20px;
+	    margin-left: 100px;
+	}
+	.footerText {
+		width: 59%;
+		float: left;
+		text-align: left;
+		margin-left: 50px;
+	}
+	.footerLastSection {
+		width: 1200px;
+		margin: auto;
+	}
+	.build-number{
+		margin-top:-14px; 
+		margin-right: -195px;
+	}
+	.footer-link{
+		text-decoration: underline;
+	}
+}
diff --git a/ecomp-portal-FE-os/client/src/views/footer/footer.tpl.html b/ecomp-portal-FE-os/client/src/views/footer/footer.tpl.html
new file mode 100644
index 0000000..a6fbdee
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/footer/footer.tpl.html
@@ -0,0 +1,34 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="w-ecomp-footer" id="w-ecomp-footer" ng-style="{height: tabBottom}">
+    <div id="footer" class="footer-content">
+        <div id="footer-wrapper" class="footerWrapper" id="footerWrapper">
+			<div id="footer-info" class="attFooterInfo" style="text-align: center;">
+				<div id="footer-last-section" class="footerLastSection">
+					<div id="footer-text"  class="footerText">
+							OpenECOMP Portal Version {{buildInfo.manifest['Build-Number']}}.
+			        </div>	
+			        <div id="display-inline"  class="displayInline">
+					 </div>
+				</div>
+			</div>
+		</div>
+    </div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.controller.js b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.controller.js
new file mode 100644
index 0000000..09a8e75
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.controller.js
@@ -0,0 +1,415 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 12/20/15.
+ */
+'use strict';
+(function () {
+    class MenuDetailsModalCtrl {
+        constructor($scope, $log, functionalMenuService, errorMessageByCode, ECOMP_URL_REGEX,$rootScope,confirmBoxService) {
+
+
+            let newMenuModel = {
+                name: null,
+                menuId: null,
+                parentMenuId: null,
+                url: null
+            };
+
+            let getAvailableRoles = (appid) => {
+                this.isSaving = true;
+                if (appid != null) {
+                    $log.debug("MenuDetailsModalCtrl::getAvailableRoles: About to call getManagedRolesMenu");
+                    functionalMenuService.getManagedRolesMenu(appid).then(rolesObj => {
+                        $log.debug("MenuDetailsModalCtrl::getAvailableRoles: Roles returned = " + JSON.stringify(rolesObj))
+                        this.availableRoles = rolesObj;
+                        this.preSelectedRoles = {roles:[]};
+
+                        if(($scope.ngDialogData.source==='edit') && this.isMidLevelMenuItem()){
+                            // in Edit flow , for Midlevel menu item no need to preSelect.
+                            this.preSelectedRoles = {roles:[]};
+                        }else if(!angular.isUndefined(this.menuItem.menuDetails) &&
+                            $scope.ngDialogData.source==='edit' && this.isLeafMenuItem() &&
+                            this.menuItem.menuDetails.appid!=appid) {
+                            // in Edit flow , for LeafMenuItem, if appid changed then no need to preSelect.
+                            this.preSelectedRoles = {roles:[]};
+                        }else{
+                            if((!angular.isUndefined(this.menuItem.menuDetails)) &&
+                                (!angular.isUndefined(this.menuItem.menuDetails.roles))){
+                                    $log.debug('menuDetails.roles: ' + this.menuItem.menuDetails.roles);
+                                    for(var i=0; i<this.menuItem.menuDetails.roles.length; i++){
+                                        var role = {"roleId":this.menuItem.menuDetails.roles[i]};
+                                        $log.debug('MenuDetailsModalCtrl::getAvailableRoles: adding role to preselected: ' + i + ': ' + JSON.stringify(role));
+                                        this.preSelectedRoles.roles.push(role);
+                                    }
+                            }
+                        }
+                        $rootScope.$broadcast('availableRolesReady');
+                        this.isSaving = false;
+                    }).catch(err => {
+                        $log.error("MenuDetailsModalCtrl::getAvailableRoles: error: " + err);
+                    });
+                } else {
+                    $log.debug("MenuDetailsModalCtrl::getAvailableRoles: appid was null");
+                }
+            };
+
+            let getAvailableApps = () => {
+                functionalMenuService.getAvailableApplications().then(apps => {
+                    $log.debug("MenuDetailsModalCtrl::getAvailableApps: Apps returned = " + JSON.stringify(apps))
+                    this.availableApps = apps;
+                    // Keep track of whether or not the selected app is disabled
+                    if (angular.isDefined(this.selectedApp) && angular.isDefined(this.selectedApp.index)) {
+                        for (var i = 0; i < apps.length; i++) {
+                            if (apps[i].index === this.selectedApp.index) {
+                                $log.debug("MenuDetailsModalCtrl::getAvailableApps: found app with index: " + this.selectedApp.index);
+                                $log.debug("MenuDetailsModalCtrl::getAvailableApps: setting isDisabled to: " + !apps[i].enabled);
+                                this.selectedApp.isDisabled = !apps[i].enabled;
+                                break;
+                            }
+                        }
+                        $log.debug("didn't find index: " + this.selectedApp.index);
+                    }
+                })['catch'](function (err) {
+                    confirmBoxService.showInformation('There was a problem retrieving the Applications. ' +
+                        'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                    $log.error("MenuDetailsModalCtrl::getAvailableApps: getAvailableApps error: " + err);
+                }).finally(()=>{
+                    this.isSaving = false;
+                });
+            };
+
+            let init = () => {
+                $log.info('MenuDetailsModalCtrl::init');
+                this.saveOrContinueBtnText = "Save";
+                this.isSaving = false;
+                this.displayRoles = $scope.ngDialogData.source==='view' ? true : false;
+                this.formEditable = $scope.ngDialogData.source==='view' ? false : true;
+                this.selectedRole = [];
+                this.availableRoles = [];
+                this.menuItem = _.clone($scope.ngDialogData.menuItem);
+                $log.info('MenuDetailsModalCtrl::getAvailableApps: Within init, about to check menuDetails for defined');
+                if(!angular.isUndefined(this.menuItem.menuDetails) &&
+                    ($scope.ngDialogData.source==='view' ||
+                    ($scope.ngDialogData.source==='edit') && this.isLeafMenuItem() )){
+
+                    $log.debug("MenuDetailsModalCtrl::init: menuItem: ");
+                    $log.debug('MenuDetailsModalCtrl::init: ',this.menuItem);
+                    this.menuItem.menu.url = this.menuItem.menuDetails.url;
+                    this.selectedApp={};
+                    this.selectedApp.index = this.menuItem.menuDetails.appid;
+                    getAvailableRoles(this.selectedApp.index);
+
+                }
+
+                if($scope.ngDialogData.source==='view' || $scope.ngDialogData.source==='edit'){
+                    this.menutitle = this.menuItem.menu.name;
+                    this.menuLocation = this.isParentMenuItem() ? this.menuItem.menu.name : this.menuItem.menu.parent.name;
+                }else{
+                    this.menutitle = '';
+                    this.menuLocation = this.menuItem.menu.name;
+                }
+                // Temporarily passing 0 as dummy for getAvailableRoles incase of this.selectedApp is not there i.e., in Add flow
+                //  getAvailableRoles(angular.isUndefined(this.selectedApp) ? 0: this.selectedApp.index );
+                getAvailableApps();
+                $log.debug("MenuDetailsModalCtrl::init: Menu details: " +  JSON.stringify(this.menuItem.menuDetails));
+            };
+
+
+            this.ECOMP_URL_REGEX = ECOMP_URL_REGEX;
+
+            //This part handles conflict errors (409)
+            this.conflictMessages = {};
+            this.scrollApi = {};
+            let handleConflictErrors = err => {
+                if(!err.data){
+                    return;
+                }
+                if(!err.data.length){ //support objects
+                    err.data = [err.data]
+                }
+                $log.debug('MenuDetailsModalCtrl::handleConflictErrors: err.data = ' + JSON.stringify(err.data));
+                _.forEach(err.data, item => {
+                    _.forEach(item.fields, field => {
+                        //set conflict message
+                        this.conflictMessages[field.name] = errorMessageByCode[item.errorCode];
+                        //set field as invalid
+                        $log.debug('MenuDetailsModalCtrl::handleConflictErrors: fieldName = ' + field.name);
+                        $scope.functionalMenuForm[field.name].$setValidity('conflict', false);
+                        //set watch once to clear error after user correction
+                        watchOnce[field.name]();
+                    });
+                });
+                this.scrollApi.scrollTop();
+            };
+
+            let resetConflict = fieldName => {
+                delete this.conflictMessages[fieldName];
+                $log.debug('MenuDetailsModalCtrl::resetConflict: $setValidity(true) = ' + fieldName);
+                if($scope.functionalMenuForm[fieldName]){
+                    $scope.functionalMenuForm[fieldName].$setValidity('conflict', true);
+                }
+            };
+
+            let watchOnce = {
+                text: () => {
+                    let unregisterName = $scope.$watch('functionalMenuDetails.menutitle', (newVal, oldVal) => {
+                        // $log.debug('title:: newVal, oldVal = ' + newVal.toLowerCase() + " | " + oldVal.toLowerCase());
+                        if(newVal.toLowerCase() !== oldVal.toLowerCase()){
+                            resetConflict('text');
+                            unregisterName();
+                        }
+                    });
+                },
+                url: () => {
+                    let unregisterUrl = $scope.$watch('functionalMenuDetails.menuItem.menu.url', (newVal, oldVal) => {
+                        if(newVal.toLowerCase() !== oldVal.toLowerCase()){
+                            resetConflict('url');
+                            unregisterUrl();
+                        }
+                    });
+                }
+            };
+
+            //***************************
+
+            this.isLeafMenuItem = () => {
+                return this.menuItem.menu.children.length>0 ? false : true;
+            };
+
+            this.isMidLevelMenuItem = () => {
+                return this.menuItem.menu.parentMenuId!=null && this.menuItem.menu.children.length>0 ? true : false;
+            };
+
+            this.isParentMenuItem = () => {
+                return this.menuItem.menu.parentMenuId!=null ? false : true;
+            };
+
+            this.updateSelectedApp = (appItem) => {
+                if (!appItem) {
+                    return;
+                }
+                $log.debug('MenuDetailsModalCtrl::updateSelectedApp: drop down app item = ' + JSON.stringify(appItem.index));
+                $log.debug("MenuDetailsModalCtrl::updateSelectedApp: appItem in updateSelectedApp: ");
+                $log.debug('MenuDetailsModalCtrl::updateSelectedApp: ',appItem);
+                this.selectedApp.isDisabled = ! appItem.enabled;
+                $log.debug("MenuDetailsModalCtrl::updateSelectedApp: isDisabled: "+this.selectedApp.isDisabled);
+                getAvailableRoles(appItem.index);
+            };
+
+            this.continue = () => {
+                this.displayRoles = true;
+                this.formEditable = false;
+            };
+
+            this.saveChanges = () => {
+
+                //todo : form validation was commented as dialog message is kept for error validations
+                /*if($scope.functionalMenuForm.$invalid){
+                 return;
+                 }*/
+
+                if(!!this.menuItem.menu.url && (angular.isUndefined(this.selectedApp) || !this.selectedApp.index>0)) {
+                    confirmBoxService.showInformation('Please select the appropriate app, or remove the url').then(isConfirmed => {});
+                    return;
+                }else if(!this.menuItem.menu.url && !angular.isUndefined(this.selectedApp) && this.selectedApp.index>0){
+                    confirmBoxService.showInformation('Please enter url, or select "No Application"').then(isConfirmed => {});
+                    return;
+                }else if(!this.menutitle){
+                    confirmBoxService.showInformation('Please enter the Menu title').then(isConfirmed => {});
+                    return;
+                }
+
+                this.isSaving = true;
+                var activeMenuItem = {};
+
+                if ($scope.ngDialogData.source === 'edit') {     // Edit Menu Item
+                    $log.debug('MenuDetailsModalCtrl::saveChanges: Will be saving an edit menu item');
+                    activeMenuItem = {
+                        menuId:this.menuItem.menu.menuId,
+                        column:this.menuItem.menu.column,
+                        text:this.menutitle,
+                        parentMenuId:this.menuItem.menu.parentMenuId,
+                        url:this.menuItem.menu.url,
+                        appid: angular.isUndefined(this.selectedApp) ? null:this.selectedApp.index,
+                        roles:this.selectedRole
+                    };
+                    // If we have removed the url and appid, we must remove the roles
+                    if (!activeMenuItem.appid && !activeMenuItem.url) {
+                        activeMenuItem.roles = null;
+                    }
+                    functionalMenuService.saveEditedMenuItem(activeMenuItem)
+                        .then(() => {
+                            $log.debug('MenuDetailsModalCtrl::saveChanges:  Menu Item saved');
+                            $scope.closeThisDialog(true);
+                        }).catch(err => {
+                        if(err.status === 409){//Conflict
+                            handleConflictErrors(err);
+                        } else {
+                            confirmBoxService.showInformation('There was a problem saving your change. ' +
+                                'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                        }
+                        $log.error('MenuDetailsModalCtrl::saveChanges: error - ',err);
+                    }).finally(()=>{
+                        this.isSaving = false;
+                    });
+
+                    $log.debug("MenuDetailsModalCtrl::saveChanges: Edit Menu output will be: " + JSON.stringify(activeMenuItem));
+                } else {   // New Menu Item
+                    $log.debug('MenuDetailsModalCtrl::saveChanges: Will be saving a New menu item');
+                    var newMenuItem = {
+                        menuId:null, // this is a new menu item
+                        column:this.menuItem.menu.column,
+                        text:this.menutitle,
+                        // We are creating this new menu item under the menu item that was clicked on.
+                        parentMenuId:this.menuItem.menu.menuId,
+                        url:this.menuItem.menu.url,
+                        appid: angular.isUndefined(this.selectedApp) ? null:this.selectedApp.index,
+                        roles:this.selectedRole
+                    };
+
+                    $log.debug("MenuDetailsModalCtrl::saveChanges:  New Menu output will be: " + JSON.stringify(newMenuItem));
+                    functionalMenuService.saveMenuItem(newMenuItem)
+                        .then(() => {
+                            $log.debug('MenuDetailsModalCtrl::saveChanges:  Menu Item saved');
+                            $scope.closeThisDialog(true);
+                        }).catch(err => {
+                        if(err.status === 409){//Conflict
+                            handleConflictErrors(err);
+                        } else {
+                            confirmBoxService.showInformation('There was a problem saving your menu. ' +
+                                'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
+                        }
+                        $log.error('MenuDetailsModalCtrl::saveChanges error: ', err);
+                    }).finally(()=>{
+                        this.isSaving = false;
+                    });
+
+                }
+            };
+
+            init();
+
+            $scope.$on('$stateChangeStart', e => {
+                //Disable navigation when modal is opened
+                e.preventDefault();
+            });
+        }
+    }
+    MenuDetailsModalCtrl.$inject = ['$scope', '$log', 'functionalMenuService', 'errorMessageByCode', 'ECOMP_URL_REGEX','$rootScope','confirmBoxService'];
+    angular.module('ecompApp').controller('MenuDetailsModalCtrl', MenuDetailsModalCtrl);
+
+    angular.module('ecompApp').directive('dropdownMultiselect', ['functionalMenuService',function(){
+        return {
+            restrict: 'E',
+            scope: {
+                model: '=',
+                options: '=',
+                populated_roles: '=preSelected',
+                dropdownTitle: '@',
+                source: '='
+            },
+            template: "<div class='btn-group' data-ng-class='{open: open}'>" +
+            "<button class='btn btn-medium'>{{dropdownTitle}}</button>" +
+            "<button class='btn dropdown-toggle' data-ng-click='open=!open;openDropDown()'><span class='caret'></span></button>" +
+            "<ul class='dropdown-menu dropdown-menu-medium' aria-labelledby='dropdownMenu'>" +
+            "<li data-ng-repeat='option in options'> <input ng-disabled='setDisable(source)'  type='checkbox' data-ng-change='setSelectedItem(option.roleId)' ng-model='selectedItems[option.roleId]'>{{option.rolename}}</li>" +
+            "</ul>" +
+            "</div>",
+            controller: function ($scope) {
+                $scope.selectedItems = {};
+                $scope.checkAll = false;
+                $scope.$on('availableRolesReady', function() {
+                    init();
+                });
+
+                function init() {
+                    console.log('dropdownMultiselect init');
+                    $scope.dropdownTitle = $scope.source ==='view' ? 'View Roles' : 'Select Roles';
+                    console.log('$scope.populated_roles = ' + $scope.populated_roles);
+                }
+
+                $scope.$watch('populated_roles', function(){
+                    if ($scope.populated_roles && $scope.populated_roles.length>0) {
+                        for (var i = 0; i < $scope.populated_roles.length; i++) {
+                            $scope.model.push($scope.populated_roles[i].roleId);
+                            $scope.selectedItems[$scope.populated_roles[i].roleId] = true;
+                        }
+                        if ($scope.populated_roles.length === $scope.options.length) {
+                            $scope.checkAll = true;
+                        }
+                    }else{
+                        deselectAll();
+                    }
+                });
+
+                $scope.openDropDown = function () {
+
+                };
+
+                $scope.checkAllClicked = function () {
+                    if ($scope.checkAll) {
+                        selectAll();
+                    } else {
+                        deselectAll();
+                    }
+                };
+
+                function selectAll() {
+                    $scope.model = [];
+                    $scope.selectedItems = {};
+                    angular.forEach($scope.options, function (option) {
+                        $scope.model.push(option.roleId);
+                    });
+                    angular.forEach($scope.model, function (id) {
+                        $scope.selectedItems[id] = true;
+                    });
+                    console.log($scope.model);
+                };
+
+                function deselectAll() {
+                    $scope.model = [];
+                    $scope.selectedItems = {};
+                    console.log($scope.model);
+                };
+
+                $scope.setSelectedItem = function (id) {
+                    var filteredArray = [];
+                    if ($scope.selectedItems[id] === true) {
+                        $scope.model.push(id);
+                    } else {
+                        filteredArray = $scope.model.filter(function (value) {
+                            return value != id;
+                        });
+                        $scope.model = filteredArray;
+                        $scope.checkAll = false;
+                    }
+                    console.log(filteredArray);
+                    return false;
+                };
+
+                $scope.setDisable = function(source){
+                    return source ==='view' ? true : false;
+                }
+            }
+        }
+    }]);
+
+})();
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.delete.modal.html b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.delete.modal.html
new file mode 100644
index 0000000..f5f027c
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.delete.modal.html
@@ -0,0 +1,37 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="functionalMenu-details-modal">
+    <div id="title" class="title">Delete Menu Item</div>
+
+    <div id="functionalMenu-main" class="functionalMenu-properties-main" scroll-top="functionalMenuDetails.scrollApi">
+        <form name="functionalMenuForm" novalidate>
+
+            <div class="confirmation-message-wrap">
+                <div class="confirmation-message" ng-bind="confirmBox.message"></div>
+            </div>
+        </form>
+    </div>
+    <div class="dialog-control">
+        <span class="ecomp-save-spinner" ng-show="functionalMenuDetails.isSaving"></span>
+        <div id='menu-details-next-button' class="next-button"
+             ng-class="{disabled: functionalMenuForm.$invalid}" ng-click="functionalMenuDetails.saveChanges()">Delete</div>
+        <div id='menu-details-cancel-button' class="cancel-button" ng-click="closeThisDialog()">Cancel</div>
+    </div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.modal.html b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.modal.html
new file mode 100644
index 0000000..aebc6a5
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu-dialog/menu-details.modal.html
@@ -0,0 +1,103 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="functionalMenu-details-modal">
+    <div class="title">{{ngDialogData.title}}</div>
+
+
+    <div class="functionalMenu-properties-main" scroll-top="functionalMenuDetails.scrollApi">
+        <form name="functionalMenuForm">
+
+            <div class="item">
+                <div class="item-label">Parent</div>
+                <input id="input-parent" readonly="readonly" class="input-field" value="{{functionalMenuDetails.menuLocation}}" type="text" name="menuItem" required/>
+            </div>
+            <div class="item">
+                <div class="item-label">Title</div>
+                <input id="input-title" ng-readonly="!functionalMenuDetails.formEditable ? 'checked':'' " placeholder="Enter text" class="input-field" ng-model="functionalMenuDetails.menutitle" type="text" name="text"/>
+                <div id="div-error-conflict" class="error-container" ng-show="functionalMenuDetails.conflictMessages.text">
+                    <small id="msg-error-conflict" id="functionalMenuDetails-input-title-conflict" class="err-message" ng-bind="functionalMenuDetails.conflictMessages.text"></small>
+                </div>
+            </div>
+            <div class="item">
+                <div class="left-item">
+                    <div class="item-label">URL</div>
+                    <input id="input-url" ng-readonly="!functionalMenuDetails.formEditable ? 'checked':'' " placeholder="http://" class="input-field" ng-model="functionalMenuDetails.menuItem.menu.url" type="url" name="url"/>
+                    <span id="error-url-conflict" class="err-message" ng-show="functionalMenuForm.url.$error.url"> Not valid URL!</span>
+                </div>
+                <div class="right-item">
+                    <div class="item-label">App</div>
+                    <div class="custom-select-wrap" ng-readonly="checked">
+                        <select id="select-app" class="select-field"
+                                ng-model="functionalMenuDetails.selectedApp"
+                                ng-change="functionalMenuDetails.updateSelectedApp(functionalMenuDetails.selectedApp);"
+                                ng-options="app.title for app in functionalMenuDetails.availableApps track by app.index"
+                                ng-disabled="!functionalMenuDetails.availableApps || !functionalMenuDetails.availableApps.length || !functionalMenuDetails.formEditable"
+                                name="app"
+                                required>
+                            <option value="" >No Application</option>
+                        </select>
+                    </div>
+                    <!--<span class="err-message" ng-show="functionalMenuForm.app.$dirty && functionalMenuForm.app.$error.required"> Please select App!</span>-->
+                 <!--   <pre>{{functionalMenuDetails.menuItem | json}}</pre> -->
+                </div>
+            </div>
+            <div class="item" ng-show="functionalMenuDetails.displayRoles==true">
+                <div class="item-label">Roles</div>
+                    <dropdown-multiselect id="dropdown-roles" dropdown-title="Select Roles" pre-selected="functionalMenuDetails.preSelectedRoles.roles"
+                                          model="functionalMenuDetails.selectedRole"
+                                          options="functionalMenuDetails.availableRoles" source="ngDialogData.source">
+                    </dropdown-multiselect>
+            </div>
+            <div ng-show="functionalMenuDetails.selectedApp && functionalMenuDetails.selectedApp.isDisabled" class="err-message">Application is disabled</div>
+        </form>
+    </div>
+    <div class="dialog-control">
+        <div ng-if="ngDialogData.source!='view'">
+            <span class="ecomp-save-spinner" ng-show="functionalMenuDetails.isSaving"></span>
+            <span ng-if="ngDialogData.source=='edit' && functionalMenuDetails.isLeafMenuItem()">
+                <button class="save-button" id="add-menu-button-save"
+                        ng-show="!functionalMenuDetails.menuItem.menu.url ||
+                        !(functionalMenuDetails.selectedApp.index>0) ||
+                        functionalMenuDetails.displayRoles"
+                        ng-disabled="!functionalMenuForm.text.$valid"
+                        ng-click="functionalMenuDetails.saveChanges()">Save</button>
+                <button class="save-button" id="add-menu-button-continue"
+                        ng-show="!!functionalMenuDetails.menuItem.menu.url &&
+                        functionalMenuDetails.selectedApp.index>0 &&
+                        functionalMenuDetails.menutitle &&
+                        !functionalMenuDetails.displayRoles"
+                        ng-disabled="!functionalMenuForm.url.$valid" ng-click="functionalMenuDetails.continue()">Continue</button>
+            </span>
+            <span ng-if="ngDialogData.source=='add' || (ngDialogData.source=='edit' && !functionalMenuDetails.isLeafMenuItem())">
+                <button id="button-save-add"
+                        class="save-button" ng-show="!functionalMenuDetails.menuItem.menu.url || !(functionalMenuDetails.selectedApp.index>0)
+                || functionalMenuDetails.selectedRole.length>0 || !functionalMenuDetails.menutitle" ng-disabled="!functionalMenuForm.text.$valid || !functionalMenuDetails.menutitle"
+                        ng-click="functionalMenuDetails.saveChanges()">Save</button>
+                <button id="button-save-continue" class="save-button" ng-show="!!functionalMenuDetails.menuItem.menu.url && functionalMenuDetails.selectedApp.index>0 && functionalMenuDetails.menutitle
+                && !functionalMenuDetails.selectedRole.length>0" ng-disabled="!functionalMenuForm.url.$valid"
+                        ng-click="functionalMenuDetails.continue()">Continue</button>
+            </span>
+            <button id="button-cancel-close-dialog" class="cancel-button" ng-click="closeThisDialog()">Cancel</button>
+        </div>
+        <div ng-if="ngDialogData.source=='view'">
+            <div  id="div-close-dialog"  class="cancel-button" ng-click="closeThisDialog()">Close</div>
+        </div>
+    </div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.controller.js b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.controller.js
new file mode 100644
index 0000000..dedc137
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.controller.js
@@ -0,0 +1,372 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+(function () {
+    class FunctionalMenuCtrl {
+        constructor($log, functionalMenuService, $scope,ngDialog, confirmBoxService) {
+            $log.info('FunctionalMenuCtrl init');
+
+            $scope.invokeDialog = () => {
+                // alert("click dialog");
+            };
+
+            this.regenerateFunctionalMenuAncestors = () => {
+                functionalMenuService.regenerateFunctionalMenuAncestors().then(res => {
+                    $log.debug("FunctionalMenuCtrl:regenerateFunctionalMenuAncestors::returned from regenerateFunctionalMenuAncestors API call");
+                    confirmBoxService.showInformation('You have successfully regenerated the menu.').then(isConfirmed => {
+                    });
+                })['catch'](function (err) {
+                    $log.error("FunctionalMenuCtrl:regenerateFunctionalMenuAncestors:: error: " + err);
+                    confirmBoxService.showInformation('There was an error while regenerating the menu.').then(isConfirmed => {
+                    });
+                });
+            };
+
+            let getFunctionalMenu = () => {
+                this.isLoadingTable = true;
+                functionalMenuService.getManagedFunctionalMenu().then(res => {
+
+                    let actualData=[];
+
+                    //Adding children and label attribute to all objects in res
+                    for(let i = 0; i < res.length; i++){
+                        res[i].children=[];
+                        res[i].label=res[i].text;
+                        res[i].id=res[i].text;
+
+                    }
+                    //Adding actual child items to children array in res objects
+                    for(let i = 0; i < res.length; i++){
+
+                        let parentId=res[i].menuId;
+                        for(let j = 0; j < res.length; j++){
+                            let childId=res[j].parentMenuId;
+                            if(parentId===childId){
+                                res[i].children.push(res[j]);
+
+                            }
+                        }
+                    }
+
+                    // Sort the top-level menu items in order based on the column
+                    res.sort(function(a, b) {
+                        return a.column-b.column;
+                    });
+
+                    // Sort all the children in order based on the column
+                    for(let i = 0; i < res.length; i++){
+                        res[i].children.sort(function(a, b){
+                            return a.column-b.column;
+                        });
+                    }
+
+                    //Forming actual parent items
+                    for(let i = 0; i < res.length; i++){
+                        let parentId=res[i].parentMenuId;
+                        if(parentId===null){
+                            actualData.push(res[i]);
+                        }
+                    }
+
+                    $scope.treedata = actualData;
+
+                }).catch(err => {
+                    $log.error('FunctionalMenuCtrl:getFunctionalMenu:: error ',err);
+                }).finally(()=> {
+                    this.isLoadingTable = false;
+                });
+
+            };
+
+
+            let init = () => {
+                this.isLoadingTable = false;
+                this.functionalMenu = [];
+                getFunctionalMenu();
+                this.searchString = '';
+
+
+            };
+
+            this.filterByDropdownValue = item => {
+                if(this.filterByApp.value === ''){
+                    return true;
+                }
+                return item.appName === this.filterByApp.value;
+            };
+
+            let getDialogTitle = (source) => {
+                switch (source) {
+                    case 'edit':
+                        return "Functional Menu - Edit";
+                    case 'view':
+                        return "Functional Menu - View";
+                    case 'add':
+                        return "Functional Menu - Add";
+                    default:
+                        return "Functional Menu";
+                };
+            };
+
+            $scope.reloadTreeStructure = (selectedItem,source) => {
+                getFunctionalMenu();
+            };
+            $scope.openMenuDetailsModal = (selectedItem,source) => {
+                let data = null;
+                let selectedMenuDetails = null;
+                console.log('selectedItem: ', selectedItem);
+
+                functionalMenuService.getMenuDetails(selectedItem.menuId)
+                    .then(function( resp ){
+                        selectedMenuDetails = resp;
+                        $log.info('FunctionalMenuCtrl::openMenuDetailsModal: getMenuDetails: ', resp );
+
+                        if(selectedItem){
+                            data = {
+                                menuItem: {menu: _.clone(selectedItem),menuDetails:_.clone(selectedMenuDetails)},
+                                source: source,
+                                title: getDialogTitle(source)
+                            };
+                        }
+                        ngDialog.open({
+                            templateUrl: 'app/views/functionalMenu/functionalMenu-dialog/menu-details.modal.html',
+                            controller: 'MenuDetailsModalCtrl',
+                            controllerAs: 'functionalMenuDetails',
+                            data: data
+                        }).closePromise.then(needUpdate => {
+                            if(needUpdate.value === true){
+                                $log.debug('FunctionalMenuCtrl::openMenuDetailsModal: updating table data...');
+                                if(source==="edit") {
+                                    init();
+                                }
+                            }
+                        });
+                    });
+            };
+
+
+            $scope.createNewMenuItem = (selectedItem,source) => {
+
+                if(selectedItem != null && selectedItem.getLevel() >= 4){
+                    confirmBoxService.showInformation('You are not allowed to have a menu item at a level greater than 4.').then(isConfirmed => {
+
+                    });
+                    return ;
+                }
+
+                let data = null;
+                let selectedMenuDetails = null;
+                functionalMenuService.getMenuDetails(selectedItem.menuId)
+                    .then(function( resp ){
+                        selectedMenuDetails = resp;
+
+                        if((selectedItem.children===null || !selectedItem.children.length>0) &&
+                            (!!selectedMenuDetails.url || !!selectedMenuDetails.appid || !!selectedMenuDetails.roles)){
+                            confirmBoxService.showInformation('Warning: the child menu item "' + selectedItem.name + '" is already configured with an application. You can create a new mid-level menu item, and move this item under it.').then(isConfirmed => {
+                                return;
+                            });
+                        }else{
+                            if(selectedItem){
+                                data = {
+                                    menuItem: {menu: _.clone(selectedItem)},
+                                    source:source,
+                                    title: getDialogTitle(source)
+                                };
+                            }
+
+                            ngDialog.open({
+                                templateUrl: 'app/views/functionalMenu/functionalMenu-dialog/menu-details.modal.html',
+                                controller: 'MenuDetailsModalCtrl',
+                                controllerAs: 'functionalMenuDetails',
+                                data: data
+                            }).closePromise.then(needUpdate => {
+                                if(needUpdate.value === true){
+                                    $log.debug('FunctionalMenuCtrl::getMenuDetails: updating table data...');
+                                    init();
+                                    //getOnboardingWidgets();
+                                }
+                            });
+                        }
+                    });
+            };
+
+            $scope.deleteMenuItem = (selectedItem,source) => {
+                $log.info('FunctionalMenuCtrl:deleteMenuItem:: delete selectedItem: ', selectedItem);
+
+                if(selectedItem.children!=null && selectedItem.children.length>0){
+                    confirmBoxService.showInformation('You are not allowed to delete a menu item that has children. You can only delete leaf menu items.').then(isConfirmed => {
+
+                    });
+                }else{
+                    confirmBoxService.deleteItem(selectedItem.name).then(isConfirmed => {
+                        if(isConfirmed){
+                            $log.info('FunctionalMenuCtrl:deleteMenuItem:: Deleting Menu Item :: name: '+selectedItem.name+'; menuId: '+selectedItem.menuId);
+                            $log.info('FunctionalMenuCtrl:deleteMenuItem:: selectedItem: ', selectedItem);
+
+                            functionalMenuService.deleteMenuItem(selectedItem.menuId).then(() => {
+                                //TODO:Have to splice menu item
+                                //this.widgetsList.splice(this.widgetsList.indexOf(widget), 1);
+                                $log.info('FunctionalMenuCtrl:deleteMenuItem:: Removed Menu Item :: '+selectedItem.name);
+                                init();
+                            }).catch(err => {
+                                $log.error(err);
+                            });
+                        }
+                    }).catch(err => {
+                        $log.error(err);
+                    });
+                }
+            };
+
+            init();
+        }
+    }
+    FunctionalMenuCtrl.$inject = ['$log', 'functionalMenuService','$scope', 'ngDialog', 'confirmBoxService'];
+    angular.module('ecompApp').controller('FunctionalMenuCtrl', FunctionalMenuCtrl);
+
+    angular.module('ecompApp').directive('jqTree', ['functionalMenuService','$log','confirmBoxService',function(functionalMenuService,$log,confirmBoxService){
+        return {
+            templateUrl: 'jqtree-tmpl.html',
+            link: function(scope, el, attrs){
+
+                var $jqTree =  el.find('#jqTree').tree({
+                    data: scope.treedata,
+                    autoOpen: false,
+                    dragAndDrop: true,
+                    onCreateLi: function(node, $li) {
+                        $li.attr('id', node.id.replace(/\s+/g,'_'));
+                    }
+                });
+
+                el.find('#jqTree').bind('tree.move',  function(event){
+                    event.preventDefault();
+                    console.log('moved_node', event.move_info.moved_node);
+                    console.log('target_node', event.move_info.target_node);
+                    console.log('position', event.move_info.position);
+                    console.log('previous_parent', event.move_info.previous_parent);
+
+
+
+                    if(event.move_info.target_node != null &&
+                        ((event.move_info.position === 'after' && event.move_info.target_node.getLevel() > 4) ||
+                        (event.move_info.position === 'inside' && event.move_info.target_node.getLevel() > 3))){
+                        confirmBoxService.showInformation('You are not allowed to have a menu item at a level greater than 4.').then(isConfirmed => {
+
+                        });
+                        return ;
+                    }
+
+                    var confMsg = 'Are you sure you want to move "'+event.move_info.moved_node.name+'" ?';
+                    if ((event.move_info.position === "inside") && (event.move_info.target_node.url != "")) {
+                        // If we are moving UNDER a node that has a url associated with it, warn the user
+                        // that all the app information will be removed if they do this.
+                        confMsg = 'Warning: You are moving "'+event.move_info.moved_node.name+'" under "'+event.move_info.target_node.name+'", which has application information associated with it. This will cause all the application information from "'+event.move_info.target_node.name+'" to be deleted.';
+                    }
+                    confirmBoxService.moveMenuItem(confMsg).then(isConfirmed => {
+                        if(isConfirmed){
+                            /*
+                             {
+                             "menuId": 129,
+                             "column": 3,
+                             "text": "",
+                             "parentMenuId": 37,
+                             "url": "",
+                             "appid": null,
+                             "roles": null
+                             }
+
+                             The menuId for the menu item being moved
+                             The column it is being moved to
+                             The parentMenuId for the parent it is being moved under
+                             */
+
+                            // The target_node is the node before the position we are
+                            // moving to. If we are moving to a lower column number, or
+                            // to a new parent, we must adjust the column to be after
+                            // the target_node.
+                            var new_column = event.move_info.target_node.column;
+                            var old_column = event.move_info.moved_node.column;
+                            if ((event.move_info.moved_node.parentMenuId !=
+                                event.move_info.target_node.parentMenuId) ||
+                                (new_column < old_column)
+                            ) {
+                                new_column += 1;
+                            }
+                            var activeMenuItem = {
+                                menuId:event.move_info.moved_node.menuId,
+                                column:new_column,
+                                text:"",
+                                parentMenuId:event.move_info.target_node.parentMenuId,
+                                url:"",
+                                appid: null,
+                                roles:null
+                            };
+                            // When position is "inside", this is a special case,
+                            // where you are moving to the first column under
+                            // a parent. The target_node is the parent node.
+                            // So we need to set the column to 1, and the parentMenuId to the menuId of
+                            // the target move.
+                            if (event.move_info.position === "inside") {
+                                console.log("special case: target_node is parent");
+                                activeMenuItem.column = 1;
+                                activeMenuItem.parentMenuId = event.move_info.target_node.menuId;
+                            }
+
+
+                            functionalMenuService.saveEditedMenuItem(activeMenuItem)
+                                .then(() => {
+                                    $log.debug(' Menu Item moved');
+                                    scope.reloadTreeStructure();
+                                }).catch(err => {
+                                $log.error(err);
+                            }).finally(()=>{
+                            });
+                        }
+                    }).catch(err => {
+                        $log.error(err);
+                    });
+
+                    //event.move_info.do_move();
+                });
+
+
+                $jqTree.jqTreeContextMenu(el.find('ul.dropdown-menu'), {
+                    "view": function (node) {scope.openMenuDetailsModal(node,'view'); },
+                    "edit": function (node) {scope.openMenuDetailsModal(node,'edit'); },
+                    "delete": function (node) { scope.deleteMenuItem(node,'delete') },
+                    "add": function (node) {  scope.createNewMenuItem(node,'add') }
+                });
+
+                scope.$watch('treedata', function(oldValue, newValue){
+                    if(oldValue !== newValue){
+                        console.log('FunctionalMenuCtrl:: Tree value has changed in some way');
+                        $jqTree.tree('loadData',  scope.treedata);
+                        $jqTree.tree('reload', function() {
+                            console.log('FunctionalMenuCtrl:: Tree is reloaded');
+                        });
+                    }
+                });
+            }
+        };
+    }]);
+
+})();
+
+
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.tpl.html b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.tpl.html
new file mode 100644
index 0000000..1a1252a
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/functionalMenu.tpl.html
@@ -0,0 +1,46 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="functional-menu-main">
+    <div class="functional-menu-container" id="page-content">
+		<div id="title" class="w-ecomp-main-view-title">
+           	 <h1 class="heading-page" >Edit Functional Menu</h1>
+        </div>        
+        <div id="tree1">
+            <div id="Service_Creation"></div>
+        </div>
+        <div id="jq-tree-div" jq-tree class="tree"></div>
+        <script type="text/ng-template" id="jqtree-tmpl.html">
+            <div id="jqTree"></div>
+            <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+                <li id="functional-menu-view-li"><a id="functional-menu-view-href" ng-href="#view"><i class="icon-data"></i> View</a></li>
+                <li class="divider"></li>
+                <li id="functional-menu-add-li"><a  id="functional-menu-add-href" ng-href="#add"><i class="icon-plus"></i> Add</a></li>
+                <li class="divider"></li>
+                <li id="functional-menu-edit-li"><a  id="functional-menu-edit-href"  ng-href="#edit"><i class="icon-edit"></i> Edit</a></li>
+                <li class="divider"></li>
+                <li id="functional-menu-delete-li"><a id="functional-menu-delete-href"  ng-href="#delete"><i class="icon-misc-trash"></i> Delete</a></li>
+            </ul>
+        </script>
+        <div class="functional-admin-button-container">
+       <button id="regenrate-functionalmenu-btn" class="btn btn-alt btn-small" ng-click="functionalMenu.regenerateFunctionalMenuAncestors()">Regenerate Menu</button>     
+            <span class="n16r" style="color:black">Click when you are done with your changes</span>
+        </div>
+    </div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/functionalMenu/jqTreeContextMenu.js b/ecomp-portal-FE-os/client/src/views/functionalMenu/jqTreeContextMenu.js
new file mode 100644
index 0000000..6e2be32
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/functionalMenu/jqTreeContextMenu.js
@@ -0,0 +1,214 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+﻿(function ($) {
+	if (!$.fn.tree) {
+		throw "Error jqTree is not loaded.";
+	}
+
+	$.fn.jqTreeContextMenu = function (menuElement, callbacks) {
+		//
+		// TODO:
+		// * Make sure the useContextMenu option is set in jqTree, either complain or set it automatically
+		// * Make menu fade in/out
+		//
+		var self = this;
+		var $el = this;
+
+		// The jQuery object of the menu div.
+		var $menuEl = menuElement;
+		
+		// This hash holds all menu items that should be disabled for a specific node.
+		var nodeToDisabledMenuItems = {};
+		
+		// Hide the menu div.
+		$menuEl.hide();
+
+		// Disable system context menu from beeing displayed.
+		$el.bind("contextmenu", function (e) { 
+			e.preventDefault();
+			return false; 
+		});
+
+		// Handle the contextmenu event sent from jqTree when user clicks right mouse button.
+		$el.bind('tree.contextmenu', function (event) {
+			var x = event.click_event.pageX;
+			var y = event.click_event.pageY;
+			var yPadding = 5;
+			var xPadding = 5;
+			var menuHeight = $menuEl.height();
+			var menuWidth = $menuEl.width();
+			var windowHeight = $(window).height();
+			var windowWidth = $(window).width();
+			
+			if (menuHeight + y + yPadding > windowHeight) {
+				// Make sure the whole menu is rendered within the viewport. 
+				y = y - menuHeight;
+			}
+			if (menuWidth + x + xPadding > windowWidth) {
+				// Make sure the whole menu is rendered within the viewport. 
+				x = x - menuWidth;
+			}
+
+			// Handle disabling and enabling of menu items on specific nodes.
+			if (Object.keys(nodeToDisabledMenuItems).length > 0) {
+				if (event.node.name in nodeToDisabledMenuItems) {
+					var nodeName = event.node.name;
+					var items = nodeToDisabledMenuItems[nodeName];
+					if (items.length === 0) {
+						$menuEl.find('li').addClass('disabled');
+						$menuEl.find('li > a').unbind('click');
+					} else {
+						$menuEl.find('li > a').each(function () {
+							$(this).closest('li').removeClass('disabled');
+							var hrefValue = $(this).attr('href');
+							var value = hrefValue.slice(hrefValue.indexOf("#") + 1, hrefValue.length)
+							if ($.inArray(value, items) > -1) {
+								$(this).closest('li').addClass('disabled');
+								$(this).unbind('click');
+							}
+						});	
+					}
+				} else {
+					$menuEl.find('li.disabled').removeClass('disabled');
+				}
+			}
+
+			// Must call show before we set the offset (offset can not be set on display: none elements).
+			$menuEl.show();
+
+			$menuEl.offset({ left: x, top: y });
+
+			var dismissContextMenu = function () {
+				$(document).unbind('click.jqtreecontextmenu');
+				$el.unbind('tree.click.jqtreecontextmenu');
+				$menuEl.hide();
+			}
+			// Make it possible to dismiss context menu by clicking somewhere in the document.
+			$(document).bind('click.jqtreecontextmenu', function () {
+				dismissContextMenu();
+			});
+
+			// Dismiss context menu if another node in the tree is clicked.
+			$el.bind('tree.click.jqtreecontextmenu', function (e) {
+				dismissContextMenu();
+			});
+
+			// Make selection follow the node that was right clicked on.
+			var selectedNode = $el.tree('getSelectedNode');
+			if (selectedNode !== event.node) {
+				$el.tree('selectNode', event.node);
+			}
+
+			// Handle click on menu items, if it's not disabled.
+			var menuItems = $menuEl.find('li:not(.disabled) a');
+			if (menuItems.length !== 0) {
+				menuItems.unbind('click');
+				menuItems.click(function (e) {
+					e.stopImmediatePropagation();
+					dismissContextMenu();
+					var hrefAnchor = e.currentTarget.attributes.href.nodeValue;
+					var funcKey = hrefAnchor.slice(hrefAnchor.indexOf("#") + 1, hrefAnchor.length)
+					var callbackFn = callbacks[funcKey];
+					if (callbackFn) {
+						callbackFn(event.node);
+					}
+					return false;
+				});
+			}
+		});
+		
+		this.disable = function () {
+			if (arguments.length === 0) {
+				// Called as: api.disable()
+				$menuEl.find('li:not(.disabled)').addClass('disabled');
+				$menuEl.find('li a').unbind('click');
+				nodeToDisabledMenuItems = {};
+			} else if (arguments.length === 1) {
+				// Called as: api.disable(['edit','remove'])
+				var items = arguments[0];
+				if (typeof items !== 'object') {
+					return;
+				}
+				$menuEl.find('li > a').each(function () {
+					var hrefValue = $(this).attr('href');
+					var value = hrefValue.slice(hrefValue.indexOf("#") + 1, hrefValue.length)
+					if ($.inArray(value, items) > -1) {
+						$(this).closest('li').addClass('disabled');
+						$(this).unbind('click');
+					}
+				});
+				nodeToDisabledMenuItems = {};
+			} else if (arguments.length === 2) {
+				// Called as: api.disable(nodeName, ['edit','remove'])
+				var nodeName = arguments[0];
+				var items = arguments[1];
+				nodeToDisabledMenuItems[nodeName] = items;
+			}
+		};
+
+		this.enable = function () {
+			if (arguments.length === 0) {
+				// Called as: api.enable()
+				$menuEl.find('li.disabled').removeClass('disabled');
+				nodeToDisabledMenuItems = {};
+			} else if (arguments.length === 1) {
+				// Called as: api.enable(['edit','remove'])
+				var items = arguments[0];
+				if (typeof items !== 'object') {
+					return;
+				}
+				
+				$menuEl.find('li > a').each(function () {
+					var hrefValue = $(this).attr('href');
+					var value = hrefValue.slice(hrefValue.indexOf("#") + 1, hrefValue.length)
+					if ($.inArray(value, items) > -1) {
+						$(this).closest('li').removeClass('disabled');
+					}
+				});
+
+				nodeToDisabledMenuItems = {};
+			} else if (arguments.length === 2) {
+				// Called as: api.enable(nodeName, ['edit','remove'])
+				var nodeName = arguments[0];
+				var items = arguments[1];
+				if (items.length === 0) {
+					delete nodeToDisabledMenuItems[nodeName];
+				} else {
+					var disabledItems = nodeToDisabledMenuItems[nodeName];
+					for (var i = 0; i < items.length; i++) {
+						var idx = disabledItems.indexOf(items[i]);
+						if (idx > -1) {
+							disabledItems.splice(idx, 1);
+						}
+					}
+					if (disabledItems.length === 0) {
+						delete nodeToDisabledMenuItems[nodeName];
+					} else {
+						nodeToDisabledMenuItems[nodeName] = disabledItems;	
+					}
+				}
+				if (Object.keys(nodeToDisabledMenuItems).length === 0) {
+					$menuEl.find('li.disabled').removeClass('disabled');
+				}
+			}
+		};
+		return this;
+	};
+} (jQuery));
diff --git a/ecomp-portal-FE-os/client/src/views/search/search.controller.js b/ecomp-portal-FE-os/client/src/views/search/search.controller.js
new file mode 100644
index 0000000..3c3c2a0
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/search/search.controller.js
@@ -0,0 +1,198 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+(function () {
+
+    class SearchCtrl {
+        constructor($log, $scope, $cookies, $timeout, userProfileService, sessionService, dashboardService) {
+            $scope.firstName="";
+            $scope.lastName="";
+            
+            function  showHideSearchSnippet() {
+            	
+            	setTimeout(function() {
+        			jQuery("#mainSearchSnippet").click();
+        			},500);
+        		
+        		setTimeout(function() {
+        			jQuery("#mainSearchText").focus();
+        			},1000);
+            }
+            
+            jQuery("#mainSearchDiv").keyup(function(event){
+                if(event.keyCode == 13){
+                    // there is a watch on this variable which will trigger the database pull
+                	dashboardService.searchString = jQuery("#mainSearchText").val();
+                	
+                	// opens the popup
+                    var popupDomObj = jQuery("[content='searchSnippet.html']");
+                	if(popupDomObj.length == 0) {
+                		showHideSearchSnippet();
+                	} else {
+                		jQuery("#mainSearchSnippet").click();
+                		showHideSearchSnippet();
+                	}
+                	                	
+                	
+           		 
+                }
+            });
+            
+            
+            
+        }
+        
+        
+    }
+    
+    
+    class SearchSnippetCtrl {
+	constructor($log, $scope, $cookies, $timeout, userProfileService, sessionService, dashboardService,applicationsService, $window, $state) {
+            $scope.firstName="";
+            $scope.lastName="";
+            $scope.goToUrl = goToUrl;
+            $scope.dService = dashboardService;
+            
+            $scope.searchResDialog = false;
+            $scope.searchDialogToggle = function($event){
+                var keyCode = $event.which || $event.keyCode;
+                if (keyCode === 13) {
+                	$scope.searchResDialog = true;               
+                	dashboardService.searchString = jQuery("#mainSearchText").val();
+                }
+            	
+            }
+            
+            window.onclick = function() {
+    			if ($scope.searchResDialog) {
+    				$scope.searchResDialog = false;
+    				$scope.$apply();
+    			}
+    		};      
+            function goToUrl (item, type) {
+                $log.info("goToUrl called")
+                $log.info(item + "/" + type);
+                
+                
+                if(type == 'intra') {
+                	
+                	var intraSearcLink = "";
+                	var intraSpecSearcLink = intraSearcLink + encodeURIComponent(dashboardService.searchString);
+                	$window.open(intraSpecSearcLink, '_blank');
+                	
+                } else if (type == 'extra') {
+                	var extraSearcLink = "";
+                	var extraSpecSearcLink = extraSearcLink + encodeURIComponent(dashboardService.searchString);
+                	$window.open(extraSpecSearcLink, '_blank');
+                }
+
+                let url = item.target;
+                let restrictedApp = item.uuid;
+                let getAccessState =  "root.getAccess"
+                if (!url) {
+                	
+                	applicationsService.goGetAccessAppName = item.name;
+                	if($state.current.name == getAccessState)
+                		$state.reload();
+                	else
+                		$state.go(getAccessState);
+                    //$log.info('No url found for this application, doing nothing..');
+                    return;
+                }
+                
+                if (restrictedApp != "true") {
+                    $window.open(url, '_blank');
+                } else {
+                	if(item.url=="root.access"){
+                		$state.go(url);
+                		var tabContent = { id: new Date(), title: 'Home', url: url };
+                    	$cookies.putObject('addTab', tabContent );
+                	} else {
+                    	var tabContent = { id: new Date(), title: item.name, url: url };
+                    	$cookies.putObject('addTab', tabContent );
+                    }
+                }
+
+            }
+            
+            function getItems(searchString) {
+            	
+            	var items;
+            	var itemMap = dashboardService.getSearchAllByStringResults(searchString)            	
+            	 .then(res => {
+            		 $scope.items = res;
+            		 
+            		 
+            	 }).catch(err => {
+            		 $scope.items = [];
+                     $log.error('Couldnt get search results...', err)
+            	 });
+
+            }
+            
+            $scope.$watch('dService.searchString', function(searchString) {
+                if(searchString != undefined )
+                	getItems(searchString);
+
+            });
+            
+             
+            
+        }
+        
+        
+        
+    }
+    
+    
+
+    SearchCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout','userProfileService', 'sessionService', 'dashboardService'];
+    SearchSnippetCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout','userProfileService', 'sessionService', 'dashboardService','applicationsService', '$window','$state'];
+    angular.module('ecompApp').controller('searchCtrl', SearchCtrl); 
+    angular.module('ecompApp').controller('searchSnippetCtrl', SearchSnippetCtrl);
+    angular.module('ecompApp').directive('searchBox', function() {
+        return {
+            restrict: "E",
+            templateUrl: 'app/views/search/search.tpl.html',
+            link: function(scope, element) {
+            	           	
+            	//var iframeId = "#tabframe-" + scope.$parent.tab.title.split(' ').join('-');
+            	// jQuery(iframeId).load(function() {
+            	//        alert("hello");
+            	//    }); //.attr("src",'{{tab.content | trusted}}' ); //src='{{tab.content | trusted}}'
+            	// jQuery(iframeId).attr('src', '{{tab.content | trusted}}');
+            	 
+            	//element.childNodes[0].on('load', function() {
+            	//	alert('hello');
+            	//});
+            }
+        }
+    });
+    angular.module( 'ecompApp' ).config( [
+        '$compileProvider',
+        function( $compileProvider )
+        {   
+            $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension|qto):/);
+        }
+    ]);
+
+})();
+
+
diff --git a/ecomp-portal-FE-os/client/src/views/search/search.controller.spec.js b/ecomp-portal-FE-os/client/src/views/search/search.controller.spec.js
new file mode 100644
index 0000000..3841a2b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/search/search.controller.spec.js
@@ -0,0 +1,19 @@
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
diff --git a/ecomp-portal-FE-os/client/src/views/search/search.tpl.html b/ecomp-portal-FE-os/client/src/views/search/search.tpl.html
new file mode 100644
index 0000000..a08d0aa
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/search/search.tpl.html
@@ -0,0 +1,84 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="search-div" ng-controller="searchSnippetCtrl">
+	<div class="notification-div">
+		<div class="form-field form-field__small">
+			<div class="search-input">
+				<input id="mainSearchText" type="text"
+					ng-keypress="searchDialogToggle($event)"
+					placeholder="What are you looking for?"
+					class="form-field form-field__small" />
+			</div>
+			<span class="icon-search-span"> <i class="icon-search">&nbsp;</i>
+			</span>
+
+		</div>
+	</div>
+	<div ng-show="searchResDialog" class="search-res-dialog">
+		<div id="reg-header-snippet">
+
+			<div tabindex="0" class="reg-profileDetails" id="reg-searchPop-id">
+				<div id="contentVertical" att-scrollbar="y"
+					class="ng-scope vertical" style="position: relative;">
+					<ul class="searchUl">
+						<li><a class="icon-tiles"></a> <a id="search-app-title"
+							ng-click="goToUrl(item)" class="searchLiHeader">Applications:</a>
+						</li>
+						<li ng-repeat='item in items.application'><a
+							id="search-app-item-{{item.name.split(' ').join('-')}}-{{$index}}"
+							ng-click="goToUrl(item)" class="searchLiItems">{{item.name}}</a>
+						</li>
+					</ul>
+
+					<ul class="searchUl">
+						<li><a class="icon-tiles-small"></a> <a
+							id="seach-functional-menu-title" ng-click="goToUrl(item)"
+							class="searchLiHeader">Functional Menus:</a></li>
+						<li ng-repeat='item in items.menu'><a
+							id="search-functional-menu-item-{{item.name.split(' ').join('-')}}-{{$index}}"
+							ng-click="goToUrl(item)" class="searchLiItems">{{item.name}}</a>
+						</li>
+					</ul>
+
+
+					<ul class="searchUl">
+						<li><a class="full-linear-icon-person"
+							style="font-size: 16px;"></a> <a id="search-user-title"
+							ng-click="goToUrl(item)" class="searchLiHeader">Users:</a></li>
+						<li ng-repeat='item in items.user'><a
+							id="search-user-item-{{item.name.split(' ').join('-')}}-{{$index}}"
+							ng-href="mailto:{{item.target}}" class="searchLiItems">{{item.name}}</a>
+
+						</li>
+					</ul>
+
+					<ul class="searchUl">
+						<li><a class="full-linear-icon-person"
+							style="font-size: 16px;"></a> <a id="search-widgets-title"
+							ng-click="goToUrl(item)" class="searchLiHeader">Widgets:</a></li>
+						<li ng-repeat='item in items.widget'><a
+							id="search-widgets-item-{{item.name.split(' ').join('-')}}-{{$index}}"
+							ng-href="widgetCatalog" class="searchLiItems">{{item.name}}</a></li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/support/contact-us/contact-us.aux.html b/ecomp-portal-FE-os/client/src/views/support/contact-us/contact-us.aux.html
new file mode 100644
index 0000000..822c509
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/support/contact-us/contact-us.aux.html
@@ -0,0 +1,25 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="contactUs-general-div">
+	<span class="contactUs-txt">To give feedback or report an issue
+		to the OpenECOMP Portal team, send email to <a
+		ng-href="mailto:{{contact.portalInfo_Address}}" target="_top">{{contact.portalInfo_Address}}</a>.
+	
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/support/get-access/get-accessinfo.html b/ecomp-portal-FE-os/client/src/views/support/get-access/get-accessinfo.html
new file mode 100644
index 0000000..a8a42c1
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/support/get-access/get-accessinfo.html
@@ -0,0 +1,24 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="get-access-general-div">
+	<span> Request access for following functions by sending email to the Application's Admin. For Admin contact details, please
+	 <a href="contactUs">click here</a>. 
+	</span>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/tabs/tabs.tpl.html b/ecomp-portal-FE-os/client/src/views/tabs/tabs.tpl.html
new file mode 100644
index 0000000..d11608e
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/tabs/tabs.tpl.html
@@ -0,0 +1,47 @@
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<div class="w-ecomp-tabs" ng-cloak ng-style="{bottom: tabBottom}">
+	<div class="tab-container">
+		<md-tabs md-selected="selectedIndex" md-dynamic-height="true" md-autoselect="true">
+			<md-tab ng-repeat="tab in tabs" md-on-select="selectTab(tab.title);auditLog(tab)">
+				<md-tab-label>
+					<span style="overflow: hidden;white-space: nowrap;display: block;" 
+					  id="tab-{{tab.title.split(' ').join('-')}}">
+					  <i  tooltip="{{tab.title}}" tooltip-aria-label="Tooltip with HTML Content"
+					   tooltip-style="light" tooltip-placement="right" tooltip-trigger="mouseover">{{adjustTitle(tab.title)}}</i>
+				 	</span>
+				 	<span class="tab-cross-sign tab-cross-sign-opensrc">
+				 		<i class="ion-close-round" ng-click="removeTab($event, $index)" ng-show="'{{tab.title}}'!='Home'"></i>			 		
+				 	</span>
+					<!-- the tab close button -->
+				</md-tab-label>
+				<md-tab-body>
+					<main-area id="tab-home" ng-show="'{{tab.title}}'!='Home'"></main-area>
+				</md-tab-body>
+			</md-tab> <!-- this is the open new tab button -->
+		</md-tabs>
+	</div>
+	<div style=" position: fixed; right: 290px; top: 62px;">	
+		
+	</div>
+	<div ng-controller="searchCtrl" style=" position: fixed; right: 0; top: 58px;">
+		<search-box id="mainSearchDiv" />
+	</div>
+</div>
diff --git a/ecomp-portal-FE-os/client/src/views/userbar/userbar.controller.js b/ecomp-portal-FE-os/client/src/views/userbar/userbar.controller.js
new file mode 100644
index 0000000..4e2b10b
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/userbar/userbar.controller.js
@@ -0,0 +1,229 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+'use strict';
+
+(function () {
+	
+    class UserbarCtrl {
+        constructor(userProfileService,userbarUpdateService, $log, $rootScope , $interval,$scope,$timeout,dashboardService) {
+            this.$log = $log;
+            var debug = false;
+            this.userProfileService = userProfileService;
+            this.$rootScope = $rootScope;
+            $rootScope.isAdminPortalAdmin = false;
+            $scope.updateRate = 10000; //default online user bar refreshing rate
+            var intervalPromise = null;
+            $scope.myservice = userbarUpdateService;
+            $scope.userList=this.userLists;
+            var websocket = '';
+            var currentUser = '';
+            var remoteUser = '';
+            var f = '';
+           
+        	
+            function socketSetup(initialPageVisit,_currentUser, _remoteUser, _f) {
+            	
+
+
+            	if( true) {
+            		  
+            		var href = window.location.href;
+            	    var hostPatt = new RegExp(window.location.host +"/[^/]*");
+            	    var res = hostPatt.exec(href);
+            	    var protocol = window.location.protocol.replace("http","ws");
+            	      var signalingServerPath = protocol + "//" + res + "/opencontact";
+            		  var wsUri = signalingServerPath;
+            		  console.log("Connecting to " + wsUri);
+            		  websocket = new WebSocket(wsUri);
+            		  //localStorage.notifySocket = JSON.stringify(websocket);
+            		  //window.top.notifySocket = websocket;
+            		  
+            		  currentUser = _currentUser;
+            		  remoteUser = _remoteUser;
+            		  f = socketSend;
+            		 
+            		  
+            	}
+            	
+            	//var websocket = JSON.parse(localStorage.notifySocket || "{}") ;
+            	if( websocket != null) {
+            		websocket.onopen = function(evt) { onOpen(evt); };
+            		websocket.onmessage = function(evt) { onMessage(evt); };
+            		websocket.onerror = function(evt) { onError(evt); };
+            	
+            	}
+            	
+            	//if(f != undefined)
+            	 // f();
+            	
+            	//window.top.notifySocket.send("");
+            }
+            
+            function socketSend(currentUser, remoteUser) {
+            	
+
+
+           	 websocket.send(JSON.stringify({
+                    from: currentUser,
+                    to: remoteUser
+                }));
+           	
+           	//window.top.notifySocket.send("");
+           }
+
+
+
+
+           function onOpen(evt) {
+               console.log("onOpen");
+               //writeToScreen("CONNECTED");
+               
+               if(f != undefined)
+           		f(currentUser, remoteUser);
+               
+           }
+
+           function onMessage(evt) {
+               if (typeof evt.data == "string") {
+                   writeToScreen("RECEIVED (text): " + evt.data);
+                   var chatObject = JSON.parse(evt.data);
+                   if(confirm("User " + chatObject.from + " is requesting a chat session with you. Please click ok to accept")== true) {
+                	   
+                	   var url = userProfileService.getSortedUserIdCombination(chatObject.from, chatObject.to);
+                	   var win = window.open(url, '_blank');
+	              	   win.focus();
+                   } else {
+                	   //
+                   }
+                
+                   
+               } else {
+                   writeToScreen("RECEIVED (binary): " + evt.data);
+               }
+           }
+
+           function onError(evt) {
+               writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
+           }
+
+           function writeToScreen(message) {
+        	   console.log(message);
+           }
+            
+            function updateActiveUsers() {
+            	// $log.debug('UserbarCtrl::updateActiveUsers: intervalPromise is ' + intervalPromise);
+				// $log.info("UserbarCtrl:updateActiveUsers invoked.")
+            	// decrement the counter every time updateActiveUser is called;
+				userbarUpdateService.decrementRefreshCount();
+            	userProfileService.getActiveUser()
+                .then(res=> {
+                	if (debug)
+                		$log.debug('UserbarCtrl::updateActiveUsers: service returned ' + JSON.stringify(res));
+                	if (res==null) {
+                		$log.error('UserbarCtrl::updateActiveUsers: failed to get active user');
+                		$scope.stop();
+                	} else {
+                		$scope.userList = [];
+                		// defend against huge list that should never happen.
+                		var maxItems = 25;
+                		if (res.length < maxItems)
+                			maxItems = res.length;
+                		for (var i=0; i < maxItems; i++) {
+                			var data= {
+                					userId:res[i],
+                					linkQ:userProfileService.getSortedUserIdCombination(userProfileService.userProfile.orgUserId , res[i])
+                			}
+                			$scope.userList.push(data);
+                		}      		
+                		if (debug)
+                			$log.debug('UserbarCtrl::updateActiveUsers: user list ' + JSON.stringify($scope.userList));
+                	}   	
+                }).catch(err=> {
+                	$log.error('UserbarCtrl::updateActiveUsers: caught exception: ' + err);
+                	// Do not show stale result
+                	$scope.userList = [];
+                	$scope.stop(); 	
+                }).finally(() => {
+                   	var footerOff = $('#online-userbar').offset().top;
+            		var headOff = $('#footer').offset().top;
+            		var userbarHeight= parseInt($(".online-user-container").css('height'),10);
+            		var defaultOffSet = 45;
+            		$(".online-user-container").css({
+        				"height" : headOff - footerOff-defaultOffSet
+        			});
+                });      
+            }
+            
+			$scope.start = function(rate) {
+				// stops any running interval to avoid two intervals running at the same time
+				$scope.stop(); 	
+				// store the interval promise
+				intervalPromise = $interval(updateActiveUsers, rate);
+			};
+
+			$scope.stop = function() {
+				if (intervalPromise != null) {
+					$interval.cancel(intervalPromise);
+					intervalPromise = null;
+				}
+			};
+
+			$scope.$watch('myservice.getRefreshCount()', function (newVal,oldVal) {
+				//$log.info("refresh "+$scope.myservice.refreshCount + " more time(s)");
+				if (newVal<=0) {
+					// $log.info("UserbarCtrl: stopped refreshing online users");
+					$scope.stop();
+				} else if (newVal== $scope.myservice.maxCount){
+					// $log.info("UserbarCtrl: start refreshing online users at every "+($scope.updateRate/1000)+" sec");
+					// initial update of activate users
+					updateActiveUsers();
+					$scope.start($scope.updateRate);
+				}
+			});
+
+            // Load the active users.
+            //updateActiveUsers();
+            dashboardService.getOnlineUserUpdateRate().then(res=> {
+            	// $log.info('getting Online User Update Rate init***********************', res);
+            	if (res == null || res.response == null) {
+            		$log.error('UserbarCtlr: failed to get online user update rate or duration, check system.properties file.');
+            	} else {
+           			// $log.debug('UserbarCtlr: got online User Update Rate ' + res.response);            		
+            		var rate = parseInt(res.response.onlineUserUpdateRate);
+					// var updateRate = parseInt(res.response.onlineUserUpdateRate);
+					var duration = parseInt(res.response.onlineUserUpdateDuration);
+					userbarUpdateService.setMaxRefreshCount(parseInt(duration/rate)+1);
+					userbarUpdateService.setRefreshCount(userbarUpdateService.maxCount);
+					// $scope.refreshCount = userbarUpdateService.getRefreshCount();
+
+           			if (rate != NaN && duration != NaN) {
+           				// $log.debug('UserbarCtlr: scheduling function at interval ' + millis);
+						$scope.updateRate=rate;
+						$scope.start($scope.updateRate);
+           			}            			
+            	}
+            }).catch(err=> {
+            	$log.error('UserbarCtlr: getOnlineUserUpdateRate() failed: ' + err);
+            });
+        }
+    }
+    UserbarCtrl.$inject = ['userProfileService', 'userbarUpdateService', '$log', '$rootScope','$interval','$scope','$timeout','dashboardService'];
+    angular.module('ecompApp').controller('UserbarCtrl', UserbarCtrl);
+})();
diff --git a/ecomp-portal-FE-os/client/src/views/userbar/userbar.tpl.html b/ecomp-portal-FE-os/client/src/views/userbar/userbar.tpl.html
new file mode 100644
index 0000000..b40a174
--- /dev/null
+++ b/ecomp-portal-FE-os/client/src/views/userbar/userbar.tpl.html
@@ -0,0 +1,20 @@
+<!--
+  ================================================================================
+  ECOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ================================================================================
+  -->
+<right-menu id="userbar.userList" user-list="userList" class="w-ecomp-sidebar"></right-menu>
diff --git a/ecomp-portal-FE-os/client/utils/test-utils/test-utils.js b/ecomp-portal-FE-os/client/utils/test-utils/test-utils.js
new file mode 100644
index 0000000..7d03fb9
--- /dev/null
+++ b/ecomp-portal-FE-os/client/utils/test-utils/test-utils.js
@@ -0,0 +1,51 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 1/10/16.
+ */
+'use strict';
+angular.module('testUtils', [])
+    .factory('promisesTestUtils', function utilsFactory($q) {
+
+        var setupPromise = function(object, method, data, resolve) {
+            spyOn(object, method).and.callFake(function() {
+                var deferred = $q.defer();
+                if (resolve) {
+                    deferred.resolve(data);
+                } else {
+                    deferred.reject(data);
+                }
+
+                return deferred.promise;
+            });
+        };
+
+        var service = {};
+
+        service.resolvePromise = function(object, method, data) {
+            return setupPromise(object, method, data, true);
+        };
+
+        service.rejectPromise = function(object, method, data) {
+            return setupPromise(object, method, data, false);
+        };
+
+        return service;
+    });
diff --git a/ecomp-portal-FE-os/e2e/main/anchoring.spec.js b/ecomp-portal-FE-os/e2e/main/anchoring.spec.js
new file mode 100644
index 0000000..80bdad0
--- /dev/null
+++ b/ecomp-portal-FE-os/e2e/main/anchoring.spec.js
@@ -0,0 +1,27 @@
+describe('New Test 1', function () {
+    it('Test', function (done) {
+
+        browser.driver.manage().window().maximize();
+
+        var container = element(by.css('.sidebar'));
+        container.all(by.repeater('group in groups')).then(function(groups) {
+            var middleEl = Math.floor(groups.length / 2);
+
+            groups[middleEl].click().then(function(){
+                expect(groups[middleEl].getAttribute('class')).toContain('active');
+                done();
+            });
+
+            //var groupButton = groups[middleEl].element(by.binding('group.name'))
+
+            //groups[middleEl].click().then(function(){
+            //    expect(groups[middleEl].getAttribute('class')).toContain('active');
+            //    done();
+            //});
+
+
+
+        });
+    });
+});
+
diff --git a/ecomp-portal-FE-os/e2e/main/main.po.js b/ecomp-portal-FE-os/e2e/main/main.po.js
new file mode 100644
index 0000000..6718608
--- /dev/null
+++ b/ecomp-portal-FE-os/e2e/main/main.po.js
@@ -0,0 +1,15 @@
+/**
+ * This file uses the Page Object pattern to define the main page for tests
+ * https://docs.google.com/presentation/d/1B6manhG0zEXkC-H-tPo2vwU06JhL8w9-XCF9oehXzAQ
+ */
+
+'use strict';
+
+var MainPage = function() {
+  this.heroEl = element(by.css('.hero-unit'));
+  this.h1El = this.heroEl.element(by.css('h1'));
+  this.imgEl = this.heroEl.element(by.css('img'));
+};
+
+module.exports = new MainPage();
+
diff --git a/ecomp-portal-FE-os/e2e/main/main.spec.js b/ecomp-portal-FE-os/e2e/main/main.spec.js
new file mode 100644
index 0000000..61745a8
--- /dev/null
+++ b/ecomp-portal-FE-os/e2e/main/main.spec.js
@@ -0,0 +1,16 @@
+'use strict';
+
+describe('Main View', function() {
+  var page;
+
+  beforeEach(function() {
+    browser.get('/');
+    page = require('./main.po');
+  });
+
+  it('should include jumbotron with correct data', function() {
+    expect(page.h1El.getText()).toBe('\'Allo, \'Allo!');
+    expect(page.imgEl.getAttribute('src')).toMatch(/assets\/images\/yeoman.png$/);
+    expect(page.imgEl.getAttribute('alt')).toBe('I\'m Yeoman');
+  });
+});
diff --git a/ecomp-portal-FE-os/karma.conf.js b/ecomp-portal-FE-os/karma.conf.js
new file mode 100644
index 0000000..e2d8384
--- /dev/null
+++ b/ecomp-portal-FE-os/karma.conf.js
@@ -0,0 +1,131 @@
+// Karma configuration
+// http://karma-runner.github.io/0.10/config/configuration-file.html
+
+module.exports = function (config) {
+    config.set({
+        // base path, that will be used to resolve files and exclude
+        basePath: '',
+
+        // testing framework to use (jasmine/mocha/qunit/...)
+        frameworks: ['jasmine'],
+
+        // list of files / patterns to load in the browser
+        files: [
+            'client/bower_components/jquery/dist/jquery.js',
+            'client/bower_components/angular/angular.js',
+            'client/bower_components/angular-animate/angular-animate.js',
+            'client/bower_components/angular-aria/angular-aria.js',
+            'client/bower_components/angular-bootstrap/ui-bootstrap-tpls.js',
+            'client/bower_components/angular-cookies/angular-cookies.js',
+            // 'client/bower_components/angular-gestures/gestures.js',
+            'client/bower_components/angular-material/angular-material.js',
+            'client/bower_components/angular-messages/angular-messages.js',
+            'client/bower_components/angular-mocks/angular-mocks.js',
+            'client/bower_components/angular-resource/angular-resource.js',
+            'client/bower_components/angular-route/angular-route.js',
+            'client/bower_components/angular-sanitize/angular-sanitize.js',
+            'client/bower_components/angular-scenario/angular-scenario.js',
+            'client/bower_components/angular-smart-table/dist/smart-table.js',
+            'client/bower_components/angular-ui-router/release/angular-ui-router.js',
+            'client/bower_components/angular-uuid/uuid.js',
+            'client/bower_components/es5-shim/es5-shim.js',
+            'client/bower_components/hammerjs/hammer.js',
+            'client/bower_components/jqtree/tree.jquery.js',
+            'client/bower_components/json3/lib/json3.js',
+            'client/bower_components/lodash/lodash.js',
+            'client/bower_components/ng-dialog/js/ngDialog.js',
+            'client/bower_components/ui-select/dist/select.js',
+
+            'client/utils/test-utils/test-utils.js',
+
+            'client/app/configurations.js',
+            'client/app/app.js',
+            // 'client/app/**/users*.js',
+            // 'client/app/**/users/**/new-user*.js',
+            'client/app/**/home/applications-home/applications-home*.js',
+            // 'client/app/**/widgets/**/widget-details*.js',
+            // 'client/app/**/tabs/**/tabs*.js',
+
+            'client/app/**/*filter*.js',
+            'client/app/**/*.coffee',
+            'client/app/**/*.jade',
+            'client/app/**/*.html',
+            'client/bower_components_external/angular.att.abs-2.17.0/att-abs-tpls.js',
+            'client/bower_components/hammerjs/hammer.js',
+            'client/bower_components/angular-gestures/gestures.js',
+            'client/bower_components/ng-dialog/js/ngDialog.js',
+            'client/bower_components/angular-cache/dist/angular-cache.js',
+            'client/bower_components_external/angular-att-gridster/*.js',
+            'client/bower_components_external/angular-att-gridster/*.js'
+        ],
+        // coverage reporter generates the coverage
+        reporters: ['progress', 'coverage'],
+
+        // coverage reporter configuration
+        coverageReporter: {
+            type : 'html',
+            dir : 'coverage/'
+        },
+
+        preprocessors: {
+            '**/*.jade': 'ng-jade2js',
+            '**/*.html': 'html2js',
+            'client/app/**/*.js': ['babel'],
+            'client/app/**/!(*spec|*mock).js': ['coverage'],
+            // '**/*.coffee': 'coffee'
+        },
+
+        ngHtml2JsPreprocessor: {
+            stripPrefix: 'client/'
+        },
+
+        ngJade2JsPreprocessor: {
+            stripPrefix: 'client/'
+        },
+
+
+        babelPreprocessor: {
+            options: {
+                sourceMap: 'inline'
+            },
+            filename: function (file) {
+                return file.originalPath.replace(/\.js$/, '.es5.js');
+            },
+            sourceFileName: function (file) {
+                return file.originalPath;
+            }
+        },
+
+
+        // list of files / patterns to exclude
+        exclude: [],
+
+        // web server port
+        port: 8092,
+
+        // level of logging
+        // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
+        logLevel: config.LOG_ERROR,
+
+
+        // enable / disable watching file and executing tests whenever any file changes
+        autoWatch: false,
+
+
+        // Start these browsers, currently available:
+        // - Chrome
+        // - ChromeCanary
+        // - Firefox
+        // - Opera
+        // - Safari (only Mac)
+        // - PhantomJS
+        // - IE (only Windows)
+        browsers: ['Firefox'],
+
+        // Continuous Integration mode
+        // if true, it capture browsers, run tests and exit
+        singleRun: true
+
+
+    });
+};
diff --git a/ecomp-portal-FE-os/license/licenses.properties b/ecomp-portal-FE-os/license/licenses.properties
new file mode 100644
index 0000000..4b0e28e
--- /dev/null
+++ b/ecomp-portal-FE-os/license/licenses.properties
@@ -0,0 +1 @@
+my_license=My license
diff --git a/ecomp-portal-FE-os/license/my_license/header.txt b/ecomp-portal-FE-os/license/my_license/header.txt
new file mode 100644
index 0000000..c026b6b
--- /dev/null
+++ b/ecomp-portal-FE-os/license/my_license/header.txt
@@ -0,0 +1,11 @@
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/ecomp-portal-FE-os/license/my_license/license.txt b/ecomp-portal-FE-os/license/my_license/license.txt
new file mode 100644
index 0000000..bf32615
--- /dev/null
+++ b/ecomp-portal-FE-os/license/my_license/license.txt
@@ -0,0 +1,4 @@
+name=my_license
+description=<null>
+licenseURL=<null>
+headerURL=<null>
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/admins/account-admins.json b/ecomp-portal-FE-os/mock/ecomp/data/admins/account-admins.json
new file mode 100644
index 0000000..7e738f7
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/admins/account-admins.json
@@ -0,0 +1,140 @@
+[
+        {
+            "_id": "10391004101",
+            "firstName": "Nabil",
+            "lastName": "Naffar",
+            "userId": "nn605g",
+            "apps": [{"appName": "special"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Yael",
+            "lastName": "Maoz",
+            "userId": "ym189s",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Vladimir",
+            "lastName": "Turovets",
+            "userId": "vt789s",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Dror",
+            "lastName": "Kadosh",
+            "userId": "dk78a23",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Eyal",
+            "lastName": "Reshef",
+            "userId": "er783d",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Kobi",
+            "lastName": "Y",
+            "userId": "kb15sje",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "Ofir",
+            "lastName": "Dror",
+            "userId": "od678a",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "cvrrev",
+            "lastName": "Naffar",
+            "userId": "cvrrev",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "gthy",
+            "lastName": "Naffar",
+            "userId": "gthy",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "uiv",
+            "lastName": "zzz",
+            "userId": "uiv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "iopb",
+            "lastName": "333",
+            "userId": "aaa",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "iod",
+            "lastName": "23",
+            "userId": "asfw",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "io3",
+            "lastName": "zzz",
+            "userId": "zzzz",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "iopbo",
+            "lastName": "Naffar",
+            "userId": "efvcv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "an",
+            "lastName": "Naffar",
+            "userId": "nnzxcv605g",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "afdgsdkboi",
+            "lastName": "Naffar",
+            "userId": "zxcvz",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "a43895",
+            "lastName": "Naffar",
+            "userId": "v",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "3",
+            "lastName": "Naffar",
+            "userId": "zvxcvzxcvxcvzczv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "4",
+            "lastName": "Naffar",
+            "userId": "zxc",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "5",
+            "lastName": "Naffar",
+            "userId": "zxcv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "zzz",
+            "lastName": "z",
+            "userId": "zxv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "7",
+            "lastName": "Naffar",
+            "userId": "xvzxv",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP"}, {"appName": "another portal"}]
+        }, {
+            "_id": "10391004101",
+            "firstName": "8",
+            "lastName": "Naffar",
+            "userId": "zxcvxzcvzx",
+            "apps": [{"appName": "AIC formation"}, {"appName": "SSP2"}, {"appName": "another portal"}]
+        }]
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/admins/admin-app-roles.json b/ecomp-portal-FE-os/mock/ecomp/data/admins/admin-app-roles.json
new file mode 100644
index 0000000..3a0860a
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/admins/admin-app-roles.json
@@ -0,0 +1,25 @@
+{
+  "userId": "nn605g",
+  "appsRoles": [
+    {
+      "appName": "SSP",
+      "id": 1,
+      "isAdmin": true
+    },
+    {
+      "appName": "ECOMP",
+      "id": 2,
+      "isAdmin": false
+    },
+    {
+      "appName": "other POrtal",
+      "id": 14,
+      "isAdmin": false
+    },
+    {
+      "appName": "Formation",
+      "id": 111,
+      "isAdmin": true
+    }
+  ]
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/applications/admin-apps.json b/ecomp-portal-FE-os/mock/ecomp/data/applications/admin-apps.json
new file mode 100644
index 0000000..8bed7e0
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/applications/admin-apps.json
@@ -0,0 +1,30 @@
+[
+  {
+    "id": 8,
+    "name": "SSP"
+  },
+  {
+    "id": 90,
+    "name": "ECOMP"
+  },
+  {
+    "id": 81,
+    "name": "ASDC"
+  },
+  {
+    "id": 38,
+    "name": "Webphone"
+  },
+  {
+    "id": 48,
+    "name": "Self"
+  },
+  {
+    "id": 58,
+    "name": "SSP2"
+  },
+  {
+    "id": 218,
+    "name": "some app"
+  }
+]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/applications/applications-onboarding.json b/ecomp-portal-FE-os/mock/ecomp/data/applications/applications-onboarding.json
new file mode 100644
index 0000000..e3f2ddd
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/applications/applications-onboarding.json
@@ -0,0 +1,128 @@
+[
+  {
+    "id": 1,
+    "name": "ASDC",
+    "imageUrl": "assets/images/tmp/portal1.png",
+    "description": "Some explanation text goes here",
+    "url": "http://www.att.com",
+    "alternateUrl": "http://www.att.com",
+    "notes": "Apac",
+    "restUrl": "http://www.att.com",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54047",
+    "uebKey": "02ZNZJ90ljCCv92Q",
+    "uebSecret": "Emailed to jk974e@us.att.com",
+    "username": "lenoard",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "data:image/png;base64,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",
+    "isEnabled": false
+  },
+  {
+    "id": 2,
+    "name": "AIC Formation",
+    "imageUrl": "assets/images/tmp/portal2.png",
+    "description": "Some explanation text goes here",
+    "url": "http://www.att.com",
+    "alternateUrl": "http://www.att.com",
+    "notes": "T",
+    "restUrl": "restUrl",
+    "isOpen": false,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-59992",
+    "uebKey": "RTIOIZnbawfTCQw8",
+    "uebSecret": "Emailed to aw3218@us.att.com",
+    "username": "username",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "data:image/png;base64,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",
+    "isEnabled": true
+  },
+  {
+    "id": 3,
+    "name": "AIC Self Service Portal",
+    "imageUrl": "assets/images/tmp/portal3.png",
+    "description": "Some explanation text goes here",
+    "url": "http://www.att.com",
+    "alternateUrl": "http://www.att.com",
+    "notes": "Lorem ipsum dolor sit ",
+    "restUrl": "restUrl",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54043",
+    "uebKey": "YJOYpJIJpkYoiJOq",
+    "uebSecret": "Emailed to cp047n@us.att.com",
+    "username": "aw3218",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "data:image/png;base64,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",
+    "isEnabled": true
+  },
+  {
+    "id": 4,
+    "name": "Zapp for sorting and searching",
+    "imageUrl": "assets/images/tmp/portal3.png",
+    "description": "Some explanation text goes here",
+    "url": "http://www.att3.com",
+    "alternateUrl": "http://www.att3.com",
+    "notes": "Lorem ipsum dolor sit ",
+    "restUrl": "restUrl",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54043",
+    "uebKey": "YJOYpJIJpkYoiJOq",
+    "uebSecret": "Emailed to cp047n@us.att.com",
+    "username": "aw3218",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "",
+    "isEnabled": true
+  },
+  {
+    "id": 5,
+    "name": "Who cares what the freaking name is?",
+    "imageUrl": "",
+    "description": "Some explanation text goes here",
+    "url": "http://www.att6.com",
+    "alternateUrl": "http://www.att6.com",
+    "notes": "Lorem ipsum dolor sit ",
+    "restUrl": "restUrl",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54043",
+    "uebKey": "YJOYpJIJpkYoiJOq",
+    "uebSecret": "Emailed to cp047n@us.att.com",
+    "username": "aw3218",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "",
+    "isEnabled": true
+  },
+  {
+    "id": 6,
+    "name": "Middle Earth App",
+    "imageUrl": "",
+    "description": "Some explanation text goes here",
+    "url": "http://www.middleearth.com/",
+    "alternateUrl": "http://www.middleearth.com/",
+    "notes": "Lorem ipsum dolor sit ",
+    "restUrl": "restUrl",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54043",
+    "uebKey": "YJOYpJIJpkYoiJOq",
+    "uebSecret": "Emailed to cp047n@us.att.com",
+    "username": "aw3218",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "",
+    "isEnabled": true
+  },
+  {
+    "id": 6,
+    "name": "Lord of the Rings App",
+    "imageUrl": "",
+    "description": "Some explanation text goes here",
+    "url": "http://www.lordoftherings.net/",
+    "alternateUrl": "http://www.lordoftherings.net/home.htm",
+    "notes": "Lorem ipsum dolor sit ",
+    "restUrl": "restUrl",
+    "isOpen": true,
+    "uebTopicName": "ECOMP-PORTAL-OUTBOX-TEST-54043",
+    "uebKey": "YJOYpJIJpkYoiJOq",
+    "uebSecret": "Emailed to cp047n@us.att.com",
+    "username": "aw3218",
+    "appPassword": "ashdfjkalsfsdaf",
+    "thumbnail": "",
+    "isEnabled": true
+  }
+]
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/applications/available-apps.json b/ecomp-portal-FE-os/mock/ecomp/data/applications/available-apps.json
new file mode 100644
index 0000000..1301ba3
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/applications/available-apps.json
@@ -0,0 +1,25 @@
+[{
+  "index": 8,
+  "title": "Policy IST",
+  "value": "Policy IST"
+}, {
+  "index": 16,
+  "title": "CCD App IST",
+  "value": "CCD App IST"
+}, {
+  "index": 19,
+  "title": "GeoLink App DEV",
+  "value": "GeoLink App DEV"
+}, {
+  "index": 20,
+  "title": "Policy DEV",
+  "value": "Policy DEV"
+}, {
+  "index": 21,
+  "title": "GeoLink IST",
+  "value": "GeoLink IST"
+}, {
+  "index": 33,
+  "title": "CCD App DEV",
+  "value": "CCD App DEV"
+}]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/applications/user-apps.json b/ecomp-portal-FE-os/mock/ecomp/data/applications/user-apps.json
new file mode 100644
index 0000000..7b185bf
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/applications/user-apps.json
@@ -0,0 +1,62 @@
+[
+        {
+            "id": 1,
+            "order": 1,
+            "name": "ASDC",
+            "imageUrl": "",
+            "description": "Some explanation text goes here",
+            "url": "http://www.att.com",
+            "alternateUrl": "http://www.att.com",
+            "notes": "Apache Tomcat, often referred to as Tomcat, is an open-source web server and servlet container developed by the Apache Software Foundation (ASF). Tomcat implements several Java EE specifications including Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket, and provides a \"pure Java\" HTTP web server environment for Java code to run in."
+        },
+        {
+            "id": 2,
+            "order": 2,
+            "name": "AIC Formation",
+            "imageUrl": "assets/images/tmp/portal2.png",
+            "description": "Some explanation text goes here",
+            "url": "http://www.att.com",
+            "alternateUrl": "http://www.att.com",
+            "notes": "AIC Formation description goes here"
+        },
+        {
+            "id": 3,
+            "order": 3,
+            "name": "AIC Self Service Portal",
+            "imageUrl": "assets/images/tmp/portal3.png",
+            "description": "Some explanation text goes here",
+            "url": "",
+            "alternateUrl": "http://www.att.com",
+            "notes": "AIC Self Service description goes here"
+        },
+        {
+            "id": 4,
+            "order": 4,
+            "name": "Portal Name",
+            "imageUrl": "assets/images/tmp/portal1.png",
+            "description": "Some explanation text goes here",
+            "url": "http://www.att.com",
+            "alternateUrl": "http://www.att.com",
+            "notes": "order: 2"
+        },
+        {
+            "id": 5,
+            "order": 5,
+            "name": "Nightskypix",
+            "imageUrl": "http://www.nightskypix.com/Solar/moon/moon12-25-07-web.jpg",
+            "description": "Some explanation text goes here",
+            "url": "http://www.nightskypix.com",
+            "alternateUrl": "http://www.nightskypix.com/Solar/moon/fullmoon.html",
+            "notes": "Andy's old web page"
+        },
+        {
+          "id": 6,
+          "order": 6,
+          "name": "This is an exceptionally long application name because I'm a freakin idiot who makes long application names",
+          "imageUrl": "assets/images/tmp/portal3.png",
+          "description": "Some explanation text goes here",
+          "url": "http://www.att.com",
+          "alternateUrl": "http://www.att.com",
+          "notes": "Description for this fake portal"
+        }
+]
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/app-roles.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/app-roles.json
new file mode 100644
index 0000000..7766528
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/app-roles.json
@@ -0,0 +1,34 @@
+[{
+  "roleId": 6001,
+  "rolename": "Standard User"
+}, {
+  "roleId": 6002,
+  "rolename": "System Administrator"
+}, {
+  "roleId": 6003,
+  "rolename": "Document Library Users"
+}, {
+  "roleId": 6004,
+  "rolename": "Document Library Admin"
+}, {
+  "roleId": 6005,
+  "rolename": "iTracker User"
+}, {
+  "roleId": 6006,
+  "rolename": "test role 1"
+}, {
+  "roleId": 6007,
+  "rolename": "tt"
+}, {
+  "roleId": 6008,
+  "rolename": "Policy Super Admin"
+}, {
+  "roleId": 6009,
+  "rolename": "iTracker Support"
+}, {
+  "roleId": 6010,
+  "rolename": "Policy Super Editor"
+}, {
+  "roleId": 6011,
+  "rolename": "Policy Super Guest"
+}]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/dev.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/dev.json
new file mode 100644
index 0000000..266a6fb
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/dev.json
@@ -0,0 +1,22 @@
+{
+    "api": {
+        "userApps": "http://www.ecomp.att.com:8080/ecompportal/api/userApps",
+        "accountAdmins": "http://www.ecomp.att.com:8080/ecompportal/api/accountAdmins",
+        "availableApps": "http://www.ecomp.att.com:8080/ecompportal/api/availableApps",
+        "allAvailableApps": "http://www.ecomp.att.com:8080/ecompportal/api/allAvailableApps",
+        "userProfile": "http://www.ecomp.att.com:8080/ecompportal/api/userProfile",
+        "queryUsers": "http://www.ecomp.att.com:8080/ecompportal/api/queryUsers",
+        "adminAppsRoles": "http://www.ecomp.att.com:8080/ecompportal/api/adminAppsRoles",
+        "adminApps": "http://www.ecomp.att.com:8080/ecompportal/api/adminApps",
+        "accountUsers": "http://www.ecomp.att.com:8080/ecompportal/api/app/:appId/users",
+        "userAppsRoles": "http://www.ecomp.att.com:8080/ecompportal/api/userAppsRoles",
+        "onboardingApps": "http://www.ecomp.att.com:8080/ecompportal/api/onboardingApps",
+        "widgets": "http://www.ecomp.att.com:8080/ecompportal/api/widgets",
+        "widgetsValidation": "http://www.ecomp.att.com:8080/ecompportal/api/widgets/validation",
+        "functionalMenuForAuthUser": "http://www.ecomp.att.com:8080/ecompportal/api/functionalMenuForAuthUser",
+        "functionalMenuForEditing": "http://www.ecomp.att.com:8080/ecompportal/api/functionalMenuForEditing",
+        "functionalMenu": "http://www.ecomp.att.com:8080/ecompportal/api/functionalMenu",
+        "functionalMenuItemDetails": "http://www.ecomp.att.com:8080/ecompportal/api/functionalMenuItemDetails/:menuId",
+        "appRoles": "http://www.ecomp.att.com:8080/ecompportal/api/appRoles/:appId"
+    }
+}
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/favorites.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/favorites.json
new file mode 100644
index 0000000..02e7aa0
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/favorites.json
@@ -0,0 +1,27 @@
+[
+  {
+    "menuId": "90",
+    "text": "4th Level App1a R16",
+    "url": "http://google.com"
+  },
+  {
+    "menuId": "99",
+    "text": "3rd Level App1c R200",
+    "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
+  },
+  {
+    "menuId": "22",
+    "text": "ECOMP Wasteland",
+    "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
+  },
+  {
+    "menuId": "1",
+    "text": "Freaking great menu",
+    "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
+  },
+  {
+    "menuId": "91",
+    "text": "Andy's test menu",
+    "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
+  }
+]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-item-details.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-item-details.json
new file mode 100644
index 0000000..596a0b0
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-item-details.json
@@ -0,0 +1,12 @@
+{
+    "menuId": 94,
+    "column": 1,
+    "text": "3rd Level App446",
+    "parentMenuId": 37,
+    "url": "http://www.app3b.com",
+    "appid": 16,
+    "roles":
+    [
+        6003, 6005
+    ]
+}
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items.json
new file mode 100644
index 0000000..8f6f3cb
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items.json
@@ -0,0 +1,674 @@
+[
+  {
+    "menuId": 1,
+    "column": 2,
+    "text": "Design",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 2,
+    "column": 3,
+    "text": "Infrastructure Ordering",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 3,
+    "column": 4,
+    "text": "Service Creation",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 4,
+    "column": 5,
+    "text": "Service Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 5,
+    "column": 6,
+    "text": "Performance Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 6,
+    "column": 7,
+    "text": "Technology Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 7,
+    "column": 8,
+    "text": "Capacity Planning",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 8,
+    "column": 9,
+    "text": "Backup & Recovery",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 11,
+    "column": 1,
+    "text": "Product Design",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 12,
+    "column": 2,
+    "text": "Service Design & Modelling",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 13,
+    "column": 3,
+    "text": "Workflow (recipe/Process) Design ",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 14,
+    "column": 4,
+    "text": "Service Graph visualizer",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 15,
+    "column": 5,
+    "text": "Distribution",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 16,
+    "column": 6,
+    "text": "Testing2",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 17,
+    "column": 7,
+    "text": "Simulation",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 18,
+    "column": 8,
+    "text": "Certification",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 19,
+    "column": 9,
+    "text": "Policy Creation/Mgmt",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 20,
+    "column": 10,
+    "text": "Catalog Browser",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 21,
+    "column": 1,
+    "text": "View Policies associated with a Service design",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 22,
+    "column": 2,
+    "text": "Update Policies associated with a Service design",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 23,
+    "column": 3,
+    "text": "Update Homing Rules??",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 24,
+    "column": 4,
+    "text": "Create Policy Signatures?",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 25,
+    "column": 5,
+    "text": "Define data to be collected at the VNF level",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 26,
+    "column": 1,
+    "text": "Create Recipe for anamoly resolution",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 27,
+    "column": 2,
+    "text": "Manual execution of Process Steps",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 28,
+    "column": 3,
+    "text": "Modification of process steps in a manual execution",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 29,
+    "column": 4,
+    "text": "Kick out a process for Human action/validation",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 30,
+    "column": 1,
+    "text": "VNF Instantiation Policies",
+    "parentMenuId": 19,
+    "url": ""
+  },
+  {
+    "menuId": 31,
+    "column": 2,
+    "text": "VNF Data Collection Policies",
+    "parentMenuId": 19,
+    "url": ""
+  },
+  {
+    "menuId": 32,
+    "column": 1,
+    "text": "Tenant Creation/Mgmt",
+    "parentMenuId": 2,
+    "url": ""
+  },
+  {
+    "menuId": 33,
+    "column": 1,
+    "text": "Request the instantiation of a Service or a VNF",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 34,
+    "column": 2,
+    "text": "View License availability at the VF and Service Level",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 35,
+    "column": 3,
+    "text": "Provisioning",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 36,
+    "column": 4,
+    "text": "CRM",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 37,
+    "column": 5,
+    "text": "Homing",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 38,
+    "column": 6,
+    "text": "Deployment ",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 39,
+    "column": 7,
+    "text": "Asset Inventory",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 40,
+    "column": 8,
+    "text": "Network & Topology",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 41,
+    "column": 9,
+    "text": "Name & Address",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 42,
+    "column": 10,
+    "text": "Configuration",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 43,
+    "column": 11,
+    "text": "Testing1",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 44,
+    "column": 1,
+    "text": "Circuit Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 45,
+    "column": 2,
+    "text": "Compute & Storage Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 46,
+    "column": 3,
+    "text": "Network Element Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 47,
+    "column": 4,
+    "text": "vNF/VM Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 48,
+    "column": 1,
+    "text": "Process",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 49,
+    "column": 2,
+    "text": "Monitor a running workflow",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 50,
+    "column": 3,
+    "text": "Ability to create Support Processes",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 51,
+    "column": 4,
+    "text": "Kick off a workflow process",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 52,
+    "column": 5,
+    "text": "Service Instantiation Testing and Validation (T&TU)",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 53,
+    "column": 6,
+    "text": "View Policies of a running service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 54,
+    "column": 7,
+    "text": "View Configuration/attributes of an existing Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 55,
+    "column": 8,
+    "text": "Update Policies of a running service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 56,
+    "column": 9,
+    "text": "Policy Engineering",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 57,
+    "column": 10,
+    "text": "Update Configuration/attributes of an existing Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 58,
+    "column": 11,
+    "text": "View Logs for a VF/Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 59,
+    "column": 12,
+    "text": "View Alerts for a VF/Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 60,
+    "column": 13,
+    "text": "Patch & Upgrade",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 61,
+    "column": 14,
+    "text": "Change Mgmt",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 62,
+    "column": 15,
+    "text": "Regression/Confirmation Testing",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 63,
+    "column": 16,
+    "text": "Back Up & Restore",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 64,
+    "column": 17,
+    "text": "Audit",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 65,
+    "column": 1,
+    "text": "Performance Reporting",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 66,
+    "column": 2,
+    "text": "Metrics/KPI Data Collection",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 67,
+    "column": 3,
+    "text": "KPI Thresholding",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 68,
+    "column": 4,
+    "text": "Data/Streaming Analytics",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 69,
+    "column": 5,
+    "text": "Metrics Analysis",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 70,
+    "column": 6,
+    "text": "End user Experience Monitoring",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 71,
+    "column": 7,
+    "text": "Application Performance monitoring",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 72,
+    "column": 8,
+    "text": "\"Billing, Invoicing\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 73,
+    "column": 9,
+    "text": "\"Service Delivery, Assurance\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 74,
+    "column": 10,
+    "text": "\"Document Creation - User Guides, Development Guides\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 75,
+    "column": 11,
+    "text": "\"Training Classes - Online classes, Lunch and learns\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 76,
+    "column": 12,
+    "text": "ECOMP DevOps (how ECOMP is performing - for operating ECOMP)",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 77,
+    "column": 13,
+    "text": "Service Ops (how services are performing)",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 78,
+    "column": 14,
+    "text": "Policy real-time and trending",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 79,
+    "column": 1,
+    "text": "Collect results of Go-Live",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 80,
+    "column": 2,
+    "text": "Patch & Upgrade",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 81,
+    "column": 3,
+    "text": "Change Mgmt",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 82,
+    "column": 4,
+    "text": "Regression/Confirmation Testing",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 83,
+    "column": 5,
+    "text": "Back Up & Restore",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 84,
+    "column": 6,
+    "text": "Audit",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 85,
+    "column": 1,
+    "text": "Applications",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 86,
+    "column": 2,
+    "text": "Infrastructure Compute",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 87,
+    "column": 3,
+    "text": "Infrastructure Storage",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 88,
+    "column": 4,
+    "text": "Network",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 90,
+    "column": 1,
+    "text": "4th Level App1a R16",
+    "parentMenuId": 21,
+    "url": "http://app1a.com"
+  },
+  {
+    "menuId": 91,
+    "column": 1,
+    "text": "4th Level App1b R16",
+    "parentMenuId": 22,
+    "url": "http://google.com"
+  },
+  {
+    "menuId": 92,
+    "column": 1,
+    "text": "3rd Level App2a R16",
+    "parentMenuId": 32,
+    "url": "http://app2a.com"
+  },
+  {
+    "menuId": 93,
+    "column": 1,
+    "text": "3rd Level App3a R200",
+    "parentMenuId": 37,
+    "url": "http://nightskypix.com"
+  },
+  {
+    "menuId": 94,
+    "column": 1,
+    "text": "3rd Level App3b R16",
+    "parentMenuId": 37,
+    "url": "http://google.com"
+  },
+  {
+    "menuId": 95,
+    "column": 1,
+    "text": "4th Level App4a R16",
+    "parentMenuId": 44,
+    "url": "http://www.e-access.att.com/ecomp_portal_ist/ecompportal/widgets"
+  },
+  {
+    "menuId": 96,
+    "column": 1,
+    "text": "3rd Level App1c R200",
+    "parentMenuId": 48,
+    "url": "http://app1c.com"
+  },
+  {
+    "menuId": 97,
+    "column": 2,
+    "text": "3rd Level App4b R16",
+    "parentMenuId": 48,
+    "url": "http://app4b.com"
+  },
+  {
+    "menuId": 98,
+    "column": 1,
+    "text": "3rd Level App2b R16",
+    "parentMenuId": 49,
+    "url": "http://app2b.com"
+  },
+  {
+    "menuId": 99,
+    "column": 1,
+    "text": "Favorites",
+    "parentMenuId": null,
+    "url": ""
+  }
+]
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items_small.json b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items_small.json
new file mode 100644
index 0000000..8f6f3cb
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/functional-menu/menu-items_small.json
@@ -0,0 +1,674 @@
+[
+  {
+    "menuId": 1,
+    "column": 2,
+    "text": "Design",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 2,
+    "column": 3,
+    "text": "Infrastructure Ordering",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 3,
+    "column": 4,
+    "text": "Service Creation",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 4,
+    "column": 5,
+    "text": "Service Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 5,
+    "column": 6,
+    "text": "Performance Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 6,
+    "column": 7,
+    "text": "Technology Mgmt",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 7,
+    "column": 8,
+    "text": "Capacity Planning",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 8,
+    "column": 9,
+    "text": "Backup & Recovery",
+    "parentMenuId": null,
+    "url": ""
+  },
+  {
+    "menuId": 11,
+    "column": 1,
+    "text": "Product Design",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 12,
+    "column": 2,
+    "text": "Service Design & Modelling",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 13,
+    "column": 3,
+    "text": "Workflow (recipe/Process) Design ",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 14,
+    "column": 4,
+    "text": "Service Graph visualizer",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 15,
+    "column": 5,
+    "text": "Distribution",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 16,
+    "column": 6,
+    "text": "Testing2",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 17,
+    "column": 7,
+    "text": "Simulation",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 18,
+    "column": 8,
+    "text": "Certification",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 19,
+    "column": 9,
+    "text": "Policy Creation/Mgmt",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 20,
+    "column": 10,
+    "text": "Catalog Browser",
+    "parentMenuId": 1,
+    "url": ""
+  },
+  {
+    "menuId": 21,
+    "column": 1,
+    "text": "View Policies associated with a Service design",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 22,
+    "column": 2,
+    "text": "Update Policies associated with a Service design",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 23,
+    "column": 3,
+    "text": "Update Homing Rules??",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 24,
+    "column": 4,
+    "text": "Create Policy Signatures?",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 25,
+    "column": 5,
+    "text": "Define data to be collected at the VNF level",
+    "parentMenuId": 12,
+    "url": ""
+  },
+  {
+    "menuId": 26,
+    "column": 1,
+    "text": "Create Recipe for anamoly resolution",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 27,
+    "column": 2,
+    "text": "Manual execution of Process Steps",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 28,
+    "column": 3,
+    "text": "Modification of process steps in a manual execution",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 29,
+    "column": 4,
+    "text": "Kick out a process for Human action/validation",
+    "parentMenuId": 13,
+    "url": ""
+  },
+  {
+    "menuId": 30,
+    "column": 1,
+    "text": "VNF Instantiation Policies",
+    "parentMenuId": 19,
+    "url": ""
+  },
+  {
+    "menuId": 31,
+    "column": 2,
+    "text": "VNF Data Collection Policies",
+    "parentMenuId": 19,
+    "url": ""
+  },
+  {
+    "menuId": 32,
+    "column": 1,
+    "text": "Tenant Creation/Mgmt",
+    "parentMenuId": 2,
+    "url": ""
+  },
+  {
+    "menuId": 33,
+    "column": 1,
+    "text": "Request the instantiation of a Service or a VNF",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 34,
+    "column": 2,
+    "text": "View License availability at the VF and Service Level",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 35,
+    "column": 3,
+    "text": "Provisioning",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 36,
+    "column": 4,
+    "text": "CRM",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 37,
+    "column": 5,
+    "text": "Homing",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 38,
+    "column": 6,
+    "text": "Deployment ",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 39,
+    "column": 7,
+    "text": "Asset Inventory",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 40,
+    "column": 8,
+    "text": "Network & Topology",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 41,
+    "column": 9,
+    "text": "Name & Address",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 42,
+    "column": 10,
+    "text": "Configuration",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 43,
+    "column": 11,
+    "text": "Testing1",
+    "parentMenuId": 3,
+    "url": ""
+  },
+  {
+    "menuId": 44,
+    "column": 1,
+    "text": "Circuit Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 45,
+    "column": 2,
+    "text": "Compute & Storage Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 46,
+    "column": 3,
+    "text": "Network Element Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 47,
+    "column": 4,
+    "text": "vNF/VM Inventory",
+    "parentMenuId": 39,
+    "url": ""
+  },
+  {
+    "menuId": 48,
+    "column": 1,
+    "text": "Process",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 49,
+    "column": 2,
+    "text": "Monitor a running workflow",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 50,
+    "column": 3,
+    "text": "Ability to create Support Processes",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 51,
+    "column": 4,
+    "text": "Kick off a workflow process",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 52,
+    "column": 5,
+    "text": "Service Instantiation Testing and Validation (T&TU)",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 53,
+    "column": 6,
+    "text": "View Policies of a running service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 54,
+    "column": 7,
+    "text": "View Configuration/attributes of an existing Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 55,
+    "column": 8,
+    "text": "Update Policies of a running service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 56,
+    "column": 9,
+    "text": "Policy Engineering",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 57,
+    "column": 10,
+    "text": "Update Configuration/attributes of an existing Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 58,
+    "column": 11,
+    "text": "View Logs for a VF/Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 59,
+    "column": 12,
+    "text": "View Alerts for a VF/Service",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 60,
+    "column": 13,
+    "text": "Patch & Upgrade",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 61,
+    "column": 14,
+    "text": "Change Mgmt",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 62,
+    "column": 15,
+    "text": "Regression/Confirmation Testing",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 63,
+    "column": 16,
+    "text": "Back Up & Restore",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 64,
+    "column": 17,
+    "text": "Audit",
+    "parentMenuId": 4,
+    "url": ""
+  },
+  {
+    "menuId": 65,
+    "column": 1,
+    "text": "Performance Reporting",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 66,
+    "column": 2,
+    "text": "Metrics/KPI Data Collection",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 67,
+    "column": 3,
+    "text": "KPI Thresholding",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 68,
+    "column": 4,
+    "text": "Data/Streaming Analytics",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 69,
+    "column": 5,
+    "text": "Metrics Analysis",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 70,
+    "column": 6,
+    "text": "End user Experience Monitoring",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 71,
+    "column": 7,
+    "text": "Application Performance monitoring",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 72,
+    "column": 8,
+    "text": "\"Billing, Invoicing\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 73,
+    "column": 9,
+    "text": "\"Service Delivery, Assurance\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 74,
+    "column": 10,
+    "text": "\"Document Creation - User Guides, Development Guides\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 75,
+    "column": 11,
+    "text": "\"Training Classes - Online classes, Lunch and learns\"",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 76,
+    "column": 12,
+    "text": "ECOMP DevOps (how ECOMP is performing - for operating ECOMP)",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 77,
+    "column": 13,
+    "text": "Service Ops (how services are performing)",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 78,
+    "column": 14,
+    "text": "Policy real-time and trending",
+    "parentMenuId": 5,
+    "url": ""
+  },
+  {
+    "menuId": 79,
+    "column": 1,
+    "text": "Collect results of Go-Live",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 80,
+    "column": 2,
+    "text": "Patch & Upgrade",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 81,
+    "column": 3,
+    "text": "Change Mgmt",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 82,
+    "column": 4,
+    "text": "Regression/Confirmation Testing",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 83,
+    "column": 5,
+    "text": "Back Up & Restore",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 84,
+    "column": 6,
+    "text": "Audit",
+    "parentMenuId": 6,
+    "url": ""
+  },
+  {
+    "menuId": 85,
+    "column": 1,
+    "text": "Applications",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 86,
+    "column": 2,
+    "text": "Infrastructure Compute",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 87,
+    "column": 3,
+    "text": "Infrastructure Storage",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 88,
+    "column": 4,
+    "text": "Network",
+    "parentMenuId": 7,
+    "url": ""
+  },
+  {
+    "menuId": 90,
+    "column": 1,
+    "text": "4th Level App1a R16",
+    "parentMenuId": 21,
+    "url": "http://app1a.com"
+  },
+  {
+    "menuId": 91,
+    "column": 1,
+    "text": "4th Level App1b R16",
+    "parentMenuId": 22,
+    "url": "http://google.com"
+  },
+  {
+    "menuId": 92,
+    "column": 1,
+    "text": "3rd Level App2a R16",
+    "parentMenuId": 32,
+    "url": "http://app2a.com"
+  },
+  {
+    "menuId": 93,
+    "column": 1,
+    "text": "3rd Level App3a R200",
+    "parentMenuId": 37,
+    "url": "http://nightskypix.com"
+  },
+  {
+    "menuId": 94,
+    "column": 1,
+    "text": "3rd Level App3b R16",
+    "parentMenuId": 37,
+    "url": "http://google.com"
+  },
+  {
+    "menuId": 95,
+    "column": 1,
+    "text": "4th Level App4a R16",
+    "parentMenuId": 44,
+    "url": "http://www.e-access.att.com/ecomp_portal_ist/ecompportal/widgets"
+  },
+  {
+    "menuId": 96,
+    "column": 1,
+    "text": "3rd Level App1c R200",
+    "parentMenuId": 48,
+    "url": "http://app1c.com"
+  },
+  {
+    "menuId": 97,
+    "column": 2,
+    "text": "3rd Level App4b R16",
+    "parentMenuId": 48,
+    "url": "http://app4b.com"
+  },
+  {
+    "menuId": 98,
+    "column": 1,
+    "text": "3rd Level App2b R16",
+    "parentMenuId": 49,
+    "url": "http://app2b.com"
+  },
+  {
+    "menuId": 99,
+    "column": 1,
+    "text": "Favorites",
+    "parentMenuId": null,
+    "url": ""
+  }
+]
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/ping/ping.json b/ecomp-portal-FE-os/mock/ecomp/data/ping/ping.json
new file mode 100644
index 0000000..3324786
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/ping/ping.json
@@ -0,0 +1,4 @@
+{
+  "statusCode": 200,
+  "body": "OK"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-profile.json b/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-profile.json
new file mode 100644
index 0000000..040ff6b
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-profile.json
@@ -0,0 +1,6 @@
+{
+  "userId": "aw3218",
+  "firstName": "Bilbo",
+  "lastName": "Baggins",
+  "roles": ["superAdmin", "admin", "user"]
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-static-info.json b/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-static-info.json
new file mode 100644
index 0000000..40c22d6
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/user-profile/user-static-info.json
@@ -0,0 +1,7 @@
+{
+  "firstName": "ANDY",
+  "lastName": "WEEKS",
+  "userId": "aw3218",
+  "email": "aw3218@us.att.com",
+  "contact_us_link": "https://wiki.web.att.com/display/EcompPortal/ECOMP+Portal+Home"
+}
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/users/account-users.json b/ecomp-portal-FE-os/mock/ecomp/data/users/account-users.json
new file mode 100644
index 0000000..7088fe9
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/users/account-users.json
@@ -0,0 +1,40 @@
+[
+  {
+    "userId": "aw3218",
+    "firstName": "Andy",
+    "lastName": "Weeks",
+    "roles": [
+      {
+        "id": 1,
+        "name": "Standard user"
+      },
+      {
+        "id": 9,
+        "name": "Super standard user"
+      },
+      {
+        "id": 2,
+        "name": "Super duper standard user"
+      }
+    ]
+  },
+  {
+    "userId": "lr3268",
+    "firstName": "Lori",
+    "lastName": "Resnick",
+    "roles": [
+      {
+        "id": 10,
+        "name": "read"
+      },
+      {
+        "id": 91,
+        "name": "write"
+      },
+      {
+        "id": 2,
+        "name": "Super duper standard user"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/users/query-users-results.json b/ecomp-portal-FE-os/mock/ecomp/data/users/query-users-results.json
new file mode 100644
index 0000000..1fb0a41
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/users/query-users-results.json
@@ -0,0 +1,38 @@
+[
+  {
+    "userId": "aw3218",
+    "firstName": "ANDY",
+    "lastName": "WEEKS",
+    "jobTitle": "SENIOR-PRODUCT DEVELOPMENT ENGINEER"
+  },
+  {
+    "userId": "lr3268",
+    "firstName": "LORI A",
+    "lastName": "RESNICK",
+    "jobTitle": "SR MEMBER OF TECHNICAL STAFF"
+  },
+  {
+    "userId": "ml1386",
+    "firstName": "MIKE",
+    "lastName": "LITTLE",
+    "jobTitle": "PRINCIPAL MEMBER OF TECH STAFF"
+  },
+  {
+    "userId": "ak133d",
+    "firstName": "AVINASHWAR",
+    "lastName": "KOTESHWAR",
+    "jobTitle": "QUALITY TESTING"
+  },
+  {
+    "userId": "mm016f",
+    "firstName": "MOHAMED ANVAR BATCHA",
+    "lastName": "MOHAMED IBRAHIM",
+    "jobTitle": "APPLICATION/SW DEVELOPMENT/SUPPORT"
+  },
+  {
+    "userId": "rc580q",
+    "firstName": "RAMAKRISHNA",
+    "lastName": "CHUNDURU",
+    "jobTitle": "PRINCIPAL MEMBER OF TECH STAFF"
+  }
+]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/users/user-apps-roles.json b/ecomp-portal-FE-os/mock/ecomp/data/users/user-apps-roles.json
new file mode 100644
index 0000000..4e9b66b
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/users/user-apps-roles.json
@@ -0,0 +1,59 @@
+{
+  "userId": "vt7108",
+  "apps": [
+    {
+      "appName": "Default",
+      "appId": 1,
+      "appRoles": [
+        {
+          "roleName": "Special user of Default",
+          "roleId": 12,
+          "isApplied": false
+        },
+        {
+          "roleName": "Macro user of Default",
+          "roleId": 13,
+          "isApplied": false
+        }
+      ]
+    },
+    {
+      "appName": "SSP",
+      "appId": 2,
+      "appRoles": [
+        {
+          "roleName": "Regular user of SSP",
+          "roleId": 1,
+          "isApplied": false
+        },
+        {
+          "roleName": "Mini user of SSP",
+          "roleId": 2,
+          "isApplied": true
+        }
+      ]
+    },
+    {
+      "appName": "ASDC",
+      "appId": 3,
+      "appRoles": [
+        {
+          "roleName": "Simple user",
+          "roleId": 99,
+          "isApplied": false
+        }
+      ]
+    },
+    {
+      "appName": "Formation",
+      "appId": 309,
+      "appRoles": [
+        {
+          "roleName": "some user role",
+          "roleId": 919,
+          "isApplied": false
+        }
+      ]
+    }
+  ]
+}
diff --git a/ecomp-portal-FE-os/mock/ecomp/data/widgets/widgets.json b/ecomp-portal-FE-os/mock/ecomp/data/widgets/widgets.json
new file mode 100644
index 0000000..3113d81
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/data/widgets/widgets.json
@@ -0,0 +1,39 @@
+[
+  {
+    "id": 2,
+    "name": "ASDC",
+    "appId": 23,
+    "appName": "ASDC",
+    "url": "http://yeoman.io/generators/",
+    "width": 360,
+    "height" : 300
+  },
+  {
+    "id": 3,
+    "name": "AIC Self Service Portal",
+    "appId": 24,
+    "appName": "AIC Self Sere Portal",
+    "url": "http://yeoman.io/generators/",
+    "width": 360,
+    "height" : 300
+  },
+  {
+    "id": 4,
+    "name": "AIC Formation",
+    "appId": 25,
+    "appName": "AIC Formation",
+    "url": "http://yeoman.io/generators/",
+    "width": 360,
+    "height" : 300
+  },
+  {
+    "id": 5,
+    "name": "Portal Name",
+    "appId": 26,
+    "appName": "Portal name",
+    "url": "http://yeoman.io/generators/",
+    "width": 360,
+    "height" : 300
+  }
+
+  ]
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/mock/ecomp/router.js b/ecomp-portal-FE-os/mock/ecomp/router.js
new file mode 100644
index 0000000..44db716
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/ecomp/router.js
@@ -0,0 +1,144 @@
+'use strict';
+
+let conf = require('../../client/configurations/mock.json');
+let router = require('express').Router();
+var concatRegex = /\/portalApi\/[\d,\w,\/,:,?]+$/;
+
+
+//**Mock endpoints goes here:
+
+//User apps home page
+router.get(stripEndpoint(conf.api.userApps), function (req, res) {
+    res.json(require('./data/applications/user-apps.json'));
+});
+
+//User widgets
+router.get(stripEndpoint(conf.api.widgets), function (req, res) {
+    res.json(require('./data/widgets/widgets.json'));
+});
+
+router.post(stripEndpoint(conf.api.widgets), function (req, res) {
+    //res.status(409).json([{"errorCode": 1201, "fields": [{"name":"name"},{"name":"url"}]}]).send();
+    res.json();
+});
+
+router.put(stripEndpoint(conf.api.widgets + '/:widgetId'), function (req, res) {
+    res.json();
+});
+
+router.delete(stripEndpoint(conf.api.widgets + '/:widgetId'), function (req, res) {
+    res.json();
+});
+
+//widget validation
+router.post(stripEndpoint(conf.api.widgetsValidation), function (req, res) {
+    //404 - not found in DB means valid
+    res.status(404).send();
+});
+
+//Admins view
+router.get(stripEndpoint(conf.api.accountAdmins), function (req, res) {
+    res.json(require('./data/admins/account-admins.json'));
+});
+
+router.get(stripEndpoint(conf.api.availableApps), function (req, res) {
+    res.json(require('./data/applications/available-apps.json'));
+});
+
+//Header
+router.get(stripEndpoint(conf.api.userProfile), function (req, res) {
+    res.json(require('./data/user-profile/user-profile.json'));
+});
+
+//New Admin + User adding dialogs
+router.get(stripEndpoint(conf.api.queryUsers), function (req, res) {
+    res.json(require('./data/users/query-users-results.json'));
+});
+
+//new admin dialog
+router.get(stripEndpoint(conf.api.adminAppsRoles), function (req, res) {
+    res.json(require('./data/admins/admin-app-roles.json'));
+});
+
+router.put(stripEndpoint(conf.api.adminAppsRoles), function (req, res) {
+    res.send();
+});
+
+//Users view
+router.get(stripEndpoint(conf.api.adminApps), function (req, res) {
+    res.send(require('./data/applications/admin-apps.json'));
+});
+
+router.get(stripEndpoint(conf.api.accountUsers), function (req, res) {
+    res.send(require('./data/users/account-users.json'));
+});
+
+//new user view
+// router.get(stripEndpoint(conf.api.userAppsRoles), function (req, res) {
+//     res.send(require('./data/users/user-apps-roles.json'));
+// });
+//
+// router.put(stripEndpoint(conf.api.userAppsRoles), function (req, res) {
+//     res.send();
+// });
+
+//apps onboarding view
+router.get(stripEndpoint(conf.api.onboardingApps), function (req, res) {
+    res.send(require('./data/applications/applications-onboarding.json'));
+});
+
+router.post(stripEndpoint(conf.api.onboardingApps), function (req, res) {
+    //res.status(409).json([{"errorCode": 1201, "fields": [{"name":"name"},{"name":"url"}]}]).send();
+    res.send();
+});
+
+router.put(stripEndpoint(conf.api.onboardingApps), function (req, res) {
+    res.send();
+});
+
+router.get(stripEndpoint(conf.api.functionalMenuForAuthUser), function (req, res) {
+    res.json(require('./data/functional-menu/menu-items.json'));
+});
+router.get(stripEndpoint(conf.api.functionalMenu), function (req, res) {
+    res.json(require('./data/functional-menu/menu-items.json'));
+});
+router.get(stripEndpoint(conf.api.functionalMenuItemDetails), function (req, res) {
+    res.json(require('./data/functional-menu/menu-item-details.json'));
+});
+router.get(stripEndpoint(conf.api.appRoles), function (req, res) {
+    res.json(require('./data/functional-menu/app-roles.json'));
+});
+// create a new menu item
+router.post(stripEndpoint(conf.api.functionalMenuItem), function (req, res) {
+    res.send();
+});
+// edit a menu item
+router.put(stripEndpoint(conf.api.functionalMenuItem), function (req, res) {
+    res.send();
+});
+// delete a menu item
+router.delete(stripEndpoint(conf.api.functionalMenuItem), function (req, res) {
+    res.send();
+});
+router.get(stripEndpoint(conf.api.getFavoriteItems), function (req, res) {
+    res.json(require('./data/functional-menu/favorites.json'));
+});
+// functionalMenuStaticInfo
+router.get(stripEndpoint(conf.api.functionalMenuStaticInfo), function (req, res) {
+    res.json(require('./data/user-profile/user-static-info.json'));
+});
+// Portal Admins
+router.get(stripEndpoint(conf.api.portalAdmins), function (req, res) {
+    res.json(require('./data/portal-admins/portal-admins.json'));
+});
+// Ping
+router.get(stripEndpoint(conf.api.ping), function (req, res) {
+    res.json(require('./data/ping/ping.json'));
+});
+
+
+function stripEndpoint(endpoint) {
+    return endpoint.match(concatRegex)[0];
+}
+
+module.exports = router;
diff --git a/ecomp-portal-FE-os/mock/server.js b/ecomp-portal-FE-os/mock/server.js
new file mode 100644
index 0000000..cd929a1
--- /dev/null
+++ b/ecomp-portal-FE-os/mock/server.js
@@ -0,0 +1,16 @@
+'use strict';
+let express = require('express');
+let cors = require('cors');
+let app = express();
+
+app.use(cors());
+
+app.use('/ecompportal', require('./ecomp/router'));
+
+let server = app.listen(9001, function () {
+  let host = server.address().address;
+  let port = server.address().port;
+
+  console.log('Example app listening at http://%s:%s', host, port);
+});
+
diff --git a/ecomp-portal-FE-os/package.json b/ecomp-portal-FE-os/package.json
new file mode 100644
index 0000000..e7a6620
--- /dev/null
+++ b/ecomp-portal-FE-os/package.json
@@ -0,0 +1,90 @@
+{
+  "name": "ecomp",
+  "version": "0.0.0",
+  "main": "server/app.js",
+  "dependencies": {
+    "ejs": "~0.8.4",
+    "errorhandler": "~1.0.0",
+    "compression": "~1.0.1",
+    "express": "~4.9.0",
+    "body-parser": "~1.5.0",
+    "cookie-parser": "~1.0.1",
+    "express-session": "~1.0.2",
+    "lodash": "~4.15.0",
+    "method-override": "~1.0.0",
+    "minimist": "^1.2.0",
+    "morgan": "~1.0.0",
+    "serve-favicon": "~2.0.1",
+    "winston": "^1.0.2"
+  },
+  "devDependencies": {
+    "connect-livereload": "~0.4.0",
+    "cors": "^2.7.1",
+    "grunt": "~0.4.4",
+    "grunt-angular-templates": "^0.5.4",
+    "grunt-autoprefixer": "~0.7.2",
+    "grunt-babel": "~5.0.0",
+    "grunt-build-control": "~0.4.0",
+    "grunt-concurrent": "~0.5.0",
+    "grunt-contrib-clean": "~0.5.0",
+    "grunt-contrib-concat": "~0.4.0",
+    "grunt-contrib-copy": "~0.5.0",
+    "grunt-contrib-cssmin": "~0.9.0",
+    "grunt-contrib-htmlmin": "~0.2.0",
+    "grunt-contrib-imagemin": "~0.7.1",
+    "grunt-contrib-jshint": "~0.10.0",
+    "grunt-contrib-less": "^0.11.0",
+    "grunt-contrib-uglify": "~0.4.0",
+    "grunt-contrib-watch": "~0.6.1",
+    "grunt-dom-munger": "^3.4.0",
+    "grunt-env": "~0.4.1",
+    "grunt-exec": "^0.4.6",
+    "grunt-express-server": "~0.4.17",
+    "grunt-google-cdn": "~0.4.0",
+    "grunt-injector": "~0.5.4",
+    "grunt-karma": "~2.0.0",
+    "grunt-mocha-test": "~0.10.2",
+    "grunt-newer": "~0.7.0",
+    "grunt-ng-annotate": "^0.2.3",
+    "grunt-ng-constant": "^1.1.0",
+    "grunt-nodemon": "~0.2.0",
+    "grunt-open": "~0.2.3",
+    "grunt-protractor-runner": "^1.1.0",
+    "grunt-rev": "~0.1.0",
+    "grunt-svgmin": "~0.4.0",
+    "grunt-usemin": "~3.1.1",
+    "grunt-wiredep": "~1.8.0",
+    "jasmine-core": "^2.3.4",
+    "jit-grunt": "^0.5.0",
+    "jshint-stylish": "~0.1.5",
+    "karma": "^1.2.0",
+    "karma-babel-preprocessor": "^6.0.1",
+    "karma-chrome-launcher": "^1.0.1",
+    "karma-coffee-preprocessor": "~1.0.1",
+    "karma-coverage": "^1.1.1",
+    "karma-firefox-launcher": "~1.0.0",
+    "karma-html2js-preprocessor": "~1.0.0",
+    "karma-jade-preprocessor": "0.0.11",
+    "karma-jasmine": "^1.0.2",
+    "karma-ng-html2js-preprocessor": "~1.0.0",
+    "karma-ng-jade2js-preprocessor": "^0.2.1",
+    "karma-ng-scenario": "~1.0.0",
+    "karma-phantomjs-launcher": "~1.0.1",
+    "karma-requirejs": "~1.0.0",
+    "karma-script-launcher": "~0.1.0",
+    "open": "~0.0.4",
+    "requirejs": "~2.2.0",
+    "should": "~3.3.1",
+    "supertest": "~2.0.0",
+    "time-grunt": "~0.3.1"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "scripts": {
+    "start": "node server/app.js",
+    "test": "grunt test",
+    "update-webdriver": "node node_modules/grunt-protractor-runner/node_modules/protractor/bin/webdriver-manager update"
+  },
+  "private": true
+}
diff --git a/ecomp-portal-FE-os/pom.xml b/ecomp-portal-FE-os/pom.xml
new file mode 100644
index 0000000..ca81181
--- /dev/null
+++ b/ecomp-portal-FE-os/pom.xml
@@ -0,0 +1,225 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.openecomp.portal</groupId>
+	<artifactId>ecompportal-FE-os</artifactId>
+	<version>1.1</version>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<skipnode>false</skipnode>
+		<skipcopy>false</skipcopy>
+	</properties>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<version>3.0.0</version>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>${basedir}/client/app</directory>
+						</fileset>
+						<fileset>
+							<directory>${basedir}/.tmp</directory>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>3.0.2</version>
+				<executions>
+					<execution>
+						<id>copy-src</id>
+						<phase>generate-resources</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/client/app</outputDirectory>
+							<overwrite>false</overwrite>
+							<skip>${skipcopy}</skip>
+							<resources>
+								<resource>
+									<directory>${basedir}/client/src</directory>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>copy-common</id>
+						<phase>generate-resources</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/client/app</outputDirectory>
+							<overwrite>false</overwrite>
+							<skip>${skipcopy}</skip>
+							<resources>
+								<resource>
+									<directory>../ecomp-portal-FE-common/client/app</directory>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+
+					<!-- copy b2b library into att template -->
+					<execution>
+						<id>copy-bower-components-external</id>
+						<phase>generate-resources</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/client/bower_components_external</outputDirectory>
+							<overwrite>false</overwrite>
+							<skip>${skipcopy}</skip>
+							<resources>
+								<resource>
+									<directory>../ecomp-portal-FE-common/client/bower_components_external</directory>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>com.github.eirslett</groupId>
+				<artifactId>frontend-maven-plugin</artifactId>
+				<!-- Use the latest released version: https://repo1.maven.org/maven2/com/github/eirslett/frontend-maven-plugin/ -->
+				<version>1.3</version>
+				<configuration>
+					<skip>${skipnode}</skip>
+					<nodeVersion>v7.5.0</nodeVersion>
+					<nodeDownloadRoot>https://nodejs.org/dist/</nodeDownloadRoot>
+					<npmDownloadRoot>https://nodejs.org/dist/npm/</npmDownloadRoot>
+					<installDirectory>./</installDirectory>
+				</configuration>
+				<executions>
+					<execution>
+						<!-- optional: you don't really need execution ids, but it looks nice 
+							in your build log. -->
+						<id>install node and npm</id>
+						<goals>
+							<goal>install-node-and-npm</goal>
+						</goals>
+						<phase>generate-resources</phase>
+					</execution>
+
+					<execution>
+						<id>npm install</id>
+						<goals>
+							<goal>npm</goal>
+						</goals>
+
+						<phase>generate-resources</phase>
+
+						<configuration>
+							<arguments>install</arguments>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>npm install bower</id>
+						<goals>
+							<goal>npm</goal>
+						</goals>
+
+						<phase>generate-resources</phase>
+
+						<configuration>
+							<arguments>install bower</arguments>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>npm install grunt-cli</id>
+						<goals>
+							<goal>npm</goal>
+						</goals>
+
+						<phase>generate-resources</phase>
+
+						<configuration>
+							<arguments>install grunt-cli</arguments>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>bower install</id>
+						<goals>
+							<goal>bower</goal>
+						</goals>
+
+						<configuration>
+							<arguments>install --allow-root</arguments>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>grunt build</id>
+						<goals>
+							<goal>grunt</goal>
+						</goals>
+
+						<phase>generate-resources</phase>
+
+						<configuration>
+							<arguments>build --env=integ</arguments>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+			 <!-- 	 
+			<plugin>
+			    <groupId>org.codehaus.mojo</groupId>
+			    <artifactId>license-maven-plugin</artifactId>
+			    <version>1.10</version>
+			    <configuration>
+		              <encoding>UTF-8</encoding>
+			        <licenseName>my_license</licenseName>
+			        <licenseResolver>${project.baseUri}/license</licenseResolver>
+			        <inceptionYear>2017</inceptionYear>
+				<organizationName>AT&amp;T Intellectual Property</organizationName>
+				<projectName>ECOMP Portal</projectName> 
+				<addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage> 
+     				<processStartTag>================================================================================</processStartTag>
+     				<sectionDelimiter>================================================================================</sectionDelimiter>
+     				<processEndTag>================================================================================</processEndTag> 
+			    	<roots>
+					<root>client/src</root>
+				</roots>
+				<excludes>
+					<exclude>*.png</exclude>
+					<exclude>*.drl</exclude>
+					<exclude>*.gif</exclude>
+					<exclude>*.jpeg</exclude>
+					<exclude>*.jpg</exclude>
+					<exclude>*.bmp</exclude>
+					<exclude>*.ico</exclude>
+					<exclude>*.svg</exclude>
+				</excludes>
+			    </configuration>
+			    <executions>
+			        <execution>
+			            <id>first</id>
+			            <goals>
+			                <goal>update-file-header</goal>
+			            </goals>
+			            <phase>process-sources</phase>
+			        </execution>
+			    </executions>
+			</plugin>
+			-->
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/protractor.conf.js b/ecomp-portal-FE-os/protractor.conf.js
new file mode 100644
index 0000000..154976f
--- /dev/null
+++ b/ecomp-portal-FE-os/protractor.conf.js
@@ -0,0 +1,51 @@
+// Protractor configuration
+// https://github.com/angular/protractor/blob/master/referenceConf.js
+
+'use strict';
+
+exports.config = {
+  // The timeout for each script run on the browser. This should be longer
+  // than the maximum time your application needs to stabilize between tasks.
+  allScriptsTimeout: 110000,
+
+  // A base URL for your application under test. Calls to protractor.get()
+  // with relative paths will be prepended with this.
+  baseUrl: 'http://localhost:' + (process.env.PORT || '9000'),
+
+  // If true, only chromedriver will be started, not a standalone selenium.
+  // Tests for browsers other than chrome will not run.
+
+ // chromeOnly: true,
+
+  // list of files / patterns to load in the browser
+  specs: [
+    'e2e/**/*.spec.js'
+  ],
+
+  // Patterns to exclude.
+  exclude: [],
+
+  // ----- Capabilities to be passed to the webdriver instance ----
+  //
+  // For a full list of available capabilities, see
+  // https://code.google.com/p/selenium/wiki/DesiredCapabilities
+  // and
+  // https://code.google.com/p/selenium/source/browse/javascript/webdriver/capabilities.js
+  capabilities: {
+    'browserName': 'firefox'
+  },
+
+  // ----- The test framework -----
+  //
+  // Jasmine and Cucumber are fully supported as a test and assertion framework.
+  // Mocha has limited beta support. You will need to include your own
+  // assertion framework if working with mocha.
+  framework: 'jasmine',
+
+  // ----- Options to be passed to minijasminenode -----
+  //
+  // See the full list at https://github.com/juliemr/minijasminenode
+  jasmineNodeOpts: {
+    defaultTimeoutInterval: 30000
+  }
+};
diff --git a/ecomp-portal-FE-os/server/.jshintrc b/ecomp-portal-FE-os/server/.jshintrc
new file mode 100644
index 0000000..66d1af7
--- /dev/null
+++ b/ecomp-portal-FE-os/server/.jshintrc
@@ -0,0 +1,14 @@
+{
+  "node": true,
+  "esnext": true,
+  "bitwise": true,
+  "eqeqeq": true,
+  "immed": true,
+  "latedef": "nofunc",
+  "newcap": true,
+  "noarg": true,
+  "undef": true,
+  "smarttabs": true,
+  "asi": true,
+  "debug": true
+}
diff --git a/ecomp-portal-FE-os/server/.jshintrc-spec b/ecomp-portal-FE-os/server/.jshintrc-spec
new file mode 100644
index 0000000..b6b55cb
--- /dev/null
+++ b/ecomp-portal-FE-os/server/.jshintrc-spec
@@ -0,0 +1,11 @@
+{
+  "extends": ".jshintrc",
+  "globals": {
+    "describe": true,
+    "it": true,
+    "before": true,
+    "beforeEach": true,
+    "after": true,
+    "afterEach": true
+  }
+}
diff --git a/ecomp-portal-FE-os/server/app.js b/ecomp-portal-FE-os/server/app.js
new file mode 100644
index 0000000..e6e3383
--- /dev/null
+++ b/ecomp-portal-FE-os/server/app.js
@@ -0,0 +1,19 @@
+'use strict';
+//let serverCommon = require('ssp_server_common');
+let express = require('express');
+let config = require('./config/environment');
+
+//let logger = serverCommon.getLogger(config);
+// Setup server
+let app = express();
+let server = require('http').createServer(app);
+require('./config/express')(app);
+require('./routes')(app);
+
+// Start server
+server.listen(config.port, config.ip, ()=> {
+    console.log('Express server listening on %d port, in %s mode', config.port, config.ip);
+});
+
+// Expose app
+module.exports = app;
diff --git a/ecomp-portal-FE-os/server/components/errors/index.js b/ecomp-portal-FE-os/server/components/errors/index.js
new file mode 100644
index 0000000..4c5a57c
--- /dev/null
+++ b/ecomp-portal-FE-os/server/components/errors/index.js
@@ -0,0 +1,20 @@
+/**
+ * Error responses
+ */
+
+'use strict';
+
+module.exports[404] = function pageNotFound(req, res) {
+  var viewFilePath = '404';
+  var statusCode = 404;
+  var result = {
+    status: statusCode
+  };
+
+  res.status(result.status);
+  res.render(viewFilePath, function (err) {
+    if (err) { return res.json(result, result.status); }
+
+    res.render(viewFilePath);
+  });
+};
diff --git a/ecomp-portal-FE-os/server/config/environment/index.js b/ecomp-portal-FE-os/server/config/environment/index.js
new file mode 100644
index 0000000..6bf620c
--- /dev/null
+++ b/ecomp-portal-FE-os/server/config/environment/index.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var path = require('path');
+
+// All configurations will extend these options
+// ============================================
+var all = {
+  env: process.env.NODE_ENV,
+
+  // Root path of server
+  root: path.normalize(__dirname + '/../../..'),
+
+  // Server port
+  port: process.env.PORT || 9000,
+
+  // Server IP
+  ip: process.env.IP || '0.0.0.0',
+
+  //Base tag url
+  baseUrl: '/ecompportal'
+};
+
+// Export the config object based on the NODE_ENV
+// ==============================================
+module.exports = all;
diff --git a/ecomp-portal-FE-os/server/config/express.js b/ecomp-portal-FE-os/server/config/express.js
new file mode 100644
index 0000000..1560050
--- /dev/null
+++ b/ecomp-portal-FE-os/server/config/express.js
@@ -0,0 +1,40 @@
+'use strict';
+
+let express = require('express');
+let favicon = require('serve-favicon');
+let morgan = require('morgan');
+let compression = require('compression');
+let bodyParser = require('body-parser');
+let methodOverride = require('method-override');
+let cookieParser = require('cookie-parser');
+let errorHandler = require('errorhandler');
+let path = require('path');
+let config = require('./environment');
+
+
+module.exports = (app) => {
+    var env = app.get('env');
+
+    app.set('views', config.root + '/server/views');
+    app.engine('html', require('ejs').renderFile);
+    app.set('view engine', 'html');
+    app.use(compression());
+    app.use(bodyParser.urlencoded({extended: false}));
+    app.use(bodyParser.json());
+    app.use(methodOverride());
+    app.use(cookieParser());
+
+    //if (process.env.NODE_TREE_STRUCTURE === 'unminified') {
+        app.use(require('connect-livereload')());
+        app.use(config.baseUrl, express.static(path.join(config.root, '.tmp')));
+        app.use(config.baseUrl, express.static(path.join(config.root, 'client')));
+        app.set('appPath', path.join(config.root, 'client'));
+        app.use(morgan('dev'));
+        app.use(errorHandler()); // Error handler - has to be last
+    //} else {
+    //    app.use(favicon(path.join(config.root, 'public', 'favicon.ico')));
+    //    app.use(express.static(path.join(config.root, 'public')));
+    //    app.set('appPath', path.join(config.root, 'public'));
+    //    app.use(morgan('dev'));
+    //}
+};
diff --git a/ecomp-portal-FE-os/server/routes.js b/ecomp-portal-FE-os/server/routes.js
new file mode 100644
index 0000000..b74027e
--- /dev/null
+++ b/ecomp-portal-FE-os/server/routes.js
@@ -0,0 +1,17 @@
+'use strict';
+let path = require('path');
+let config = require('./config/environment');
+
+module.exports = app => {
+    // All undefined asset or api routes should return a 404
+    app.route('/:url(api|auth|components|app|bower_components|assets)/*')
+        .get(function(req, res){
+            res.status(404).send();
+        });
+
+    // All other routes should redirect to the index.html
+    app.route(config.baseUrl + '/*')
+        .get(function (req, res) {
+            res.sendFile(path.resolve('client/index.html'));
+        });
+};
diff --git a/ecomp-portal-FE-os/server/views/404.html b/ecomp-portal-FE-os/server/views/404.html
new file mode 100644
index 0000000..ec98e3c
--- /dev/null
+++ b/ecomp-portal-FE-os/server/views/404.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Page Not Found :(</title>
+    <style>
+      ::-moz-selection {
+        background: #b3d4fc;
+        text-shadow: none;
+      }
+
+      ::selection {
+        background: #b3d4fc;
+        text-shadow: none;
+      }
+
+      html {
+        padding: 30px 10px;
+        font-size: 20px;
+        line-height: 1.4;
+        color: #737373;
+        background: #f0f0f0;
+        -webkit-text-size-adjust: 100%;
+        -ms-text-size-adjust: 100%;
+      }
+
+      html,
+      input {
+        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+      }
+
+      body {
+        max-width: 500px;
+        _width: 500px;
+        padding: 30px 20px 50px;
+        border: 1px solid #b3b3b3;
+        border-radius: 4px;
+        margin: 0 auto;
+        box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
+        background: #fcfcfc;
+      }
+
+      h1 {
+        margin: 0 10px;
+        font-size: 50px;
+        text-align: center;
+      }
+
+      h1 span {
+        color: #bbb;
+      }
+
+      h3 {
+        margin: 1.5em 0 0.5em;
+      }
+
+      p {
+        margin: 1em 0;
+      }
+
+      ul {
+        padding: 0 0 0 40px;
+        margin: 1em 0;
+      }
+
+      .container {
+        max-width: 380px;
+        _width: 380px;
+        margin: 0 auto;
+      }
+
+      /* google search */
+
+      #goog-fixurl ul {
+        list-style: none;
+        padding: 0;
+        margin: 0;
+      }
+
+      #goog-fixurl form {
+        margin: 0;
+      }
+
+      #goog-wm-qt,
+      #goog-wm-sb {
+        border: 1px solid #bbb;
+        font-size: 16px;
+        line-height: normal;
+        vertical-align: top;
+        color: #444;
+        border-radius: 2px;
+      }
+
+      #goog-wm-qt {
+        width: 220px;
+        height: 20px;
+        padding: 5px;
+        margin: 5px 10px 0 0;
+        box-shadow: inset 0 1px 1px #ccc;
+      }
+
+      #goog-wm-sb {
+        display: inline-block;
+        height: 32px;
+        padding: 0 10px;
+        margin: 5px 0 0;
+        white-space: nowrap;
+        cursor: pointer;
+        background-color: #f5f5f5;
+        background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+        background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+        background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+        background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+        -webkit-appearance: none;
+        -moz-appearance: none;
+        appearance: none;
+        *overflow: visible;
+        *display: inline;
+        *zoom: 1;
+      }
+
+      #goog-wm-sb:hover,
+      #goog-wm-sb:focus {
+        border-color: #aaa;
+        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+        background-color: #f8f8f8;
+      }
+
+      #goog-wm-qt:hover,
+      #goog-wm-qt:focus {
+        border-color: #105cb6;
+        outline: 0;
+        color: #222;
+      }
+
+      input::-moz-focus-inner {
+        padding: 0;
+        border: 0;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="container">
+      <h1>Not found <span>:(</span></h1>
+      <p>Sorry, but the page you were trying to view does not exist.</p>
+      <p>It looks like this was the result of either:</p>
+      <ul>
+        <li>a mistyped address</li>
+        <li>an out-of-date link</li>
+      </ul>
+      <script>
+        var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
+      </script>
+      <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
+    </div>
+  </body>
+</html>
