DCAE-D fe initial commit

DCAE-D fe initial commit

Change-Id: Ica8ccb7c7ef769c969664d1e168d205eb9fc67f2
Issue-ID: SDC-1218
Signed-off-by: Stone, Avi (as206k) <as206k@att.com>
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..f3cbb6f
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,29 @@
+FROM dockercentral.it.att.com:5100/com.att.sdc/openecomp/base_sdc-jetty:1.2.0-SNAPSHOT-latest
+
+ENV http_proxy http://one.proxy.att.com:8080
+ENV https_proxy http://one.proxy.att.com:8080
+
+COPY chef-solo /var/opt/dcae-fe/chef-solo/
+
+COPY startup.sh /var/opt/dcae-fe/
+
+ADD target/dcae_*.war ${JETTY_BASE}/webapps/
+
+USER root
+
+RUN mkdir -p /opt/logs/fe
+
+COPY set_user.sh /tmp/set_user.sh
+
+RUN sh -x /tmp/set_user.sh && rm -f /tmp/set_user.sh
+
+RUN chown -R jetty:jetty ${JETTY_BASE}/webapps  /var/opt/dcae-fe  /opt/logs  /var/lib/jetty
+
+RUN chmod 770 /var/opt/dcae-fe/startup.sh
+
+EXPOSE 8082 8444
+
+USER jetty
+
+ENTRYPOINT [ "/var/opt/dcae-fe/startup.sh" ]
+
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/.gitignore b/docker/chef-solo/cookbooks/Deploy-DCAE/.gitignore
new file mode 100644
index 0000000..b31c0d3
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/.gitignore
@@ -0,0 +1,20 @@
+.vagrant
+Berksfile.lock
+*~
+*#
+.#*
+\#*#
+.*.sw[a-z]
+*.un~
+
+# Bundler
+Gemfile.lock
+bin/*
+.bundle/*
+
+.kitchen/
+.kitchen.local.yml
+
+######### Private
+run.me
+DCAE-CI01.json
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/.kitchen.yml b/docker/chef-solo/cookbooks/Deploy-DCAE/.kitchen.yml
new file mode 100644
index 0000000..37d2844
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/.kitchen.yml
@@ -0,0 +1,16 @@
+---
+driver:
+  name: vagrant
+
+provisioner:
+  name: chef_zero
+
+platforms:
+  - name: ubuntu-16.04
+  - name: centos-7.1
+
+suites:
+  - name: default
+    run_list:
+      - recipe[Deploy-DCAE::default]
+    attributes:
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/README.md b/docker/chef-solo/cookbooks/Deploy-DCAE/README.md
new file mode 100644
index 0000000..27aba53
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/README.md
@@ -0,0 +1,4 @@
+# Deploy-DCAE
+
+TODO: Enter the cookbook description here.
+
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/attributes/default.rb b/docker/chef-solo/cookbooks/Deploy-DCAE/attributes/default.rb
new file mode 100644
index 0000000..0ea50da
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/attributes/default.rb
@@ -0,0 +1,16 @@
+default['JETTY_BASE'] = "/var/lib/jetty"
+default['JETTY_HOME'] = "/usr/local/jetty"
+default['APP_LOG_DIR'] = "/opt/logs/fe"
+
+default['DCAE']['BE'][:http_port] = 8082
+default['DCAE']['BE'][:https_port] = 8444
+
+default['DCAE']['FE'][:http_port] = 8183
+default['DCAE']['FE'][:https_port] = 9444
+
+default['jetty'][:keystore_pwd] = "OBF:1cp61iuj194s194u194w194y1is31cok"
+default['jetty'][:keymanager_pwd] = "OBF:1cp61iuj194s194u194w194y1is31cok"
+default['jetty'][:truststore_pwd] = "OBF:1cp61iuj194s194u194w194y1is31cok"
+
+default['disableHttp'] = true
+
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/keystore b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/keystore
new file mode 100644
index 0000000..c408393
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/keystore
Binary files differ
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/logback-spring.xml b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/logback-spring.xml
new file mode 100644
index 0000000..7c0bfb6
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/logback-spring.xml
@@ -0,0 +1,342 @@
+<!-- Copyright (c) 2016 AT&T Intellectual Property. All rights reserved. -->
+<configuration scan="true" scanPeriod="3 seconds">
+  <include resource="org/springframework/boot/logging/logback/base.xml"/>
+  <!--<jmxConfigurator /> -->
+  
+  <!--  specify the component name -->
+  <property name="componentName" value="DCAE"></property>
+  
+  <!--  log file names -->
+  <property name="generalLogName" value="application" />
+  <property name="securityLogName" value="security" />
+  <property name="performanceLogName" value="performance" />
+  <property name="serverLogName" value="server" />
+  <property name="policyLogName" value="policy" />
+  <property name="errorLogName" value="error" />
+  <property name="metricsLogName" value="metrics" />
+  <property name="auditLogName" value="audit" />
+  <property name="debugLogName" value="debug" />
+  
+  <property name="defaultPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+  
+  <property name="auditLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <property name="metricsLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <property name="errorLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
+  <property name="debugLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}| %msg%n" />
+   
+  <property name="logDirectory" value="${log.home}/${componentName}" />
+  
+  
+  <!-- Example evaluator filter applied against console appender -->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <!-- ============================================================================ -->
+  <!-- EELF Appenders -->
+  <!-- ============================================================================ -->
+
+  <!-- The EELFAppender is used to record events to the general application 
+    log -->
+    
+    
+  <appender name="EELF"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${generalLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELF" />
+  </appender>
+
+  <!-- EELF Security Appender. This appender is used to record security events 
+    to the security log file. Security events are separate from other loggers 
+    in EELF so that security log records can be captured and managed in a secure 
+    way separate from the other logs. This appender is set to never discard any 
+    events. -->
+  <appender name="EELFSecurity"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${securityLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="EELFSecurity" />
+  </appender>
+
+  <!-- EELF Performance Appender. This appender is used to record performance 
+    records. -->
+  <appender name="EELFPerformance"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${performanceLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPerformance" />
+  </appender>
+
+  <!-- EELF Server Appender. This appender is used to record Server related 
+    logging events. The Server logger and appender are specializations of the 
+    EELF application root logger and appender. This can be used to segregate Server 
+    events from other components, or it can be eliminated to record these events 
+    as part of the application root log. -->
+  <appender name="EELFServer"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${serverLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFServer" />
+  </appender>
+
+  
+  <!-- EELF Policy Appender. This appender is used to record Policy engine 
+    related logging events. The Policy logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+  <appender name="EELFPolicy"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${policyLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPolicy" />
+  </appender>
+  
+  
+  <!-- EELF Audit Appender. This appender is used to record audit engine 
+    related logging events. The audit logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+    
+  <!-- Audit log -->
+	<appender name="EELFAudit"
+	   class="ch.qos.logback.core.rolling.RollingFileAppender">
+	   <file>${logDirectory}/${auditLogName}.log</file>
+	   <!-- Audit messages filter - accept audit messages -->
+	   <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+	      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+	         <marker>AUDIT_MARKER</marker>
+	         <marker>AUDIT</marker>
+	      </evaluator>
+	      <onMismatch>DENY</onMismatch>
+	      <onMatch>ACCEPT</onMatch>
+	   </filter>
+	
+	   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+	      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip</fileNamePattern>
+	      <minIndex>1</minIndex>
+	      <maxIndex>10</maxIndex>
+	   </rollingPolicy>
+	
+	   <triggeringPolicy
+	      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+	      <maxFileSize>20MB</maxFileSize>
+	   </triggeringPolicy>
+	   <encoder>
+	      <pattern>${auditLoggerPattern}</pattern>
+	   </encoder>
+	</appender>
+  
+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFAudit" />
+  </appender>
+
+<appender name="EELFMetrics"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${metricsLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>${metricsLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  
+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFMetrics"/>
+  </appender>
+   
+  <appender name="EELFError"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${errorLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${errorLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFError"/>
+  </appender>
+  
+   <appender name="EELFDebug"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${debugLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${debugLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${debugLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFDebug" />
+    <includeCallerData>true</includeCallerData>
+  </appender>
+ 
+  
+  <!-- ============================================================================ -->
+  <!--  EELF loggers -->
+  <!-- ============================================================================ -->
+  <logger name="com.att.eelf" level="info" additivity="false">
+    <appender-ref ref="asyncEELF" />
+  </logger>
+  <logger name="com.att.eelf.security" level="info" additivity="false">
+    <appender-ref ref="asyncEELFSecurity" />
+  </logger>
+  <logger name="com.att.eelf.perf" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPerformance" />
+  </logger>
+  <logger name="com.att.eelf.server" level="info" additivity="false">
+    <appender-ref ref="asyncEELFServer" />
+  </logger>
+  <logger name="com.att.eelf.policy" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPolicy" />
+  </logger>
+
+  <logger name="org.openecomp.sdc.common.ecomplog.EcompLoggerAudit" level="info" additivity="false">
+    <appender-ref ref="asyncEELFAudit" />
+  </logger>
+  
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="asyncEELFMetrics" />
+  </logger>
+ 
+ 
+   <logger name="com.att.eelf.error" level="error" additivity="false">
+  <appender-ref ref="asyncEELFError" />
+  </logger>
+  
+   <logger name="com.att.eelf.debug" level="debug" additivity="false">
+        <appender-ref ref="asyncEELFDebug" />
+  </logger>
+  
+  
+
+  
+  <root level="INFO">
+    <appender-ref ref="asyncEELF" />
+  </root>
+
+</configuration>
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/truststore b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/truststore
new file mode 100644
index 0000000..c408393
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/files/default/truststore
Binary files differ
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/metadata.rb b/docker/chef-solo/cookbooks/Deploy-DCAE/metadata.rb
new file mode 100644
index 0000000..7935c22
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/metadata.rb
@@ -0,0 +1,7 @@
+name 'Deploy-DCAE'
+maintainer 'The Authors'
+maintainer_email 'you@example.com'
+license 'all_rights'
+description 'Installs/Configures Deploy-DCAE'
+long_description 'Installs/Configures Deploy-DCAE'
+version '1.0.0'
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/dcae_setup.rb b/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/dcae_setup.rb
new file mode 100644
index 0000000..27b1a0f
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/dcae_setup.rb
@@ -0,0 +1,65 @@
+jetty_base = "#{node['JETTY_BASE']}"
+dcae_logs = "#{node['APP_LOG_DIR']}"
+
+if node['disableHttp']
+  protocol = "https"
+  dcae_be_vip = node['DCAE_BE_VIP']
+  dcae_be_port = node['DCAE']['BE'][:https_port]
+else
+  protocol = "http"
+  dcae_be_vip  = "localhost"
+  dcae_be_port = node['DCAE']['BE'][:http_port]
+end
+
+printf("DEBUG: [%s]:[%s] disableHttp=[%s], protocol=[%s], dcae_be_vip=[%s], dcae_be_port=[%s] !!! \n", cookbook_name, recipe_name, node['disableHttp'], protocol, dcae_be_vip ,dcae_be_port )
+
+raise "[ERROR] 'DCAE_BE_FQDN' is not defined" if dcae_be_vip.nil? || dcae_be_vip == ""
+
+directory "#{jetty_base}/config" do
+  owner "jetty"
+  group "jetty"
+  mode '0755'
+  recursive true
+  action :create
+end
+
+directory "#{jetty_base}/config/dcae-fe" do
+  owner "jetty"
+  group "jetty"
+  mode '0755'
+  recursive true
+  action :create
+end
+
+template "dcae-fe-config" do
+  sensitive true
+  path "#{jetty_base}/config/dcae-fe/application.properties"
+  source "dcae-application.properties.erb"
+  owner "jetty"
+  group "jetty"
+  mode "0755"
+  variables ({
+    :dcae_be_vip => dcae_be_vip,
+    :dcae_be_port => dcae_be_port,
+    :protocol => protocol
+  })
+end
+
+
+template "dcae-logback-spring-config" do
+  sensitive true
+  path "#{jetty_base}/config/dcae-fe/logback-spring.xml"
+  source "dcae-logback-spring.erb"
+  owner "jetty"
+  group "jetty"
+  mode "0755"
+end
+
+
+directory "#{dcae_logs}" do
+  owner "jetty"
+  group "jetty"
+  mode '0755'
+  recursive true
+  action :create
+end
\ No newline at end of file
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/jetty_setup.rb b/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/jetty_setup.rb
new file mode 100644
index 0000000..74c384e
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/recipes/jetty_setup.rb
@@ -0,0 +1,86 @@
+jetty_base = "#{node['JETTY_BASE']}"
+jetty_home = "#{node['JETTY_HOME']}"
+
+#Set the http module option
+if node['disableHttp']
+  http_option = "#--module=http"
+else
+  http_option = "--module=http"
+end
+
+
+printf("DEBUG: [%s]:[%s] disableHttp=[%s], http_option=[%s] !!! \n", cookbook_name, recipe_name, node['disableHttp'], http_option )
+
+
+directory "Jetty_etcdir_creation" do
+    path "/#{jetty_base}/etc"
+    owner 'jetty'
+    group 'jetty'
+    mode '0755'
+    action :create
+end
+
+
+# Create Keystore
+cookbook_file "#{jetty_base}/etc/keystore" do
+   source "keystore"
+   owner "jetty"
+   group "jetty"
+   mode 0755
+end
+
+# Create Trustore
+cookbook_file "#{jetty_base}/etc/truststore" do
+   source "truststore"
+   owner "jetty"
+   group "jetty"
+   mode 0755
+end
+
+bash "create-jetty-modules" do
+  cwd "#{jetty_base}"
+  code <<-EOH
+    cd "#{jetty_base}"
+    java -jar "#{jetty_home}"/start.jar --add-to-start=deploy
+    java -jar "#{jetty_home}"/start.jar --add-to-startd=http,https,logging,setuid
+  EOH
+end
+
+# configure Jetty modules
+template "http-ini" do
+   path "#{jetty_base}/start.d/http.ini"
+   source "http-ini.erb"
+   owner "jetty"
+   group "jetty"
+   mode "0755"
+   variables ({
+     :http_option => http_option ,
+     :http_port => "#{node['DCAE']['FE'][:http_port]}"
+    })
+end
+
+template "https-ini" do
+   path "#{jetty_base}/start.d/https.ini"
+   source "https-ini.erb"
+   owner "jetty"
+   group "jetty"
+   mode "0755"
+   variables ({
+     :https_port => "#{node['DCAE']['FE'][:https_port]}"
+   })
+end
+
+template "ssl-ini" do
+   path "#{jetty_base}/start.d/ssl.ini"
+   source "ssl-ini.erb"
+   owner "jetty"
+   group "jetty"
+   mode "0755"
+   variables ({ 
+     :https_port => "#{node['DCAE']['FE'][:https_port]}" ,
+     :jetty_keystore_pwd => "#{node['jetty'][:keystore_pwd]}" ,
+     :jetty_keymanager_pwd => "#{node['jetty'][:keymanager_pwd]}" ,
+     :jetty_truststore_pwd => "#{node['jetty'][:truststore_pwd]}"
+   })
+end
+
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-application.properties.erb b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-application.properties.erb
new file mode 100644
index 0000000..defa909
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-application.properties.erb
@@ -0,0 +1,3 @@
+server.port=<%= @dcae_fe_port %>
+server.context-path=/dcae
+beUrl=<%= @protocol %>://<%= @dcae_be_vip %>:<%= @dcae_be_port %>#demo
\ No newline at end of file
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-logback-spring.erb b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-logback-spring.erb
new file mode 100644
index 0000000..7c0bfb6
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/dcae-logback-spring.erb
@@ -0,0 +1,342 @@
+<!-- Copyright (c) 2016 AT&T Intellectual Property. All rights reserved. -->
+<configuration scan="true" scanPeriod="3 seconds">
+  <include resource="org/springframework/boot/logging/logback/base.xml"/>
+  <!--<jmxConfigurator /> -->
+  
+  <!--  specify the component name -->
+  <property name="componentName" value="DCAE"></property>
+  
+  <!--  log file names -->
+  <property name="generalLogName" value="application" />
+  <property name="securityLogName" value="security" />
+  <property name="performanceLogName" value="performance" />
+  <property name="serverLogName" value="server" />
+  <property name="policyLogName" value="policy" />
+  <property name="errorLogName" value="error" />
+  <property name="metricsLogName" value="metrics" />
+  <property name="auditLogName" value="audit" />
+  <property name="debugLogName" value="debug" />
+  
+  <property name="defaultPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+  
+  <property name="auditLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <property name="metricsLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <property name="errorLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
+  <property name="debugLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}| %msg%n" />
+   
+  <property name="logDirectory" value="${log.home}/${componentName}" />
+  
+  
+  <!-- Example evaluator filter applied against console appender -->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <!-- ============================================================================ -->
+  <!-- EELF Appenders -->
+  <!-- ============================================================================ -->
+
+  <!-- The EELFAppender is used to record events to the general application 
+    log -->
+    
+    
+  <appender name="EELF"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${generalLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELF" />
+  </appender>
+
+  <!-- EELF Security Appender. This appender is used to record security events 
+    to the security log file. Security events are separate from other loggers 
+    in EELF so that security log records can be captured and managed in a secure 
+    way separate from the other logs. This appender is set to never discard any 
+    events. -->
+  <appender name="EELFSecurity"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${securityLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="EELFSecurity" />
+  </appender>
+
+  <!-- EELF Performance Appender. This appender is used to record performance 
+    records. -->
+  <appender name="EELFPerformance"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${performanceLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPerformance" />
+  </appender>
+
+  <!-- EELF Server Appender. This appender is used to record Server related 
+    logging events. The Server logger and appender are specializations of the 
+    EELF application root logger and appender. This can be used to segregate Server 
+    events from other components, or it can be eliminated to record these events 
+    as part of the application root log. -->
+  <appender name="EELFServer"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${serverLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFServer" />
+  </appender>
+
+  
+  <!-- EELF Policy Appender. This appender is used to record Policy engine 
+    related logging events. The Policy logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+  <appender name="EELFPolicy"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${policyLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPolicy" />
+  </appender>
+  
+  
+  <!-- EELF Audit Appender. This appender is used to record audit engine 
+    related logging events. The audit logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+    
+  <!-- Audit log -->
+	<appender name="EELFAudit"
+	   class="ch.qos.logback.core.rolling.RollingFileAppender">
+	   <file>${logDirectory}/${auditLogName}.log</file>
+	   <!-- Audit messages filter - accept audit messages -->
+	   <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+	      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+	         <marker>AUDIT_MARKER</marker>
+	         <marker>AUDIT</marker>
+	      </evaluator>
+	      <onMismatch>DENY</onMismatch>
+	      <onMatch>ACCEPT</onMatch>
+	   </filter>
+	
+	   <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+	      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip</fileNamePattern>
+	      <minIndex>1</minIndex>
+	      <maxIndex>10</maxIndex>
+	   </rollingPolicy>
+	
+	   <triggeringPolicy
+	      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+	      <maxFileSize>20MB</maxFileSize>
+	   </triggeringPolicy>
+	   <encoder>
+	      <pattern>${auditLoggerPattern}</pattern>
+	   </encoder>
+	</appender>
+  
+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFAudit" />
+  </appender>
+
+<appender name="EELFMetrics"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${metricsLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>${metricsLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  
+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFMetrics"/>
+  </appender>
+   
+  <appender name="EELFError"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${errorLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${errorLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFError"/>
+  </appender>
+  
+   <appender name="EELFDebug"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${debugLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${debugLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${debugLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFDebug" />
+    <includeCallerData>true</includeCallerData>
+  </appender>
+ 
+  
+  <!-- ============================================================================ -->
+  <!--  EELF loggers -->
+  <!-- ============================================================================ -->
+  <logger name="com.att.eelf" level="info" additivity="false">
+    <appender-ref ref="asyncEELF" />
+  </logger>
+  <logger name="com.att.eelf.security" level="info" additivity="false">
+    <appender-ref ref="asyncEELFSecurity" />
+  </logger>
+  <logger name="com.att.eelf.perf" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPerformance" />
+  </logger>
+  <logger name="com.att.eelf.server" level="info" additivity="false">
+    <appender-ref ref="asyncEELFServer" />
+  </logger>
+  <logger name="com.att.eelf.policy" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPolicy" />
+  </logger>
+
+  <logger name="org.openecomp.sdc.common.ecomplog.EcompLoggerAudit" level="info" additivity="false">
+    <appender-ref ref="asyncEELFAudit" />
+  </logger>
+  
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="asyncEELFMetrics" />
+  </logger>
+ 
+ 
+   <logger name="com.att.eelf.error" level="error" additivity="false">
+  <appender-ref ref="asyncEELFError" />
+  </logger>
+  
+   <logger name="com.att.eelf.debug" level="debug" additivity="false">
+        <appender-ref ref="asyncEELFDebug" />
+  </logger>
+  
+  
+
+  
+  <root level="INFO">
+    <appender-ref ref="asyncEELF" />
+  </root>
+
+</configuration>
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/http-ini.erb b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/http-ini.erb
new file mode 100644
index 0000000..8f26690
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/http-ini.erb
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: http
+<%= @http_option %>
+
+### HTTP Connector Configuration
+
+## Connector host/address to bind to
+# jetty.http.host=0.0.0.0
+
+## Connector port to listen on
+jetty.http.port=<%= @http_port %>
+
+## Connector idle timeout in milliseconds
+jetty.http.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.http.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.http.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.http.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.http.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.http.acceptorPriorityDelta=0
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/https-ini.erb b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/https-ini.erb
new file mode 100644
index 0000000..9999a41
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/https-ini.erb
@@ -0,0 +1,29 @@
+# ---------------------------------------
+# Module: https
+--module=https
+
+### HTTPS Connector Configuration
+
+## Connector host/address to bind to
+# jetty.https.host=0.0.0.0
+
+## Connector port to listen on
+jetty.https.port=<%= @https_port %>
+
+## Connector idle timeout in milliseconds
+jetty.https.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.https.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.https.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.https.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.https.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.https.acceptorPriorityDelta=0
diff --git a/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/ssl-ini.erb b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/ssl-ini.erb
new file mode 100644
index 0000000..9abac51
--- /dev/null
+++ b/docker/chef-solo/cookbooks/Deploy-DCAE/templates/default/ssl-ini.erb
@@ -0,0 +1,90 @@
+# ---------------------------------------
+# Module: ssl
+--module=ssl
+
+### TLS(SSL) Connector Configuration
+
+## Connector host/address to bind to
+# jetty.ssl.host=0.0.0.0
+
+## Connector port to listen on
+jetty.ssl.port=<%= @https_port %>
+
+## Connector idle timeout in milliseconds
+# jetty.ssl.idleTimeout=30000
+
+## Connector socket linger time in seconds (-1 to disable)
+# jetty.ssl.soLingerTime=-1
+
+## Number of acceptors (-1 picks default based on number of cores)
+# jetty.ssl.acceptors=-1
+
+## Number of selectors (-1 picks default based on number of cores)
+# jetty.ssl.selectors=-1
+
+## ServerSocketChannel backlog (0 picks platform default)
+# jetty.ssl.acceptorQueueSize=0
+
+## Thread priority delta to give to acceptor threads
+# jetty.ssl.acceptorPriorityDelta=0
+
+## Whether request host names are checked to match any SNI names
+# jetty.ssl.sniHostCheck=true
+
+## max age in seconds for a Strict-Transport-Security response header (default -1)
+# jetty.ssl.stsMaxAgeSeconds=31536000
+
+## include subdomain property in any Strict-Transport-Security header (default false)
+# jetty.ssl.stsIncludeSubdomains=true
+
+### SslContextFactory Configuration
+## Note that OBF passwords are not secure, just protected from casual observation
+## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html
+
+## Keystore file path (relative to $jetty.base)
+#jetty.sslContext.keyStorePath=etc/keystore
+
+## Truststore file path (relative to $jetty.base)
+#jetty.sslContext.trustStorePath=etc/truststore
+
+## Keystore password
+# jetty.sslContext.keyStorePassword=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+jetty.sslContext.keyStorePassword=<%= @jetty_keystore_pwd %>
+
+## Keystore type and provider
+# jetty.sslContext.keyStoreType=JKS
+# jetty.sslContext.keyStoreProvider=
+
+## KeyManager password
+# jetty.sslContext.keyManagerPassword=OBF:1u2u1wml1z7s1z7a1wnl1u2g
+jetty.sslContext.keyManagerPassword=<%= @jetty_keymanager_pwd %>
+
+## Truststore password
+# jetty.sslContext.trustStorePassword=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+jetty.sslContext.trustStorePassword=<%= @jetty_truststore_pwd %>
+
+## Truststore type and provider
+# jetty.sslContext.trustStoreType=JKS
+# jetty.sslContext.trustStoreProvider=
+
+## whether client certificate authentication is required
+# jetty.sslContext.needClientAuth=false
+
+## Whether client certificate authentication is desired
+# jetty.sslContext.wantClientAuth=false
+
+## Whether cipher order is significant (since java 8 only)
+# jetty.sslContext.useCipherSuitesOrder=true
+
+## To configure Includes / Excludes for Cipher Suites or Protocols see tweak-ssl.xml example at
+## https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html#configuring-sslcontextfactory-cipherSuites
+
+## Set the size of the SslSession cache
+# jetty.sslContext.sslSessionCacheSize=-1
+
+## Set the timeout (in seconds) of the SslSession cache timeout
+# jetty.sslContext.sslSessionTimeout=-1
+
+## Allow SSL renegotiation
+# jetty.sslContext.renegotiationAllowed=true
+# jetty.sslContext.renegotiationLimit=5
diff --git a/docker/chef-solo/environments/.keep b/docker/chef-solo/environments/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docker/chef-solo/environments/.keep
diff --git a/docker/chef-solo/roles/dcae-fe.json b/docker/chef-solo/roles/dcae-fe.json
new file mode 100644
index 0000000..7be41d6
--- /dev/null
+++ b/docker/chef-solo/roles/dcae-fe.json
@@ -0,0 +1,18 @@
+{
+  "name": "dcae-fe",
+  "description": "Installation application Setup- dcaeBE",
+  "json_class": "Chef::Role",
+  "default_attributes": {
+
+  },
+  "override_attributes": {
+
+  },
+  "chef_type": "role",
+  "run_list": [
+    "recipe[Deploy-DCAE::jetty_setup]",
+    "recipe[Deploy-DCAE::dcae_setup]"
+  ],
+  "env_run_lists": {
+  }
+}
diff --git a/docker/chef-solo/solo.json b/docker/chef-solo/solo.json
new file mode 100644
index 0000000..38564fc
--- /dev/null
+++ b/docker/chef-solo/solo.json
@@ -0,0 +1,4 @@
+{
+    "run_list": [ "role[dcae-fe]" ]
+}
+
diff --git a/docker/chef-solo/solo.rb b/docker/chef-solo/solo.rb
new file mode 100644
index 0000000..06c1af4
--- /dev/null
+++ b/docker/chef-solo/solo.rb
@@ -0,0 +1,16 @@
+root = File.absolute_path(File.dirname(__FILE__))
+file_cache_path root
+cookbook_path root + '/cookbooks'
+json_attribs root + '/solo.json'
+checksum_path root + '/checksums'
+data_bag_path root + '/data_bags'
+environment_path root + '/environments'
+file_backup_path root + '/backup'
+file_cache_path root + '/cache'
+log_level :info
+log_location STDOUT
+rest_timeout 300
+role_path root + '/roles'
+syntax_check_cache_path
+umask 0022
+verbose_logging nil
diff --git a/docker/set_user.sh b/docker/set_user.sh
new file mode 100755
index 0000000..6233c07
--- /dev/null
+++ b/docker/set_user.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Create user
+
+USER="jetty"
+GROUP="jetty"
+UID="352070"
+GID="35953"
+
+# Remove user:
+deluser ${USER}
+
+delgroup ${GROUP}
+
+echo "${USER}:x:${UID}:${GID}::/home/${USER}:Linux User,,,:/home/jetty:/bin/false" >> /etc/passwd
+
+echo "${GROUP}:x:${GID}:${USER}" >> /etc/group
+
+echo "${USER}:!:17501:0:99999:7:::" >> /etc/shadow
+
+mkdir /home/${USER} && chown ${USER}:${GROUP} /home/${USER}
\ No newline at end of file
diff --git a/docker/startup.sh b/docker/startup.sh
new file mode 100644
index 0000000..806a9a7
--- /dev/null
+++ b/docker/startup.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+set -x 
+# Run chef-solo for configuration
+cd /var/opt/dcae-fe/chef-solo
+chef-solo -c solo.rb -E ${ENVNAME} --log_level "debug" --logfile "/tmp/Chef-Solo.log"
+
+status=$?
+if [ $status != 0 ]; then
+  echo "[ERROR] Problem detected while running chef. Aborting !"
+  exit 1
+fi
+
+# Execute Jetty
+cd /var/lib/jetty
+/docker-entrypoint.sh &
+
+#while true; do sleep 2; done
+exec "$@";
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..fd7a283
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,363 @@
+<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.onap.sdc</groupId>
+  <artifactId>dcae_fe</artifactId>
+  <version>1806.0.1-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>DCAE FE application</name>
+  <description>DCAE FE</description>
+  <parent>
+    <groupId>org.springframework.boot</groupId>
+    <artifactId>spring-boot-starter-parent</artifactId>
+    <version>1.5.9.RELEASE</version>
+    <relativePath />
+    <!-- lookup parent from repository   -->
+  </parent>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-proxy</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
+  </dependencies>
+  <profiles>
+    <profile>
+      <id>local</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-web</artifactId>
+          <exclusions>
+            <exclusion>
+              <groupId>org.springframework.boot</groupId>
+              <artifactId>spring-boot-starter-tomcat</artifactId>
+            </exclusion>
+          </exclusions>
+        </dependency>
+        <dependency>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-jetty</artifactId>
+          <exclusions>
+            <exclusion>
+              <groupId>org.eclipse.jetty.websocket</groupId>
+              <artifactId>*</artifactId>
+            </exclusion>
+          </exclusions>
+        </dependency>
+        <dependency>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-test</artifactId>
+          <scope>test</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-lang3</artifactId>
+          <version>3.5</version>
+        </dependency>
+        <dependency>
+          <groupId>commons-net</groupId>
+          <artifactId>commons-net</artifactId>
+          <version>3.3</version>
+        </dependency>
+        <dependency>
+          <groupId>com.jcraft</groupId>
+          <artifactId>jsch</artifactId>
+          <version>0.1.54</version>
+        </dependency>
+        <dependency>
+          <groupId>com.google.code.gson</groupId>
+          <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>org.json</groupId>
+          <artifactId>json</artifactId>
+          <version>20160810</version>
+        </dependency>
+        <dependency>
+          <groupId>javax.servlet</groupId>
+          <artifactId>servlet-api</artifactId>
+          <version>2.5</version>
+          <scope>provided</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.onap.sdc.dcae.property</groupId>
+          <artifactId>DCAE-DT-PROPERTY</artifactId>
+          <version>${project.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>server</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-web</artifactId>
+          <exclusions>
+            <exclusion>
+              <groupId>org.springframework.boot</groupId>
+              <artifactId>spring-boot-starter-tomcat</artifactId>
+            </exclusion>
+          </exclusions>
+        </dependency>
+        <dependency>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-test</artifactId>
+          <scope>test</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-lang3</artifactId>
+          <version>3.5</version>
+        </dependency>
+        <dependency>
+          <groupId>commons-net</groupId>
+          <artifactId>commons-net</artifactId>
+          <version>3.3</version>
+        </dependency>
+        <dependency>
+          <groupId>com.jcraft</groupId>
+          <artifactId>jsch</artifactId>
+          <version>0.1.54</version>
+        </dependency>
+        <dependency>
+          <groupId>com.google.code.gson</groupId>
+          <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>org.json</groupId>
+          <artifactId>json</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>javax.servlet</groupId>
+          <artifactId>javax.servlet-api</artifactId>
+          <scope>provided</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.onap.sdc.dcae.property</groupId>
+          <artifactId>DCAE-DT-PROPERTY</artifactId>
+          <version>${project.version}</version>
+        </dependency>
+      </dependencies>
+    </profile>
+    
+    
+    <profile>
+        <id>docker</id>
+        <properties>
+            <!-- Docker tags -->
+            <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
+            <docker.tag>${project.version}-${maven.build.timestamp}</docker.tag>
+            <docker.latest.tag>${project.version}-latest</docker.latest.tag>
+            <docker.staging.tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</docker.staging.tag>
+        </properties>
+        <activation>
+            <activeByDefault>false</activeByDefault>
+        </activation>
+        <build>
+            <plugins>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>1.8</version>
+                    <executions>
+                        <execution>
+                            <id>parse-version</id>
+                            <goals>
+                                <goal>parse-version</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.0.2</version>
+                    <executions>
+                        <execution>
+                            <id>copy-dcae-fe-war</id>
+                            <phase>validate</phase>
+                            <goals>
+                                <goal>copy-resources</goal>
+                            </goals>
+                            <configuration>
+                                <outputDirectory>${project.basedir}/docker/target</outputDirectory>
+                                <resources>
+                                    <resource>
+                                        <directory>${project.basedir}/dcaedt_fe/target</directory>
+                                        <includes>
+                                            <include>dcae.war</include>
+                                        </includes>
+                                   </resource>
+                               </resources>
+                           </configuration>
+                       </execution>
+ <!--  Require to collect also war of Rule Engine   -->
+ <!--  T. B. D.                                     -->
+                   </executions>
+               </plugin>
+               <plugin>
+                   <groupId>io.fabric8</groupId>
+                   <artifactId>docker-maven-plugin</artifactId>
+                   <version>0.23.0</version>
+                   <configuration>
+                       <verbose>true</verbose>
+                       <apiVersion>1.23</apiVersion>
+                       <images>
+                           <!-- Build front image -->
+                           <image>
+                               <name>onap/dcae-fe</name>
+                               <alias>dcae-fe</alias>
+                               <build>
+                                   <cleanup>try</cleanup>
+                                   <dockerFileDir>${project.basedir}/docker</dockerFileDir>
+                                   <tags>
+                                       <tag>${docker.tag}</tag>
+                                       <tag>${docker.latest.tag}</tag>
+                                       <tag>${docker.staging.tag}</tag>
+                                    </tags>
+                               </build>
+                           </image>
+                       </images>
+                   </configuration>
+                   <executions>
+                       <execution>
+                           <id>clean-images</id>
+                           <phase>pre-clean</phase>
+                           <goals>
+                               <goal>remove</goal>
+                           </goals>
+                           <configuration>
+                               <removeAll>true</removeAll>
+                               <image>onap/dcae-fe</image>
+                           </configuration>
+                       </execution>
+                       <execution>
+                           <id>generate-images</id>
+                           <phase>package</phase>
+                           <goals>
+                                <goal>build</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <id>push-images</id>
+                            <phase>deploy</phase>
+                            <goals>
+                                <goal>push</goal>
+                            </goals>
+                            <configuration>
+                                <image>onap/dcae-fe</image>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </build>
+        <distributionManagement>
+            <site>
+                <id>nexus</id>
+                <url>dav:${nexus.url}${sitePath}</url>
+            </site>
+        </distributionManagement>
+    </profile>
+    
+    
+    
+    
+  </profiles>
+  <build>
+    <finalName>dcae_fe</finalName>
+    <!-- CLEAN -->
+    <plugins>
+      <plugin>
+        <artifactId>maven-clean-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>auto-clean</id>
+            <phase>initialize</phase>
+            <goals>
+              <goal>clean</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- install node+yarn and run yarn build -->
+      <plugin>
+        <groupId>com.github.eirslett</groupId>
+        <artifactId>frontend-maven-plugin</artifactId>
+        <version>1.6</version>
+        <configuration>
+          <workingDirectory>${project.basedir}/public</workingDirectory>
+          <installDirectory>target</installDirectory>
+          <nodeVersion>v8.7.0</nodeVersion>
+          <yarnVersion>v1.3.2</yarnVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>install node and yarn</id>
+            <goals>
+              <goal>install-node-and-yarn</goal>
+            </goals>
+            <phase>generate-resources</phase>
+          </execution>
+          <execution>
+            <id>yarn install</id>
+            <goals>
+              <goal>yarn</goal>
+            </goals>
+            <configuration>
+              <arguments>install</arguments>
+            </configuration>
+          </execution>
+          <execution>
+            <id>angular cli build</id>
+            <goals>
+              <goal>yarn</goal>
+            </goals>
+            <phase>generate-resources</phase>
+            <configuration>
+              <arguments>run build</arguments>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- COPT FROM DIST TO WEBAPPS -->
+      <plugin>
+        <artifactId>maven-resources-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copy-resources</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>copy-resources</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>src/main/webapp</outputDirectory>
+              <resources>
+                <resource>
+                  <directory>${project.basedir}/public/dist</directory>
+                  <filtering>false</filtering>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>3.0.0</version>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/public/.angular-cli.json b/public/.angular-cli.json
new file mode 100644
index 0000000..fa9ff9f
--- /dev/null
+++ b/public/.angular-cli.json
@@ -0,0 +1,68 @@
+{
+  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+  "project": {
+    "name": "dcae-fe"
+  },
+  "apps": [
+    {
+      "root": "src",
+      "outDir": "dist",
+      "assets": ["assets", "favicon.ico"],
+      "index": "index.html",
+      "main": "main.ts",
+      "polyfills": "polyfills.ts",
+      "test": "test.ts",
+      "tsconfig": "tsconfig.app.json",
+      "testTsconfig": "tsconfig.spec.json",
+      "prefix": "app",
+      "styles": [
+        "../node_modules/font-awesome/css/font-awesome.min.css",
+        "../node_modules/material-design-icons/iconfont/material-icons.css",
+        "../node_modules/primeng/resources/themes/omega/theme.css",
+        "../node_modules/primeng/resources/primeng.min.css",
+        "../node_modules/angular-tree-component/dist/angular-tree-component.css",
+        "../node_modules/pretty-checkbox/src/pretty-checkbox.scss",
+        "../node_modules/@ng-select/ng-select/themes/default.theme.css",
+        "../node_modules/ngx-toastr/toastr.css",
+        "styles.css"
+      ],
+      "scripts": [],
+      "environmentSource": "environments/environment.ts",
+      "environments": {
+        "dev": "environments/environment.ts",
+        "prod": "environments/environment.prod.ts"
+      }
+    }
+  ],
+  "e2e": {
+    "protractor": {
+      "config": "./protractor.conf.js"
+    }
+  },
+  "lint": [
+    {
+      "project": "src/tsconfig.app.json",
+      "exclude": "**/node_modules/**"
+    },
+    {
+      "project": "src/tsconfig.spec.json",
+      "exclude": "**/node_modules/**"
+    },
+    {
+      "project": "e2e/tsconfig.e2e.json",
+      "exclude": "**/node_modules/**"
+    }
+  ],
+  "test": {
+    "karma": {
+      "config": "./karma.conf.js"
+    }
+  },
+  "defaults": {
+    "styleExt": "scss",
+    "component": {},
+    "serve": {
+      "port": 4300
+    }
+  }
+}
diff --git a/public/.editorconfig b/public/.editorconfig
new file mode 100644
index 0000000..6e87a00
--- /dev/null
+++ b/public/.editorconfig
@@ -0,0 +1,13 @@
+# Editor configuration, see http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/public/.gitignore b/public/.gitignore
new file mode 100644
index 0000000..f9482fc
--- /dev/null
+++ b/public/.gitignore
@@ -0,0 +1,55 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+dist
+dist-server
+tmp
+out-tsc
+
+# dependencies
+node_modules
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+# misc
+.sass-cache
+connect.lock
+coverage
+libpeerconnection.log
+/publicnpm-debug.log
+/publictestem.log
+typings
+
+# e2e
+e2e/*.js
+e2e/*.map
+
+# System Files
+.DS_Store
+Thumbs.db
+
+#java
+.project
+.idea/
+/target/
+.settings*
+.classpath
+/*.war
+/src/main/webapp/*
+!/src/main/webapp/META-INF/*
+!/src/main/webapp/web.xml
+!/src/main/webapp/jetty-web.xml
diff --git a/public/.prettierrc b/public/.prettierrc
new file mode 100644
index 0000000..1d2a048
--- /dev/null
+++ b/public/.prettierrc
@@ -0,0 +1,8 @@
+{
+  "printWidth": 80,
+  "singleQuote": true,
+  "useTabs": false,
+  "tabWidth": 2,
+  "semi": true,
+  "bracketSpacing": true
+}
diff --git a/public/.storybook/addons.js b/public/.storybook/addons.js
new file mode 100644
index 0000000..820f9d6
--- /dev/null
+++ b/public/.storybook/addons.js
@@ -0,0 +1,3 @@
+import '@storybook/addon-actions/register';
+import '@storybook/addon-options/register';
+import '@storybook/addon-knobs/register';
diff --git a/public/.storybook/config.js b/public/.storybook/config.js
new file mode 100644
index 0000000..672bfeb
--- /dev/null
+++ b/public/.storybook/config.js
@@ -0,0 +1,12 @@
+import { configure, addDecorator } from '@storybook/angular';
+import { withKnobs } from '@storybook/addon-knobs/angular';
+
+addDecorator(withKnobs);
+
+const req = require.context('../src/stories', true, /.stories.ts$/);
+
+function loadStories() {
+  req.keys().forEach(filename => req(filename));
+}
+
+configure(loadStories, module);
diff --git a/public/.storybook/preview-head.html b/public/.storybook/preview-head.html
new file mode 100644
index 0000000..efe6c69
--- /dev/null
+++ b/public/.storybook/preview-head.html
@@ -0,0 +1,20 @@
+<style>
+  html,
+  body {
+    margin: 0;
+    height: 100%;
+  }
+
+  storybook-dynamic-app-root {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    height: 100%;
+    padding: 25px;
+  }
+
+  storybook-dynamic-app-root>ng-component {
+    margin: 0 auto;
+  }
+
+</style>
diff --git a/public/.storybook/tsconfig.json b/public/.storybook/tsconfig.json
new file mode 100644
index 0000000..b36918c
--- /dev/null
+++ b/public/.storybook/tsconfig.json
@@ -0,0 +1,10 @@
+{
+  "extends": "../tsconfig.json",
+  "compilerOptions": {
+    "noImplicitAny": false,
+    "types": ["node"]
+  },
+  "exclude": ["./node_modules/*", "../cypress/**/*.ts", "../src/**/*.spec.ts"],
+  "include": ["../src/stories/**/*.ts"]
+  // , "../node_modules/@storybook/**/*.ts"
+}
diff --git a/public/README.md b/public/README.md
new file mode 100644
index 0000000..84ccbdc
--- /dev/null
+++ b/public/README.md
@@ -0,0 +1,30 @@
+# DcaeFe
+
+Example of url:
+http://localhost:4300/home?userId=123&contextType=srv&vfcmtUuid=456&lifecycleState=checkout&isOwner=true
+
+This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.4.
+
+## Development server
+
+Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
+
+## Code scaffolding
+
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
+
+## Build
+
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
+
+## Running unit tests
+
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+
+## Running end-to-end tests
+
+Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
+
+## Further help
+
+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
diff --git a/public/cypress.json b/public/cypress.json
new file mode 100644
index 0000000..5a2036d
--- /dev/null
+++ b/public/cypress.json
@@ -0,0 +1,9 @@
+{
+  "chromeWebSecurity": false,
+  "requestTimeout": 60000,
+  "responseTimeout": 100000,
+  "baseUrl": "http://localhost:4300/#/",
+  "env": {
+    "backendUrl": "http://localhost:8446"
+  }
+}
diff --git a/public/cypress/fixtures/TranslateSimpleCopy.json b/public/cypress/fixtures/TranslateSimpleCopy.json
new file mode 100644
index 0000000..1099de7
--- /dev/null
+++ b/public/cypress/fixtures/TranslateSimpleCopy.json
@@ -0,0 +1,26 @@
+{
+  "processing": [
+    {
+      "phase": "snmp_map",
+      "processors": [
+        {
+          "array": "varbinds",
+          "datacolumn": "varbind_value",
+          "keycolumn": "varbind_oid",
+          "class": "SnmpConvertor"
+        },
+        { "phase": "sto2", "class": "RunPhase" }
+      ]
+    },
+    {
+      "phase": "sto2",
+      "processors": [
+        { "updates": { "event.commonEventHeader.domain": "a" }, "class": "Set" }
+      ]
+    },
+    {
+      "phase": "sto2",
+      "processors": [{ "phase": "map_publish", "class": "RunPhase" }]
+    }
+  ]
+}
diff --git a/public/cypress/fixtures/createMcRes.json b/public/cypress/fixtures/createMcRes.json
new file mode 100644
index 0000000..ada82bc
--- /dev/null
+++ b/public/cypress/fixtures/createMcRes.json
@@ -0,0 +1,972 @@
+{
+  "vfcmt":{
+    "uuid": "6d436c07-8006-4335-8c84-d65b4740f8d6"
+  },
+  "cdump": {
+    "cid": "47908e78-9893-4f18-b767-ea7131dd8de7",
+    "version": 0,
+    "nodes": [
+      {
+        "name": "map",
+        "description":
+          "/sdc/v1/catalog/resources/e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/artifacts/6134d7c8-f9af-4562-bf8d-e60039ec58bb",
+        "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b",
+        "nid": "n.1517823219961.0",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "Map_input" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "1.0.0" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value": {
+                "get_input": "mappingType"
+              }
+            },
+            "name": "Type1",
+            "description":
+              "CSV to VES mapping, from the file to generate multiple events or single event",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value": "multiple"
+            },
+            "name": "mappingType",
+            "description":
+              "CSV to VES mapping, from the file to generate multiple events or single event",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value":
+                "com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Map Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"snmp_map\",\"filter\":{\"class\":\"StartsWith\",\"string\":\"${notify OID}\",\"value\":\".1.3.6.1.4.1.26878.200.2\"},\"processors\":[{\"class\":\"SnmpConvertor\",\"array\":\"varbinds\",\"keycolumn\":\"varbind_oid\",\"datacolumn\":\"varbind_value\"},{\"class\":\"RunPhase\",\"phase\":\"vPCRF_MOGParsingPhase\"}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"processors\":[{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"toField\":\"eventGroup\",\"map\":{\"LinkDown\":\"LinkUp_Down\",\"LinkUp\":\"LinkUp_Down\",\"HIGH CPU USAGE Alert\":\"HighCpuUsageAlert-Clear\",\"HIGH CPU USAGE Clear\":\"HighCpuUsageAlert-Clear\",\"ProcessDown\":\"ProcessUp-Down\",\"ProcessUp\":\"ProcessUp-Down\",\"HighLoadAlert\":\"HighLoadAlert-Clear\",\"HighLoadClear\":\"HighLoadAlert-Clear\",\"DiskFullAlert\":\"DiskFullAlert-Clear\",\"DiskFullClear\":\"DiskFullAlert-Clear\",\"LowSwapAlert\":\"LowMemoryAlert-Clear\",\"LowSwapClear\":\"LowMemoryAlert-Clear\",\"LowMemoryAlert\":\"LowMemoryAlert-Clear\",\"LowMemoryClear\":\"LowMemoryAlert-Clear\",\"ApplicationStartError\":\"ApplicationStartError\",\"LicenseUsageThresholdExceeded \":\"LicenseUsageThresholdExceeded \",\"LicensedSessionCreation\":\"LicensedSessionCreation\",\"InvalidLicense\":\"InvalidLicense\",\"PoliciesNotConfigured\":\"PoliciesNotConfigured\",\"DiameterAllPeersDown\":\"DiameterAllPeersUp-Down\",\"DiameterAllPeersUp\":\"DiameterAllPeersUp-Down\",\"HA Failover\":\"HAFailover\",\"GR Failover\":\"GRFailover\",\"All DB Member of replica set Down\":\"AllDBMemberReplicaSetUp-Down\",\"All DB Member of replica set Up\":\"AllDBMemberReplicaSetUp-Down\",\"No Primary DB Member Found\":\"PrimaryDBMemberFound-NotFound\",\"Primary DB Member Found\":\"PrimaryDBMemberFound-NotFound\",\"Secondary DB Member Down\":\"SecondaryDBMemberUp-Down\",\"Secondary DB Member Up\":\"SecondaryDBMemberUp-Down\",\"Arbiter Down\":\"ArbiterUp-Down\",\"Arbiter Up\":\"ArbiterUp-Down\",\"DB resync is needed\":\"DBResyncNeeded-NotNeeded\",\"DB resync is not needed\":\"DBResyncNeeded-NotNeeded\",\"Config Server Down\":\"ConfigServerUp-Down\",\"Config Server Up\":\"ConfigServerUp-Down\",\"VM Down\":\"VMUp-Down\",\"VM Up\":\"VMUp-Down\",\"QNS Process Down\":\"QNSProcessUp-Down\",\"QNS Process Up\":\"QNSProcessUp-Down\",\"VirtualInterface Down\":\"VirtualInterfaceUp-Down\",\"VirtualInterface Up\":\"VirtualInterfaceUp-Down\",\"MemcachedConnectError\":\"MemcachedConnectError\",\"PolicyConfiguration\":\"PolicyConfiguration\",\"DiameterPeerDown\":\"DiameterPeerDown\",\"DeveloperMode\":\"DeveloperMode\",\"ZeroMQConnectionError\":\"ZeroMQConnectionError\",\"Admin User Logged In\":\"AdminUserLoggedIn\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.domain\":\"fault\",\"event.commonEventHeader.version\":3,\"event.faultFields.faultFieldsVersion\":2.0,\"event.faultFields.vfStatus\":\"Active\",\"event.commonEventHeader.priority\":\"Normal\",\"event.commonEventHeader.sequence\":0,\"event.faultFields.alarmCondition\":\"${_1_3_6_1_4_1_26878_100_1_1_9}\",\"event.faultFields.alarmAdditionalInformation[0].name\":\"EventGroup\",\"event.faultFields.alarmAdditionalInformation[0].value\":\"${eventGroup}\",\"event.faultFields.alarmAdditionalInformation[1].name\":\"OID1\",\"event.faultFields.alarmAdditionalInformation[1].value\":\"${varbinds[0].varbind_value}\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.startEpochMicrosec\":\"%{now.ms}\"}},{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_4\",\"default\":\"WARNING\",\"toField\":\"event.faultFields.eventSeverity\",\"map\":{\"0\":\"CRITICAL\",\"1\":\"CRITICAL\",\"2\":\"MAJOR\",\"3\":\"MAJOR\",\"4\":\"MINOR\",\"5\":\"WARNING\",\"6\":\"WARNING\",\"7\":\"WARNING\",\"8\":\"WARNING\",\"9\":\"NORMAL\"}},{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_3\",\"default\":\"\",\"toField\":\"event.faultFields.specificProblem\",\"map\":{\"0\":\"Hardware\",\"1\":\"Networking\",\"2\":\"Virtualization\",\"3\":\"Operating System\",\"4\":\"Application\",\"5\":\"Process\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.lastEpochMicrosec\":\"${event.commonEventHeader.startEpochMicrosec}\"}},{\"class\":\"ConvertFieldTypes\",\"updates\":{\"event.commonEventHeader.startEpochMicrosec\":\"long\",\"event.commonEventHeader.lastEpochMicrosec\":\"long\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiskFullAlert\",\"LowSwapAlert\",\"LowMemoryAlert\"]},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.faultFields.eventSeverity\":\"MAJOR\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"value\":\"mog\"},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"event.commonEventHeader.sourceName\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\"([^:]*):.*\"},{\"class\":\"Set\",\"updates\":{\"event.faultFields.eventSourceType\":\"vMOG\",\"event.commonEventHeader.functionalRole\":\"vMoG\",\"event.commonEventHeader.eventType\":\"vMoG_Alarms\",\"event.commonEventHeader.eventId\":\"${event.commonEventHeader.sourceName}_${eventGroup}\",\"event.commonEventHeader.eventName\":\"NA\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Not\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"value\":\"mog\"}},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.sourceName\":\"${agent address}\",\"event.faultFields.eventSourceType\":\"vPCRF\",\"event.commonEventHeader.functionalRole\":\"vPCRF\",\"event.commonEventHeader.eventType\":\"PCRF_Alarms\",\"event.commonEventHeader.eventId\":\"${agent address}_${eventGroup}\",\"event.commonEventHeader.reportingEntityName\":\"${event.commonEventHeader.sourceName}\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_7}\",\"value\":\"mogx\"},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.faultFields.alarmCondition\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"event.faultFields.specificProblem\":\"${_1_3_6_1_4_1_26878_100_1_1_9}\",\"event.commonEventHeader.reportingEntityName\":\"${event.commonEventHeader.sourceName}\"}},{\"class\":\"RunPhase\",\"phase\":\"vPCRF_MOGX_ParsingPhase\"},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.eventId\":\"${event.commonEventHeader.sourceName}_${eventGroup}_${eventKey}\"}}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"LinkDown\",\"LinkUp\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (.*)\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"ProcessDown\",\"ProcessUp\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*) process.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiskFullAlert\",\"DiskFullClear\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*):.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"QNS Process Down\",\"QNS Process Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*) server on .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiameterPeerDown\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (.*) [R/r]ealm.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiameterAllPeersDown\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*Realm: (.*):[^:]*peers.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"VirtualInterface Down\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*onnect (.*). Not reachable\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"VirtualInterface Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*: (.*) is up\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"GR Failover\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*: (Geo Failover done from .*) of .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"Arbiter Down\",\"Arbiter Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* Arbiter (.*) is .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"All DB Member of replica set Down\",\"All DB Member of replica set Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* All DB members of replica set (.*) are .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"No Primary DB Member Found\",\"Primary DB Member Found\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* Replica-set (.*)\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DB Member Down\",\"DB Member Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (DB.Member .*) of SET .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"Secondary DB Member Down\",\"Secondary DB Member Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*Secondary (DB.*) is.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DB Resync is needed\",\"DB Resync is not needed\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* member (.*:[0-9]+).*$\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"ZeroMQConnectionError\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* for (tcp.*)\"}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"processors\":[{\"class\":\"Clear\",\"fields\":[\"community len\",\"cambria.partition\",\"notify OID\",\"notify OID len\",\"epoch_serno\",\"protocol version\",\"agent name\",\"trap category\",\"community\",\"time received\",\"agent address\",\"varbinds\"]},{\"class\":\"ClearNoneStandardFields\",\"reservedFields\":[\"event\",\"parserType\"]},{\"class\":\"LogEvent\",\"title\":\"UCSNMPEvent-vPCRF_MOG_Parser_Output\",\"logName\":\"com.att.gfp.dcae.eventProcessor.output\",\"logLevel\":\"DEBUG\"},{\"class\":\"LogText\",\"logLevel\":\"INFO\",\"logText\":\"Finished_vPCRF_MOGParsingPhase Mapping Phase\"},{\"class\":\"RunPhase\",\"phase\":\"map_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "mapMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "snmp_map" },
+            "name": "phases.snmp_map.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*snmp.*" },
+            "name": "phases.snmp_map.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "syslog_map" },
+            "name": "phases.syslog_map.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*syslog.*" },
+            "name": "phases.syslog_map.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"map_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-MAP-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "[{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"MOD\",\"INT\":\"INT\",\"HSEV\":\"header-SEV \",\"SEVDES\":\"Syslog-Severity\"},\"filter\":{\"${Priority}\":\"$Priority\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"0\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"1\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"0\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"2\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"0\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"3\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"0\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"4\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"5\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"6\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"7\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"1\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"8\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"1\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"9\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"1\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"10\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"1\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"11\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"1\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"12\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"13\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"14\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"15\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"2\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"16\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"2\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"17\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"2\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"18\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"2\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"19\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"2\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"20\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"21\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"22\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"23\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"3\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"24\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"3\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"25\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"3\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"26\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"3\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"27\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"3\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"28\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"29\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"30\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"31\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"4\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"32\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"4\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"33\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"4\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"34\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"4\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"35\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"4\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"36\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"37\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"38\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"39\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"5\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"40\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"5\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"41\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"5\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"42\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"5\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"43\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"5\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"44\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"45\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"46\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"47\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"6\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"48\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"6\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"49\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"6\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"50\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"6\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"51\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"6\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"52\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"53\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"54\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"55\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"7\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"56\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"7\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"57\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"7\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"58\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"7\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"59\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"7\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"60\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"61\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"62\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"63\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"8\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"64\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"8\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"65\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"8\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"66\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"8\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"67\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"8\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"68\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"69\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"70\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"71\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"9\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"72\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"9\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"73\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"9\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"74\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"9\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"75\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"9\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"76\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"77\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"78\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"79\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"10\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"80\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"10\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"81\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"10\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"82\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"10\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"83\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"10\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"84\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"85\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"86\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"87\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"11\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"88\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"11\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"89\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"11\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"90\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"11\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"91\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"11\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"92\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"93\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"94\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"95\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"12\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"96\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"12\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"97\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"12\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"98\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"12\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"99\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"12\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"100\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"101\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"102\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"103\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"13\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"104\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"13\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"105\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"13\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"106\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"13\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"107\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"13\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"108\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"109\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"110\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"111\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"14\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"112\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"14\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"113\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"14\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"114\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"14\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"115\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"14\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"116\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"117\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"118\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"119\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"15\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"120\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"15\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"121\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"15\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"122\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"15\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"123\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"15\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"124\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"125\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"126\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"127\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"16\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"128\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"16\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"129\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"16\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"130\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"16\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"131\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"16\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"132\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"133\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"134\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"135\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"17\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"136\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"17\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"137\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"17\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"138\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"17\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"139\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"17\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"140\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"141\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"142\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"143\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"18\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"144\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"18\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"145\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"18\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"146\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"18\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"147\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"18\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"148\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"149\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"150\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"151\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"19\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"152\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"19\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"153\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"19\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"154\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"19\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"155\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"19\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"156\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"157\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"158\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"159\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"20\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"160\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"20\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"161\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"20\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"162\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"20\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"163\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"20\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"164\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"165\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"166\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"167\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"21\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"168\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"21\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"169\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"21\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"170\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"21\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"171\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"21\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"172\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"173\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"174\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"175\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"22\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"176\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"22\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"177\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"22\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"178\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"22\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"179\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"22\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"180\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"181\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"182\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"183\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"23\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"184\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"23\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"185\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"23\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"186\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"23\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"187\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"23\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"188\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"189\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"190\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"191\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"24\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"192\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"24\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"193\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"24\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"194\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"24\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"195\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"24\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"196\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"24\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"197\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"24\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"198\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"199\"}}]"
+            },
+            "name": "settings",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.cdapApp.Map",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Map",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Map" }
+      },
+      {
+        "name": "supplement",
+        "description":
+          "/sdc/v1/catalog/resources/30d0b4f4-efc5-424a-9d26-6d7843a0971d/artifacts/2d68c4e3-a4ab-46b3-ae3b-2a593fa97ded",
+        "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d",
+        "nid": "n.1517823224030.1",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Supplement Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vPCRF_Alarms\",\"vMoG_Alarms\",\"applicationVnf\",\"GuestOS_Alarms\",\"Control\"]},\"processors\":[{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.startEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.firstDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.lastEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.lastDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"%{now.ms}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.collectorTimeStamp\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.internalHeaderFields.internalHeaderFieldsVersion\":\"9.9\",\"event.commonEventHeader.internalHeaderFields.eventTag\":\"${hp.tag}\"}}]},{\"phase\":\"supplement\",\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]},{\"phase\":\"ves_supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vIRC_Alarms\"]},\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplementMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplement" },
+            "name": "phases.supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*supplement-in.*" },
+            "name": "phases.supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "ves_supplement" },
+            "name": "phases.ves_supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*sec-fault.*" },
+            "name": "phases.ves_supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"supplement_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-SUPPLEMENT-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp.Supplement",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Supplement",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Supplement" }
+      },
+      {
+        "name": "enrich",
+        "description":
+          "/sdc/v1/catalog/resources/8743b27b-f01e-4b17-a306-37efd42983d0/artifacts/c96f3ffd-516c-470b-ab7c-ced64fb244f0",
+        "id": "8743b27b-f01e-4b17-a306-37efd42983d0",
+        "nid": "n.1517823228454.2",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog,com.att.sa.highlandPark.topoTools.HpTopoDbObjectCatalog,com.att.sa.highlandPark.topoTools.HpTopoDbProcessors,com.att.gfp.dcae.eventProcessor.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Enrich Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"enrich\",\"filter\":{\"class\":\"Assigned\",\"field\":\"event.commonEventHeader.sourceName\",\"emtpyIsAssigned\":false},\"processors\":[{\"class\":\"StringTransform\",\"value\":\"${event.commonEventHeader.sourceName}\",\"toField\":\"searchString\",\"targetCase\":\"lower\"},{\"class\":\"EventProcessorMetric\",\"metric\":\"in.events\"},{\"class\":\"LogText\",\"logLevel\":\"WARN\",\"logText\":\"Alarm_EnrichmentStartingfor${hp.tag}\"},{\"class\":\"TopoSearch\",\"searchField\":\"oid\",\"searchValue\":\"${searchString}\",\"updates\":{\"event.commonEventHeader.sourceName\":\"${ptnii_name}\",\"event.commonEventHeader.sourceId\":\"${vserver_id}\",\"event.commonEventHeader.reportingEntityName\":\"${vnf_name}\",\"event.commonEventHeader.reportingEntityId\":\"${vnf_id}\",\"event.commonEventHeader.internalHeaderFields.equipmentType\":\"${equip_type}\",\"event.commonEventHeader.internalHeaderFields.provStatus\":\"${prov_status}\",\"event.commonEventHeader.internalHeaderFields.inMaint\":\"${in_maint}\",\"event.commonEventHeader.internalHeaderFields.tenantName\":\"${tenant_name}\",\"event.commonEventHeader.internalHeaderFields.eventSourceHostname\":\"${hostname}\",\"isEnriched\":true}},{\"class\":\"Set\",\"updates\":{\"event.preCorrelationAging\":\"${preCorrelationAging}\",\"event.prepublishAging\":\"${prepublishAging}\"}},{\"class\":\"Clear\",\"fields\":[\"searchString\"]},{\"class\":\"RunPhase\",\"phase\":\"enrich_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrichMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrich" },
+            "name": "phases.enrich.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*" },
+            "name": "phases.enrich.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"enrich_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-ENRICH-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp.Enrich",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Enrich",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Enrich" }
+      }
+    ],
+    "relations": [],
+    "inputs": [],
+    "outputs": []
+  }
+}
diff --git a/public/cypress/fixtures/doneSaveSimpleCopy.json b/public/cypress/fixtures/doneSaveSimpleCopy.json
new file mode 100644
index 0000000..e377e8c
--- /dev/null
+++ b/public/cypress/fixtures/doneSaveSimpleCopy.json
@@ -0,0 +1,21 @@
+{
+  "version": "4.1",
+  "eventType": "syslogFields",
+  "description": "newRule",
+  "uid": "f620724b-7170-43e1-8a8b-55e98cabe658",
+  "phase": "sto2",
+  "condition": null,
+  "actions": [
+    {
+      "actionType": "copy",
+      "from": {
+        "regex": "",
+        "state": "closed",
+        "values": [{ "value": "" }, { "value": "" }],
+        "value": "a"
+      },
+      "target": "event.commonEventHeader.domain",
+      "id": "296bcdd0-1d20-11e8-a96d-298fbe0cb0fd"
+    }
+  ]
+}
diff --git a/public/cypress/fixtures/example.json b/public/cypress/fixtures/example.json
new file mode 100644
index 0000000..da18d93
--- /dev/null
+++ b/public/cypress/fixtures/example.json
@@ -0,0 +1,5 @@
+{
+  "name": "Using fixtures to represent data",
+  "email": "hello@cypress.io",
+  "body": "Fixtures are a great way to mock data for responses to routes"
+}
\ No newline at end of file
diff --git a/public/cypress/fixtures/getMCMock.json b/public/cypress/fixtures/getMCMock.json
new file mode 100644
index 0000000..602d2e0
--- /dev/null
+++ b/public/cypress/fixtures/getMCMock.json
@@ -0,0 +1,628 @@
+{
+  "vfcmt": {
+    "uuid": "06c7d927-4e2f-47e1-a29d-b6ed229ebc0a",
+    "name": "vosk007",
+    "description": "the name is vosk, eran vosk",
+    "vfiName": "LiavSrv",
+    "flowType": "SNMP"
+  },
+  "cdump": {
+    "cid": "47908e78-9893-4f18-b767-ea7131dd8de7",
+    "version": 0,
+    "nodes": [
+      {
+        "name": "supplement",
+        "description":
+          "/sdc/v1/catalog/resources/30d0b4f4-efc5-424a-9d26-6d7843a0971d/artifacts/2d68c4e3-a4ab-46b3-ae3b-2a593fa97ded",
+        "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d",
+        "nid": "n.1517823224030.1",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Supplement Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vPCRF_Alarms\",\"vMoG_Alarms\",\"applicationVnf\",\"GuestOS_Alarms\",\"Control\"]},\"processors\":[{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.startEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.firstDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.lastEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.lastDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"%{now.ms}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.collectorTimeStamp\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.internalHeaderFields.internalHeaderFieldsVersion\":\"9.9\",\"event.commonEventHeader.internalHeaderFields.eventTag\":\"${hp.tag}\"}}]},{\"phase\":\"supplement\",\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]},{\"phase\":\"ves_supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vIRC_Alarms\"]},\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplementMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplement" },
+            "name": "phases.supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*supplement-in.*" },
+            "name": "phases.supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "ves_supplement" },
+            "name": "phases.ves_supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*sec-fault.*" },
+            "name": "phases.ves_supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"supplement_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-SUPPLEMENT-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp.Supplement",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Supplement",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Supplement" }
+      },
+      {
+        "name": "enrich",
+        "description":
+          "/sdc/v1/catalog/resources/8743b27b-f01e-4b17-a306-37efd42983d0/artifacts/c96f3ffd-516c-470b-ab7c-ced64fb244f0",
+        "id": "8743b27b-f01e-4b17-a306-37efd42983d0",
+        "nid": "n.1517823228454.2",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog,com.att.sa.highlandPark.topoTools.HpTopoDbObjectCatalog,com.att.sa.highlandPark.topoTools.HpTopoDbProcessors,com.att.gfp.dcae.eventProcessor.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Enrich Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"enrich\",\"filter\":{\"class\":\"Assigned\",\"field\":\"event.commonEventHeader.sourceName\",\"emtpyIsAssigned\":false},\"processors\":[{\"class\":\"StringTransform\",\"value\":\"${event.commonEventHeader.sourceName}\",\"toField\":\"searchString\",\"targetCase\":\"lower\"},{\"class\":\"EventProcessorMetric\",\"metric\":\"in.events\"},{\"class\":\"LogText\",\"logLevel\":\"WARN\",\"logText\":\"Alarm_EnrichmentStartingfor${hp.tag}\"},{\"class\":\"TopoSearch\",\"searchField\":\"oid\",\"searchValue\":\"${searchString}\",\"updates\":{\"event.commonEventHeader.sourceName\":\"${ptnii_name}\",\"event.commonEventHeader.sourceId\":\"${vserver_id}\",\"event.commonEventHeader.reportingEntityName\":\"${vnf_name}\",\"event.commonEventHeader.reportingEntityId\":\"${vnf_id}\",\"event.commonEventHeader.internalHeaderFields.equipmentType\":\"${equip_type}\",\"event.commonEventHeader.internalHeaderFields.provStatus\":\"${prov_status}\",\"event.commonEventHeader.internalHeaderFields.inMaint\":\"${in_maint}\",\"event.commonEventHeader.internalHeaderFields.tenantName\":\"${tenant_name}\",\"event.commonEventHeader.internalHeaderFields.eventSourceHostname\":\"${hostname}\",\"isEnriched\":true}},{\"class\":\"Set\",\"updates\":{\"event.preCorrelationAging\":\"${preCorrelationAging}\",\"event.prepublishAging\":\"${prepublishAging}\"}},{\"class\":\"Clear\",\"fields\":[\"searchString\"]},{\"class\":\"RunPhase\",\"phase\":\"enrich_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrichMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrich" },
+            "name": "phases.enrich.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*" },
+            "name": "phases.enrich.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"enrich_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-ENRICH-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp.Enrich",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Enrich",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Enrich" }
+      }
+    ],
+    "relations": [],
+    "inputs": [],
+    "outputs": []
+  }
+}
diff --git a/public/cypress/fixtures/igorCreateMcRes.json b/public/cypress/fixtures/igorCreateMcRes.json
new file mode 100644
index 0000000..4bca081
--- /dev/null
+++ b/public/cypress/fixtures/igorCreateMcRes.json
@@ -0,0 +1,1960 @@
+{
+  "uuid": "6d436c07-8006-4335-8c84-d65b4740f8d6",
+  "cdump": {
+    "cid": "95222b23-df17-454d-84b0-d4667357b380",
+    "flowType": "SNMP",
+    "version": 0,
+    "nodes": [
+      {
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.dockerHost",
+              "id": "template.yaml/dcae.capabilities.dockerHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "fm_poller",
+        "description":
+          "/sdc/v1/catalog/resources/c8db6f9b-6173-4d7d-bd25-c20bfc154daa/artifacts/66b05681-a407-4e46-9239-86f245c68b81",
+        "type": {
+          "name": "tosca.dcae.nodes.dockerApp.fm_poller"
+        },
+        "properties": [
+          {
+            "assignment": {
+              "value": "ciscoRouter"
+            },
+            "name": "DeviceCategory",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": [
+                  "ciscoSwitch",
+                  "ciscoRouter",
+                  "juniperSwitch",
+                  "juniperRouter"
+                ]
+              }
+            ],
+            "value": "ciscoRouter"
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/seed"
+            },
+            "name": "DeviceToWalkJson",
+            "type": "string",
+            "value": "/opt/app/discovery/seed"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "DisoveryInterval"
+              }
+            },
+            "name": "DisoveryInterval",
+            "type": "string",
+            "value": {
+              "get_input": "DisoveryInterval"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "FlatironHost"
+              }
+            },
+            "name": "FlatironHost",
+            "type": "string",
+            "value": {
+              "get_input": "FlatironHost"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "FlatironScope"
+              }
+            },
+            "name": "FlatironScope",
+            "type": "string",
+            "value": {
+              "get_input": "FlatironScope"
+            }
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/curloutput"
+            },
+            "name": "SeedFilePath",
+            "type": "string",
+            "value": "/opt/app/discovery/curloutput"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/app_config.json"
+            },
+            "name": "app_config_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/app_config.json"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscorouteroids"
+            },
+            "name": "ciscorouter",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscorouteroids"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscoswitchoids"
+            },
+            "name": "ciscoswitch",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscoswitchoids"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "clientUri"
+              }
+            },
+            "name": "clientUri",
+            "type": "string",
+            "value": {
+              "get_input": "clientUri"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "dcae_service_location"
+              }
+            },
+            "name": "dcae_service_location",
+            "type": "string",
+            "value": {
+              "get_input": "dcae_service_location"
+            }
+          },
+          {
+            "assignment": {
+              "value": "rv1-dis / rv1-mib"
+            },
+            "name": "dcae_target_type",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": [
+                  "rv1-dis / rv1-mib",
+                  "rv2- dis / rv2-mib",
+                  "rv3- dis / rv3-mib",
+                  "rv4- dis / rv4-mib",
+                  "rv5- dis / rv5-mib",
+                  "rv6- dis / rv6-mib",
+                  "rv7- dis / rv7-mib",
+                  "me6- dis / me6- mib"
+                ]
+              }
+            ],
+            "value": "rv1-dis / rv1-mib"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/defaultoids"
+            },
+            "name": "default",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/defaultoids"
+          },
+          {
+            "assignment": {
+              "value": ""
+            },
+            "name": "dmaapSeedFilePath",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dmaap_config.json"
+            },
+            "name": "dmaap_conf_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dmaap_config.json"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dti_config.json"
+            },
+            "name": "dti_config_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dti_config.json"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "environment"
+              }
+            },
+            "name": "environment",
+            "type": "string",
+            "value": {
+              "get_input": "environment"
+            }
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperrouteroids"
+            },
+            "name": "juniperrouter",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperrouteroids"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperswitchoids"
+            },
+            "name": "juniperswitch",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperswitchoids"
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/outdata"
+            },
+            "name": "outdata",
+            "type": "string",
+            "value": "/opt/app/discovery/outdata"
+          },
+          {
+            "name": "image",
+            "type": "string",
+            "required": true
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true,
+            "value": {
+              "get_property": ["SELF", "composition", "location_id"]
+            }
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.dockerApp.fm_poller",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.dockerHost",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.dockerHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.dockerHost",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.dockerHost"
+              },
+              "name": "host",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.dockerApp",
+              "id":
+                "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.dockerApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.dockerApp.fm_poller",
+          "id": 0
+        },
+        "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa",
+        "nid": "n.1519543437108.0",
+        "ndata": {
+          "name": "n.1519543437108.0",
+          "label": "fm_poller",
+          "x": 1642,
+          "y": 417,
+          "px": 1641,
+          "py": 416,
+          "ports": [],
+          "radius": 30
+        }
+      },
+      {
+        "requirements": [
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "policy",
+            "type": {
+              "name": "dcae.capabilities.policy",
+              "id": "template.yaml/dcae.capabilities.policy"
+            }
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "policy_0",
+        "description":
+          "/sdc/v1/catalog/resources/3c473efc-57fc-4a47-b3fc-190bd3b02bd2/artifacts/a04ce19c-6d71-44b7-9483-baa74d050fdb",
+        "type": {
+          "name": "tosca.dcae.nodes.policy"
+        },
+        "properties": [
+          {
+            "name": "policy_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "assignment": {
+              "value": "policy.nodes.cdap.tca.hi.lo.app"
+            },
+            "name": "policy_name",
+            "type": "string",
+            "value": "policy.nodes.cdap.tca.hi.lo.app"
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.policy",
+          "requirements": [
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "policy",
+              "type": {
+                "name": "dcae.capabilities.policy",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.policy"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.policy",
+          "id": 0
+        },
+        "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2",
+        "nid": "n.1519546229982.0",
+        "ndata": {
+          "name": "n.1519546229982.0",
+          "label": "policy_0",
+          "x": 1432,
+          "y": 324,
+          "px": 1431,
+          "py": 323,
+          "ports": [],
+          "radius": 30
+        }
+      },
+      {
+        "requirements": [
+          {
+            "node": "topic0",
+            "capability": {
+              "name": "dcae.capabilities.dmmap.topic",
+              "id": "template.yaml/dcae.capabilities.dmmap.topic"
+            },
+            "name": "stream_subscribe_0",
+            "relationship": {
+              "type": "dcae.relationships.subscribe_to_events"
+            }
+          },
+          {
+            "node": "topic1",
+            "capability": {
+              "name": "dcae.capabilities.dmmap.topic",
+              "id": "template.yaml/dcae.capabilities.dmmap.topic"
+            },
+            "name": "stream_publish_0",
+            "relationship": {
+              "type": "dcae.relationships.publish_events"
+            }
+          },
+          {
+            "node": "policy_0",
+            "capability": {
+              "name": "dcae.capabilities.policy",
+              "id": "template.yaml/dcae.capabilities.policy"
+            },
+            "name": "policy",
+            "relationship": {
+              "type": "cloudify.relationships.depends_on"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "tcaSpec",
+        "description":
+          "/sdc/v1/catalog/resources/3c473efc-57fc-4a47-b3fc-190bd3b02bd2/artifacts/a04ce19c-6d71-44b7-9483-baa74d050fdb",
+        "type": {
+          "name": "tosca.dcae.nodes.cdapApp.tcaSpec"
+        },
+        "properties": [
+          {
+            "assignment": {
+              "value": "123.123.123.123"
+            },
+            "name": "aaiEnrichmentHost",
+            "type": "string",
+            "value": "123.123.123.123"
+          },
+          {
+            "assignment": {
+              "value": "true"
+            },
+            "name": "aaiEnrichmentIgnoreSSLCertificateErrors",
+            "type": "string",
+            "value": "true"
+          },
+          {
+            "assignment": {
+              "value": "8443"
+            },
+            "name": "aaiEnrichmentPortNumber",
+            "type": "string",
+            "value": "8443"
+          },
+          {
+            "assignment": {
+              "value": "https"
+            },
+            "name": "aaiEnrichmentProtocol",
+            "type": "string",
+            "value": "https"
+          },
+          {
+            "assignment": {
+              "value": "http://username:password@proxyhost.com:8080"
+            },
+            "name": "aaiEnrichmentProxyURL",
+            "type": "string",
+            "value": "http://username:password@proxyhost.com:8080"
+          },
+          {
+            "assignment": {
+              "value": "DCAE"
+            },
+            "name": "aaiEnrichmentUserName",
+            "type": "string",
+            "value": "DCAE"
+          },
+          {
+            "assignment": {
+              "value": "DCAE"
+            },
+            "name": "aaiEnrichmentUserPassword",
+            "type": "string",
+            "value": "DCAE"
+          },
+          {
+            "assignment": {
+              "value": "/aai/v11/search/nodes-query"
+            },
+            "name": "aaiVMEnrichmentAPIPath",
+            "type": "string",
+            "value": "/aai/v11/search/nodes-query"
+          },
+          {
+            "assignment": {
+              "value": "/aai/v11/network/generic-vnfs/generic-vnf"
+            },
+            "name": "aaiVNFEnrichmentAPIPath",
+            "type": "string",
+            "value": "/aai/v11/network/generic-vnfs/generic-vnf"
+          },
+          {
+            "assignment": {
+              "value": "DCAE Analytics Threshold Crossing Alert Application"
+            },
+            "name": "appDescription",
+            "type": "string",
+            "value": "DCAE Analytics Threshold Crossing Alert Application"
+          },
+          {
+            "assignment": {
+              "value": "dcae-tca"
+            },
+            "name": "appName",
+            "type": "string",
+            "value": "dcae-tca"
+          },
+          {
+            "assignment": {
+              "value": "true"
+            },
+            "name": "enableAAIEnrichment",
+            "type": "string",
+            "value": "true"
+          },
+          {
+            "assignment": {
+              "value": "false"
+            },
+            "name": "enableAlertCEFFormat",
+            "type": "string",
+            "value": "false"
+          },
+          {
+            "assignment": {
+              "value": "application/json"
+            },
+            "name": "publisherContentType",
+            "type": "string",
+            "value": "application/json"
+          },
+          {
+            "assignment": {
+              "value": "1"
+            },
+            "name": "publisherMaxBatchSize",
+            "type": "string",
+            "value": "1"
+          },
+          {
+            "assignment": {
+              "value": "100000"
+            },
+            "name": "publisherMaxRecoveryQueueSize",
+            "type": "string",
+            "value": "100000"
+          },
+          {
+            "assignment": {
+              "value": "20000"
+            },
+            "name": "publisherPollingInterval",
+            "type": "string",
+            "value": "20000"
+          },
+          {
+            "assignment": {
+              "value": "OpenDCAE-c12"
+            },
+            "name": "subscriberConsumerGroup",
+            "type": "string",
+            "value": "OpenDCAE-c12"
+          },
+          {
+            "assignment": {
+              "value": "c12"
+            },
+            "name": "subscriberConsumerId",
+            "type": "string",
+            "value": "c12"
+          },
+          {
+            "assignment": {
+              "value": "application/json"
+            },
+            "name": "subscriberContentType",
+            "type": "string",
+            "value": "application/json"
+          },
+          {
+            "assignment": {
+              "value": "-1"
+            },
+            "name": "subscriberMessageLimit",
+            "type": "string",
+            "value": "-1"
+          },
+          {
+            "assignment": {
+              "value": "30000"
+            },
+            "name": "subscriberPollingInterval",
+            "type": "string",
+            "value": "30000"
+          },
+          {
+            "assignment": {
+              "value": "-1"
+            },
+            "name": "subscriberTimeoutMS",
+            "type": "string",
+            "value": "-1"
+          },
+          {
+            "assignment": {
+              "value": "TCAAlertsAbatementTable"
+            },
+            "name": "tcaAlertsAbatementTableName",
+            "type": "string",
+            "value": "TCAAlertsAbatementTable"
+          },
+          {
+            "assignment": {
+              "value": "1728000"
+            },
+            "name": "tcaAlertsAbatementTableTTLSeconds",
+            "type": "string",
+            "value": "1728000"
+          },
+          {
+            "assignment": {
+              "value": "TCASubscriberOutputStream"
+            },
+            "name": "tcaSubscriberOutputStreamName",
+            "type": "string",
+            "value": "TCASubscriberOutputStream"
+          },
+          {
+            "assignment": {
+              "value": "TCAVESAlertsTable"
+            },
+            "name": "tcaVESAlertsTableName",
+            "type": "string",
+            "value": "TCAVESAlertsTable"
+          },
+          {
+            "assignment": {
+              "value": "1728000"
+            },
+            "name": "tcaVESAlertsTableTTLSeconds",
+            "type": "string",
+            "value": "1728000"
+          },
+          {
+            "assignment": {
+              "value": "TCAVESMessageStatusTable"
+            },
+            "name": "tcaVESMessageStatusTableName",
+            "type": "string",
+            "value": "TCAVESMessageStatusTable"
+          },
+          {
+            "assignment": {
+              "value": "86400"
+            },
+            "name": "tcaVESMessageStatusTableTTLSeconds",
+            "type": "string",
+            "value": "86400"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"Mfvs_eNodeB_RANKPI\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vFirewall;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":4000,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":20000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ABATED\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vLoadBalancer;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":5000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"}]}]}"
+            },
+            "name": "tca_policy",
+            "type": "string",
+            "value":
+              "{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"Mfvs_eNodeB_RANKPI\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vFirewall;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":4000,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":20000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ABATED\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vLoadBalancer;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":5000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"}]}]}"
+          },
+          {
+            "assignment": {
+              "value": "2"
+            },
+            "name": "thresholdCalculatorFlowletInstances",
+            "type": "string",
+            "value": "2"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": {
+                "get_input": "connected_broker_dns_name"
+              }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true,
+            "value": {
+              "get_input": "connected_broker_dns_name"
+            }
+          },
+          {
+            "name": "jar_url",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.cdapApp.tcaSpec",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              },
+              "capability": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              },
+              "name": "stream_subscribe_0",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/stream_subscribe_0",
+              "relationship": {
+                "type": "dcae.relationships.subscribe_to_events"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              },
+              "capability": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              },
+              "name": "stream_publish_0",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.publish_events"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.policy",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.policy"
+              },
+              "capability": {
+                "name": "dcae.capabilities.policy",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.policy"
+              },
+              "name": "policy",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/policy",
+              "relationship": {
+                "type": "cloudify.relationships.depends_on"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.tcaSpec",
+          "id": 0
+        },
+        "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2",
+        "nid": "n.1519546229993.1",
+        "ndata": {
+          "name": "n.1519546229993.1",
+          "label": "tcaSpec",
+          "x": 1482,
+          "y": 340.0928478067284,
+          "px": 1481,
+          "py": 339.0928478067284,
+          "ports": [],
+          "radius": 30
+        }
+      },
+      {
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "topic",
+            "type": {
+              "name": "dcae.capabilities.dmmap.topic",
+              "id": "template.yaml/dcae.capabilities.dmmap.topic"
+            },
+            "properties": [
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "aaf_password"]
+                  }
+                },
+                "name": "aaf_password",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "aaf_username"]
+                  }
+                },
+                "name": "aaf_username",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "client_role"]
+                  }
+                },
+                "name": "client_role",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "location"]
+                  }
+                },
+                "name": "location",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "node_name"]
+                  }
+                },
+                "name": "node_name",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "topic_name"]
+                  }
+                },
+                "name": "topic_name",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "topic0",
+        "description":
+          "/sdc/v1/catalog/resources/3c473efc-57fc-4a47-b3fc-190bd3b02bd2/artifacts/a04ce19c-6d71-44b7-9483-baa74d050fdb",
+        "type": {
+          "name": "tosca.dcae.nodes.dmaap.topic"
+        },
+        "properties": [
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic0_aaf_password"
+              }
+            },
+            "name": "aaf_password",
+            "type": "string",
+            "value": {
+              "get_input": "topic0_aaf_password"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic0_aaf_username"
+              }
+            },
+            "name": "aaf_username",
+            "type": "string",
+            "value": {
+              "get_input": "topic0_aaf_username"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic0_client_role"
+              }
+            },
+            "name": "client_role",
+            "type": "string",
+            "value": {
+              "get_input": "topic0_client_role"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location",
+            "type": "string",
+            "value": {
+              "get_property": ["SELF", "composition", "location_id"]
+            }
+          },
+          {
+            "assignment": {
+              "value": "__GET_NODE_NAME__"
+            },
+            "name": "node_name",
+            "type": "string",
+            "value": "__GET_NODE_NAME__"
+          },
+          {
+            "assignment": {
+              "value": ""
+            },
+            "name": "topic_name",
+            "type": "string"
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.dmaap.topic",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "topic",
+              "type": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.dmaap.topic",
+          "id": 0
+        },
+        "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2",
+        "nid": "n.1519546230003.2",
+        "ndata": {
+          "name": "n.1519546230003.2",
+          "label": "topic0",
+          "x": 1532,
+          "y": 359.82099057536396,
+          "px": 1531,
+          "py": 358.82099057536396,
+          "ports": [],
+          "radius": 30
+        }
+      },
+      {
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "topic",
+            "type": {
+              "name": "dcae.capabilities.dmmap.topic",
+              "id": "template.yaml/dcae.capabilities.dmmap.topic"
+            },
+            "properties": [
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "aaf_password"]
+                  }
+                },
+                "name": "aaf_password",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "aaf_username"]
+                  }
+                },
+                "name": "aaf_username",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "client_role"]
+                  }
+                },
+                "name": "client_role",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "location"]
+                  }
+                },
+                "name": "location",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "node_name"]
+                  }
+                },
+                "name": "node_name",
+                "type": "string"
+              },
+              {
+                "assignment": {
+                  "value": {
+                    "get_property": ["SELF", "topic_name"]
+                  }
+                },
+                "name": "topic_name",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "topic1",
+        "description":
+          "/sdc/v1/catalog/resources/3c473efc-57fc-4a47-b3fc-190bd3b02bd2/artifacts/a04ce19c-6d71-44b7-9483-baa74d050fdb",
+        "type": {
+          "name": "tosca.dcae.nodes.dmaap.topic"
+        },
+        "properties": [
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic1_aaf_password"
+              }
+            },
+            "name": "aaf_password",
+            "type": "string",
+            "value": {
+              "get_input": "topic1_aaf_password"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic1_aaf_username"
+              }
+            },
+            "name": "aaf_username",
+            "type": "string",
+            "value": {
+              "get_input": "topic1_aaf_username"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "topic1_client_role"
+              }
+            },
+            "name": "client_role",
+            "type": "string",
+            "value": {
+              "get_input": "topic1_client_role"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location",
+            "type": "string",
+            "value": {
+              "get_property": ["SELF", "composition", "location_id"]
+            }
+          },
+          {
+            "assignment": {
+              "value": "__GET_NODE_NAME__"
+            },
+            "name": "node_name",
+            "type": "string",
+            "value": "__GET_NODE_NAME__"
+          },
+          {
+            "assignment": {
+              "value": ""
+            },
+            "name": "topic_name",
+            "type": "string"
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.dmaap.topic",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "topic",
+              "type": {
+                "name": "dcae.capabilities.dmmap.topic",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/dcae.capabilities.dmmap.topic"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.dmaap.topic",
+          "id": 0
+        },
+        "id": "3c473efc-57fc-4a47-b3fc-190bd3b02bd2",
+        "nid": "n.1519546230015.3",
+        "ndata": {
+          "name": "n.1519546230015.3",
+          "label": "topic1",
+          "x": 1582,
+          "y": 364.5060542566447,
+          "px": 1581,
+          "py": 363.5060542566447,
+          "ports": [],
+          "radius": 30
+        }
+      },
+      {
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.dockerHost",
+              "id": "template.yaml/dcae.capabilities.dockerHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": {
+              "type": "tosca.relationships.DependsOn"
+            }
+          }
+        ],
+        "capabilities": [
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "name": "fm_poller",
+        "description":
+          "/sdc/v1/catalog/resources/c8db6f9b-6173-4d7d-bd25-c20bfc154daa/artifacts/66b05681-a407-4e46-9239-86f245c68b81",
+        "type": {
+          "name": "tosca.dcae.nodes.dockerApp.fm_poller"
+        },
+        "properties": [
+          {
+            "assignment": {
+              "value": "ciscoRouter"
+            },
+            "name": "DeviceCategory",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": [
+                  "ciscoSwitch",
+                  "ciscoRouter",
+                  "juniperSwitch",
+                  "juniperRouter"
+                ]
+              }
+            ],
+            "value": "ciscoRouter"
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/seed"
+            },
+            "name": "DeviceToWalkJson",
+            "type": "string",
+            "value": "/opt/app/discovery/seed"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "DisoveryInterval"
+              }
+            },
+            "name": "DisoveryInterval",
+            "type": "string",
+            "value": {
+              "get_input": "DisoveryInterval"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "FlatironHost"
+              }
+            },
+            "name": "FlatironHost",
+            "type": "string",
+            "value": {
+              "get_input": "FlatironHost"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "FlatironScope"
+              }
+            },
+            "name": "FlatironScope",
+            "type": "string",
+            "value": {
+              "get_input": "FlatironScope"
+            }
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/curloutput"
+            },
+            "name": "SeedFilePath",
+            "type": "string",
+            "value": "/opt/app/discovery/curloutput"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/app_config.json"
+            },
+            "name": "app_config_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/app_config.json"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscorouteroids"
+            },
+            "name": "ciscorouter",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscorouteroids"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscoswitchoids"
+            },
+            "name": "ciscoswitch",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/ciscoswitchoids"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "clientUri"
+              }
+            },
+            "name": "clientUri",
+            "type": "string",
+            "value": {
+              "get_input": "clientUri"
+            }
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "dcae_service_location"
+              }
+            },
+            "name": "dcae_service_location",
+            "type": "string",
+            "value": {
+              "get_input": "dcae_service_location"
+            }
+          },
+          {
+            "assignment": {
+              "value": "rv1-dis / rv1-mib"
+            },
+            "name": "dcae_target_type",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": [
+                  "rv1-dis / rv1-mib",
+                  "rv2- dis / rv2-mib",
+                  "rv3- dis / rv3-mib",
+                  "rv4- dis / rv4-mib",
+                  "rv5- dis / rv5-mib",
+                  "rv6- dis / rv6-mib",
+                  "rv7- dis / rv7-mib",
+                  "me6- dis / me6- mib"
+                ]
+              }
+            ],
+            "value": "rv1-dis / rv1-mib"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/defaultoids"
+            },
+            "name": "default",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/defaultoids"
+          },
+          {
+            "assignment": {
+              "value": ""
+            },
+            "name": "dmaapSeedFilePath",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dmaap_config.json"
+            },
+            "name": "dmaap_conf_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dmaap_config.json"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dti_config.json"
+            },
+            "name": "dti_config_file",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/conf/dti_config.json"
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_input": "environment"
+              }
+            },
+            "name": "environment",
+            "type": "string",
+            "value": {
+              "get_input": "environment"
+            }
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperrouteroids"
+            },
+            "name": "juniperrouter",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperrouteroids"
+          },
+          {
+            "assignment": {
+              "value":
+                "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperswitchoids"
+            },
+            "name": "juniperswitch",
+            "type": "string",
+            "value":
+              "/opt/app/topologyCollector/TopologyCollector-1.0.0/data/juniperswitchoids"
+          },
+          {
+            "assignment": {
+              "value": "/opt/app/discovery/outdata"
+            },
+            "name": "outdata",
+            "type": "string",
+            "value": "/opt/app/discovery/outdata"
+          },
+          {
+            "name": "image",
+            "type": "string",
+            "required": true
+          },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true,
+            "value": {
+              "get_property": ["SELF", "composition", "location_id"]
+            }
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.dockerApp.fm_poller",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.dockerHost",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.dockerHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.dockerHost",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.dockerHost"
+              },
+              "name": "host",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/dependency",
+              "relationship": {
+                "type": "tosca.relationships.DependsOn"
+              }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "https://zldcrdm2sdc4cbe01.3f1a87.rdm2.tci.att.com:8443",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.dockerApp",
+              "id":
+                "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.dockerApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.dockerApp.fm_poller",
+          "id": 0
+        },
+        "id": "c8db6f9b-6173-4d7d-bd25-c20bfc154daa",
+        "nid": "n.1519638059958.3",
+        "ndata": {
+          "name": "n.1519638059958.3",
+          "label": "fm_poller",
+          "x": 757,
+          "y": 533,
+          "px": 756,
+          "py": 532,
+          "ports": [],
+          "radius": 30
+        }
+      }
+    ],
+    "relations": [
+      {
+        "rid": "lnk.1519638491147.0",
+        "n1": "n.1519546229993.1",
+        "name1": "tcaSpec",
+        "n2": "n.1519546230003.2",
+        "name2": "topic0",
+        "meta": {
+          "n1": "n.1519546229993.1",
+          "n2": "n.1519546230003.2",
+          "p1": "stream_subscribe_0",
+          "p2": "topic",
+          "relationship": ["tcaSpec", null, "stream_subscribe_0"]
+        }
+      },
+      {
+        "rid": "lnk.1519638491150.1",
+        "n1": "n.1519546229993.1",
+        "name1": "tcaSpec",
+        "n2": "n.1519546230015.3",
+        "name2": "topic1",
+        "meta": {
+          "n1": "n.1519546229993.1",
+          "n2": "n.1519546230015.3",
+          "p1": "stream_publish_0",
+          "p2": "topic",
+          "relationship": ["tcaSpec", null, "stream_publish_0"]
+        }
+      },
+      {
+        "rid": "lnk.1519638491156.2",
+        "n1": "n.1519546229993.1",
+        "name1": "tcaSpec",
+        "n2": "n.1519546229982.0",
+        "name2": "policy_0",
+        "meta": {
+          "n1": "n.1519546229993.1",
+          "n2": "n.1519546229982.0",
+          "p1": "policy",
+          "p2": "policy",
+          "relationship": ["tcaSpec", null, "policy"]
+        }
+      }
+    ],
+    "inputs": [],
+    "outputs": []
+  }
+}
diff --git a/public/cypress/fixtures/importVfcmt.json b/public/cypress/fixtures/importVfcmt.json
new file mode 100644
index 0000000..6da0d60
--- /dev/null
+++ b/public/cypress/fixtures/importVfcmt.json
@@ -0,0 +1,93 @@
+[
+  {
+    "uuid": "cb06b8a9-c7e0-4451-a941-89fc338303c9",
+    "invariantUUID": "8c341465-43bb-44a9-b5f0-356e6a2a855f",
+    "name": "LiavSprint10.3",
+    "version": "0.1",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/cb06b8a9-c7e0-4451-a941-89fc338303c9/toscaModel",
+    "lastUpdaterUserId": "le056g",
+    "category": "Template",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "eef4a0c8-8a52-4d09-bdbd-f68dfd835ee3",
+    "invariantUUID": "d8003bd6-de41-4910-b38d-a357de25a61a",
+    "name": "teSt.__.monitoring---TempLATE.Rsnq",
+    "version": "0.1",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/eef4a0c8-8a52-4d09-bdbd-f68dfd835ee3/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "f34758c9-f0e8-4b18-993a-0c1b48c5885a",
+    "invariantUUID": "7a96b209-0598-4df7-9313-48234b6e731b",
+    "name": "teSt.__.monitoring---TempLATE.Yh5k",
+    "version": "2.0",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/f34758c9-f0e8-4b18-993a-0c1b48c5885a/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "CERTIFIED",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "22473d26-d0bd-4c1b-84c1-20e539fb7556",
+    "invariantUUID": "5feeebf4-d4e9-44bc-9f17-10703af44da7",
+    "name": "CI-fJc9mhvlrfdx6qeCI",
+    "version": "0.1",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/22473d26-d0bd-4c1b-84c1-20e539fb7556/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "dc588160-b1ca-4219-b790-bd8eda9332c1",
+    "invariantUUID": "e23ac861-1ba3-4acc-a1bd-ea297c51f1da",
+    "name": "teSt.__.monitoring---TempLATE.Fv2x",
+    "version": "1.0",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/dc588160-b1ca-4219-b790-bd8eda9332c1/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "CERTIFIED",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "cdb18942-e769-4361-9e89-96b06d13b138",
+    "invariantUUID": "fc8c40aa-f67c-4386-92b1-fbc652b8d3dc",
+    "name": "CIba71c93f4299",
+    "version": "0.3",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/cdb18942-e769-4361-9e89-96b06d13b138/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  },
+  {
+    "uuid": "d9a5372c-2127-4b83-9aed-17e5b041cb45",
+    "invariantUUID": "3decd698-451b-405f-93ca-dcdf1dfd525e",
+    "name": "teSt.__.monitoring---TempLATE.Sgno",
+    "version": "0.2",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/d9a5372c-2127-4b83-9aed-17e5b041cb45/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "subCategory": "Monitoring Template",
+    "resourceType": "VFCMT"
+  }
+]
diff --git a/public/cypress/fixtures/list-events-by-version.json b/public/cypress/fixtures/list-events-by-version.json
new file mode 100644
index 0000000..0a07af0
--- /dev/null
+++ b/public/cypress/fixtures/list-events-by-version.json
@@ -0,0 +1,29 @@
+[
+  {
+    "version": "4.1",
+    "eventTypes": [
+      "syslogFields",
+      "thresholdCrossingAlertFields",
+      "measurementsForVfScalingFields",
+      "mobileFlowFields",
+      "otherFields",
+      "stateChangeFields",
+      "faultFields"
+    ]
+  },
+  {
+    "version": "5.3",
+    "eventTypes": [
+      "syslogFields",
+      "thresholdCrossingAlertFields",
+      "voiceQualityFields",
+      "heartbeatFields",
+      "measurementsForVfScalingFields",
+      "sipSignalingFields",
+      "mobileFlowFields",
+      "otherFields",
+      "stateChangeFields",
+      "faultFields"
+    ]
+  }
+]
diff --git a/public/cypress/fixtures/monitoringComponentsMock.json b/public/cypress/fixtures/monitoringComponentsMock.json
new file mode 100644
index 0000000..ab34688
--- /dev/null
+++ b/public/cypress/fixtures/monitoringComponentsMock.json
@@ -0,0 +1,123 @@
+{
+    "monitoringComponents": [
+        {
+            "uuid": "cba37ed8-94e1-406f-b4f5-b5edbc31ac85",
+            "name": "CIe4d5a9b271d6",
+            "version": "0.2",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "not submitted",
+            "vfiName": "vfb53dd48360ff4fa2b66e6ceb1961bd9b0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "cba37ed8-94e1-406f-b4f5-b5edbc31ac85",
+            "name": "CIe4d5a9b271d6",
+            "version": "0.2",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "not submitted",
+            "vfiName": "vfb53dd48360ff4fa2b66e6ceb1961bd9b0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "cba37ed8-94e1-406f-b4f5-b5edbc31ac85",
+            "name": "CIe4d5a9b271d6",
+            "version": "0.2",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "not submitted",
+            "vfiName": "vfb53dd48360ff4fa2b66e6ceb1961bd9b0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "cba37ed8-94e1-406f-b4f5-b5edbc31ac85",
+            "name": "CIe4d5a9b271d6",
+            "version": "0.2",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "not submitted",
+            "vfiName": "vfb53dd48360ff4fa2b66e6ceb1961bd9b0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        },
+        {
+            "uuid": "64471437-8feb-40d9-a8b0-9407a81dd5c0",
+            "name": "teSt.__.monitoring---TempLATE.6hnc",
+            "version": "1.0",
+            "lastUpdaterUserId": "cs0008",
+            "description": "description",
+            "status": "submitted",
+            "vfiName": "dump0"
+        }
+    ],
+    "unavailable": [
+        {
+            "uuid": "111111-1111111-1111111",
+            "name": null,
+            "version": null,
+            "lastUpdaterUserId": null,
+            "description": null,
+            "status": "unavailable",
+            "vfiName": "dump0"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/public/cypress/fixtures/serviceDdl.json b/public/cypress/fixtures/serviceDdl.json
new file mode 100644
index 0000000..a0a05bc
--- /dev/null
+++ b/public/cypress/fixtures/serviceDdl.json
@@ -0,0 +1,24 @@
+{
+  "uuid": "06c7d927-4e2f-47e1-a29d-b6ed229ebc0a",
+  "invariantUUID": "424b2457-d0fc-4b73-aaf6-d809f402aff5",
+  "name": "ciService669277f472b0",
+  "version": "0.1",
+  "toscaModelURL":
+    "/sdc/v1/catalog/services/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/toscaModel",
+  "lastUpdaterUserId": "cs0008",
+  "category": "Mobility",
+  "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+  "distributionStatus": "DISTRIBUTION_NOT_APPROVED",
+  "lastUpdaterFullName": "Idan Agam",
+  "resources": [
+    {
+      "resourceInstanceName": "LiavSrv",
+      "resourceName": "ciResVF4e28237d8f08",
+      "resourceInvariantUUID": "c36512c2-7938-4dce-ab9e-8884c9cb1fb0",
+      "resourceVersion": "0.1",
+      "resoucreType": "VF",
+      "resourceUUID": "bce6b896-c086-450c-a023-86c1129de7e8",
+      "artifacts": null
+    }
+  ]
+}
diff --git a/public/cypress/fixtures/syslogTargetTree.json b/public/cypress/fixtures/syslogTargetTree.json
new file mode 100644
index 0000000..a6b73b4
--- /dev/null
+++ b/public/cypress/fixtures/syslogTargetTree.json
@@ -0,0 +1,239 @@
+[
+  {
+    "name": "commonEventHeader",
+    "children": [
+      {
+        "name": "domain",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.domain"
+      },
+      {
+        "name": "eventId",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.eventId"
+      },
+      {
+        "name": "eventType",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.eventType"
+      },
+      {
+        "name": "functionalRole",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.functionalRole"
+      },
+      {
+        "name": "internalHeaderFields",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.internalHeaderFields"
+      },
+      {
+        "name": "lastEpochMicrosec",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.lastEpochMicrosec"
+      },
+      {
+        "name": "priority",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.priority"
+      },
+      {
+        "name": "reportingEntityId",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.reportingEntityId"
+      },
+      {
+        "name": "reportingEntityName",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.reportingEntityName"
+      },
+      {
+        "name": "sequence",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.sequence"
+      },
+      {
+        "name": "sourceId",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.sourceId"
+      },
+      {
+        "name": "sourceName",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.sourceName"
+      },
+      {
+        "name": "startEpochMicrosec",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.startEpochMicrosec"
+      },
+      {
+        "name": "version",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.commonEventHeader.version"
+      }
+    ],
+    "isRequired": false,
+    "requiredChildren": [
+      "domain",
+      "eventId",
+      "functionalRole",
+      "lastEpochMicrosec",
+      "priority",
+      "reportingEntityName",
+      "sequence",
+      "sourceName",
+      "startEpochMicrosec"
+    ],
+    "id": "event.commonEventHeader"
+  },
+  {
+    "name": "syslogFields",
+    "children": [
+      {
+        "name": "additionalFields",
+        "children": [
+          {
+            "name": "name",
+            "children": null,
+            "isRequired": true,
+            "requiredChildren": null,
+            "id": "event.syslogFields.additionalFields[].name"
+          },
+          {
+            "name": "value",
+            "children": null,
+            "isRequired": true,
+            "requiredChildren": null,
+            "id": "event.syslogFields.additionalFields[].value"
+          }
+        ],
+        "isRequired": false,
+        "requiredChildren": ["name", "value"],
+        "id": "event.syslogFields.additionalFields[]"
+      },
+      {
+        "name": "eventSourceHost",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.eventSourceHost"
+      },
+      {
+        "name": "eventSourceType",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.syslogFields.eventSourceType"
+      },
+      {
+        "name": "syslogFacility",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogFacility"
+      },
+      {
+        "name": "syslogFieldsVersion",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogFieldsVersion"
+      },
+      {
+        "name": "syslogMsg",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogMsg"
+      },
+      {
+        "name": "syslogPri",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogPri"
+      },
+      {
+        "name": "syslogProc",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogProc"
+      },
+      {
+        "name": "syslogProcId",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogProcId"
+      },
+      {
+        "name": "syslogSData",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogSData"
+      },
+      {
+        "name": "syslogSdId",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogSdId"
+      },
+      {
+        "name": "syslogSev",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogSev"
+      },
+      {
+        "name": "syslogTag",
+        "children": null,
+        "isRequired": true,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogTag"
+      },
+      {
+        "name": "syslogVer",
+        "children": null,
+        "isRequired": false,
+        "requiredChildren": null,
+        "id": "event.syslogFields.syslogVer"
+      }
+    ],
+    "isRequired": false,
+    "requiredChildren": ["eventSourceType", "syslogMsg", "syslogTag"],
+    "id": "event.syslogFields"
+  }
+]
diff --git a/public/cypress/fixtures/templateMock.json b/public/cypress/fixtures/templateMock.json
new file mode 100644
index 0000000..b8fff17
--- /dev/null
+++ b/public/cypress/fixtures/templateMock.json
@@ -0,0 +1,15 @@
+[
+  {
+    "uuid": "2a67bbb6-3457-4bb6-baef-e3bc5f1fd9b7",
+    "invariantUUID": "cb594fb6-c9e7-42c1-bef9-7a1873325986",
+    "name": "AviStone1234",
+    "version": "1.0",
+    "toscaModelURL":
+      "/sdc/v1/catalog/resources/2a67bbb6-3457-4bb6-baef-e3bc5f1fd9b7/toscaModel",
+    "lastUpdaterUserId": "cs0008",
+    "category": "Template",
+    "lifecycleState": "CERTIFIED",
+    "subCategory": "Base Monitoring Template",
+    "resourceType": "VFCMT"
+  }
+]
diff --git a/public/cypress/fixtures/vfniMock.json b/public/cypress/fixtures/vfniMock.json
new file mode 100644
index 0000000..cb4a91b
--- /dev/null
+++ b/public/cypress/fixtures/vfniMock.json
@@ -0,0 +1,12 @@
+[
+  {
+    "uuid": "d31bc895-d908-4e62-9e81-77fd52e13632",
+    "invariantUUID": "4b8e8dde-8f18-42f4-86c7-3e2f9bc163b4",
+    "name": "LiavSrv",
+    "version": "0.3",
+    "lastUpdaterUserId": "af3193",
+    "category": "Mobility",
+    "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+    "distributionStatus": "DISTRIBUTION_NOT_APPROVED"
+  }
+]
diff --git a/public/cypress/integration/e2e/e2eWithIntegration-spec.ts b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
new file mode 100644
index 0000000..459a7de
--- /dev/null
+++ b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
@@ -0,0 +1,145 @@
+const randomNodeName = () =>
+  Math.random()
+    .toString(36)
+    .substr(2, 7);
+const NODE_NAME = randomNodeName();
+
+const serverGetDDLData = () => {
+  return cy
+    .server()
+    .route(
+      'GET',
+      Cypress.env('backendUrl') + '/getResourcesByMonitoringTemplateCategory'
+    )
+    .as('templateAPi')
+    .route(
+      'GET',
+      Cypress.env('backendUrl') +
+        '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a'
+    )
+    .as('vfniListAPi');
+};
+
+const saveAndDoneHttp = () => {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/rule-editor/rule/**/**/**/**'
+    })
+    .as('doneSaveCopyRule');
+};
+
+const createNewMC = () => {
+  cy
+    .get('input[data-tests-id="nameMc"]')
+    .type(`Hello${NODE_NAME}`)
+    .get('textarea[data-tests-id="descMc"]')
+    .type('Hello Description')
+    .get('select[data-tests-id="templateDdl"]')
+    .then($els => {
+      const opt = $els.find('option');
+      const first = opt.get(1) as any;
+      return $els.val(first.value);
+    })
+    .trigger('change')
+    .get('select[data-tests-id="vfniDdl"]')
+    .then($els => {
+      const opt = $els.find('option');
+      const first = opt.get(1) as any;
+      return $els.val(first.value);
+    })
+    .trigger('change')
+    .get('button[data-tests-id="createMonitoring"]')
+    .not('[disabled]')
+    .should('not.contain', 'Disabled');
+  cy
+    .server()
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/createMC'
+    })
+    .as('newMC')
+    .get('button[data-tests-id="createMonitoring"]')
+    .click()
+    .wait('@newMC');
+};
+
+import { buttonCreateMC } from '../mocks/homePage-spec';
+import {
+  selectVersionAndTypeAndAddFirstRule,
+  fillRuleDecription,
+  addCopyAction,
+  editFirstRule
+} from '../mocks/ruleEngine-spec';
+
+describe('DCAED - forntend e2e and inagration test', () => {
+  context('Empty Monitoring Configuration list for service', () => {
+    it('Loads', () => {
+      cy.homePage();
+    });
+  });
+
+  context('Create new monitoring configuration', () => {
+    beforeEach(() => {
+      serverGetDDLData();
+      cy.homePage();
+      buttonCreateMC()
+        .click()
+        .wait(['@templateAPi', '@vfniListAPi']);
+    });
+
+    it('After api call success verify create button is disabled', () => {
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .should('be.visible')
+        .and('be.disabled');
+    });
+
+    it('click on create mc - more then one tab should be visible', () => {
+      createNewMC();
+      cy
+        .get('ul[p-tabviewnav]')
+        .children()
+        .should($el => {
+          expect($el.length).to.be.greaterThan(1);
+        });
+    });
+
+    it('should enter rule engine in map tab and create new rule', () => {
+      createNewMC();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      selectVersionAndTypeAndAddFirstRule();
+      fillRuleDecription('newRule');
+      addCopyAction();
+      saveAndDoneHttp();
+      cy.get('button[data-tests-id="btnDone"]').click();
+      cy
+        .wait('@doneSaveCopyRule')
+        .get('div[data-tests-id="ruleElement"]')
+        .should('be.visible')
+        .then(function($lis) {
+          expect($lis).to.have.length(1);
+          expect($lis.eq(0)).to.contain('newRule');
+        });
+      editFirstRule();
+      fillRuleDecription('LiavRule');
+      saveAndDoneHttp();
+      cy
+        .get('button[data-tests-id="btnSave"]')
+        .click()
+        .wait('@doneSaveCopyRule')
+        .get('a[data-tests-id="btnBackRule"]')
+        .click()
+        .get('div[data-tests-id="ruleElement"]')
+        .should('be.visible')
+        .then(function($lis) {
+          expect($lis).to.have.length(1);
+          expect($lis.eq(0)).to.contain('LiavRule');
+        });
+    });
+  });
+});
diff --git a/public/cypress/integration/mocks/errorDialog-spec.ts b/public/cypress/integration/mocks/errorDialog-spec.ts
new file mode 100644
index 0000000..9141ab2
--- /dev/null
+++ b/public/cypress/integration/mocks/errorDialog-spec.ts
@@ -0,0 +1,22 @@
+describe('Dialog error - E2E test flow with mock', () => {
+  describe('Simulate errors', () => {
+    beforeEach(() => {
+      cy.getMCListEmpty();
+      cy.getTemplateApiError();
+    });
+
+    it('Simulate error dialog is visible', () => {
+      cy.get('.ui-dialog').should('be.visible');
+    });
+
+    it('Simulate error dialog is close by cancel button', () => {
+      cy.get('button[data-tests-id="error-cancel"]').click();
+      cy.get('.ui-dialog').should('not.be.visible');
+    });
+
+    it('Simulate error dialog is close by X button', () => {
+      cy.get('.ui-dialog-titlebar-icon').click();
+      cy.get('.ui-dialog').should('not.be.visible');
+    });
+  });
+});
diff --git a/public/cypress/integration/mocks/generalPage-spec.ts b/public/cypress/integration/mocks/generalPage-spec.ts
new file mode 100644
index 0000000..1297de8
--- /dev/null
+++ b/public/cypress/integration/mocks/generalPage-spec.ts
@@ -0,0 +1,84 @@
+describe('General Page - E2E test flow with mock', () => {
+  describe('Create new MC', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+    });
+
+    it('Create button need to be disabled', () => {
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .should('be.visible')
+        .and('be.disabled');
+    });
+
+    it('Fill form then click to submit verify setting button and constrain ddl', () => {
+      cy.fillNewMcForm();
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .as('createButton')
+        .not('[disabled]')
+        .should('not.contain', 'Disabled');
+
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+
+      cy.get('@createButton').click();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy
+        .get('button[data-tests-id="setting-gear"]')
+        .should('be.visible')
+        .first()
+        .click({ multiple: true });
+
+      cy
+        .get('.map-setting-list #mappingType > .field-text')
+        .should('have.value', 'multiple');
+    });
+  });
+
+  describe('Tabs after MC created', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy.get('button[data-tests-id="createMonitoring"]').click();
+    });
+
+    it('should have 4 icon buttons in map tab', () => {
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy
+        .get('.map-bar-icon-container>button')
+        .should('have.length', 2)
+        .get('.map-bar-icon-container>div>button')
+        .should('have.length', 2)
+        .and('be.visible');
+    });
+
+    it('should have 2 icon buttons in supplement tab', () => {
+      cy
+        .get('#ui-tabpanel-2-label')
+        .should('contain', 'supplement')
+        .click();
+      cy
+        .get('.supplement-bar-icon-container>button')
+        .should('have.length', 2)
+        .and('be.visible')
+        .get('.supplement-bar-icon-container')
+        .children()
+        .should('have.length', 3);
+    });
+  });
+});
diff --git a/public/cypress/integration/mocks/homePage-spec.ts b/public/cypress/integration/mocks/homePage-spec.ts
new file mode 100644
index 0000000..2889390
--- /dev/null
+++ b/public/cypress/integration/mocks/homePage-spec.ts
@@ -0,0 +1,209 @@
+export const buttonCreateMC = () => {
+  return cy.get('button[data-tests-id="btn-create-mc"]');
+};
+export const buttonCreateMCSpan = () => {
+  return cy.get('span[data-tests-id="btn-span-create-mc"]');
+};
+
+export const tableItems = () => {
+  return cy.get('tr[data-tests-id="monitoringComponentTableItems"]');
+};
+
+export const tableHeaders = () => {
+  return cy.get('tr[data-tests-id="monitoringComponentTableHeaders"]');
+};
+export const tableItemsDeleteButton = () => {
+  return cy.get('button[data-tests-id="tableItemsButtonDelete"]');
+};
+
+export const tableItemsInfoButton = () => {
+  return cy.get('button[data-tests-id="tableItemsButtonInfo"]');
+};
+
+export const popupGetDeleteBtn = () => {
+  return cy.get('button[data-tests-id="btnDelete"]');
+};
+
+export const popupGetCancelBtn = () => {
+  return cy.get('button[data-tests-id="btnCancel"]');
+};
+
+export const getMonitoringConfiguration = () => {
+  return cy.get('div[data-tests-id="tableItemsMonitoringConfiguration"]');
+};
+
+export const doHoverOverFirstLine = () => {
+  return tableItems()
+    .first()
+    .trigger('mouseover');
+};
+
+export const doHoverOverFirstLineMonitoringConfiguration = () => {
+  tableItems()
+    .first()
+    .trigger('mouseover');
+  return getMonitoringConfiguration();
+};
+
+const NUMBER_OF_ITEMS = 12;
+
+const navigateButtonDisabled = () => {
+  return buttonCreateMC()
+    .should('be.visible')
+    .and('be.disabled')
+    .get('button[data-tests-id="btn-fab-create-mc"]')
+    .should('be.visible')
+    .and('be.disabled');
+};
+
+describe('Home Page - E2E test flow with mock', () => {
+  describe('MC List empty', () => {
+    beforeEach(() => {
+      cy.getMCListEmpty();
+      cy.homePage();
+    });
+
+    it("Shouldn't have create table with headers", () => {
+      tableHeaders().should('not.be.visible');
+    });
+    it("Shouldn't have create table without items", () => {
+      buttonCreateMC()
+        .get('div[data-tests-id="new-monitoring-title"]')
+        .should('contain', 'Monitoring');
+    });
+  });
+
+  describe('Check Edit Save and Submit', () => {
+    beforeEach(() => {
+      cy.getMCList();
+      cy.homePage();
+      cy.getMC();
+      cy.submitMonitoringComponent();
+      cy.saveMonitoringComponent();
+    });
+
+    it('Edit VFCMT', () => {
+      this.doHoverOverFirstLineMonitoringConfiguration()
+        .first()
+        .click({ force: true });
+    });
+  });
+
+  describe('MC List', () => {
+    beforeEach(() => {
+      cy.getMCList();
+      cy.homePage();
+    });
+
+    it('Should have create button on top of the screen', () => {
+      buttonCreateMC().should('be.visible');
+    });
+
+    it('Should have create table with headers', () => {
+      tableHeaders().should('be.visible');
+    });
+    it('Should have create table with items', () => {
+      tableItems().should('have.length', NUMBER_OF_ITEMS);
+    });
+  });
+
+  describe('MC List Edit Tests', () => {
+    beforeEach(() => {
+      cy.getMCList();
+      cy.homePage();
+    });
+  });
+
+  describe('MC List Delete Tests', () => {
+    beforeEach(() => {
+      cy.getMCList();
+      cy.homePage();
+      cy.deleteMonitoringComponent();
+      cy.deleteMonitoringComponentWithBlueprint();
+    });
+    it('Mouse hover over item, delete is visible, info not visible', () => {
+      doHoverOverFirstLine();
+      tableItemsDeleteButton().should('be.visible');
+      tableItemsInfoButton().should('not.be.visible');
+    });
+    it('Mouse hover over item, call delete and remove not submitted (call delete without blueprint api)', () => {
+      tableItems().should('have.length', NUMBER_OF_ITEMS);
+      doHoverOverFirstLine();
+      tableItemsDeleteButton()
+        .should('be.visible')
+        .click({ force: true });
+      popupGetDeleteBtn().click({ force: true });
+      tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
+    });
+    it('Mouse hover over item, call delete and remove submitted (call delete with blueprint api)', () => {
+      tableItems()
+        .should('have.length', NUMBER_OF_ITEMS)
+        .last()
+        .trigger('mouseover');
+      tableItemsDeleteButton()
+        .should('be.visible')
+        .click({ force: true });
+      popupGetDeleteBtn().click({ force: true });
+      tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
+    });
+    it('Mouse hover over item, call delete and cancelOperation', () => {
+      tableItems().should('have.length', NUMBER_OF_ITEMS);
+      doHoverOverFirstLine();
+      tableItemsDeleteButton()
+        .should('be.visible')
+        .click({ force: true });
+      popupGetCancelBtn().click({ force: true });
+      tableItems().should('have.length', NUMBER_OF_ITEMS);
+    });
+  });
+
+  describe('Show Info icon', () => {
+    beforeEach(() => {
+      cy.getMCList();
+      cy.homePageCertified();
+    });
+    it('Mouse hover over item, delete is not visible, info visible', () => {
+      doHoverOverFirstLine();
+      tableItemsInfoButton().should('be.visible');
+      tableItemsDeleteButton().should('not.be.visible');
+    });
+  });
+
+  describe('Successfully Entry Home Page Monitoring Configuration', () => {
+    beforeEach(() => {
+      cy.getMCListEmpty();
+      cy.homePage();
+    });
+
+    it('Buttons looks Assertion', () => {
+      buttonCreateMC()
+        .should('contain', 'Create New MC')
+        .and('be.visible')
+        .and('not.be.disabled');
+
+      buttonCreateMCSpan()
+        .should('contain', 'Add First MC')
+        .and('be.visible')
+        .and('not.be.disabled');
+    });
+
+    it('Buttons Functionality Assertion', () => {
+      buttonCreateMC()
+        .click()
+        .get('div[data-tests-id="new-monitoring-title"]')
+        .should('contain', 'Monitoring');
+    });
+  });
+
+  describe('Not Auth Entry Home Page Monitoring Configuration', () => {
+    it('Buttons disabled when user not owner', () => {
+      cy.sdcIsOwnerFalse();
+      navigateButtonDisabled();
+    });
+
+    it('Buttons disabled when user not checkout', () => {
+      cy.sdcUserNotCheckout();
+      navigateButtonDisabled();
+    });
+  });
+});
diff --git a/public/cypress/integration/mocks/importPage-spec.ts b/public/cypress/integration/mocks/importPage-spec.ts
new file mode 100644
index 0000000..7af904e
--- /dev/null
+++ b/public/cypress/integration/mocks/importPage-spec.ts
@@ -0,0 +1,232 @@
+const loadVfcmtList = () => {
+  return cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICE/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/getVfcmtsForMigration',
+      response: 'fixture:importVfcmt'
+    })
+    .as('importVfcmtList')
+    .visit(
+      'http://localhost:4300/#/main/SERVICE/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/import'
+    );
+};
+
+const getVfcmtRefData = data => {
+  return cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/getVfcmtReferenceData/cb06b8a9-c7e0-4451-a941-89fc338303c9',
+      response: data
+    })
+    .as('vfcmtRef');
+};
+
+const getFlowType = () => {
+  return cy
+    .server()
+    .route({
+      method: 'GET',
+      url: Cypress.env('backendUrl') + '/conf/composition',
+      response: {
+        flowTypes: ['Syslog', 'SNMP', 'FOI']
+      }
+    })
+    .as('flowTypes');
+};
+
+const getVfniList = () => {
+  return cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+      response: 'fixture:serviceDdl'
+    })
+    .as('vfniListApi');
+};
+
+const importMCServerApi = () => {
+  return cy
+    .server()
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/importMC',
+      response: 'fixture:createMcRes'
+    })
+    .as('importMC');
+};
+
+const chooseVfcmtFromDDLWithVersion = () => {
+  return cy
+    .get('.ng-input > input')
+    .click()
+    .type('liav')
+    .type('{enter}')
+    .get('select[data-tests-id="vfcmtVersion"]')
+    .select('0.1');
+};
+
+const getName = () => {
+  return cy.get('input[data-tests-id="nameMc"]');
+};
+const getDescription = () => {
+  return cy.get('textarea[data-tests-id="descMc"]');
+};
+const getFlowTypeSelect = () => {
+  return cy.get('select[data-tests-id="flowTypeDdl"]');
+};
+const getVfniSelect = () => {
+  return cy.get('select[data-tests-id="vfniDdl"]');
+};
+const getImportButton = () => {
+  return cy.get('button[data-tests-id="importMonitoring"]');
+};
+
+describe('Import Page', () => {
+  context('First step - get vfcmts list and pick one', () => {
+    beforeEach(() => {
+      loadVfcmtList();
+    });
+
+    it('should have values in ddl', () => {
+      cy
+        .get('ng-select')
+        .should('be.visible')
+        .click()
+        .get('.ng-option')
+        .should('contain', 7);
+    });
+
+    it('should have value on typing and press enter key', () => {
+      cy
+        .get('.ng-input > input')
+        .click()
+        .type('liav')
+        .type('{enter}')
+        .get('.ng-value-label')
+        .should('contain', 'LiavSprint10.3');
+    });
+
+    it('should have version when pick vfcmt from list', () => {
+      cy
+        .get('.ng-input > input')
+        .click()
+        .type('liav')
+        .type('{enter}')
+        .get('select[data-tests-id="vfcmtVersion"]')
+        .should('be.visible')
+        .and('contain', '0.1');
+    });
+  });
+
+  context('second step - fill fileds according to server response', () => {
+    beforeEach(() => {
+      loadVfcmtList();
+    });
+
+    it('get flow type true and service is match to context service', () => {
+      getVfcmtRefData({
+        serviceUuid: '06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+        name: 'test',
+        description: 'test',
+        flowType: 'FOI',
+        vfiName: 'LiavSrv'
+      });
+      chooseVfcmtFromDDLWithVersion();
+      getName()
+        .should('have.value', 'test')
+        .and('be.disabled');
+      getDescription()
+        .should('have.value', 'test')
+        .and('be.disabled');
+      getFlowTypeSelect().should('have.value', 'FOI');
+      getVfniSelect().should('have.value', 'LiavSrv');
+      getImportButton()
+        .not('[disabled]')
+        .should('not.contain', 'Disabled');
+    });
+
+    it('get flow type true but service not match', () => {
+      getVfcmtRefData({
+        serviceUuid: '555555-4e2f-47e1-a29d-b6ed229ebc0a',
+        name: 'test',
+        description: 'test',
+        flowType: 'FOI',
+        vfiName: 'ChcoSrv'
+      });
+      getVfniList();
+      chooseVfcmtFromDDLWithVersion();
+      getFlowTypeSelect().should('have.value', 'FOI');
+    });
+
+    it('get flow type false service match', () => {
+      getVfcmtRefData({
+        serviceUuid: '06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+        name: 'test',
+        description: 'test',
+        vfiName: 'LiavSrv'
+      });
+      getImportButton()
+        .should('be.visible')
+        .and('be.disabled');
+      getFlowType();
+      chooseVfcmtFromDDLWithVersion();
+      getName()
+        .should('have.value', 'test')
+        .and('be.disabled');
+      getDescription()
+        .should('have.value', 'test')
+        .and('be.disabled');
+      getVfniSelect().should('have.value', 'LiavSrv');
+    });
+
+    it('get flow type false service not match', () => {
+      getVfcmtRefData({
+        serviceUuid: '555555-4e2f-47e1-a29d-b6ed229ebc0a',
+        name: 'test',
+        description: 'test',
+        vfiName: 'ChcoSrv'
+      });
+      getImportButton()
+        .should('be.visible')
+        .and('be.disabled');
+      getFlowType();
+      getVfniList();
+      chooseVfcmtFromDDLWithVersion();
+      getName().should('have.value', '');
+      getDescription().should('have.value', '');
+    });
+  });
+
+  context('final step - import vfcmt and getting cdump for tabs', () => {
+    beforeEach(() => {
+      loadVfcmtList();
+      getVfcmtRefData({
+        serviceUuid: '06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+        name: 'test',
+        description: 'test',
+        flowType: 'FOI',
+        vfiName: 'LiavSrv'
+      });
+      chooseVfcmtFromDDLWithVersion();
+    });
+
+    it('should get cdump after import and vfcmt import not visible', () => {
+      importMCServerApi();
+      getImportButton().click({ force: true });
+      cy
+        .get('.import-wrapper')
+        .should('not.be.visible')
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map');
+    });
+  });
+});
diff --git a/public/cypress/integration/mocks/ruleEngine-spec.ts b/public/cypress/integration/mocks/ruleEngine-spec.ts
new file mode 100644
index 0000000..9a75b87
--- /dev/null
+++ b/public/cypress/integration/mocks/ruleEngine-spec.ts
@@ -0,0 +1,168 @@
+export const mappingTragetDDL = () => {
+  return cy.get('select[data-tests-id="mappingDdl"]');
+};
+
+export const selectVersionAndTypeAndAddFirstRule = () => {
+  return cy
+    .get('select[data-tests-id="selectVersion"]')
+    .select('4.1')
+    .get('select[data-tests-id="selectEventType"]')
+    .select('syslog')
+    .get('button[data-tests-id="btnAddFirstRule"]')
+    .click();
+};
+
+export const fillRuleDecription = text => {
+  return cy
+    .get('input[data-tests-id="inputDescription"]')
+    .clear()
+    .type(text);
+};
+
+export const addCopyAction = () => {
+  return cy
+    .get('select[data-tests-id="selectAction"]')
+    .select('copy')
+    .get('button[data-tests-id="btnAddAction"]')
+    .click()
+    .get('input[data-tests-id="valueInput"]')
+    .type('A')
+    .get('span[data-tests-id="openTargetTree"]')
+    .click()
+    .get('.bottom-select')
+    .should('be.visible')
+    .find('.toggle-children')
+    .first()
+    .click()
+    .get('span[data-tests-id="targetNode"]')
+    .should(node => {
+      expect(node.eq(0)).to.contain('commonEventHeader');
+      expect(node.eq(1)).to.contain('domain');
+    })
+    .each(($el, index) => {
+      if (index === 1) {
+        cy.wrap($el).click();
+      }
+    });
+};
+
+export const editFirstRule = () => {
+  return cy
+    .get('div[data-tests-id="ruleElement"]')
+    .first()
+    .trigger('mouseover')
+    .get('button[data-tests-id="editRule"]')
+    .should('be.visible')
+    .click();
+};
+
+export const translateValue = () => {
+  return '{"processing":[{"phase":"snmp_map","processors":[{"array":"varbinds","datacolumn":"varbind_value","keycolumn":"varbind_oid","class":"SnmpConvertor"},{"phase":"sto2","class":"RunPhase"}]},{"phase":"sto2","processors":[{"updates":{"event.commonEventHeader.domain":"a"},"class":"Set"}]},{"phase":"sto2","processors":[{"phase":"map_publish","class":"RunPhase"}]}]}';
+};
+
+describe('Rule engine - E2E test flow with mock', () => {
+  describe('Mapping target select', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy.get('button[data-tests-id="createMonitoring"]').click();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+    });
+
+    it('should exist and contain options', () => {
+      mappingTragetDDL()
+        .should('be.visible')
+        .contains('json');
+    });
+
+    it('should page refrash after change select value in mapping target ddl', () => {
+      cy.httpTargetTree();
+      cy
+        .get('select[data-tests-id="selectVersion"]')
+        .select('4.1')
+        .get('select[data-tests-id="selectEventType"]')
+        .select('syslog')
+        .get('button[data-tests-id="btnAddFirstRule"]')
+        .should('be.visible');
+      cy.emptyRuleEngine('json');
+      mappingTragetDDL()
+        .select('json')
+        .get('select[data-tests-id="selectVersion"]')
+        .should('have.value', null);
+    });
+  });
+
+  describe('Translate And Save Rule List', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .click()
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy.httpTargetTree();
+      selectVersionAndTypeAndAddFirstRule();
+      fillRuleDecription('newRule');
+      addCopyAction();
+      cy.doneSaveRule();
+    });
+
+    context('Play with save, back and done button', () => {
+      it('should rule exist in list after save rule and click back', () => {
+        cy
+          .get('button[data-tests-id="btnSave"]')
+          .click()
+          .get('a[data-tests-id="btnBackRule"]')
+          .click()
+          .get('div[data-tests-id="ruleElement"]')
+          .should('be.visible')
+          .then(function($lis) {
+            expect($lis).to.have.length(1);
+            expect($lis.eq(0)).to.contain('newRule');
+          });
+      });
+
+      it('should rule exist in list after done edit rule', () => {
+        cy
+          .get('button[data-tests-id="btnDone"]')
+          .click()
+          .get('div[data-tests-id="ruleElement"]')
+          .should('be.visible')
+          .then(function($lis) {
+            expect($lis).to.have.length(1);
+            expect($lis.eq(0)).to.contain('newRule');
+          });
+      });
+    });
+
+    context('Translate', () => {
+      it('should open advanced setting when translate successfuly', () => {
+        cy.get('button[data-tests-id="btnDone"]').click();
+        cy.httpTransalte();
+        cy
+          .get('button[data-tests-id="btnTranslate"]')
+          .click()
+          .get('.toast-container')
+          .should('be.visible')
+          .get('.map-setting-list > #Type1 > input')
+          .should('be.visible')
+          .and('have.value', translateValue());
+      });
+    });
+  });
+});
diff --git a/public/cypress/plugins/cy-ts-preprocessor.js b/public/cypress/plugins/cy-ts-preprocessor.js
new file mode 100644
index 0000000..7f0bba9
--- /dev/null
+++ b/public/cypress/plugins/cy-ts-preprocessor.js
@@ -0,0 +1,26 @@
+const wp = require('@cypress/webpack-preprocessor')
+
+const webpackOptions = {
+  resolve: {
+    extensions: ['.ts', '.js']
+  },
+  module: {
+    rules: [
+      {
+        test: /\.ts$/,
+        exclude: [/node_modules/],
+        use: [
+          {
+            loader: 'ts-loader'
+          }
+        ]
+      }
+    ]
+  }
+}
+
+const options = {
+  webpackOptions
+}
+
+module.exports = wp(options)
diff --git a/public/cypress/plugins/index.js b/public/cypress/plugins/index.js
new file mode 100644
index 0000000..78e782f
--- /dev/null
+++ b/public/cypress/plugins/index.js
@@ -0,0 +1,5 @@
+const cypressTypeScriptPreprocessor = require('./cy-ts-preprocessor')
+
+module.exports = on => {
+  on('file:preprocessor', cypressTypeScriptPreprocessor)
+}
diff --git a/public/cypress/support/commands.ts b/public/cypress/support/commands.ts
new file mode 100644
index 0000000..ee8623c
--- /dev/null
+++ b/public/cypress/support/commands.ts
@@ -0,0 +1,31 @@
+declare namespace Cypress {
+  interface Chainable {
+    getTemplateApiError: typeof getTemplateApiError;
+  }
+}
+
+function getTemplateApiError(): void {
+  cy.server().route({
+    method: 'GET',
+    url:
+      Cypress.env('backendUrl') +
+      '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+    status: 500,
+    response: {
+      requestError: {
+        policyException: {
+          messageId: 'POL5000',
+          text: 'Error: Internal Server Error. Please try again later.',
+          variables: [],
+          formattedErrorMessage:
+            'Error: Internal Server Error. Please try again later.'
+        }
+      },
+      notes: 'Error: Requested "123" resource was not found.'
+    }
+  });
+  cy.homePage();
+  cy.get('button[data-tests-id="btn-create-mc"]').click();
+}
+
+Cypress.Commands.add('getTemplateApiError', getTemplateApiError);
diff --git a/public/cypress/support/generalCommands.ts b/public/cypress/support/generalCommands.ts
new file mode 100644
index 0000000..fc87acc
--- /dev/null
+++ b/public/cypress/support/generalCommands.ts
@@ -0,0 +1,50 @@
+declare namespace Cypress {
+  interface Chainable {
+    httpGetDDLData: typeof httpGetDDLData;
+    fillNewMcForm: typeof fillNewMcForm;
+    httpCreateNewMc: typeof httpCreateNewMc;
+  }
+}
+
+function httpGetDDLData(): void {
+  cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
+      response: 'fixture:serviceDdl'
+    })
+    .as('vfniListApi')
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') + '/getResourcesByMonitoringTemplateCategory',
+      response: [{ name: 'AviStone1234' }]
+    })
+    .as('templateAPi');
+}
+
+function fillNewMcForm() {
+  cy.get('input[data-tests-id="nameMc"]').type('new mc');
+  cy.get('textarea[data-tests-id="descMc"]').type('Hello Description');
+  cy.get('select[data-tests-id="templateDdl"]').select('AviStone1234');
+  cy.get('select[data-tests-id="vfniDdl"]').select('LiavSrv');
+}
+
+function httpCreateNewMc() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/createMC',
+      response: 'fixture:createMcRes'
+    })
+    .as('newMC');
+}
+
+// Add cypress commands
+Cypress.Commands.add('httpGetDDLData', httpGetDDLData);
+Cypress.Commands.add('fillNewMcForm', fillNewMcForm);
+Cypress.Commands.add('httpCreateNewMc', httpCreateNewMc);
diff --git a/public/cypress/support/homeCommands.ts b/public/cypress/support/homeCommands.ts
new file mode 100644
index 0000000..6f3349c
--- /dev/null
+++ b/public/cypress/support/homeCommands.ts
@@ -0,0 +1,147 @@
+declare namespace Cypress {
+  interface Chainable {
+    homePage: typeof homePage;
+    homePageCertified: typeof homePageCertified;
+    sdcIsOwnerFalse: typeof sdcIsOwnerFalse;
+    sdcUserNotCheckout: typeof sdcUserNotCheckout;
+    getMCList: typeof getMCList;
+    getMCListEmpty: typeof getMCListEmpty;
+    deleteMonitoringComponent: typeof deleteMonitoringComponent;
+    deleteMonitoringComponentWithBlueprint: typeof deleteMonitoringComponentWithBlueprint;
+    submitMonitoringComponent: typeof submitMonitoringComponent;
+    saveMonitoringComponent: typeof saveMonitoringComponent;
+    getMC: typeof getMC;
+  }
+}
+
+// functionality
+function sdcIsOwnerFalse(): void {
+  cy.visit(
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICE&uuid=b1645734-b812-4cd7-a0cc-5b5843940ad6&lifecycleState=NOT_CERTIFIED_CHECKOUT&isOwner=false'
+  );
+}
+
+function sdcUserNotCheckout(): void {
+  cy.visit(
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICE&uuid=b1645734-b812-4cd7-a0cc-5b5843940ad6&lifecycleState=READY_FOR_CERTIFICATION&isOwner=true'
+  );
+}
+
+function homePage(): void {
+  cy.visit(
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uuid=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=NOT_CERTIFIED_CHECKOUT&isOwner=true&version=0.1'
+  );
+}
+
+function homePageCertified(): void {
+  cy.visit(
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uuid=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=CERTIFIED_CHECKOUT&isOwner=true&version=0.1'
+  );
+}
+
+function deleteMonitoringComponent(): void {
+  cy
+    .server()
+    .route({
+      method: 'DELETE',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/deleteVfcmtReference',
+      response: '{}'
+    })
+    .as('deleteMonitoringComponent');
+}
+
+function saveMonitoringComponent(): void {
+  cy
+    .server()
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/saveComposition/cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
+      response: '{}'
+    })
+    .as('saveMonitoringComponent');
+}
+
+function submitMonitoringComponent(): void {
+  cy
+    .server()
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/createBluePrint/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/',
+      response: '{}'
+    })
+    .as('submitMonitoringComponent');
+}
+
+function deleteMonitoringComponentWithBlueprint(): void {
+  cy
+    .server()
+    .route({
+      method: 'DELETE',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/teSt.__.monitoring---TempLATE.6hnc/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/dump0/64471437-8feb-40d9-a8b0-9407a81dd5c0/deleteVfcmtReference',
+      response: '{}'
+    })
+    .as('deleteMonitoringComponentWithBlueprint');
+}
+
+function getMCList(): void {
+  cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/monitoringComponents',
+      response: 'fixture:monitoringComponentsMock'
+    })
+    .as('mcList');
+}
+
+function getMC(): void {
+  cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/getMC/cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
+      response: 'fixture:getMCMock'
+    })
+    .as('getMC');
+}
+
+function getMCListEmpty(): void {
+  cy
+    .server()
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/monitoringComponents',
+      response: '{}'
+    })
+    .as('mcListEmpty');
+}
+
+// Add cypress commands
+Cypress.Commands.add('homePage', homePage);
+Cypress.Commands.add('homePageCertified', homePageCertified);
+Cypress.Commands.add('sdcIsOwnerFalse', sdcIsOwnerFalse);
+Cypress.Commands.add('sdcUserNotCheckout', sdcUserNotCheckout);
+Cypress.Commands.add('getMCList', getMCList);
+Cypress.Commands.add('getMCListEmpty', getMCListEmpty);
+Cypress.Commands.add('deleteMonitoringComponent', deleteMonitoringComponent);
+Cypress.Commands.add(
+  'deleteMonitoringComponentWithBlueprint',
+  deleteMonitoringComponentWithBlueprint
+);
+Cypress.Commands.add('submitMonitoringComponent', submitMonitoringComponent);
+Cypress.Commands.add('saveMonitoringComponent', saveMonitoringComponent);
+Cypress.Commands.add('getMC', getMC);
diff --git a/public/cypress/support/index.js b/public/cypress/support/index.js
new file mode 100644
index 0000000..2f70722
--- /dev/null
+++ b/public/cypress/support/index.js
@@ -0,0 +1,23 @@
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+import './commands';
+import './homeCommands';
+import './generalCommands';
+import './ruleEngineCommands';
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')
diff --git a/public/cypress/support/ruleEngineCommands.ts b/public/cypress/support/ruleEngineCommands.ts
new file mode 100644
index 0000000..2142e7f
--- /dev/null
+++ b/public/cypress/support/ruleEngineCommands.ts
@@ -0,0 +1,71 @@
+declare namespace Cypress {
+  interface Chainable {
+    emptyRuleEngine: typeof emptyRuleEngine;
+    httpTargetTree: typeof httpTargetTree;
+    doneSaveRule: typeof doneSaveRule;
+    httpTransalte: typeof httpTransalte;
+  }
+}
+
+function emptyRuleEngine(targetFiled) {
+  cy.server();
+  cy
+    .route({
+      method: 'GET',
+      url: `${Cypress.env(
+        'backendUrl'
+      )}/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/${targetFiled}`,
+      response: {}
+    })
+    .as('serverRuleList')
+    .route({
+      method: 'GET',
+      url: Cypress.env('backendUrl') + '/rule-editor/list-events-by-versions',
+      response: 'fixture:list-events-by-version'
+    })
+    .as('serverEventsAndVersion');
+}
+
+function httpTargetTree() {
+  cy.server();
+  cy
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') + '/rule-editor/definition/4.1/syslogFields',
+      response: 'fixture:syslogTargetTree'
+    })
+    .as('targetData');
+}
+
+function doneSaveRule() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+      response: 'fixture:doneSaveSimpleCopy'
+    })
+    .as('doneSaveCopyRule');
+}
+
+function httpTransalte() {
+  cy.server();
+  cy
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/translate/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+      response: 'fixture:TranslateSimpleCopy'
+    })
+    .as('TranslateSimpleCopy');
+}
+
+// Add cypress commands
+Cypress.Commands.add('emptyRuleEngine', emptyRuleEngine);
+Cypress.Commands.add('httpTargetTree', httpTargetTree);
+Cypress.Commands.add('doneSaveRule', doneSaveRule);
+Cypress.Commands.add('httpTransalte', httpTransalte);
diff --git a/public/cypress/tsconfig.json b/public/cypress/tsconfig.json
new file mode 100644
index 0000000..342bcb4
--- /dev/null
+++ b/public/cypress/tsconfig.json
@@ -0,0 +1,24 @@
+{
+  "extends": "../tsconfig.json",
+  "include": [
+    "integration/**/*.ts",
+    "support/**/*.ts",
+    "../node_modules/cypress",
+    "../node_modules/@types/mocha"
+  ],
+  "compilerOptions": {
+    "experimentalDecorators": true,
+    "skipLibCheck": true,
+    "declaration": false,
+    "removeComments": true,
+    "emitDecoratorMetadata": true,
+    "noImplicitAny": false,
+    "noImplicitReturns": true,
+    "noImplicitUseStrict": false,
+    "sourceMap": true,
+    "pretty": true,
+    "noLib": false,
+    "typeRoots": ["../../node_modules/@types", "../../node_modules"],
+    "types": ["cypress", "mocha", "jasmine", "node"]
+  }
+}
diff --git a/public/e2e/app.e2e-spec.ts b/public/e2e/app.e2e-spec.ts
new file mode 100644
index 0000000..004463f
--- /dev/null
+++ b/public/e2e/app.e2e-spec.ts
@@ -0,0 +1,14 @@
+import { AppPage } from './app.po';
+
+describe('dcae-fe App', () => {
+  let page: AppPage;
+
+  beforeEach(() => {
+    page = new AppPage();
+  });
+
+  it('should display welcome message', () => {
+    page.navigateTo();
+    expect(page.getParagraphText()).toEqual('Welcome to app!');
+  });
+});
diff --git a/public/e2e/app.po.ts b/public/e2e/app.po.ts
new file mode 100644
index 0000000..82ea75b
--- /dev/null
+++ b/public/e2e/app.po.ts
@@ -0,0 +1,11 @@
+import { browser, by, element } from 'protractor';
+
+export class AppPage {
+  navigateTo() {
+    return browser.get('/');
+  }
+
+  getParagraphText() {
+    return element(by.css('app-root h1')).getText();
+  }
+}
diff --git a/public/e2e/tsconfig.e2e.json b/public/e2e/tsconfig.e2e.json
new file mode 100644
index 0000000..1d9e5ed
--- /dev/null
+++ b/public/e2e/tsconfig.e2e.json
@@ -0,0 +1,14 @@
+{
+  "extends": "../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../out-tsc/e2e",
+    "baseUrl": "./",
+    "module": "commonjs",
+    "target": "es5",
+    "types": [
+      "jasmine",
+      "jasminewd2",
+      "node"
+    ]
+  }
+}
diff --git a/public/jest.config.js b/public/jest.config.js
new file mode 100644
index 0000000..e1836c0
--- /dev/null
+++ b/public/jest.config.js
@@ -0,0 +1,39 @@
+module.exports = {
+  // mapCoverage: true,
+  globals: {
+    __TS_CONFIG__: {
+      target: 'es6',
+      module: 'commonjs',
+      moduleResolution: 'node'
+    },
+    'ts-jest': {
+      tsConfigFile: 'src/tsconfig.spec.json'
+    },
+    __TRANSFORM_HTML__: true
+  },
+  testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|js)$',
+  setupTestFrameworkScriptFile: '<rootDir>/src/setupJest.ts',
+  transform: {
+    '^.+\\.(ts|html)$':
+      '<rootDir>/node_modules/jest-preset-angular/preprocessor.js'
+  },
+  transformIgnorePatterns: ['node_modules/(?!@ngrx)'],
+  collectCoverageFrom: [
+    'src/app/module/**/*.{ts}',
+    '!src/app/*.{ts}',
+    '!src/app/**/*.{js}',
+    '!src/app/environment/*.{ts}',
+    '!src/app/language/*.{ts}',
+    '!src/app/**/*.module.{ts}',
+    '!src/app/**/*.interface.{ts}',
+    '!src/app/**/*.state.{ts}',
+    '!src/app/**/*.entity.{ts}'
+  ],
+  moduleFileExtensions: ['ts', 'tsx', 'js', 'json'],
+  testPathIgnorePatterns: ['/node_modules/', '/dist/', 'src/app/*.{js}'],
+  testResultsProcessor: 'jest-sonar-reporter',
+  moduleNameMapper: {
+    'app/(.*)': '<rootDir>/src/app/$1',
+    '@common/(.*)': '<rootDir>/src/app/common/$1'
+  }
+};
diff --git a/public/karma.conf.js b/public/karma.conf.js
new file mode 100644
index 0000000..af139fa
--- /dev/null
+++ b/public/karma.conf.js
@@ -0,0 +1,33 @@
+// Karma configuration file, see link for more information
+// https://karma-runner.github.io/1.0/config/configuration-file.html
+
+module.exports = function (config) {
+  config.set({
+    basePath: '',
+    frameworks: ['jasmine', '@angular/cli'],
+    plugins: [
+      require('karma-jasmine'),
+      require('karma-chrome-launcher'),
+      require('karma-jasmine-html-reporter'),
+      require('karma-coverage-istanbul-reporter'),
+      require('@angular/cli/plugins/karma')
+    ],
+    client:{
+      clearContext: false // leave Jasmine Spec Runner output visible in browser
+    },
+    coverageIstanbulReporter: {
+      reports: [ 'html', 'lcovonly' ],
+      fixWebpackSourcePaths: true
+    },
+    angularCli: {
+      environment: 'dev'
+    },
+    reporters: ['progress', 'kjhtml'],
+    port: 9876,
+    colors: true,
+    logLevel: config.LOG_INFO,
+    autoWatch: true,
+    browsers: ['Chrome'],
+    singleRun: false
+  });
+};
diff --git a/public/package.json b/public/package.json
new file mode 100644
index 0000000..c79a42b
--- /dev/null
+++ b/public/package.json
@@ -0,0 +1,117 @@
+{
+  "name": "dcae-fe",
+  "version": "0.0.0",
+  "license": "MIT",
+  "scripts": {
+    "ng": "ng",
+    "start": "ng serve",
+    "build": "ng build --prod --deploy-url=/dcae",
+    "test": "ng test",
+    "test:jest": "jest --watch",
+    "test:ci": "jest --runInBand",
+    "test:coverage": "jest --coverage",
+    "lint": "ng lint",
+    "e2e": "ng e2e",
+    "cy:run": "cypress run",
+    "cy:open": "cypress open",
+    "cy:report": "cypress run --reporter  mochawesome",
+    "war-local": "npm run build && cd dist && jar -cvf rule_engine.war *",
+    "war-remote": "mvn clean install",
+    "storybook": "start-storybook -p 9001 -c .storybook",
+    "build-storybook": "build-storybook",
+    "format":
+      "prettier --write \"src/{app,environments,assets}/**/*{.ts,.js,.json,.css,.scss}\"",
+    "format:fix": "pretty-quick --staged",
+    "precommit": "pretty-quick --staged"
+  },
+  "jest": {
+    "preset": "jest-preset-angular",
+    "roots": ["<rootDir>/src"],
+    "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",
+    "globals": {
+      "ts-jest": {
+        "tsConfigFile": "src/tsconfig.spec.json"
+      },
+      "__TRANSFORM_HTML__": true
+    }
+  },
+  "private": true,
+  "dependencies": {
+    "@angular/animations": "^5.1.0",
+    "@angular/cdk": "^5.1.1",
+    "@angular/common": "^5.1.0",
+    "@angular/compiler": "^5.1.0",
+    "@angular/core": "^5.1.0",
+    "@angular/forms": "^5.1.0",
+    "@angular/http": "^5.1.0",
+    "@angular/material": "5.1.1",
+    "@angular/platform-browser": "^5.1.0",
+    "@angular/platform-browser-dynamic": "^5.1.0",
+    "@angular/router": "^5.1.0",
+    "@bahmutov/add-typescript-to-cypress": "^2.0.0",
+    "@ng-select/ng-select": "^0.26.2",
+    "angular-tree-component": "^7.0.1",
+    "core-js": "^2.4.1",
+    "feather-icons": "^4.5.0",
+    "font-awesome": "^4.7.0",
+    "lodash": "^4.17.5",
+    "material-design-icons": "^3.0.1",
+    "mobx": "^4.1.0",
+    "mobx-angular": "^3.0.1",
+    "ngx-toastr": "^8.2.1",
+    "papaparse": "^4.3.6",
+    "pretty-checkbox": "3.0.3",
+    "primeng": "^5.0.2",
+    "ramda": "^0.25.0",
+    "rxjs": "^5.5.6",
+    "uuid": "^3.2.1",
+    "zone.js": "^0.8.19"
+  },
+  "devDependencies": {
+    "@angular/cli": "^1.7.3",
+    "@angular/compiler-cli": "^5.1.0",
+    "@angular/language-service": "^5.1.0",
+    "@storybook/addon-actions": "3.4.0-alpha.9",
+    "@storybook/addon-knobs": "3.4.0-alpha.9",
+    "@storybook/addon-links": "3.4.0-alpha.9",
+    "@storybook/addon-notes": "3.4.0-alpha.9",
+    "@storybook/addon-options": "3.4.0-alpha.9",
+    "@storybook/addons": "3.4.0-alpha.9",
+    "@storybook/angular": "^3.4.0-alpha.9",
+    "@types/jasmine": "~2.8.3",
+    "@types/jasminewd2": "~2.0.2",
+    "@types/jest": "^22.2.0",
+    "@types/node": "^9.4.6",
+    "angular2-template-loader": "^0.6.2",
+    "babel-core": "^6.26.0",
+    "codelyzer": "^4.0.1",
+    "cypress": "1.4.2",
+    "electron": "^1.8.3",
+    "husky": "^0.14.3",
+    "jasmine-core": "~2.8.0",
+    "jasmine-spec-reporter": "~4.2.1",
+    "jest": "^22.4.2",
+    "jest-preset-angular": "^5.2.1",
+    "jest-sonar-reporter": "^1.3.0",
+    "karma": "~2.0.0",
+    "karma-chrome-launcher": "~2.2.0",
+    "karma-cli": "~1.0.1",
+    "karma-coverage-istanbul-reporter": "^1.2.1",
+    "karma-jasmine": "~1.1.0",
+    "karma-jasmine-html-reporter": "^0.2.2",
+    "lint-staged": "^7.0.0",
+    "mobx-devtools-mst": "^0.9.14",
+    "mobx-remotedev": "^0.2.8",
+    "mocha": "^5.0.0",
+    "mocha-rp-reporter": "^1.0.12",
+    "mochawesome": "^3.0.2",
+    "prettier": "^1.11.1",
+    "pretty-quick": "^1.4.1",
+    "protractor": "~5.1.2",
+    "ts-node": "~3.2.0",
+    "tslint": "~5.9.1",
+    "tslint-config-prettier": "^1.10.0",
+    "typescript": "~2.5.3",
+    "wallaby-webpack": "^3.9.5"
+  }
+}
diff --git a/public/protractor.conf.js b/public/protractor.conf.js
new file mode 100644
index 0000000..7ee3b5e
--- /dev/null
+++ b/public/protractor.conf.js
@@ -0,0 +1,28 @@
+// Protractor configuration file, see link for more information
+// https://github.com/angular/protractor/blob/master/lib/config.ts
+
+const { SpecReporter } = require('jasmine-spec-reporter');
+
+exports.config = {
+  allScriptsTimeout: 11000,
+  specs: [
+    './e2e/**/*.e2e-spec.ts'
+  ],
+  capabilities: {
+    'browserName': 'chrome'
+  },
+  directConnect: true,
+  baseUrl: 'http://localhost:4200/',
+  framework: 'jasmine',
+  jasmineNodeOpts: {
+    showColors: true,
+    defaultTimeoutInterval: 30000,
+    print: function() {}
+  },
+  onPrepare() {
+    require('ts-node').register({
+      project: 'e2e/tsconfig.e2e.json'
+    });
+    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
+  }
+};
diff --git a/public/reportportal.json b/public/reportportal.json
new file mode 100644
index 0000000..a30a4b2
--- /dev/null
+++ b/public/reportportal.json
@@ -0,0 +1,9 @@
+// "reporter": "mocha-rp-reporter",
+// "reporterOptions": {
+//   "configOptions": {
+//     "token": "fd8d16ea-b413-4ee0-9e39-2bf486a3ae64",
+//     "endpoint": "http://reportportal.intl.att.com:8080/api/v1",
+//     "launch": "ym903w_TEST_EXAMPLE",
+//     "project": "dcea-d"
+//   }
+// }
diff --git a/public/src/app/api/feather-pipe.ts b/public/src/app/api/feather-pipe.ts
new file mode 100644
index 0000000..7a0715d
--- /dev/null
+++ b/public/src/app/api/feather-pipe.ts
@@ -0,0 +1,19 @@
+import { DomSanitizer } from '@angular/platform-browser';
+import { Pipe, PipeTransform } from '@angular/core';
+
+import * as feather from 'feather-icons/dist/feather';
+
+@Pipe({ name: 'feather' })
+export class FeatherIconsPipe implements PipeTransform {
+  constructor(private sanitizer: DomSanitizer) {}
+
+  transform(icon: string, size: number = 24, fill: string = 'none') {
+    return this.sanitizer.bypassSecurityTrustHtml(
+      feather.icons[icon].toSvg({
+        width: size,
+        height: size,
+        fill: fill
+      })
+    );
+  }
+}
diff --git a/public/src/app/api/rest-api.service.spec.ts b/public/src/app/api/rest-api.service.spec.ts
new file mode 100644
index 0000000..ce921cb
--- /dev/null
+++ b/public/src/app/api/rest-api.service.spec.ts
@@ -0,0 +1,26 @@
+import { TestBed, inject } from '@angular/core/testing';
+import { HttpModule } from '@angular/http';
+import { RestApiService } from './rest-api.service';
+import { v4 as genrateUuid } from 'uuid';
+
+describe('RestApiService', () => {
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      imports: [HttpModule],
+      providers: [RestApiService]
+    });
+  });
+
+  it(
+    'should be created',
+    inject([RestApiService], (service: RestApiService) => {
+      expect(service).toBeTruthy();
+    })
+  );
+
+  it('should genrate deffrent uuid each time for request id', () => {
+    const firstUuid = genrateUuid();
+    const secondUuid = genrateUuid();
+    expect(firstUuid !== secondUuid).toBe(true);
+  });
+});
diff --git a/public/src/app/api/rest-api.service.ts b/public/src/app/api/rest-api.service.ts
new file mode 100644
index 0000000..ba5cc54
--- /dev/null
+++ b/public/src/app/api/rest-api.service.ts
@@ -0,0 +1,179 @@
+import { Injectable } from '@angular/core';
+import {
+  Http,
+  Response,
+  Headers,
+  RequestOptions,
+  URLSearchParams
+} from '@angular/http';
+import { Observable } from 'rxjs/Observable';
+// Import RxJs required methods
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/catch';
+import 'rxjs/add/observable/throw';
+import { environment } from '../../environments/environment';
+import { v4 as uuidGenarator } from 'uuid';
+
+@Injectable()
+export class RestApiService {
+  options: RequestOptions;
+  headers: Headers;
+  baseUrl: string;
+
+  constructor(private http: Http) {
+    this.baseUrl = `${environment.apiBaseUrl}`;
+    this.headers = new Headers({
+      'Content-Type': 'application/json',
+      USER_ID: 'ym903w'
+    });
+    this.options = new RequestOptions({ headers: this.headers });
+  }
+
+  getVfcmtsForMigration(params) {
+    const { contextType, uuid, version } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/${uuid}/${version}/getVfcmtsForMigration`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json() || 'Server error');
+      });
+  }
+
+  getVfcmtReferenceData(vfcmtUUID) {
+    const url = `${this.baseUrl}/getVfcmtReferenceData/${vfcmtUUID}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  getFlowType() {
+    const url = `${this.baseUrl}/conf/composition`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  createNewVFCMT(params) {
+    const url = `${this.baseUrl}/createMC`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .post(url, params, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json() || 'Server error');
+      });
+  }
+
+  importVFCMT(params) {
+    const url = `${this.baseUrl}/importMC`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .post(url, params, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json() || 'Server error');
+      });
+  }
+
+  getServiceInstances(serviceID) {
+    const url = `${this.baseUrl}/service/${serviceID}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json() || 'Server error');
+      });
+  }
+
+  getTemplateResources() {
+    const url = `${this.baseUrl}/getResourcesByMonitoringTemplateCategory`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  getMonitoringComponents(params) {
+    const { contextType, uuid, version } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/${uuid}/${version}/monitoringComponents`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  deleteMonitoringComponent(params, vfcmtUuid, vfiName) {
+    const { contextType, uuid } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/${uuid}/${vfiName}/${vfcmtUuid}/deleteVfcmtReference`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .delete(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  deleteMonitoringComponentWithBlueprint(
+    params,
+    monitoringComponentName,
+    vfcmtUuid,
+    vfiName
+  ) {
+    const { contextType, uuid } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/${monitoringComponentName}/${uuid}/${vfiName}/${vfcmtUuid}/deleteVfcmtReference`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .delete(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  getCompositionMonitoringComponent(vfcmtUuid) {
+    const url = `${this.baseUrl}/getMC/${vfcmtUuid}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  saveMonitoringComponent(params) {
+    const { contextType, serviceUuid, vfiName, vfcmtUuid, cdump } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/${serviceUuid}/${vfiName}/saveComposition/${vfcmtUuid}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .post(url, cdump, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+
+  submitMonitoringComponent(params) {
+    const { contextType, serviceUuid, vfiName, vfcmtUuid, flowType } = params;
+    const url = `${
+      this.baseUrl
+    }/${contextType}/createBluePrint/${vfcmtUuid}/${serviceUuid}/${vfiName}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
+    return this.http
+      .post(url, {}, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => Observable.throw(error.json() || 'Server error'));
+  }
+}
diff --git a/public/src/app/app-routing.module.ts b/public/src/app/app-routing.module.ts
new file mode 100644
index 0000000..b2d1531
--- /dev/null
+++ b/public/src/app/app-routing.module.ts
@@ -0,0 +1,27 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+import { HomeComponent } from './home/home.component';
+import { MainComponent } from './main/main.component';
+
+const routes: Routes = [
+  {
+    path: '',
+    redirectTo: '/home',
+    pathMatch: 'full'
+  },
+  {
+    path: 'home',
+    component: HomeComponent
+  },
+  {
+    path: 'main/:contextType/:uuid/:version/:mcid',
+    component: MainComponent
+  }
+];
+
+@NgModule({
+  imports: [RouterModule.forRoot(routes, { useHash: true })],
+  exports: [RouterModule]
+})
+export class AppRoutingModule {}
diff --git a/public/src/app/app.component.html b/public/src/app/app.component.html
new file mode 100644
index 0000000..adb06f1
--- /dev/null
+++ b/public/src/app/app.component.html
@@ -0,0 +1,7 @@
+<!-- <div class="container"> -->
+<main [@slideAnimation]="getRouterOutletState(o)">
+  <app-error-dialog></app-error-dialog>
+  <app-loader [hidden]="!this.store.loader"></app-loader>
+  <router-outlet #o="outlet"></router-outlet>
+</main>
+<!-- </div> -->
diff --git a/public/src/app/app.component.scss b/public/src/app/app.component.scss
new file mode 100644
index 0000000..82b9721
--- /dev/null
+++ b/public/src/app/app.component.scss
@@ -0,0 +1,20 @@
+:host {
+  display: flex;
+  overflow: auto;
+  height: 100vh;
+
+  .container {
+    height: 100%;
+  }
+
+  main {
+    flex: 1;
+    position: relative;
+  }
+
+  /deep/ router-outlet ~ * {
+    position: absolute;
+    width: 100%;
+    // height: 100%;
+  }
+}
diff --git a/public/src/app/app.component.ts b/public/src/app/app.component.ts
new file mode 100644
index 0000000..0711538
--- /dev/null
+++ b/public/src/app/app.component.ts
@@ -0,0 +1,31 @@
+import { Component } from '@angular/core';
+import { slideAnimation } from './router.animations';
+import { ActivatedRoute } from '@angular/router';
+import { DomSanitizer } from '@angular/platform-browser';
+import { MatIconRegistry } from '@angular/material';
+import { Store } from './store/store';
+
+@Component({
+  selector: 'app-root',
+  animations: [slideAnimation],
+  templateUrl: './app.component.html',
+  styleUrls: ['./app.component.scss']
+})
+export class AppComponent {
+  constructor(
+    private _iconRegistry: MatIconRegistry,
+    private _sanitizer: DomSanitizer,
+    private route: ActivatedRoute,
+    public store: Store
+  ) {
+    this.loadIcons(_iconRegistry, _sanitizer);
+  }
+
+  loadIcons(_iconRegistry: MatIconRegistry, _sanitizer: DomSanitizer) {
+    _iconRegistry.registerFontClassAlias('fontawesome', 'fa');
+  }
+
+  public getRouterOutletState(outlet) {
+    return outlet.isActivated ? outlet.activatedRoute : '';
+  }
+}
diff --git a/public/src/app/app.module.ts b/public/src/app/app.module.ts
new file mode 100644
index 0000000..8ed8c87
--- /dev/null
+++ b/public/src/app/app.module.ts
@@ -0,0 +1,109 @@
+import { BrowserModule } from '@angular/platform-browser';
+import { NgModule, APP_INITIALIZER } from '@angular/core';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { HttpModule } from '@angular/http';
+import { HttpClientModule } from '@angular/common/http';
+
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { MobxAngularModule } from 'mobx-angular';
+
+import { TabViewModule, DialogModule, TooltipModule } from 'primeng/primeng';
+import { MatButtonModule } from '@angular/material/button';
+import { MatIconModule } from '@angular/material/icon';
+import { MatDialogModule } from '@angular/material/dialog';
+import { ToastrModule } from 'ngx-toastr';
+import { NgSelectModule } from '@ng-select/ng-select';
+
+// import { SdcUiComponentsModule } from 'sdc-ui/lib/angular';
+
+import { AppComponent } from './app.component';
+import { AppRoutingModule } from './app-routing.module';
+import { HomeComponent } from './home/home.component';
+import { GeneralComponent } from './general/general.component';
+import { MainComponent } from './main/main.component';
+import { RuleFrameComponent } from './rule-frame/rule-frame.component';
+
+import { HostService } from './host/host.service';
+import { RestApiService } from './api/rest-api.service';
+import { FeatherIconsPipe } from './api/feather-pipe';
+import { Store } from './store/store';
+import { LoaderComponent } from './loader/loader.component';
+import { ErrorDialogComponent } from './error-dialog/error-dialog.component';
+
+// rule engine
+import { TreeModule } from 'angular-tree-component';
+import { TargetComponent } from './rule-engine/target/target.component';
+import { VersionTypeSelectComponent } from './rule-engine/version-type-select/version-type-select.component';
+import { FromComponent } from './rule-engine/from/from.component';
+import { ActionComponent } from './rule-engine/action/action.component';
+import { ActionListComponent } from './rule-engine/action-list/action-list.component';
+import { ConditionComponent } from './rule-engine/condition/condition.component';
+import { RuleEngineApiService } from './rule-engine/api/rule-engine-api.service';
+import { ConfirmPopupComponent } from './rule-engine/confirm-popup/confirm-popup.component';
+import { SlidePanelComponent } from './rule-engine/slide-panel/slide-panel.component';
+import { RuleListComponent } from './rule-engine/rule-list/rule-list.component';
+import { BarIconsComponent } from './bar-icons/bar-icons.component';
+import { DiagramComponent } from './diagram/diagram.component';
+
+const appInitializerFn = () => {
+  return () => {
+    console.log('app initializing');
+  };
+};
+
+@NgModule({
+  declarations: [
+    AppComponent,
+    HomeComponent,
+    GeneralComponent,
+    MainComponent,
+    RuleFrameComponent,
+    LoaderComponent,
+    FeatherIconsPipe,
+    ErrorDialogComponent,
+    TargetComponent,
+    VersionTypeSelectComponent,
+    FromComponent,
+    ActionComponent,
+    ActionListComponent,
+    ConditionComponent,
+    ConfirmPopupComponent,
+    SlidePanelComponent,
+    RuleListComponent,
+    BarIconsComponent,
+    DiagramComponent
+  ],
+  imports: [
+    BrowserModule,
+    BrowserAnimationsModule,
+    FormsModule,
+    HttpModule,
+    HttpClientModule,
+    AppRoutingModule,
+    MobxAngularModule,
+    TabViewModule,
+    DialogModule,
+    MatButtonModule,
+    MatIconModule,
+    MatDialogModule,
+    TreeModule,
+    NgSelectModule,
+    TooltipModule,
+    ToastrModule.forRoot({ enableHtml: true })
+  ],
+  entryComponents: [ConfirmPopupComponent],
+  providers: [
+    HostService,
+    RestApiService,
+    RuleEngineApiService,
+    Store,
+    {
+      provide: APP_INITIALIZER,
+      useFactory: appInitializerFn,
+      multi: true,
+      deps: []
+    }
+  ],
+  bootstrap: [AppComponent]
+})
+export class AppModule {}
diff --git a/public/src/app/bar-icons/bar-icons.component.html b/public/src/app/bar-icons/bar-icons.component.html
new file mode 100644
index 0000000..03129bf
--- /dev/null
+++ b/public/src/app/bar-icons/bar-icons.component.html
@@ -0,0 +1,59 @@
+<div style="display: flex; position: relative; justify-content: flex-end;">
+  <div style="display: flex; justify-content: flex-end;" [class]="genrateBarTestId()">
+    <button mat-icon-button>
+      <span style="width: 100%;
+          height: 100%;
+          display: flex;
+          justify-content: center;
+          align-items: center;" [innerHTML]="'help-circle' | feather:18"></span>
+    </button>
+    <hr>
+
+    <div *ngIf="tabName.includes('map')" style="display: flex;">
+      <button mat-icon-button>
+        <span style="width: 100%;
+                height: 100%;
+                display: flex;
+                justify-content: center;
+                align-items: center;" [innerHTML]="'upload' | feather:18"></span>
+      </button>
+      <hr>
+
+      <button mat-icon-button>
+        <span style="width: 100%;
+                height: 100%;
+                display: flex;
+                justify-content: center;
+                align-items: center;" [innerHTML]="'download' | feather:18"></span>
+      </button>
+      <hr>
+    </div>
+
+    <button mat-icon-button (click)="enableSetting()" data-tests-id="setting-gear" [style.color]="this.store.expandAdvancedSetting[store.tabIndex] ? '#009FDB' : 'black'">
+      <span style="width: 100%;
+          height: 100%;
+          display: flex;
+          justify-content: center;
+          align-items: center;" [innerHTML]="'settings' | feather:18"></span>
+    </button>
+  </div>
+
+  <!-- advanced setting -->
+  <div class="setting" *ngIf="store.expandAdvancedSetting[store.tabIndex]">
+    <div *mobxAutorun style="width: 100%;" [class]="tabName+'-setting-list'">
+      <div style="font-size: 1.5em; padding: 0 12px;">{{tabName}} Advanced Setting</div>
+      <form #cdumpConfForm="ngForm">
+        <div *ngFor="let prop of store.configurationForm" class="field" [id]="prop.name">
+          <p class="field-label">{{prop.name}}</p>
+          <input *ngIf="!isPropertyDdl(prop)" type="text" name="{{prop.name}}" class="field-text" [(ngModel)]="prop.assignment.value"
+            (ngModelChange)="onChange($event)">
+          <select *ngIf="isPropertyDdl(prop)" class="field-text" name="{{prop.name}}" [(ngModel)]="prop.assignment.value" (ngModelChange)="onChange($event)">
+          <option *ngFor="let value of prop.constraints[0].valid_values" [value]="value">
+            {{value}}
+          </option>
+        </select>
+        </div>
+      </form>
+    </div>
+  </div>
+</div>
diff --git a/public/src/app/bar-icons/bar-icons.component.scss b/public/src/app/bar-icons/bar-icons.component.scss
new file mode 100644
index 0000000..893f757
--- /dev/null
+++ b/public/src/app/bar-icons/bar-icons.component.scss
@@ -0,0 +1,48 @@
+.setting {
+  position: absolute;
+  top: 47px;
+  right: 0;
+  background: white;
+  padding: 1em;
+  border: 1px solid gray;
+  display: flex;
+  min-width: 400px;
+  z-index: 2;
+  // width: 35%;
+}
+
+.target-field {
+  width: 370px;
+  display: flex;
+  align-items: center;
+  margin: 10px;
+  .field-label {
+    padding-right: 10px;
+  }
+  .required::before {
+    content: '*';
+    color: red;
+    padding-right: 5px;
+  }
+  .field-select {
+    flex: 1;
+    width: 100%;
+    min-width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+}
+
+.field {
+  margin: 1em;
+  .field-label {
+    padding-bottom: 0.5em;
+  }
+  .field-text {
+    flex: 1;
+    width: 100%;
+    min-width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+}
diff --git a/public/src/app/bar-icons/bar-icons.component.ts b/public/src/app/bar-icons/bar-icons.component.ts
new file mode 100644
index 0000000..adf4b88
--- /dev/null
+++ b/public/src/app/bar-icons/bar-icons.component.ts
@@ -0,0 +1,47 @@
+import { Component, Input, ViewChild } from '@angular/core';
+import { Store } from '../store/store';
+import { includes } from 'lodash';
+import { NgForm } from '@angular/forms';
+
+@Component({
+  selector: 'app-bar-icons',
+  templateUrl: './bar-icons.component.html',
+  styleUrls: ['./bar-icons.component.scss']
+})
+export class BarIconsComponent {
+  configuration;
+  @Input() tabName: string;
+  @ViewChild('cdumpConfForm') cdumpConfForm: NgForm;
+
+  constructor(public store: Store) {}
+
+  onChange(e) {
+    this.store.cdumpIsDirty = true;
+  }
+
+  isPropertyDdl(property) {
+    if (property.hasOwnProperty('constraints')) {
+      if (
+        includes(
+          property.constraints[0].valid_values,
+          property.assignment.value
+        )
+      ) {
+        return true;
+      } else {
+        return false;
+      }
+    } else {
+      return false;
+    }
+  }
+
+  genrateBarTestId() {
+    return `${this.tabName}-bar-icon-container`;
+  }
+
+  enableSetting() {
+    this.store.expandAdvancedSetting[this.store.tabIndex] = !this.store
+      .expandAdvancedSetting[this.store.tabIndex];
+  }
+}
diff --git a/public/src/app/diagram/diagram.component.html b/public/src/app/diagram/diagram.component.html
new file mode 100644
index 0000000..b3cb28a
--- /dev/null
+++ b/public/src/app/diagram/diagram.component.html
@@ -0,0 +1,19 @@
+<svg id="diagram" #diagram>
+  <svg viewBox="0 0 500 500" width="100%" height="500px" preserveAspectRatio="xMaxYMin meet" *ngFor="let item of list; let i = index">
+
+    <svg width="80px">
+      <text x="0" [attr.y]="45 * (i+1)">
+        {{item.source}}
+      </text>
+    </svg>
+
+    <circle cx="100" [attr.cy]="44 * (i+1)" r="5" />
+    <line x1="100" [attr.y1]="44 * (i+1)" [attr.x2]="maxWidth - 150" [attr.y2]="44 * (i+1)" stroke-width="2" stroke="black" stroke-dasharray="5, 5"
+      class="line" />
+    <circle [attr.cx]="maxWidth - 150" [attr.cy]="44 * (i+1)" r="5" />
+
+    <text [attr.x]="maxWidth - 130" [attr.y]="45 * (i+1)">
+      {{item.target}}
+    </text>
+  </svg>
+</svg>
diff --git a/public/src/app/diagram/diagram.component.scss b/public/src/app/diagram/diagram.component.scss
new file mode 100644
index 0000000..57437d8
--- /dev/null
+++ b/public/src/app/diagram/diagram.component.scss
@@ -0,0 +1,28 @@
+svg {
+  height: 400px;
+  width: 100%;
+  margin: auto;
+  display: block;
+  .line {
+    stroke-dasharray: 1400;
+    animation: draw 5s ease-in;
+  }
+}
+
+@keyframes draw {
+  from {
+    stroke-dashoffset: -1400;
+  }
+  to {
+    stroke-dashoffset: 0;
+  }
+}
+
+@keyframes dude {
+  0% {
+    width: 0;
+  }
+  100% {
+    width: 100%;
+  }
+}
diff --git a/public/src/app/diagram/diagram.component.spec.ts b/public/src/app/diagram/diagram.component.spec.ts
new file mode 100644
index 0000000..535f280
--- /dev/null
+++ b/public/src/app/diagram/diagram.component.spec.ts
@@ -0,0 +1,26 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DiagramComponent } from './diagram.component';
+
+describe('DiagramComponent', () => {
+  let component: DiagramComponent;
+  let fixture: ComponentFixture<DiagramComponent>;
+
+  beforeEach(
+    async(() => {
+      TestBed.configureTestingModule({
+        declarations: [DiagramComponent]
+      }).compileComponents();
+    })
+  );
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(DiagramComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/public/src/app/diagram/diagram.component.ts b/public/src/app/diagram/diagram.component.ts
new file mode 100644
index 0000000..a0ae3a1
--- /dev/null
+++ b/public/src/app/diagram/diagram.component.ts
@@ -0,0 +1,12 @@
+import { Component, Input } from '@angular/core';
+
+@Component({
+  selector: 'app-diagram',
+  templateUrl: './diagram.component.html',
+  styleUrls: ['./diagram.component.scss']
+})
+export class DiagramComponent {
+  @Input() list;
+  maxWidth: number = 500;
+  constructor() {}
+}
diff --git a/public/src/app/error-dialog/error-dialog.component.html b/public/src/app/error-dialog/error-dialog.component.html
new file mode 100644
index 0000000..7b72d06
--- /dev/null
+++ b/public/src/app/error-dialog/error-dialog.component.html
@@ -0,0 +1,17 @@
+<p-dialog [(visible)]="store.displayErrorDialog" modal="modal" width="500" [responsive]="true" data-tests-id="error-dialog">
+  <p-header>
+    <span style="font-size: 1.3em;">
+      Error
+    </span>
+  </p-header>
+
+  <div *ngFor="let error of store.ErrorContent">
+    {{ error.formattedErrorMessage }}
+  </div>
+
+  <p-footer>
+    <button mat-raised-button color="primary" (click)="closeDialog()" data-tests-id="error-cancel">
+      Cancel
+    </button>
+  </p-footer>
+</p-dialog>
diff --git a/public/src/app/error-dialog/error-dialog.component.scss b/public/src/app/error-dialog/error-dialog.component.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/src/app/error-dialog/error-dialog.component.scss
diff --git a/public/src/app/error-dialog/error-dialog.component.ts b/public/src/app/error-dialog/error-dialog.component.ts
new file mode 100644
index 0000000..3e7bfe0
--- /dev/null
+++ b/public/src/app/error-dialog/error-dialog.component.ts
@@ -0,0 +1,17 @@
+import { Component, OnInit } from '@angular/core';
+import { Store } from '../store/store';
+
+@Component({
+  selector: 'app-error-dialog',
+  templateUrl: './error-dialog.component.html',
+  styleUrls: ['./error-dialog.component.scss']
+})
+export class ErrorDialogComponent implements OnInit {
+  constructor(public store: Store) {}
+
+  ngOnInit() {}
+
+  closeDialog() {
+    this.store.displayErrorDialog = false;
+  }
+}
diff --git a/public/src/app/general/general.component.html b/public/src/app/general/general.component.html
new file mode 100644
index 0000000..dcea57a
--- /dev/null
+++ b/public/src/app/general/general.component.html
@@ -0,0 +1,83 @@
+<form #generalForm="ngForm" novalidate style="display: flex; margin: 1em;">
+  <div class="left">
+
+    <div class="import-wrapper" style="display: flex" *ngIf="store.generalflow === 'import' && !importCompleted">
+      <div class="field" style="width:70%">
+        <div class="field-label required" style="display: flex;">
+          <span>Select existing VFCMT</span>
+        </div>
+        <ng-select name="vfcmt" [items]="vfcmts" required [virtualScroll]="true" placeholder="Select VFCMT" [(ngModel)]="selectedVfcmt"
+          class="vfcmt-list" (change)="vfcmtChange($event)">
+        </ng-select>
+      </div>
+
+      <div class="field" style="width:30%">
+        <div class="field-label required" style="display: flex;">
+          <span>Select version</span>
+        </div>
+        <select name="version" required data-tests-id="vfcmtVersion" [(ngModel)]="selectedVersion" [style.background]="versions.length == 0 ? '#ebebe4' : 'white'"
+          (ngModelChange)="versionChange($event)" [disabled]="versions.length == 0" style="width: 100%; height: 30px;">
+          <option [ngValue]="null" disabled>Select version</option>
+          <option *ngFor="let item of versions" [value]="item.version">{{item.version}}</option>
+        </select>
+      </div>
+    </div>
+
+    <div class="field">
+      <div class="field-label required">Name</div>
+      <input type="text" name="name" ngModel required [(ngModel)]="newVfcmt.name" class="field-text" [disabled]="this.store.isEditMode || disableName"
+        data-tests-id="nameMc" />
+    </div>
+
+    <div class="field">
+      <div class="field-label required">Description</div>
+      <textarea required name="description" ngModel [(ngModel)]="newVfcmt.description" style="resize: none;" cols="30" rows="10"
+        class="field-text" data-tests-id="descMc" [disabled]="this.store.isEditMode || disableDescription"></textarea>
+    </div>
+
+    <div class="field" *ngIf="store.generalflow === 'new'">
+      <div class="field-label required" style="display: flex;">
+        <span>Template</span>
+        <span style="padding-left: 5px;" [innerHTML]="'help-circle' | feather:14"></span>
+      </div>
+      <select name="template" [disabled]="this.store.isEditMode" required [(ngModel)]="newVfcmt.template" (ngModelChange)="onChangeTemplate($event)"
+        data-tests-id="templateDdl" class="field-text" [style.background]="this.store.isEditMode ? '#ebebe4' : 'white'">
+        <option [ngValue]="null" disabled>Select template</option>
+        <option *ngFor="let template of templates" [value]="template.uuid" data-tests-id="templateOptions">{{template.name}}</option>
+      </select>
+    </div>
+
+    <div class="field" *ngIf="store.generalflow === 'import' || store.generalflow === 'edit'">
+      <div class="field-label required" style="display: flex;">
+        <span>Flow type</span>
+        <span style="padding-left: 5px;" [innerHTML]="'help-circle' | feather:14"></span>
+      </div>
+      <select name="flowType" [disabled]="this.store.isEditMode || disableFlowType" required [(ngModel)]="newVfcmt.flowType" data-tests-id="flowTypeDdl"
+        class="field-text" [style.background]="this.store.isEditMode || disableFlowType ? '#ebebe4' : 'white'">
+        <option [ngValue]="null" disabled>Select Flow Type</option>
+        <option *ngFor="let flowType of flowTypes" [value]="flowType" data-tests-id="flowTypeOptions">{{flowType}}</option>
+      </select>
+    </div>
+
+    <div class="field">
+      <div class="field-label required" style="display: flex;">
+        <span>Attached to</span>
+        <span style="padding-left: 5px;" [innerHTML]="'help-circle' | feather:14"></span>
+      </div>
+      <select name="serviceAttached" [disabled]="this.store.isEditMode || disableVnfiList" required [(ngModel)]="newVfcmt.vfni"
+        data-tests-id="vfniDdl" (ngModelChange)="onChangeVfni($event)" class="field-text" [style.background]="this.store.isEditMode || disableVnfiList ? '#ebebe4' : 'white'">
+        <option [ngValue]="null" disabled>Select VFNI</option>
+        <option *ngFor="let vfi of vfniList" [value]="vfi.resourceInstanceName">{{vfi.resourceInstanceName}}</option>
+      </select>
+    </div>
+  </div>
+
+  <div class="right">
+    <div style="padding: 0.7em 0.5em; padding-top: 1em; font-weight: 600;">Flow diagram</div>
+    <div>
+      <app-diagram [list]="list"></app-diagram>
+      <!-- <img style="width:100%; height:100%;" src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Romania.svg/1200px-Flag_of_Romania.svg.png"
+        alt="flow"> -->
+    </div>
+  </div>
+</form>
diff --git a/public/src/app/general/general.component.scss b/public/src/app/general/general.component.scss
new file mode 100644
index 0000000..d76e1ae
--- /dev/null
+++ b/public/src/app/general/general.component.scss
@@ -0,0 +1,38 @@
+.left,
+.right {
+  width: 50%;
+}
+
+.ng-select.ng-single .ng-control {
+  border-radius: 0;
+  height: 30px;
+  min-height: 30px;
+}
+
+.toast-container .toast {
+  width: 400px !important;
+  box-shadow: none;
+  border-radius: 0;
+}
+.toast-container .toast:hover {
+  box-shadow: none;
+}
+
+.field {
+  margin: 1em;
+  .field-label {
+    padding-bottom: 0.5em;
+  }
+  .required::before {
+    content: '*';
+    color: red;
+    padding-right: 5px;
+  }
+  .field-text {
+    flex: 1;
+    width: 100%;
+    min-width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+}
diff --git a/public/src/app/general/general.component.spec.ts b/public/src/app/general/general.component.spec.ts
new file mode 100644
index 0000000..fb761db
--- /dev/null
+++ b/public/src/app/general/general.component.spec.ts
@@ -0,0 +1,55 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { GeneralComponent, groupingData } from './general.component';
+import { sortBy } from 'lodash';
+
+const data = [
+  {
+    name: 'avi',
+    version: '2.0'
+  },
+  {
+    name: 'stone',
+    version: '0.9'
+  },
+  {
+    name: 'avi',
+    version: '2.1'
+  },
+  {
+    name: 'vosk',
+    version: '0.1'
+  },
+  {
+    name: 'liav',
+    version: '0.5'
+  }
+];
+const sortedMatchVfcmtList = ['avi', 'liav', 'stone', 'vosk'];
+const sortedVersionInGroup = [
+  {
+    name: 'avi',
+    version: '2.1'
+  },
+  {
+    name: 'avi',
+    version: '2.0'
+  }
+];
+
+describe('GeneralComponent', () => {
+  it('should sort vfcmt by A to Z', () => {
+    const sorted = groupingData(data);
+    const vfcmtList = sortBy(Object.keys(sorted), name => name);
+    expect(vfcmtList).toEqual(sortedMatchVfcmtList);
+  });
+
+  it('should group vfcmt by name', () => {
+    const sorted = groupingData(data);
+    expect(Object.keys(sorted)).toEqual(['avi', 'stone', 'vosk', 'liav']);
+  });
+
+  it('should version array be sorted in group', () => {
+    const sorted = groupingData(data);
+    expect(Object.values(sorted)[0]).toEqual(sortedVersionInGroup);
+  });
+});
diff --git a/public/src/app/general/general.component.ts b/public/src/app/general/general.component.ts
new file mode 100644
index 0000000..422d834
--- /dev/null
+++ b/public/src/app/general/general.component.ts
@@ -0,0 +1,323 @@
+import {
+  Component,
+  OnInit,
+  ViewChild,
+  ViewEncapsulation,
+  Output,
+  EventEmitter
+} from '@angular/core';
+import { RestApiService } from '../api/rest-api.service';
+import { ActivatedRoute } from '@angular/router';
+import { Store } from '../store/store';
+import { NgForm } from '@angular/forms';
+import { forkJoin } from 'rxjs/observable/forkJoin';
+import {
+  pipe,
+  groupBy,
+  map,
+  sort,
+  descend,
+  ascend,
+  prop,
+  find,
+  propEq,
+  findIndex
+} from 'ramda';
+import { sortBy, forEach } from 'lodash';
+import { ToastrService } from 'ngx-toastr';
+
+export const groupingData = pipe(
+  groupBy(prop('name')),
+  map(sort(descend(prop('version'))))
+);
+
+@Component({
+  selector: 'app-general',
+  encapsulation: ViewEncapsulation.None,
+  templateUrl: './general.component.html',
+  styleUrls: ['./general.component.scss']
+})
+export class GeneralComponent implements OnInit {
+  newVfcmt = {
+    name: null,
+    description: null,
+    template: null,
+    flowType: null,
+    vfni: null,
+    isCloneVFCMT: false,
+    isUpdateFlowType: false
+  };
+  isLatestVersion = true;
+  vfniList = [];
+  templates = [];
+  serviceUUID: string;
+  vfcmts = new Array();
+  versions = new Array();
+  result = new Array();
+  flowTypes = new Array();
+  selectedVfcmt;
+  selectedVersion = null;
+  importCompleted = false;
+  disableName = false;
+  disableDescription = false;
+  disableFlowType = false;
+  disableVnfiList = false;
+  @Output() updateCdumpEv = new EventEmitter<string>();
+  @ViewChild('generalForm') generalForm;
+  // list = [
+  //   { source: 'node1dsvsdsvd', target: 'node2' },
+  //   { source: 'node3', target: 'node4' },
+  //   { source: 'node5', target: 'nodedsvsds6' },
+  //   { source: 'node7', target: 'node8' }
+  // ];
+  list = [];
+
+  constructor(
+    private restApi: RestApiService,
+    public store: Store,
+    private toastr: ToastrService,
+    private route: ActivatedRoute
+  ) {
+    console.log('route mcid: ', this.route.snapshot.params.mcid);
+    if (
+      this.route.snapshot.params.mcid === 'import' ||
+      this.route.snapshot.params.mcid === 'new'
+    ) {
+      this.store.generalflow = this.route.snapshot.params.mcid;
+    } else {
+      this.store.generalflow = 'edit';
+      this.store.mcUuid = this.route.snapshot.params.mcid;
+    }
+    this.serviceUUID = this.route.snapshot.params.uuid;
+  }
+
+  onChangeTemplate(template) {
+    console.log('flow template', template);
+  }
+  onChangeVfni(vfni) {
+    console.log('vfni', vfni);
+  }
+  vfcmtChange(vfcmtName) {
+    vfcmtName !== undefined
+      ? (this.versions = this.result[vfcmtName])
+      : ((this.versions = []), this.restForm());
+    this.store.isEditMode = true;
+    this.selectedVersion = null;
+  }
+  versionChange(version) {
+    const versionIndex = findIndex(propEq('version', version))(this.versions);
+    this.isLatestVersion = versionIndex === 0 ? true : false;
+    const selectedVfcmtByVersion = find(
+      propEq('version', version),
+      this.result[this.selectedVfcmt]
+    );
+    this.newVfcmt.template = selectedVfcmtByVersion.uuid;
+    this.restApi.getVfcmtReferenceData(selectedVfcmtByVersion.uuid).subscribe(
+      success => {
+        this.store.loader = false;
+        console.log('vfcmt ref data:', success);
+        this.store.isEditMode = false;
+        this.getServiceRef(success);
+      },
+      error => {
+        this.notifyError(error);
+      },
+      () => {
+        this.store.loader = false;
+      }
+    );
+  }
+  private notifyError(error: any) {
+    this.store.loader = false;
+    console.log(error.notes);
+    this.store.ErrorContent = Object.values(error.requestError);
+    this.store.displayErrorDialog = true;
+  }
+
+  ngOnInit() {
+    if (this.store.generalflow === 'edit') {
+      this.store.loader = true;
+      this.restApi
+        .getCompositionMonitoringComponent(this.store.mcUuid)
+        .subscribe(
+          response => {
+            this.newVfcmt = response.vfcmt;
+            this.flowTypes.push(this.newVfcmt.flowType);
+            this.newVfcmt.vfni = this.store.vfiName;
+            this.vfniList.push({ resourceInstanceName: this.newVfcmt.vfni });
+            // this.store.cdump = response.cdump;
+            this.updateCdumpEv.next(response.cdump);
+            this.store.isEditMode = true;
+            this.store.loader = false;
+          },
+          error => {
+            this.notifyError(error);
+          }
+        );
+    } else if (this.store.generalflow === 'import') {
+      this.store.loader = true;
+      this.store.isEditMode = true;
+      this.restApi
+        .getVfcmtsForMigration({
+          contextType: this.route.snapshot.params.contextType,
+          uuid: this.route.snapshot.params.uuid,
+          version: this.route.snapshot.params.version
+        })
+        .subscribe(
+          success => {
+            this.store.loader = false;
+            this.result = groupingData(success);
+            this.vfcmts = sortBy(Object.keys(this.result), name => name);
+          },
+          error => {
+            this.notifyError(error);
+          },
+          () => {
+            this.store.loader = false;
+          }
+        );
+    } else if (this.route.snapshot.params.mcid === 'new') {
+      // get template data for ddl
+      const template$ = this.restApi.getTemplateResources();
+      // get service vfi list for ddl '08ff91f1-9b57-4918-998b-4d2c98832815'
+      const vfniList$ = this.restApi.getServiceInstances(this.serviceUUID);
+      this.store.loader = true;
+      forkJoin(template$, vfniList$).subscribe(
+        success => {
+          console.log('all', success);
+          this.templates = success[0];
+          this.vfniList = success[1].resources;
+        },
+        error => {
+          this.notifyError(error);
+        },
+        () => {
+          this.store.loader = false;
+        }
+      );
+    }
+  }
+
+  private restForm() {
+    this.newVfcmt = {
+      name: null,
+      description: null,
+      template: null,
+      flowType: null,
+      vfni: null,
+      isCloneVFCMT: false,
+      isUpdateFlowType: false
+    };
+    const controls = this.generalForm.controls;
+    forEach(controls, control => {
+      control.markAsUntouched();
+    });
+  }
+
+  private getServiceRef(data) {
+    if (data.flowType !== undefined) {
+      if (data.serviceUuid === this.serviceUUID) {
+        this.newVfcmt.name = data.name;
+        this.newVfcmt.description = data.description;
+        this.disableName = true;
+        this.disableDescription = true;
+        this.setFlowType(data); // true
+        this.setVfni(data);
+        this.newVfcmt.isCloneVFCMT = false;
+      } else {
+        this.isCloneVfcmtToast();
+        this.setFlowType(data); // true
+        this.setVfni(data);
+        this.newVfcmt.isCloneVFCMT = true;
+      }
+    } else {
+      if (data.serviceUuid === this.serviceUUID && this.isLatestVersion) {
+        this.newVfcmt.name = data.name;
+        this.newVfcmt.description = data.description;
+        this.disableName = true;
+        this.disableDescription = true;
+        this.newVfcmt.isCloneVFCMT = false;
+        this.setFlowType(data); // true
+        this.setVfni(data);
+      } else {
+        this.isCloneVfcmtToast();
+        this.setFlowType(data); // true
+        this.setVfni(data);
+        this.newVfcmt.isCloneVFCMT = true;
+      }
+    }
+  }
+
+  private isCloneVfcmtToast() {
+    this.toastr.warning(
+      `<h3>The monitoring configuration is copied.</h3>
+        <div>
+          The selected VFCMT is assigned to a different
+        </div>
+        <div>
+          service or has a newer version.
+        </div>
+      `,
+      '',
+      {
+        enableHtml: true,
+        // disableTimeOut: true
+        timeOut: 10000
+      }
+    );
+  }
+
+  private setVfni(data: any) {
+    if (data.serviceUuid !== this.serviceUUID) {
+      this.getVfniList();
+      this.disableVnfiList = false;
+    } else {
+      this.disableVnfiList = true;
+      this.vfniList.push({ resourceInstanceName: data.vfiName });
+      this.newVfcmt.vfni = data.vfiName;
+    }
+  }
+
+  private setFlowType(data: any) {
+    if (data.flowType === undefined) {
+      this.newVfcmt.isUpdateFlowType = true;
+      this.disableFlowType = false;
+      this.getFlowTypeList();
+    } else {
+      this.newVfcmt.isUpdateFlowType = false;
+      this.disableFlowType = true;
+      this.flowTypes.push(data.flowType);
+      this.newVfcmt.flowType = data.flowType;
+    }
+  }
+
+  private getFlowTypeList() {
+    this.restApi.getFlowType().subscribe(
+      success => {
+        console.log('flow types', success.flowTypes);
+        this.flowTypes = success.flowTypes;
+      },
+      error => {
+        this.notifyError(error);
+      },
+      () => {
+        this.store.loader = false;
+      }
+    );
+  }
+  private getVfniList() {
+    this.restApi.getServiceInstances(this.serviceUUID).subscribe(
+      success => {
+        console.log('vfni List', success);
+        this.vfniList = success.resources;
+      },
+      error => {
+        this.notifyError(error);
+        return null;
+      },
+      () => {
+        this.store.loader = false;
+      }
+    );
+  }
+}
diff --git a/public/src/app/home/home.component.html b/public/src/app/home/home.component.html
new file mode 100644
index 0000000..90e82d3
--- /dev/null
+++ b/public/src/app/home/home.component.html
@@ -0,0 +1,106 @@
+<div class="container">
+  <div style="display: flex;
+    justify-content: space-between;">
+    <div style="font-size: 1.7em; display: flex; align-items: center;">Monitoring</div>
+
+    <div style="display: flex;">
+      <button mat-icon-button [disabled]="checkCanCreate()" (click)="importScreen()">
+        <span style="width: 100%;
+                  height: 100%;
+                  display: flex;
+                  justify-content: center;
+                  align-items: center;" [innerHTML]="'download' | feather:22"></span>
+      </button>
+
+      <button mat-raised-button color="primary" (click)="createScreen()" data-tests-id="btn-create-mc" [disabled]="checkCanCreate()">
+        Create New MC
+      </button>
+    </div>
+  </div>
+
+  <div *ngIf="showTable===true; then thenBlock else elseBlock"></div>
+
+  <ng-template #thenBlock>
+    <!-- Table -->
+    <div class="table-wrapper">
+      <div *ngIf="unavailableMonitoringComponents.length > 0" data-tests-id="unavailableArea" style="color: white; background: red; padding: 1rem; border-radius: 5px; font-weight: bold; margin: 1em 0;">
+        <div *ngFor="let item of unavailableMonitoringComponents">
+          {{item.uuid}}
+        </div>
+      </div>
+      <table class="mcTable">
+        <thead>
+          <tr data-tests-id="monitoringComponentTableHeaders">
+            <th>Monitoring Configuration</th>
+            <th>VNFI Name</th>
+            <th style="width:90px;">Version</th>
+            <th style="width:140px;">Status</th>
+            <th style="width:140px;">Last Updated by</th>
+            <th style="width:96px;">Action</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr *ngFor="let item of monitoringComponents; let i = index" on-mouseleave="hoveredIndex=null" (click)="onSelect(i)" [class.active]="i == selectedLine"
+            data-tests-id="monitoringComponentTableItems" on-mouseover="hoveredIndex=i">
+            <td color="blue">
+              <div [hidden]="checkHoverCondition(item)" data-tests-id="tableItemsMonitoringConfiguration" class="table-Monitoring-Component" (click)="editItem(item)">
+                {{item.name}}
+              </div>
+            </td>
+            <td>
+              <span pTooltip="{{item.vfiName}}" tooltipPosition="bottom" style="padding:5px;">{{item.vfiName}}</span>
+            </td>
+            <td style="width:90px;">{{item.version}}</td>
+            <td style="width:140px;">{{item.status}}</td>
+            <td style="width:140px;">{{item.lastUpdaterUserId}}</td>
+            <td style="width:80px;">
+              <div *ngIf="i==hoveredIndex" [hidden]="checkHoverCondition(item)">
+                <button mat-icon-button data-tests-id="tableItemsButtonDelete" (click)="deleteItem(item)" style="width:30px; height: 30px;">
+                  <span style="width: 100%;
+                              height: 100%;
+                              display: flex;
+                              justify-content: center;
+                              align-items: center;" [innerHTML]="'trash-2' | feather:18"></span>
+                </button>
+              </div>
+              <div *ngIf="i==hoveredIndex" [hidden]="!checkHoverCondition(item)">
+                <button mat-icon-button data-tests-id="tableItemsButtonInfo" style="width:30px; height: 30px;">
+                  <span style="width: 100%;
+                              height: 100%;
+                              display: flex;
+                              justify-content: center;
+                              align-items: center;" [innerHTML]="'info' | feather:18"></span>
+                </button>
+              </div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </ng-template>
+
+  <ng-template #elseBlock>
+    <div style="display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  flex:1;">
+      <div style="font-size: 1.5em;">
+        Monitoring Configuration does not Exist
+      </div>
+      <div style="padding: 0.5em; padding-top: 1em;" data-tests-id="new-monitoring-title">
+        A Monitoring Configuration (MC) was not yet created
+      </div>
+      <div>
+        Please create a new MC to monitor the service
+      </div>
+      <div class="wrapper-btn-add-mc">
+        <button mat-mini-fab color="primary" (click)="createScreen()" data-tests-id="btn-fab-create-mc" [disabled]="checkCanCreate()">
+          <span [innerHTML]="'plus' | feather:24"></span>
+        </button>
+        <span data-tests-id="btn-span-create-mc" style="margin-top: 1rem; font-size: 1.2em; font-weight: 400;" [style.color]="checkCanCreate() ? '#ebebe4' : '#009FDB'">Add First MC</span>
+      </div>
+    </div>
+  </ng-template>
+</div>
+
diff --git a/public/src/app/home/home.component.scss b/public/src/app/home/home.component.scss
new file mode 100644
index 0000000..583705f
--- /dev/null
+++ b/public/src/app/home/home.component.scss
@@ -0,0 +1,110 @@
+.container {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+  padding: 0.5em;
+  margin-left: 15px;
+  margin-right: 15px;
+  .wrapper-btn-add-mc {
+    margin-top: 3em;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+  }
+}
+
+.table-Monitoring-Component {
+  &:hover {
+    color: #009fdb;
+    text-decoration: underline;
+    cursor: pointer;
+  }
+}
+
+.table-wrapper {
+  display: flex;
+  justify-content: center;
+  flex: 1;
+  margin-bottom: 2em;
+  flex-direction: column;
+  display: block;
+}
+
+table.mcTable {
+  display: flex;
+  flex-flow: column;
+  height: calc(100vh - 150px);
+  width: 100%;
+  background-color: #ffffff;
+  color: #5a5a5a;
+}
+table.mcTable thead {
+  /* head takes the height it requires,
+  and it's not scaled when table.mcTable is resized */
+  flex: 0 0 auto;
+  // width: calc(100% - 17px);
+  width: 100%;
+}
+table.mcTable tbody {
+  /* body takes all the remaining available space */
+  flex: 1 1 auto;
+  display: block;
+  overflow-y: scroll;
+}
+table.mcTable tbody tr {
+  width: 100%;
+}
+
+table.mcTable thead,
+table.mcTable tbody tr {
+  display: table;
+  table-layout: fixed;
+}
+
+table.mcTable {
+  border-collapse: collapse;
+  border-spacing: 0px;
+}
+
+table.mcTable tr.active td {
+  background-color: #e6f6fb !important;
+  color: #5a5a5a;
+}
+
+table.mcTable th {
+  background: #f4f4f4;
+  color: #191919;
+  text-align: left;
+}
+
+table.mcTable tr {
+  &:hover {
+    background-color: #f8f8f8;
+    color: #5a5a5a;
+  }
+}
+
+table.mcTable table,
+table.mcTable th,
+table.mcTable td {
+  padding: 5px 10px;
+  border: 0.5px solid #d2d2d2;
+  border-bottom: none;
+  height: 40px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+}
+
+table.mcTable tr:last-child {
+  border-bottom: 0.5px solid #d2d2d2;
+}
+
+/deep/ .ui-tooltip .ui-tooltip-text {
+  font-size: 0.8em;
+  padding: 0.7em;
+}
+
+/deep/ .ui-tooltip {
+  max-width: 400px;
+}
diff --git a/public/src/app/home/home.component.ts b/public/src/app/home/home.component.ts
new file mode 100644
index 0000000..1c538c0
--- /dev/null
+++ b/public/src/app/home/home.component.ts
@@ -0,0 +1,188 @@
+import { Component } from '@angular/core';
+import { Store } from '../store/store';
+import { HostService } from '../host/host.service';
+import { ActivatedRoute, Router } from '@angular/router';
+import { RestApiService } from '../api/rest-api.service';
+import { NgIf } from '@angular/common';
+import { ConfirmPopupComponent } from '../rule-engine/confirm-popup/confirm-popup.component';
+import { MatDialog } from '@angular/material';
+import { ToastrService } from 'ngx-toastr';
+import { ChangeDetectorRef } from '@angular/core';
+
+@Component({
+  selector: 'app-home',
+  templateUrl: './home.component.html',
+  styleUrls: ['./home.component.scss']
+})
+export class HomeComponent {
+  linkToMain: string;
+  currentUserId: string;
+  showTable = true;
+  selectedLine;
+  monitoringComponents = new Array();
+  unavailableMonitoringComponents = new Array();
+  hoveredIndex = null;
+  dialogRef;
+
+  constructor(
+    private activeRoute: ActivatedRoute,
+    private route: Router,
+    private _restApi: RestApiService,
+    private dialog: MatDialog,
+    public store: Store,
+    private toastr: ToastrService,
+    private changeDetectorRef: ChangeDetectorRef
+  ) {
+    this.store.loader = true;
+    this.activeRoute.queryParams.subscribe(params => {
+      console.log('params: %o', params);
+      this.store.sdcParmas = params;
+      this.linkToMain = `/main/${params.contextType}/${params.uuid}/${
+        params.version
+      }/`;
+      this._restApi.getMonitoringComponents(params).subscribe(
+        response => {
+          console.log('response:  ', response);
+          if (response.hasOwnProperty('monitoringComponents')) {
+            this.monitoringComponents = response.monitoringComponents;
+          }
+          if (response.hasOwnProperty('unavailable')) {
+            this.unavailableMonitoringComponents = response.unavailable;
+          }
+          this.showTable = this.monitoringComponents.length > 0;
+          this.store.loader = false;
+        },
+        response => {
+          this.showTable = false;
+          this.store.loader = false;
+          console.log('ERROR: ', response);
+        }
+      );
+      HostService.disableLoader();
+    });
+  }
+
+  createScreen() {
+    this.store.isEditMode = false;
+    this.route.navigate([this.linkToMain + 'new']);
+  }
+
+  importScreen() {
+    this.store.isEditMode = false;
+    this.route.navigate([this.linkToMain + 'import']);
+  }
+
+  checkCanCreate() {
+    if (
+      JSON.parse(this.store.sdcParmas.isOwner) &&
+      this.store.sdcParmas.lifecycleState === 'NOT_CERTIFIED_CHECKOUT'
+    ) {
+      return false;
+    } else {
+      return true;
+    }
+  }
+
+  checkHoverCondition(item: any): boolean {
+    if (
+      this.store.sdcParmas.userId === item.lastUpdaterUserId &&
+      this.store.sdcParmas.lifecycleState === 'NOT_CERTIFIED_CHECKOUT'
+    ) {
+      return false;
+    } else {
+      return true;
+    }
+  }
+
+  editItem(item: any): void {
+    this.store.vfiName = item.vfiName;
+    this.route.navigate([this.linkToMain + '/' + item.uuid]);
+  }
+
+  onSelect(item: any): void {
+    this.selectedLine = item;
+    console.log('selected : ', item);
+  }
+
+  deleteEnable(item: any): boolean {
+    console.log(
+      'delete enable: ',
+      item.isOwner && item.Lifecycle == 'NOT_CERTIFIED_CHECKOUT'
+    );
+    const { userId, lifecycleState } = this.store.sdcParmas;
+    return (
+      item.lastUpdaterUserId == userId &&
+      lifecycleState == 'NOT_CERTIFIED_CHECKOUT'
+    );
+  }
+
+  deleteItem(item: any): void {
+    let deleteRow = this.hoveredIndex;
+    this.dialogRef = this.dialog.open(ConfirmPopupComponent, {
+      panelClass: 'my-confrim-dialog',
+      disableClose: true
+    });
+    this.dialogRef.afterClosed().subscribe(result => {
+      // if the user want to delete
+      if (result) {
+        if (item.status == 'submitted') {
+          this._restApi
+            .deleteMonitoringComponentWithBlueprint(
+              this.store.sdcParmas,
+              item.name,
+              item.uuid,
+              item.vfiName
+            )
+            .subscribe(
+              response => {
+                this.itemDeletedRemoveAndNotify(deleteRow);
+              },
+              error => {
+                if (error.messageId === 'SVC6118') {
+                  this.monitoringComponents.splice(deleteRow, 1);
+                  this.changeDetectorRef.detectChanges();
+                }
+                const errorMsg = Object.values(error.requestError) as any;
+                this.toastr.error('', errorMsg[0]);
+              }
+            );
+        } else {
+          this._restApi
+            .deleteMonitoringComponent(
+              this.store.sdcParmas,
+              item.uuid,
+              item.vfiName
+            )
+            .subscribe(
+              response => {
+                this.itemDeletedRemoveAndNotify(deleteRow);
+              },
+              error => {
+                const errorMsg = Object.values(error.requestError) as any;
+                this.toastr.error('', errorMsg[0]);
+              }
+            );
+        }
+      }
+    });
+  }
+
+  itemDeletedRemoveAndNotify(deletedRow: number): void {
+    this.monitoringComponents.splice(deletedRow, 1);
+    this.changeDetectorRef.detectChanges();
+    this.toastr.success(
+      '',
+      'Monitoring Configuration was successfully deleted'
+    );
+  }
+
+  // convertFile(fileInput: any) {
+  //   // read file from input
+  //   const fileReaded = fileInput.target.files[0];
+  //   Papa.parse(fileReaded, {
+  //     complete: function(results) {
+  //       console.log('Finished:', results.data);
+  //     }
+  //   });
+  // }
+}
diff --git a/public/src/app/host/host.service.ts b/public/src/app/host/host.service.ts
new file mode 100644
index 0000000..31c4746
--- /dev/null
+++ b/public/src/app/host/host.service.ts
@@ -0,0 +1,44 @@
+import { Injectable } from '@angular/core';
+
+interface HostParams {
+  readonly userId: string;
+  readonly contextType: string;
+  readonly vfcmtUuid: string;
+  readonly lifecycleState: string;
+  readonly isOwner: string;
+}
+
+@Injectable()
+export class HostService {
+  /* Public Members */
+  public static getParams(): HostParams {
+    return this.getQueryParamsObj(window.location.hash) as HostParams;
+  }
+
+  public static disableLoader(): void {
+    this.postMessage('READY', null);
+  }
+
+  /* Private Methods */
+  private static postMessage(eventName: string, data: string): void {
+    window.parent.postMessage(
+      {
+        type: eventName,
+        data: data
+      },
+      '*'
+    );
+  }
+
+  private static getQueryParamsObj(query: string): object {
+    return query
+      .substring(7) // removes '?' that always appears as prefix to the query-string
+      .split('&') // splits query-string to "key=value" strings
+      .map(p => p.split('=')) // splits each "key=value" string to [key,value] array
+      .reduce((res, p) => {
+        // converts to a dictionary (object) of params
+        res[p[0]] = p[1];
+        return res;
+      }, {});
+  }
+}
diff --git a/public/src/app/loader/loader.component.html b/public/src/app/loader/loader.component.html
new file mode 100644
index 0000000..55a8f4c
--- /dev/null
+++ b/public/src/app/loader/loader.component.html
@@ -0,0 +1,4 @@
+<!-- loader -->
+<div class="tlv-loader-block">
+</div>
+<div class="tlv-loader large" style="z-index: 10002;" data-tests-id="loader"></div>
diff --git a/public/src/app/loader/loader.component.scss b/public/src/app/loader/loader.component.scss
new file mode 100644
index 0000000..621adba
--- /dev/null
+++ b/public/src/app/loader/loader.component.scss
@@ -0,0 +1,152 @@
+.tlv-loader-block {
+  background-color: #ffffff;
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 9999;
+  opacity: 0.5;
+}
+
+.tlv-loader {
+  height: 63px;
+  width: 63px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+}
+
+.tlv-loader.small {
+  -webkit-transform: scale(0.26);
+  transform: scale(0.26);
+  margin-top: -36.5px;
+  margin-left: -36.5px;
+}
+
+.tlv-loader.medium {
+  -webkit-transform: scale(0.5);
+  transform: scale(0.5);
+  margin-top: -26.5px;
+  margin-left: -26.5px;
+}
+
+.tlv-loader.large {
+  -webkit-transform: scale(1);
+  transform: scale(1);
+  margin-top: -10.5px;
+  margin-left: -10.5px;
+}
+
+.tlv-loader::before {
+  background-color: #eaeaea;
+  border-radius: 50%;
+  box-shadow: 21px 21px 0px 0px #eaeaea, 0px 42px 0px 0px #eaeaea,
+    -21px 21px 0px 0px #eaeaea;
+  content: '';
+  display: block;
+  height: 21px;
+  width: 21px;
+  position: absolute;
+  left: 50%;
+  margin-left: -10.5px;
+}
+
+.tlv-loader::after {
+  border-radius: 50%;
+  content: '';
+  display: block;
+  position: absolute;
+  height: 21px;
+  width: 21px;
+  -webkit-animation: dot-move 4.5s infinite ease-in;
+  animation: dot-move 4.5s infinite ease-in;
+}
+
+@keyframes dot-move {
+  0% {
+    background-color: #3bb2df;
+    left: 21px;
+    top: 0;
+  }
+  6.25% {
+    background-color: #3bb2df;
+    left: 42px;
+    top: 21px;
+  }
+  12.5% {
+    background-color: #3bb2df;
+    left: 21px;
+    top: 42px;
+  }
+  18.75% {
+    background-color: #3bb2df;
+    left: 0;
+    top: 21px;
+  }
+  25% {
+    background-color: #ffb81c;
+    left: 21px;
+    top: 0;
+  }
+  31.25% {
+    background-color: #ffb81c;
+    left: 42px;
+    top: 21px;
+  }
+  37.5% {
+    background-color: #ffb81c;
+    left: 21px;
+    top: 42px;
+  }
+  43.75% {
+    background-color: #ffb81c;
+    left: 0;
+    top: 21px;
+  }
+  50% {
+    background-color: #caa2dd;
+    left: 21px;
+    top: 0;
+  }
+  56.25% {
+    background-color: #caa2dd;
+    left: 42px;
+    top: 21px;
+  }
+  62.5% {
+    background-color: #caa2dd;
+    left: 21px;
+    top: 42px;
+  }
+  68.75% {
+    background-color: #caa2dd;
+    left: 0;
+    top: 21px;
+  }
+  75% {
+    background-color: #d9e51c;
+    left: 21px;
+    top: 0;
+  }
+  81.25% {
+    background-color: #d9e51c;
+    left: 42px;
+    top: 21px;
+  }
+  87.5% {
+    background-color: #d9e51c;
+    left: 21px;
+    top: 42px;
+  }
+  93.75% {
+    background-color: #d9e51c;
+    left: 0;
+    top: 21px;
+  }
+  100% {
+    background-color: #3bb2df;
+    left: 21px;
+    top: 0;
+  }
+}
diff --git a/public/src/app/loader/loader.component.spec.ts b/public/src/app/loader/loader.component.spec.ts
new file mode 100644
index 0000000..7c82913
--- /dev/null
+++ b/public/src/app/loader/loader.component.spec.ts
@@ -0,0 +1,26 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { LoaderComponent } from './loader.component';
+
+describe('LoaderComponent', () => {
+  let component: LoaderComponent;
+  let fixture: ComponentFixture<LoaderComponent>;
+
+  beforeEach(
+    async(() => {
+      TestBed.configureTestingModule({
+        declarations: [LoaderComponent]
+      }).compileComponents();
+    })
+  );
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(LoaderComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/public/src/app/loader/loader.component.ts b/public/src/app/loader/loader.component.ts
new file mode 100644
index 0000000..89403b2
--- /dev/null
+++ b/public/src/app/loader/loader.component.ts
@@ -0,0 +1,12 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'app-loader',
+  templateUrl: './loader.component.html',
+  styleUrls: ['./loader.component.scss']
+})
+export class LoaderComponent implements OnInit {
+  constructor() {}
+
+  ngOnInit() {}
+}
diff --git a/public/src/app/main/main.component.html b/public/src/app/main/main.component.html
new file mode 100644
index 0000000..d54b27b
--- /dev/null
+++ b/public/src/app/main/main.component.html
@@ -0,0 +1,62 @@
+<div class="container">
+
+  <div style="padding: .25em; display: flex;
+  justify-content: space-between;
+  align-items: flex-end;">
+    <div>
+      <a (click)="goBack()" data-tests-id="btn-back-home" style="display: flex; cursor: pointer;text-decoration: none; color: #009fdb;">
+        <mat-icon fontSet="fontawesome" fontIcon="fa-angle-left" style="height: 17px; width: 12px; font-size: 17px;"></mat-icon>
+        <span style="display: flex; align-items: center;">Back to Monitoring</span>
+      </a>
+      <div style="margin:10px 0;" data-tests-id="new-monitorying-titie">
+        <span style="font-size: 2em;" *ngIf='store.generalflow === "new"'>
+          New
+        </span>
+        <span style="font-size: 2em;" *ngIf='store.generalflow === "import"'>
+          Import
+        </span>
+        <span style="font-size: 2em;">
+          Monitoring Configuration
+        </span>
+      </div>
+    </div>
+
+    <div>
+      <div *ngIf='store.generalflow === "new" || store.generalflow === "edit"'>
+        <button *ngIf="!this.store.isEditMode" mat-raised-button color="primary" [disabled]="this.generalComponent.generalForm.invalid"
+          data-tests-id="createMonitoring" (click)="createMC(this.generalComponent.generalForm.value)">Create</button>
+
+        <div *ngIf="this.store.isEditMode" style="display: flex;">
+          <button mat-icon-button (click)="saveCDUMP()" [disabled]="!store.cdumpIsDirty">
+            <span style="width: 100%;
+            height: 100%;
+            padding-right: 20px;
+            display: flex;
+            justify-content: center;
+            align-items: center;" [innerHTML]="'save' | feather:22"></span>
+          </button>
+          <button mat-raised-button color="primary" (click)="saveAndCreateBlueprint()">Submit</button>
+        </div>
+      </div>
+      <div *ngIf='store.generalflow === "import"'>
+        <button mat-raised-button color="primary" (click)="importMC(this.generalComponent.newVfcmt)" [disabled]="this.generalComponent.generalForm.invalid"
+          data-tests-id="importMonitoring">Import</button>
+      </div>
+    </div>
+  </div>
+
+  <div style="position: relative; flex:1;">
+
+    <p-tabView (onChange)="handleChange($event)" data-tests-id="tabs">
+      <p-tabPanel header="General">
+        <div>
+          <app-general (updateCdumpEv)="updateCdump($event)"></app-general>
+        </div>
+      </p-tabPanel>
+      <p-tabPanel *ngFor="let item of nodes" [header]="item.name">
+        <app-rule-frame [tabName]="item.name"></app-rule-frame>
+      </p-tabPanel>
+    </p-tabView>
+
+  </div>
+</div>
diff --git a/public/src/app/main/main.component.scss b/public/src/app/main/main.component.scss
new file mode 100644
index 0000000..402a56a
--- /dev/null
+++ b/public/src/app/main/main.component.scss
@@ -0,0 +1,33 @@
+.container {
+  display: flex;
+  flex-direction: column;
+  // height: 100%;
+  margin: 1em;
+}
+
+// overhide
+.ui-tabview .ui-tabview-panel {
+  border: 1px solid #d9d9d9;
+  padding: 0;
+  margin-left: 0.2em;
+  height: calc(100vh - 150px);
+  overflow: auto;
+}
+
+.ui-tabview .ui-tabview-nav li {
+  margin: 0;
+}
+
+.ui-tabview .ui-tabview-nav li.ui-tabview-selected {
+  color: #009fdb;
+  border-top: 4px solid #009fdb;
+  border-bottom: none;
+}
+
+.ui-tabview-title {
+  font-size: 14px;
+}
+
+.ui-tabview .ui-tabview-nav li.ui-tabview-selected .ui-tabview-title {
+  color: #009fdb;
+}
diff --git a/public/src/app/main/main.component.ts b/public/src/app/main/main.component.ts
new file mode 100644
index 0000000..fdbb077
--- /dev/null
+++ b/public/src/app/main/main.component.ts
@@ -0,0 +1,228 @@
+import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { Location } from '@angular/common';
+import { RestApiService } from '../api/rest-api.service';
+import { Store } from '../store/store';
+import { RuleFrameComponent } from '../rule-frame/rule-frame.component';
+import { GeneralComponent } from '../general/general.component';
+import { ToastrService } from 'ngx-toastr';
+import { forkJoin } from 'rxjs/observable/forkJoin';
+
+@Component({
+  selector: 'app-main',
+  encapsulation: ViewEncapsulation.None,
+  templateUrl: './main.component.html',
+  styleUrls: ['./main.component.scss']
+})
+export class MainComponent {
+  cdump;
+  nodes = [];
+  @ViewChild(GeneralComponent) generalComponent: GeneralComponent;
+  // @ViewChildren(RuleFrameComponent) ruleFrameRef: QueryList<RuleFrameComponent>;
+
+  constructor(
+    private route: ActivatedRoute,
+    private restApi: RestApiService,
+    private toastr: ToastrService,
+    public store: Store,
+    private location: Location
+  ) {
+    this.route.snapshot.params.mcid === 'import'
+      ? (this.store.generalflow = 'import')
+      : (this.store.generalflow = 'new');
+  }
+
+  goBack() {
+    this.location.back();
+  }
+
+  createMC(params) {
+    console.log('newVfcmt: %o', params);
+    this.store.loader = true;
+    this.restApi
+      .createNewVFCMT({
+        name: params.name,
+        description: params.description,
+        templateUuid: params.template,
+        vfiName: params.serviceAttached,
+        serviceUuid: this.route.snapshot.params.uuid,
+        contextType: this.route.snapshot.params.contextType,
+        flowType: 'default'
+      })
+      .subscribe(
+        success => {
+          console.log(success);
+          this.store.mcUuid = success.vfcmt.uuid;
+          console.log(this.cleanProperty(success));
+          this.store.cdump = success.cdump;
+          this.nodes = this.store.cdump.nodes;
+          this.store.setTabsProperties(this.nodes);
+          this.setDataFromMapToRuleEngine(success.cdump);
+          this.store.loader = false;
+          this.store.isEditMode = true;
+        },
+        error => {
+          this.store.loader = false;
+          console.log(error.notes);
+          this.store.ErrorContent = Object.values(error.requestError);
+          this.store.displayErrorDialog = true;
+        }
+      );
+  }
+
+  updateCdump(cdump) {
+    this.store.cdump = cdump;
+    this.nodes = this.store.cdump.nodes;
+    this.store.setTabsProperties(this.nodes);
+    this.setDataFromMapToRuleEngine(cdump);
+  }
+
+  importMC(params) {
+    console.log('importVfcmt: %o', params);
+    this.generalComponent.importCompleted = true;
+    this.store.loader = true;
+    this.restApi
+      .importVFCMT({
+        name: params.name,
+        description: params.description,
+        templateUuid: params.template,
+        vfiName: params.vfni,
+        serviceUuid: this.route.snapshot.params.uuid,
+        contextType: this.route.snapshot.params.contextType,
+        flowType: params.flowType,
+        cloneVFCMT: params.isCloneVFCMT,
+        updateFlowType: params.isUpdateFlowType
+      })
+      .subscribe(
+        success => {
+          console.log(success);
+          this.location.path();
+          // this.location.go();
+          this.store.mcUuid = success.vfcmt.uuid;
+          console.log(this.cleanProperty(success));
+          this.store.cdump = success.cdump;
+          this.nodes = this.store.cdump.nodes;
+          this.store.setTabsProperties(this.nodes);
+          this.setDataFromMapToRuleEngine(success.cdump);
+          this.store.generalflow = 'edit';
+          this.store.loader = false;
+          this.store.isEditMode = true;
+        },
+        error => {
+          this.store.loader = false;
+          console.log(error.notes);
+          this.store.ErrorContent = Object.values(error.requestError);
+          this.store.displayErrorDialog = true;
+        }
+      );
+  }
+
+  setDataFromMapToRuleEngine(cdump) {
+    this.store.tabParmasForRule = cdump.nodes
+      .filter(x => x.name.includes('map'))
+      .map(y => {
+        return {
+          name: y.name,
+          nid: y.nid
+        };
+      });
+  }
+
+  cleanProperty(response) {
+    return response.cdump.nodes.map(node => {
+      const t = node.properties.filter(item =>
+        item.hasOwnProperty('assignment')
+      );
+      node.properties = t;
+      return node;
+    });
+  }
+
+  saveCDUMP() {
+    debugger;
+    this.store.loader = true;
+    this.restApi
+      .saveMonitoringComponent({
+        contextType: this.store.sdcParmas.contextType,
+        serviceUuid: this.store.sdcParmas.uuid,
+        vfiName: this.generalComponent.newVfcmt.vfni,
+        vfcmtUuid: this.store.mcUuid,
+        flowType: this.generalComponent.newVfcmt.flowType,
+        cdump: this.store.cdump
+      })
+      .subscribe(
+        success => {
+          this.store.loader = false;
+          this.store.mcUuid = success.uuid;
+          this.toastr.success('', 'Save succeeded');
+        },
+        error => {
+          this.store.loader = false;
+          console.log(error.notes);
+          this.store.ErrorContent = Object.values(error.requestError);
+          this.store.displayErrorDialog = true;
+        },
+        () => {}
+      );
+  }
+
+  saveAndCreateBlueprint() {
+    debugger;
+    this.store.loader = true;
+    if (this.store.cdumpIsDirty) {
+      this.restApi
+        .saveMonitoringComponent({
+          contextType: this.store.sdcParmas.contextType,
+          serviceUuid: this.store.sdcParmas.uuid,
+          vfiName: this.generalComponent.newVfcmt.vfni,
+          vfcmtUuid: this.store.mcUuid,
+          cdump: this.store.cdump
+        })
+        .subscribe(
+          success => {
+            this.store.loader = false;
+            this.store.mcUuid = success.uuid;
+            this.submitBlueprint();
+          },
+          error => {
+            this.store.loader = false;
+            console.log(error.notes);
+            this.store.ErrorContent = Object.values(error.requestError);
+            this.store.displayErrorDialog = true;
+          },
+          () => {}
+        );
+    } else {
+      this.submitBlueprint();
+    }
+  }
+
+  submitBlueprint() {
+    this.store.loader = true;
+    this.restApi
+      .submitMonitoringComponent({
+        contextType: this.store.sdcParmas.contextType,
+        serviceUuid: this.store.sdcParmas.uuid,
+        vfiName: this.generalComponent.newVfcmt.vfni,
+        vfcmtUuid: this.store.mcUuid,
+        flowType: this.store.cdump.flowType
+      })
+      .subscribe(
+        success => {
+          this.store.loader = false;
+          this.toastr.success('', 'Save succeeded');
+        },
+        error => {
+          this.store.loader = false;
+          console.log(error.notes);
+          this.store.ErrorContent = Object.values(error.requestError);
+          this.store.displayErrorDialog = true;
+        },
+        () => {}
+      );
+  }
+
+  handleChange(e) {
+    this.store.setTabIndex(e.index - 1);
+  }
+}
diff --git a/public/src/app/router.animations.ts b/public/src/app/router.animations.ts
new file mode 100644
index 0000000..072c031
--- /dev/null
+++ b/public/src/app/router.animations.ts
@@ -0,0 +1,66 @@
+import {
+  trigger,
+  state,
+  animate,
+  transition,
+  style,
+  query
+} from '@angular/animations';
+
+export const fadeAnimation = trigger('fadeAnimation', [
+  transition('* => *', [
+    query(':enter', [style({ opacity: 0 })], { optional: true }),
+
+    query(
+      ':leave',
+      [style({ opacity: 1 }), animate('0.5s', style({ opacity: 0 }))],
+      { optional: true }
+    ),
+
+    query(
+      ':enter',
+      [style({ opacity: 0 }), animate('0.5s', style({ opacity: 1 }))],
+      { optional: true }
+    )
+  ])
+]);
+
+export const slideAnimation = trigger('slideAnimation', [
+  transition('* <=> *', [
+    // Initial state of new route
+    query(
+      ':enter',
+      style({
+        position: 'fixed',
+        width: '100%',
+        transform: 'translateX(-100%)'
+      }),
+      { optional: true }
+    ),
+    // move page off screen right on leave
+    // query(
+    //   ':leave',
+    //   animate(
+    //     '500ms ease',
+    //     style({
+    //       position: 'fixed',
+    //       width: '100%',
+    //       transform: 'translateX(-100%)'
+    //     })
+    //   ),
+    //   { optional: true }
+    // ),
+    // move page in screen from left to right
+    query(
+      ':enter',
+      animate(
+        '500ms ease',
+        style({
+          opacity: 1,
+          transform: 'translateX(0%)'
+        })
+      ),
+      { optional: true }
+    )
+  ])
+]);
diff --git a/public/src/app/rule-engine/action-list/action-list.component.html b/public/src/app/rule-engine/action-list/action-list.component.html
new file mode 100644
index 0000000..e7879b7
--- /dev/null
+++ b/public/src/app/rule-engine/action-list/action-list.component.html
@@ -0,0 +1,100 @@
+<form #actionListFrm="ngForm" class="wrapper" data-tests-id="popupRuleEditor">
+  <div class="header">
+    <div style="display: flex; justify-content: flex-end; align-items: center;">
+      <a (click)="closeDialog()" data-tests-id="btnBackRule" style="cursor: pointer;text-decoration: none; color: #009fdb;">
+        <mat-icon fontSet="fontawesome" fontIcon="fa-angle-left" style="height: 22px; width: 22px; font-size: 22px; padding-right: 20px;"></mat-icon>
+      </a>
+      <span style="font-size: 18px;">New Rule Editor</span>
+    </div>
+
+    <div style="display: flex; justify-content: flex-end; align-items: center; padding: 10px;">
+
+      <button mat-icon-button [disabled]="actions.length === 0" (click)="saveRole()" data-tests-id="btnSave">
+        <span style="width: 100%;
+          height: 100%;
+          display: flex;
+          justify-content: center;
+          align-items: center;" [innerHTML]="'save' | feather:22"></span>
+      </button>
+
+      <button mat-raised-button [disabled]="actions.length === 0" style="height: 35px;     margin-left: 20px;" color="primary" data-tests-id="btnDone"
+        (click)="saveAndDone()">
+        Done
+      </button>
+    </div>
+  </div>
+  <!-- error container -->
+  <div *ngIf="error" data-tests-id="errorList" class="error-list">
+    <div *ngFor="let item of error">
+      {{ item }}
+    </div>
+  </div>
+
+  <div class="main-content">
+    <div>
+      <div class="required" style="padding-right: 1rem; width: 100%; padding-bottom: 0.5rem;">Description</div>
+      <input type="text" [(ngModel)]="description" ngModel required name="descInput" style="padding: 5px; width: 100%;" data-tests-id="inputDescription">
+    </div>
+
+    <div style="margin: 1.5rem 0;">
+      <div class="pretty p-svg" style="margin: 1rem 0rem;">
+        <input type="checkbox" name="isCondition" data-tests-id="isCondition" [checked]="ifStatement" (change)="ifStatement = !ifStatement"
+        />
+        <div class="state">
+          <!-- svg path -->
+          <svg class="svg svg-icon" viewBox="0 0 20 20">
+            <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z"
+              style="stroke: #009fdb; fill:#009fdb;"></path>
+          </svg>
+          <label>Conditional Action</label>
+        </div>
+      </div>
+
+      <div *ngIf="ifStatement">
+        <app-condition #condition (removeConditionCheck)="removeConditionCheck($event)" (onConditionChange)="updateCondition($event)"></app-condition>
+      </div>
+    </div>
+
+    <div>
+      <div class="required" style="padding-bottom: 0.5rem">
+        Action
+      </div>
+      <div style="display: flex;">
+        <select [(ngModel)]="selectedAction" name="selectedAction" style="height: 2rem; width: 150px; margin-right: 1rem;" data-tests-id="selectAction">
+          <option [ngValue]="null" disabled>Select Action</option>
+          <option value="copy">Copy</option>
+          <option value="concat">Concat</option>
+          <option value="map">Map</option>
+          <option value="date formatter">Date Formatter</option>
+        </select>
+
+        <div style="display: flex; align-items: center;">
+          <button mat-mini-fab color="primary" style="height: 24px; width: 24px; display:flex; justify-content: center;" (click)="addAction2list(selectedAction)"
+            data-tests-id="btnAddAction">
+            <span style="display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:16"></span>
+          </button>
+          <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 10px">Add Action</span>
+        </div>
+
+      </div>
+
+      <div>
+        <ul>
+          <li *ngFor="let action of actions; let index = index" style="list-style: none; margin: 1rem 0;" (mouseleave)="hoveredIndex=-1"
+            (mouseover)="hoveredIndex=index" data-tests-id="action">
+            <div style="display:flex;">
+              <app-action #actions style="width: 100%;" [action]="action"></app-action>
+
+              <div style="height: 45px; display: flex; align-items: center;">
+                <button mat-icon-button class='button-remove' (click)="removeAction(action)" data-tests-id="deleteAction">
+                  <mat-icon>delete</mat-icon>
+                </button>
+              </div>
+            </div>
+          </li>
+        </ul>
+      </div>
+
+    </div>
+  </div>
+</form>
diff --git a/public/src/app/rule-engine/action-list/action-list.component.scss b/public/src/app/rule-engine/action-list/action-list.component.scss
new file mode 100644
index 0000000..39b9dce
--- /dev/null
+++ b/public/src/app/rule-engine/action-list/action-list.component.scss
@@ -0,0 +1,77 @@
+.wrapper {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+  width: 100%;
+
+  .header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    color: #191919;
+    border-bottom: 2px solid #d2d2d2;
+    // padding: 0.4rem 1rem;
+  }
+
+  .main-content {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    flex-grow: 1;
+    // overflow-y: auto;
+    padding: 24px 10px;
+    width: 100%;
+    // height: calc(100vh - 54px);
+  }
+}
+
+.mat-fab,
+.mat-mini-fab,
+.mat-raised-button {
+  box-shadow: none;
+}
+
+.button-remove {
+  display: flex;
+  justify-content: center;
+  padding-top: 5px;
+  color: #a7a7a7;
+  &:hover {
+    color: #009fdb;
+  }
+}
+
+:host {
+  @mixin md-icon-size($size: 24px) {
+    // font-size: $size;
+    height: $size;
+    width: $size;
+  }
+
+  .material-icons.mat-icon {
+    @include md-icon-size(24px);
+  }
+  /deep/ .mat-button-wrapper {
+    padding: 0;
+  }
+  .mat-icon {
+    width: 18px;
+    height: 18px;
+  }
+}
+
+.black {
+  color: black;
+}
+.highlight {
+  color: #009fdb;
+}
+
+.error-list {
+  margin: 10px;
+  color: white;
+  background: red;
+  padding: 1rem;
+  border-radius: 5px;
+  font-weight: bold;
+}
diff --git a/public/src/app/rule-engine/action-list/action-list.component.ts b/public/src/app/rule-engine/action-list/action-list.component.ts
new file mode 100644
index 0000000..40ff46d
--- /dev/null
+++ b/public/src/app/rule-engine/action-list/action-list.component.ts
@@ -0,0 +1,290 @@
+import {
+  Component,
+  Inject,
+  ViewChildren,
+  QueryList,
+  AfterViewInit,
+  ViewChild,
+  Input
+} from '@angular/core';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
+import { Subject } from 'rxjs/Subject';
+import { v1 as uuid } from 'uuid';
+import { environment } from '../../../environments/environment';
+import { ActionComponent } from '../action/action.component';
+import { cloneDeep } from 'lodash';
+import { Store } from '../../store/store';
+import { NgForm } from '@angular/forms';
+
+@Component({
+  selector: 'app-action-list',
+  templateUrl: './action-list.component.html',
+  styleUrls: ['./action-list.component.scss']
+})
+export class ActionListComponent implements AfterViewInit {
+  error: Array<string>;
+  condition: any;
+  eventType: string;
+  version: string;
+  params;
+  selectedAction;
+  targetSource;
+  description = '';
+  actions = new Array();
+  ifStatement = false;
+  uid = '';
+  backupActionForCancel = new Array();
+  @ViewChild('actionListFrm') actionListFrm: NgForm;
+  @ViewChild('condition') conditionRef;
+  @ViewChildren('actions') actionsRef: QueryList<ActionComponent>;
+
+  constructor(private _ruleApi: RuleEngineApiService, public store: Store) {
+    this._ruleApi.editorData.subscribe(data => {
+      this.params = data.params;
+      console.log('update.. params', data.params);
+      this.targetSource = data.targetSource;
+      this.version = data.version;
+      this.eventType = data.eventType;
+      if (data.item) {
+        // edit mode set values to attributes
+        console.log('actions %o', data.item.actions);
+        this.actions = this.convertActionDataFromServer(data.item.actions);
+        this.backupActionForCancel = cloneDeep(this.actions);
+        this.condition = data.item.condition;
+        this.uid = data.item.uid;
+        this.description = data.item.description;
+        this.ifStatement = this.condition == null ? false : true;
+      } else {
+        this.actions = new Array();
+        this.backupActionForCancel = new Array();
+        this.condition = null;
+        this.uid = '';
+        this.description = '';
+        this.ifStatement = false;
+      }
+      this.selectedAction = null;
+    });
+  }
+
+  convertActionDataFromServer(actions) {
+    return actions.map(item => {
+      if (!item.hasOwnProperty('nodes')) {
+        return Object.assign({}, item, { nodes: this.targetSource });
+      }
+    });
+  }
+
+  ngAfterViewInit() {
+    // console.log(this.actionsRef.toArray());
+    if (this.condition) {
+      if (this.condition.name === 'condition') {
+        this.conditionRef.updateMode(true, this.condition);
+      } else {
+        const convertedCondition = this.convertConditionFromServer(
+          this.condition
+        );
+        this.conditionRef.updateMode(false, convertedCondition);
+      }
+    }
+  }
+
+  addAction2list(selectedAction) {
+    if (selectedAction !== null) {
+      this.actions.push({
+        id: uuid(),
+        nodes: this.targetSource,
+        from: {
+          value: '',
+          regex: '',
+          state: 'closed',
+          values: [{ value: '' }, { value: '' }]
+        },
+        actionType: this.selectedAction,
+        target: '',
+        map: {
+          values: [{ key: '', value: '' }],
+          haveDefault: false,
+          default: ''
+        },
+        dateFormatter: {
+          fromFormat: '',
+          toFormat: '',
+          fromTimezone: '',
+          toTimezone: ''
+        }
+      });
+    }
+  }
+
+  removeConditionCheck(flag) {
+    this.ifStatement = flag;
+  }
+
+  removeAction(action) {
+    this.actions = this.actions.filter(item => {
+      return item.id !== action.id;
+    });
+  }
+
+  updateCondition(data) {
+    this.condition = data;
+  }
+
+  changeRightToArrayOrString(data, toArray) {
+    data.forEach(element => {
+      if (element.name === 'operator') {
+        this.changeRightToArrayOrString(element.children, toArray);
+      }
+      if (element.name === 'condition') {
+        if (toArray) {
+          element.right = element.right.split(',');
+        } else {
+          element.right = element.right.join(',');
+        }
+      }
+    });
+    console.log(data);
+    return data;
+  }
+
+  prepareDataToSaveRule() {
+    // action array
+    console.log(this.actions);
+    const actionSetData = this.actions.map(item => {
+      return {
+        id: item.id,
+        actionType: item.actionType,
+        from: item.from,
+        target:
+          typeof item.selectedNode === 'string'
+            ? item.selectedNode
+            : typeof item.selectedNode === 'undefined'
+              ? item.target
+              : item.selectedNode.id,
+        map: item.map,
+        dateFormatter: item.dateFormatter
+      };
+    });
+    let conditionData2server = null;
+    if (this.ifStatement) {
+      if (this.conditionRef.conditionTree) {
+        // change condition right to array
+        conditionData2server = this.convertConditionToServer(
+          this.conditionRef.conditionTree
+        );
+      }
+    }
+    // data structure
+    return {
+      version: this.version,
+      eventType: this.eventType,
+      uid: this.uid,
+      description: this.description,
+      actions: actionSetData,
+      condition: this.ifStatement ? conditionData2server : null
+    };
+  }
+
+  errorHandler(error) {
+    this.store.loader = false;
+    console.log(error);
+    this.error = [];
+    if (typeof error === 'string') {
+      this.error.push(error);
+    } else {
+      console.log(error.notes);
+      const errorFromServer = Object.values(error)[0] as any;
+      if (Object.keys(error)[0] === 'serviceExceptions') {
+        this.error = errorFromServer.map(x => x.formattedErrorMessage);
+      } else {
+        this.error.push(errorFromServer.formattedErrorMessage);
+      }
+    }
+  }
+
+  saveAndDone() {
+    const data = this.prepareDataToSaveRule();
+    this.store.loader = true;
+    this._ruleApi.modifyRule(data).subscribe(
+      response => {
+        this.store.loader = false;
+        this.store.updateRuleInList(response);
+        this._ruleApi.callUpdateVersionLock();
+        this.store.isLeftVisible = true;
+      },
+      error => {
+        this.errorHandler(error);
+      },
+      () => {
+        this.store.loader = false;
+      }
+    );
+  }
+
+  saveRole() {
+    const actionComp = this.actionsRef.toArray();
+    const filterInvalidActions = actionComp.filter(comp => {
+      return (
+        comp.fromInstance.fromFrm.invalid ||
+        comp.targetInstance.targetFrm.invalid ||
+        comp.actionFrm.invalid
+      );
+    });
+    if (this.actionListFrm.valid && filterInvalidActions.length === 0) {
+      const data = this.prepareDataToSaveRule();
+      this.store.loader = true;
+      this._ruleApi.modifyRule(data).subscribe(
+        response => {
+          this.store.loader = false;
+          this.store.updateRuleInList(response);
+          this._ruleApi.callUpdateVersionLock();
+          this.uid = response.uid;
+          // add toast notification
+        },
+        error => {
+          this.errorHandler(error);
+        },
+        () => {
+          this.store.loader = false;
+        }
+      );
+    } else {
+      // scroll to first invalid element
+      const elId = filterInvalidActions[0].action.id;
+      const el = document.getElementById(elId as string);
+      const label = el.children.item(0) as HTMLElement;
+      el.scrollIntoView();
+    }
+  }
+
+  public convertConditionFromServer(condition) {
+    const temp = new Array();
+    temp.push(condition);
+    const cloneCondition = cloneDeep(temp);
+    const conditionSetData = this.changeRightToArrayOrString(
+      cloneCondition,
+      false
+    );
+    console.log('condition to server:', conditionSetData);
+    return conditionSetData;
+  }
+
+  public convertConditionToServer(tree) {
+    const cloneCondition = cloneDeep(tree);
+    const conditionSetData = this.changeRightToArrayOrString(
+      cloneCondition,
+      true
+    );
+    let simpleCondition = null;
+    if (conditionSetData[0].children.length === 1) {
+      simpleCondition = conditionSetData[0].children;
+    }
+    console.log('condition to server:', conditionSetData);
+    return simpleCondition !== null ? simpleCondition[0] : conditionSetData[0];
+  }
+
+  closeDialog(): void {
+    this.actions = this.backupActionForCancel;
+    this.store.isLeftVisible = true;
+  }
+}
diff --git a/public/src/app/rule-engine/action/action.component.html b/public/src/app/rule-engine/action/action.component.html
new file mode 100644
index 0000000..b41ab82
--- /dev/null
+++ b/public/src/app/rule-engine/action/action.component.html
@@ -0,0 +1,114 @@
+<form #actionFrm="ngForm" class="conatiner" id="{{action.id}}" (mouseover)="changeStyle($event)" (mouseout)="changeStyle($event)">
+  <div>
+    <div class="center-content">
+      <!-- type info -->
+      <div class="action-info" [ngClass]="highlight">
+        {{action.actionType | uppercase}}
+      </div>
+      <!-- from component -->
+      <app-from #from style="width: 100%" [actionType]="action.actionType" (onFromChange)="updateFrom($event)"></app-from>
+      <!-- target component -->
+      <app-target #target style="width: 100%" (onTargetChange)="updateTarget($event)" [nodes]="action.nodes">
+      </app-target>
+    </div>
+
+    <!-- dateFormatter -->
+    <div *ngIf="action.actionType === 'date formatter'" style="display: flex; flex-direction: column; margin: 1em; align-items: flex-end;">
+      <div style="display: flex; margin: 0.5em 0;">
+        <div class="from">
+          <div class="from-conatiner">
+            <div style="display: flex; align-items: center;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">From Format</span>
+              <input class="input-text" ngModel required name="fromFormat" [(ngModel)]="action.dateFormatter.fromFormat" type="text">
+            </div>
+          </div>
+        </div>
+        <div class="from">
+          <div class="from-conatiner">
+            <div style="display: flex; align-items: center;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">To Format</span>
+              <input class="input-text" ngModel required name="toFormat" [(ngModel)]="action.dateFormatter.toFormat" type="text">
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div style="display: flex; margin: 0.5em 0;">
+        <div class="from">
+          <div class="from-conatiner">
+            <div style="display: flex; align-items: center;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">From Time-zone</span>
+              <input class="input-text" ngModel required name="fromTimezone" [(ngModel)]="action.dateFormatter.fromTimezone" type="text">
+            </div>
+          </div>
+        </div>
+        <div class="from">
+          <div class="from-conatiner">
+            <div style="display: flex; align-items: center;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">To Time-zone</span>
+              <input class="input-text" ngModel required name="toTimezone" [(ngModel)]="action.dateFormatter.toTimezone" type="text">
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Map -->
+    <div *ngIf="action.actionType === 'map'" class="map-container">
+      <!-- Default checkbox and input -->
+      <div class="default" style="display: flex; align-items: center">
+        <div class="pretty p-svg">
+          <input type="checkbox" name="defaultCheckbox" data-tests-id="defaultCheckbox" [checked]="action.map.haveDefault" (change)="changeCheckbox()"
+          />
+          <div class="state">
+            <!-- svg path -->
+            <svg class="svg svg-icon" viewBox="0 0 20 20">
+              <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z"
+                style="stroke: #009fdb; fill:#009fdb;"></path>
+            </svg>
+            <label>Default</label>
+          </div>
+        </div>
+        <div *ngIf="action.map.haveDefault" class="input-wrapper">
+          <input type="text" ngModel required name="defaultInput" data-tests-id="defaultInput" [(ngModel)]="action.map.default" class="input">
+        </div>
+      </div>
+
+      <table style="width: 100%; margin-bottom: 1rem;">
+        <thead style="background: #D2D2D2;">
+          <tr style="height: 30px;">
+            <th style="padding-left: 10px;">Key</th>
+            <th style="padding-left: 10px;">value</th>
+          </tr>
+        </thead>
+        <tbody ngModelGroup="mapKeyValue" #mapKeyValue="ngModelGroup">
+          <tr *ngFor="let item of action.map.values; let index = index;" (mouseleave)="hoveredIndex=-1" (mouseover)="hoveredIndex=index">
+            <th style="height: 30px; border: 1px solid #F3F3F3;">
+              <input [(ngModel)]="item.key" ngModel required name="mapValue[{{index}}]" data-tests-id="key" type="text" style="width:97%; height: 100%;border: none; padding:0 5px;">
+            </th>
+            <th style="height: 30px; border: 1px solid #F3F3F3;">
+              <input [(ngModel)]="item.value" ngModel required name="mapValue[{{index}}]" data-tests-id="value" type="text" style="width:97%; height: 100%;border: none; padding:0 5px;">
+            </th>
+            <th style="height: 30px; display: flex; align-items: baseline;">
+              <button mat-icon-button [ngStyle]="hoveredIndex === index ? {'opacity':'1'} : {'opacity':'0'}" class="button-remove" (click)="removeMapRow(index)"
+                *ngIf="action.map.values.length > 1" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+                <mat-icon class="md-24">delete</mat-icon>
+              </button>
+            </th>
+          </tr>
+        </tbody>
+      </table>
+
+
+      <div style="display:flex; justify-content: space-between;">
+        <div style="display: flex; align-items: center;">
+          <button mat-mini-fab color="primary" (click)="addMapRow()" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+            <mat-icon>add</mat-icon>
+          </button>
+          <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add Row</span>
+        </div>
+      </div>
+    </div>
+
+  </div>
+</form>
diff --git a/public/src/app/rule-engine/action/action.component.scss b/public/src/app/rule-engine/action/action.component.scss
new file mode 100644
index 0000000..f903db4
--- /dev/null
+++ b/public/src/app/rule-engine/action/action.component.scss
@@ -0,0 +1,116 @@
+.conatiner {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  height: 100%;
+  justify-content: space-between;
+  margin: 10px 0;
+  .black {
+    color: black;
+  }
+  .highlight {
+    color: #009fdb;
+  }
+  .center-content {
+    display: flex;
+    width: 100%;
+    .action-info {
+      background: #f2f2f2;
+      padding: 6px 12px;
+      border-radius: 5px;
+      height: 32px;
+      margin: 0 10px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      min-width: 142px;
+    }
+  }
+  .map-container {
+    padding-left: 115px;
+    .default {
+      display: flex;
+      width: 100%;
+      margin: 1rem 0;
+      min-height: 35px;
+      .input-wrapper {
+        width: 100%;
+        display: flex;
+        .input {
+          height: 20px;
+          padding: 5px;
+          margin-left: 10px;
+          width: 100%;
+          border: 1px solid #d2d2d2;
+        }
+      }
+    }
+    .grid-container {
+      padding-bottom: 10px;
+      .layout {
+        display: grid;
+        grid-template-columns: 1fr 1fr 30px;
+        grid-gap: 1px;
+        .title {
+          background-color: #f3f3f3;
+          height: 30px;
+          padding-left: 10px;
+          display: flex;
+          align-items: center;
+        }
+        .text-wrapper {
+          height: 30px;
+          border: 1px solid #f3f3f3;
+          .input {
+            width: 97%;
+            height: 100%;
+            border: none;
+            padding: 0 5px;
+          }
+        }
+        .btn-container {
+          height: 30px;
+          display: flex;
+          align-items: baseline;
+        }
+      }
+    }
+  }
+}
+
+.from {
+  display: flex;
+  flex-direction: column;
+  padding: 0 10px;
+  .from-conatiner {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+    width: 100%;
+    min-width: 350px;
+    .input-text {
+      border: none;
+      flex: 1;
+      width: 100%;
+      min-width: 250px;
+      padding: 5px 0 5px 5px;
+      margin: 0;
+    }
+  }
+  .label {
+    border: 1px solid #d2d2d2;
+    height: 30px;
+    justify-content: flex-start;
+    align-items: center;
+    display: flex;
+  }
+}
+
+.button-remove {
+  display: flex;
+  justify-content: center;
+  color: #a7a7a7;
+  &:hover {
+    color: #009fdb;
+  }
+}
diff --git a/public/src/app/rule-engine/action/action.component.ts b/public/src/app/rule-engine/action/action.component.ts
new file mode 100644
index 0000000..9c7023f
--- /dev/null
+++ b/public/src/app/rule-engine/action/action.component.ts
@@ -0,0 +1,51 @@
+import { Component, Inject, Input, OnInit, ViewChild } from '@angular/core';
+// import { Copy } from "../model";
+import { Http, Response, Headers, RequestOptions } from '@angular/http';
+import { Observable } from 'rxjs/Rx';
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/catch';
+import { Subject } from 'rxjs/Subject';
+import { NgForm } from '@angular/forms';
+
+@Component({
+  selector: 'app-action',
+  templateUrl: './action.component.html',
+  styleUrls: ['./action.component.scss']
+})
+export class ActionComponent implements OnInit {
+  @Input() action;
+  @ViewChild('from') fromInstance;
+  @ViewChild('target') targetInstance;
+  @ViewChild('actionFrm') actionFrm: NgForm;
+  highlight = 'black';
+  hoveredIndex;
+  changeStyle($event) {
+    this.highlight = $event.type === 'mouseover' ? 'highlight' : 'black';
+  }
+  ngOnInit(): void {
+    console.log(this.action.id);
+    if (this.action.from !== '') {
+      console.log('Action %o', this.action);
+      this.fromInstance.updateMode(this.action.from);
+      this.targetInstance.updateMode(this.action);
+    }
+  }
+  updateFrom(data) {
+    this.action.from = data;
+  }
+  updateTarget(data) {
+    this.action.selectedNode = data;
+  }
+  /* map functionality */
+  addMapRow() {
+    this.action.map.values.push({ key: '', value: '' });
+  }
+  removeMapRow(index) {
+    this.action.map.values.splice(index, 1);
+  }
+
+  changeCheckbox() {
+    console.log(this.action.id);
+    return (this.action.map.haveDefault = !this.action.map.haveDefault);
+  }
+}
diff --git a/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts b/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts
new file mode 100644
index 0000000..e15535b
--- /dev/null
+++ b/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts
@@ -0,0 +1,19 @@
+import { TestBed, inject } from '@angular/core/testing';
+import { HttpModule } from '@angular/http';
+import { RuleEngineApiService } from './rule-engine-api.service';
+
+describe('RuleEngineApiService', () => {
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      imports: [HttpModule],
+      providers: [RuleEngineApiService]
+    });
+  });
+
+  it(
+    'should be created',
+    inject([RuleEngineApiService], (service: RuleEngineApiService) => {
+      expect(service).toBeTruthy();
+    })
+  );
+});
diff --git a/public/src/app/rule-engine/api/rule-engine-api.service.ts b/public/src/app/rule-engine/api/rule-engine-api.service.ts
new file mode 100644
index 0000000..0d7ab5e
--- /dev/null
+++ b/public/src/app/rule-engine/api/rule-engine-api.service.ts
@@ -0,0 +1,134 @@
+import { Injectable, EventEmitter } from '@angular/core';
+import {
+  Http,
+  Response,
+  Headers,
+  RequestOptions,
+  URLSearchParams
+} from '@angular/http';
+import { Observable, Subject } from 'rxjs/Rx';
+// Import RxJs required methods
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/catch';
+import { environment } from '../../../environments/environment';
+import { v4 as uuid } from 'uuid';
+
+@Injectable()
+export class RuleEngineApiService {
+  options: RequestOptions;
+  headers: Headers;
+  baseUrl: string;
+  vfcmtUuid: string;
+  dcaeCompName: string;
+  nid: string;
+  configParam: string;
+  flowType: string;
+  editorData: Subject<any> = new Subject();
+  updateVersionLock: Subject<any> = new Subject();
+
+  constructor(private http: Http) {
+    this.baseUrl = `${environment.apiBaseUrl}/rule-editor`;
+  }
+
+  setParams(params) {
+    this.headers = new Headers({
+      'Content-Type': 'application/json',
+      USER_ID: params.userId
+    });
+    this.options = new RequestOptions({ headers: this.headers });
+    this.vfcmtUuid = params.vfcmtUuid;
+    this.dcaeCompName = params.nodeName;
+    this.nid = params.nodeId;
+    this.configParam = params.fieldName;
+    this.flowType = params.flowType;
+  }
+
+  setFieldName(name) {
+    this.configParam = name;
+  }
+
+  getMetaData() {
+    const url = `${this.baseUrl}/list-events-by-versions`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) =>
+        Observable.throw(error.json().requestError || 'Server error')
+      );
+  }
+
+  getSchema(version, eventType) {
+    const url = `${this.baseUrl}/definition/${version}/${eventType}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    return this.http
+      .get(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) =>
+        Observable.throw(error.json().requestError || 'Server error')
+      );
+  }
+
+  getListOfRules(): Observable<any> {
+    const url = `${this.baseUrl}/rule/${this.vfcmtUuid}/${this.dcaeCompName}/${
+      this.nid
+    }/${this.configParam}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    return this.http
+      .get(url, this.options)
+      .map(response => response.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json().requestError || 'Server error');
+      });
+  }
+
+  modifyRule(newRole) {
+    const url = `${this.baseUrl}/rule/${this.vfcmtUuid}/${this.dcaeCompName}/${
+      this.nid
+    }/${this.configParam}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    return this.http
+      .post(url, newRole, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json().requestError || 'Server error');
+      });
+  }
+
+  deleteRule(uid) {
+    const url = `${this.baseUrl}/rule/${this.vfcmtUuid}/${this.dcaeCompName}/${
+      this.nid
+    }/${this.configParam}/${uid}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    return this.http
+      .delete(url, this.options)
+      .map((res: Response) => res.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json().requestError || 'Server error');
+      });
+  }
+
+  translate() {
+    const url = `${this.baseUrl}/rule/translate/${this.vfcmtUuid}/${
+      this.dcaeCompName
+    }/${this.nid}/${this.configParam}`;
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    const params = new URLSearchParams();
+    params.append('flowType', this.flowType);
+    const options = { ...this.options, params: params };
+    return this.http
+      .get(url, options)
+      .map(response => response.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json().requestError || 'Server error');
+      });
+  }
+
+  passDataToEditor(data) {
+    this.editorData.next(data);
+  }
+
+  callUpdateVersionLock() {
+    this.updateVersionLock.next();
+  }
+}
diff --git a/public/src/app/rule-engine/condition/condition.component.html b/public/src/app/rule-engine/condition/condition.component.html
new file mode 100644
index 0000000..a441f55
--- /dev/null
+++ b/public/src/app/rule-engine/condition/condition.component.html
@@ -0,0 +1,89 @@
+<tree-root #tree class="condition-tree" (initialized)="onInitialized(tree)" [nodes]="conditionTree" [options]="customTemplateStringOptions">
+  <ng-template #treeNodeTemplate let-node let-index="index">
+
+    <div>
+      <div *ngIf="node.data.name === 'operator'" style="background: #F2F2F2;">
+        <div style="display: flex; margin-left: 5px; align-items: center; min-height: 35px;">
+          <div style="display: flex; align-items: center;" *ngIf="showType">
+            <select style="padding: 5px;" [(ngModel)]="node.data.type">
+              <option value="ANY">ANY</option>
+              <option value="ALL">ALL</option>
+            </select>
+
+            <div style="display: flex; align-items: center; margin-left: 10px;">
+              of the following are true:
+            </div>
+          </div>
+
+          <div style="display: flex; margin-left: auto;">
+
+            <div style="display: flex; align-items: center; padding: 0 25px;">
+              <button mat-mini-fab color="primary" (click)="addConditional(tree, node)" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+                <mat-icon class="material-icons md-18">add</mat-icon>
+              </button>
+              <span class="btn-label">Add Condition
+              </span>
+            </div>
+
+            <div style="display: flex; align-items: center; padding: 0 25px;">
+              <button mat-mini-fab color="primary" data-tests-id="addConditionGroup" [disabled]="node.data.level === 2" (click)="addConditionalGroup(tree, node)"
+                style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+                <mat-icon class="material-icons md-18">add</mat-icon>
+              </button>
+              <span [style.color]="node.data.level === 2 ? '#a7a7a7' : '#009fdb' " [style.cursor]="node.data.level === 2 ? 'default' : 'pointer' "
+                class="btn-label">Add Condition Group
+              </span>
+            </div>
+
+            <div style="display: flex; align-items: center; padding: 0 5px; background: #FFFFFF;">
+              <button mat-icon-button (click)="removeConditional(tree, node)" class="button-remove">
+                <mat-icon class="md-24">delete</mat-icon>
+              </button>
+            </div>
+
+          </div>
+        </div>
+      </div>
+      <div *ngIf="node.data.name === 'condition'">
+        <div class="from-conatiner" style="height:35px; ">
+          <div style="display: flex; width:90%;">
+            <div class="label" style="width:100%">
+              <span class="label" style="padding: 0 10px; border-left: none;">
+                Input
+              </span>
+              <input class="input-text" data-tests-id="left" [(ngModel)]="node.data.left" (ngModelChange)="modelChange($event)" ngDefaultControl
+                type="text">
+            </div>
+
+            <div style="margin: 0 1rem;">
+              <select style="height: 30px;" data-tests-id="selectOperator" [(ngModel)]="node.data.operator" (ngModelChange)="modelChange($event)"
+                ngDefaultControl>
+                <option [ngValue]="null" disabled>Select operator</option>
+                <option value="contains">Contains</option>
+                <option value="endsWith">Ends with</option>
+                <option value="startsWith">Starts with</option>
+                <option value="equals">Equals</option>
+                <option value="notEqual">Not equal</option>
+              </select>
+            </div>
+
+            <div class="label" style="width:100%">
+              <span class="label" style="padding: 0 10px; border-left: none;">
+                Value
+              </span>
+              <input class="input-text" data-tests-id="right" (ngModelChange)="modelChange($event)" [(ngModel)]="node.data.right" ngDefaultControl
+                type="text">
+            </div>
+          </div>
+          <!-- remove button -->
+          <div class="show-delete">
+            <button mat-icon-button (click)="removeConditional(tree, node)" class="button-remove">
+              <mat-icon class="md-24">delete</mat-icon>
+            </button>
+          </div>
+
+        </div>
+      </div>
+    </div>
+  </ng-template>
+</tree-root>
diff --git a/public/src/app/rule-engine/condition/condition.component.scss b/public/src/app/rule-engine/condition/condition.component.scss
new file mode 100644
index 0000000..8c0e9e0
--- /dev/null
+++ b/public/src/app/rule-engine/condition/condition.component.scss
@@ -0,0 +1,114 @@
+.condition-tree {
+  tree-viewport {
+    overflow-x: hidden;
+    overflow-y: hidden;
+  }
+  .angular-tree-component,
+  .tree-node-leaf {
+    margin: 0;
+    padding: 0;
+  }
+  .angular-tree-component {
+    padding-left: 1em;
+    overflow-y: hidden;
+  }
+  .tree-node-leaf.container {
+    border-bottom: 0px;
+  }
+  .tree-node-leaf.empty {
+    font-style: italic;
+    color: #fafafa;
+    border-color: #fafafa;
+  }
+  .tree-node-leaf div {
+    margin: 0;
+    top: 0.5em;
+  }
+  .node-wrapper {
+    background: white;
+  }
+  .tree-children {
+    border-left: 2px solid #f2f2f2;
+    // border-top: 1px solid #f2f2f2;
+    border-bottom: 1px solid #f2f2f2;
+  }
+  tree-node-expander {
+    display: none;
+  }
+  .node-content-wrapper {
+    padding-left: 0;
+    width: 100%;
+    .show-delete {
+      opacity: 0;
+    }
+  }
+  .tree-node-content {
+    width: 100%;
+  }
+  .node-content-wrapper-active,
+  .node-content-wrapper.node-content-wrapper-active:hover,
+  .node-content-wrapper-active.node-content-wrapper-focused {
+    background: white;
+  }
+  *:focus {
+    outline: none;
+  }
+
+  .node-content-wrapper-active,
+  .node-content-wrapper-focused,
+  .node-content-wrapper:hover {
+    box-shadow: none;
+    .show-delete {
+      opacity: 1;
+      display: flex;
+      align-items: center;
+      padding: 0 5px;
+    }
+  }
+}
+
+.from-conatiner {
+  display: flex;
+  align-items: center;
+  .input-text {
+    border: none;
+    flex: 1;
+    // width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+  .label {
+    border: 1px solid #d2d2d2;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    display: flex;
+    cursor: default;
+  }
+}
+
+.btn-label {
+  display: flex;
+  justify-content: center;
+  padding-left: 5px;
+  color: #009fdb;
+}
+
+.button-label {
+  color: #a7a7a7;
+  display: flex;
+  justify-content: center;
+  padding-left: 5px;
+  &:hover {
+    color: #009fdb;
+  }
+}
+
+.button-remove {
+  display: flex;
+  justify-content: center;
+  color: #a7a7a7;
+  &:hover {
+    color: #009fdb;
+  }
+}
diff --git a/public/src/app/rule-engine/condition/condition.component.spec.ts b/public/src/app/rule-engine/condition/condition.component.spec.ts
new file mode 100644
index 0000000..bb0d38a
--- /dev/null
+++ b/public/src/app/rule-engine/condition/condition.component.spec.ts
@@ -0,0 +1,51 @@
+import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { DebugElement } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { HttpModule } from '@angular/http';
+import {
+  MatDialogModule,
+  MatButtonModule,
+  MatIconModule,
+  MatDialogRef,
+  MAT_DIALOG_DATA
+} from '@angular/material';
+
+import { ConditionComponent } from './condition.component';
+
+describe('Condition Component', () => {
+  let component: ConditionComponent;
+  let fixture: ComponentFixture<ConditionComponent>;
+  let de: DebugElement;
+  let el: HTMLElement;
+
+  beforeEach(
+    async(() => {
+      TestBed.configureTestingModule({
+        imports: [
+          FormsModule,
+          HttpModule,
+          MatDialogModule,
+          MatButtonModule,
+          MatIconModule
+        ],
+        providers: [],
+        schemas: [CUSTOM_ELEMENTS_SCHEMA],
+        declarations: [ConditionComponent]
+      }).compileComponents();
+    })
+  );
+
+  beforeEach(() => {
+    // create component and test fixture
+    fixture = TestBed.createComponent(ConditionComponent);
+    // get test component from the fixture
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/public/src/app/rule-engine/condition/condition.component.ts b/public/src/app/rule-engine/condition/condition.component.ts
new file mode 100644
index 0000000..f44fbf4
--- /dev/null
+++ b/public/src/app/rule-engine/condition/condition.component.ts
@@ -0,0 +1,161 @@
+import {
+  Component,
+  ViewEncapsulation,
+  ViewChild,
+  Output,
+  EventEmitter
+} from '@angular/core';
+import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
+import { some } from 'lodash';
+
+@Component({
+  selector: 'app-condition',
+  templateUrl: './condition.component.html',
+  styleUrls: ['./condition.component.scss'],
+  encapsulation: ViewEncapsulation.None
+})
+export class ConditionComponent {
+  conditionTree = [];
+  showType = false;
+  @ViewChild(TreeComponent) private tree: TreeComponent;
+  @Output() onConditionChange = new EventEmitter();
+  @Output() removeConditionCheck = new EventEmitter();
+  customTemplateStringOptions: ITreeOptions = {
+    isExpandedField: 'expanded',
+    animateExpand: true,
+    animateSpeed: 30,
+    animateAcceleration: 1.2
+  };
+
+  constructor() {
+    this.conditionTree.push({
+      name: 'operator',
+      level: 0,
+      type: 'ALL',
+      children: []
+    });
+    this.conditionTree[0].children.push({
+      name: 'condition',
+      left: '',
+      right: '',
+      operator: null,
+      level: 1
+    });
+  }
+
+  onInitialized(tree) {
+    tree.treeModel.expandAll();
+  }
+
+  updateMode(isSingle, data) {
+    if (isSingle) {
+      this.conditionTree[0].children.pop();
+      if (typeof data.right !== 'string') {
+        data.right = data.right.join(',');
+      }
+      this.conditionTree[0].children.push({
+        name: 'condition',
+        left: data.left,
+        right: data.right,
+        operator: data.operator,
+        level: 1
+      });
+      this.showType = false;
+    } else {
+      this.conditionTree = data;
+      setTimeout(() => (this.showType = true), 500);
+    }
+    this.tree.treeModel.update();
+  }
+
+  addConditional(tree, selectedNode) {
+    if (this.conditionTree[0].children.length > 0) {
+      this.showType = true;
+    }
+    const tempLevel =
+      selectedNode.data.name === 'condition'
+        ? selectedNode.data.level
+        : selectedNode.data.children[0].level;
+
+    const conditionTemplate = {
+      name: 'condition',
+      left: '',
+      right: '',
+      operator: null,
+      level: tempLevel
+    };
+    selectedNode.data.children.push(conditionTemplate);
+    tree.treeModel.update();
+  }
+
+  addConditionalGroup(tree, selectedNode) {
+    if (selectedNode.level < 3) {
+      if (this.conditionTree[0].children.length > 0) {
+        this.showType = true;
+      }
+      selectedNode.data.children.push({
+        name: 'operator',
+        level: selectedNode.data.level + 1,
+        type: 'ALL',
+        children: []
+      });
+
+      for (let i = 0; i < 2; i++) {
+        selectedNode.data.children[
+          selectedNode.data.children.length - 1
+        ].children.push({
+          name: 'condition',
+          left: '',
+          right: '',
+          operator: null,
+          level: selectedNode.data.level + 2
+        });
+      }
+      tree.treeModel.update();
+      tree.treeModel.expandAll();
+    }
+  }
+
+  removeConditional(tree, selectedNode) {
+    if (
+      (selectedNode.level === 1 && selectedNode.index === 0) ||
+      (selectedNode.parent.data.name === 'operator' &&
+        selectedNode.parent.level === 1 &&
+        selectedNode.parent.data.children.length === 1)
+    ) {
+      this.removeConditionCheck.emit(false);
+    } else if (
+      selectedNode.parent.level === 1 &&
+      selectedNode.parent.data.children.length === 2 &&
+      selectedNode.data.name === 'condition' &&
+      some(selectedNode.parent.data.children, { name: 'operator' })
+    ) {
+      return;
+    } else {
+      if (
+        selectedNode.parent.data.name === 'operator' &&
+        selectedNode.parent.level > 1
+      ) {
+        // Nested Group can delete when more then 2
+        if (selectedNode.parent.data.children.length > 2) {
+          this.deleteNodeAndUpdateTreeView(selectedNode, tree);
+        }
+      } else {
+        this.deleteNodeAndUpdateTreeView(selectedNode, tree);
+        if (this.conditionTree[0].children.length === 1) {
+          this.showType = false;
+        }
+      }
+    }
+  }
+
+  private deleteNodeAndUpdateTreeView(selectedNode: any, tree: any) {
+    selectedNode.parent.data.children.splice(selectedNode.index, 1);
+    tree.treeModel.update();
+    this.onConditionChange.emit(this.conditionTree);
+  }
+
+  modelChange(event) {
+    this.onConditionChange.emit(this.conditionTree);
+  }
+}
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html
new file mode 100644
index 0000000..49c800a
--- /dev/null
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html
@@ -0,0 +1,12 @@
+<div class="container" data-tests-id="delete-popup">
+  <div class="header">
+    Delete
+  </div>
+  <div class="content">
+    Are you sure you want to delete?
+  </div>
+  <div class="buttons">
+    <button mat-raised-button (click)="close(true)" data-tests-id="btnDelete" style="margin-right: 1rem;" color="primary">Delete</button>
+    <button mat-raised-button (click)="close(false)" data-tests-id="btnCancel" style="border: 1px solid #009FDB; color: #009FDB; background: #ffffff;">Cancel</button>
+  </div>
+</div>
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss
new file mode 100644
index 0000000..2a826ff
--- /dev/null
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss
@@ -0,0 +1,20 @@
+.container {
+  display: flex;
+  justify-content: space-between;
+  margin: 0 !important;
+  border-top: solid 6px #ffb81c;
+  .header {
+    border-bottom: none;
+  }
+  .content {
+    margin: 1rem;
+    flex: 1;
+    font-weight: 400;
+  }
+  .buttons {
+    display: flex;
+    justify-content: flex-end;
+    border-top: solid 1px #eaeaea;
+    padding: 1rem;
+  }
+}
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts
new file mode 100644
index 0000000..23b6cee
--- /dev/null
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts
@@ -0,0 +1,18 @@
+import { Component, Inject } from '@angular/core';
+import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
+
+@Component({
+  selector: 'app-confirm-popup',
+  templateUrl: './confirm-popup.component.html',
+  styleUrls: ['./confirm-popup.component.scss']
+})
+export class ConfirmPopupComponent {
+  constructor(
+    public dialogRef: MatDialogRef<ConfirmPopupComponent>,
+    @Inject(MAT_DIALOG_DATA) public data: any
+  ) {}
+
+  close(flag) {
+    this.dialogRef.close(flag);
+  }
+}
diff --git a/public/src/app/rule-engine/from/from.component.html b/public/src/app/rule-engine/from/from.component.html
new file mode 100644
index 0000000..7af653d
--- /dev/null
+++ b/public/src/app/rule-engine/from/from.component.html
@@ -0,0 +1,70 @@
+<form #fromFrm="ngForm" novalidate>
+  <!-- Copy template -->
+  <div class="from" *ngIf="actionType === 'copy'" data-tests-id="fromComponent">
+    <div class="from-conatiner">
+      <div style="display: flex; align-items: center; width: 100%;" class="label">
+        <span class="label" style="padding: 0 5px; width: 50px;">From</span>
+        <input class="input-text" name="copyFrom" required style="min-width: 190px;" (ngModelChange)="modelChange(from)" #copyFrom="ngModel"
+          [(ngModel)]="from.value" type="text" data-tests-id="valueInput">
+        <span class="label" (click)="showRegex(from)" [ngStyle]="from.state === 'open' ? { 'color': '#009FDB'} : {'color':'gray'}"
+          style="padding: 0 5px; width: 50px; cursor: pointer; border: none" data-tests-id="btnFromRegex">Re/g</span>
+      </div>
+      <div [@state]="from.state" *ngIf="from.state === 'open'" style="display: flex; align-items: center; width: 80%;" class="label">
+        <span class="label" style="padding: 0 3px; width: 54px; border-top: none; border-bottom: none;">regex</span>
+        <input class="input-text" style="min-width: 192px;" (ngModelChange)="modelChange(from)" [(ngModel)]="from.regex" type="text"
+          ngModel required name="RegexInput" data-tests-id="inputFromRegex">
+      </div>
+    </div>
+  </div>
+  <!-- Map template -->
+  <div class="from" *ngIf="actionType === 'map'" data-tests-id="fromComponent">
+    <div class="from-conatiner">
+      <div style="display: flex; align-items: center; width: 100%;" class="label">
+        <span class="label" style="padding: 0 5px; width: 50px;">From</span>
+        <input class="input-text" ngModel required name="mapFromInput" (ngModelChange)="modelChange(from)" [(ngModel)]="from.value"
+          type="text" data-tests-id="valueInput">
+      </div>
+    </div>
+  </div>
+
+  <!-- dateFormatter template -->
+  <div class="from" *ngIf="actionType === 'date formatter'" data-tests-id="fromComponent">
+    <div class="from-conatiner">
+      <div style="display: flex; align-items: center; width: 100%;" class="label">
+        <span class="label" style="padding: 0 5px; width: 50px;">From</span>
+        <input class="input-text" ngModel required name="dateFormatterFromInput" (ngModelChange)="modelChange(from)" [(ngModel)]="from.value"
+          type="text" data-tests-id="valueInput">
+      </div>
+    </div>
+  </div>
+
+  <!-- Concat template -->
+  <div class="from" *ngIf="actionType === 'concat'" ngModelGroup="concat" #concatFrom="ngModelGroup">
+    <div *ngFor="let input of from.values; let index = index;" data-tests-id="concatInputArrayFrom" (mouseleave)="hoveredIndex=-1"
+      (mouseover)="hoveredIndex=index" class="from-conatiner" style="margin-bottom:1rem; display: flex; flex-direction: column; align-items: flex-start;"
+      data-tests-id="fromComponent">
+      <div style="display: flex; align-items: center; width: 100%;">
+        <div style="display: flex; align-items: center; width: 100%;" class="label">
+          <span class="label" style="padding: 0 5px; width: 50px;">From</span>
+          <input class="input-text" (ngModelChange)="modelChange(from)" [(ngModel)]="input.value" type="text" data-tests-id="valueInput"
+            ngModel required name="concat[{{index}}]">
+        </div>
+
+        <button mat-icon-button class="button-remove" [ngStyle]="hoveredIndex === index ? {'opacity':'1'} : {'opacity':'0'}" (click)="removeFromInput(index)"
+          *ngIf="from.values.length > 2" style="box-shadow: none; height: 24px; width: 24px; display:flex" data-tests-id="btnDelete">
+          <mat-icon class="md-24">delete</mat-icon>
+        </button>
+      </div>
+
+    </div>
+    <div style="display:flex; justify-content: space-between;">
+      <div style="display: flex; align-items: center;">
+        <button mat-mini-fab color="primary" (click)="addFromInput()" style="box-shadow: none; height: 24px; width: 24px; display:flex"
+          data-tests-id="btnAddInput">
+          <mat-icon>add</mat-icon>
+        </button>
+        <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add input</span>
+      </div>
+    </div>
+  </div>
+</form>
diff --git a/public/src/app/rule-engine/from/from.component.scss b/public/src/app/rule-engine/from/from.component.scss
new file mode 100644
index 0000000..852984d
--- /dev/null
+++ b/public/src/app/rule-engine/from/from.component.scss
@@ -0,0 +1,63 @@
+.from {
+  display: flex;
+  flex-direction: column;
+  padding: 0 10px;
+
+  .label {
+    border: 1px solid #d2d2d2;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    display: flex;
+  }
+}
+
+.from-select {
+  width: 250px;
+  border: none;
+}
+
+.from-conatiner {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  width: 100%;
+  min-width: 350px;
+
+  .input-text {
+    border: none;
+    flex: 1;
+    width: 100%;
+    min-width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+}
+
+.button-remove {
+  display: flex;
+  justify-content: center;
+  color: #a7a7a7;
+  &:hover {
+    color: #009fdb;
+  }
+}
+
+:host {
+  @mixin md-icon-size($size: 24px) {
+    font-size: $size;
+    height: $size;
+    width: $size;
+  }
+
+  .material-icons.mat-icon {
+    @include md-icon-size(24px);
+  }
+  /deep/ .mat-button-wrapper {
+    padding: 0;
+  }
+  .mat-icon {
+    width: 18px;
+    height: 18px;
+  }
+}
diff --git a/public/src/app/rule-engine/from/from.component.ts b/public/src/app/rule-engine/from/from.component.ts
new file mode 100644
index 0000000..e7c276b
--- /dev/null
+++ b/public/src/app/rule-engine/from/from.component.ts
@@ -0,0 +1,91 @@
+import {
+  Component,
+  Input,
+  Output,
+  EventEmitter,
+  ViewChild
+} from '@angular/core';
+// import { From } from "../model";
+import { Subject } from 'rxjs/Subject';
+import {
+  trigger,
+  state,
+  animate,
+  transition,
+  style,
+  keyframes
+} from '@angular/animations';
+import { NgForm } from '@angular/forms';
+
+@Component({
+  selector: 'app-from',
+  templateUrl: './from.component.html',
+  styleUrls: ['./from.component.scss'],
+  animations: [
+    trigger('state', [
+      state(
+        'open',
+        style({
+          opacity: 1,
+          height: 'auto'
+        })
+      ),
+      transition('* => open', [
+        animate(
+          200,
+          keyframes([
+            style({
+              opacity: 1,
+              height: 'auto'
+            })
+          ])
+        )
+      ]),
+      state(
+        'closed',
+        style({
+          opacity: 0,
+          height: 0
+        })
+      )
+    ])
+  ]
+})
+export class FromComponent {
+  from: any = {
+    value: '',
+    regex: '',
+    state: 'closed',
+    values: [{ value: '' }, { value: '' }]
+  };
+  @Input() actionType;
+  @Output() onFromChange = new EventEmitter();
+  @ViewChild('fromFrm') fromFrm: NgForm;
+  hoveredIndex;
+  // public keyUp = new BehaviorSubject<string>(null);
+
+  showRegex(item) {
+    item.state = item.state === 'closed' ? 'open' : 'closed';
+    if (item.state === 'closed') {
+      item.regex = '';
+    }
+  }
+  updateMode(fromData) {
+    console.log(fromData);
+    if (fromData) {
+      this.from = fromData;
+    }
+  }
+
+  constructor() {}
+
+  modelChange(event) {
+    this.onFromChange.emit(event);
+  }
+  addFromInput() {
+    this.from.values.push({ value: '' });
+  }
+  removeFromInput(index) {
+    this.from.values.splice(index, 1);
+  }
+}
diff --git a/public/src/app/rule-engine/host/exit-mode.enum.ts b/public/src/app/rule-engine/host/exit-mode.enum.ts
new file mode 100644
index 0000000..784ba3b
--- /dev/null
+++ b/public/src/app/rule-engine/host/exit-mode.enum.ts
@@ -0,0 +1,4 @@
+export enum ExitMode {
+  Done,
+  Cancel
+}
diff --git a/public/src/app/rule-engine/host/host-params.ts b/public/src/app/rule-engine/host/host-params.ts
new file mode 100644
index 0000000..f204101
--- /dev/null
+++ b/public/src/app/rule-engine/host/host-params.ts
@@ -0,0 +1,8 @@
+export interface HostParams {
+  readonly vfcmtUuid: string;
+  readonly nodeName: string;
+  readonly nodeId: string;
+  readonly fieldName: string;
+  readonly userId: string;
+  readonly flowType: string;
+}
diff --git a/public/src/app/rule-engine/host/host.service.spec.ts b/public/src/app/rule-engine/host/host.service.spec.ts
new file mode 100644
index 0000000..048be80
--- /dev/null
+++ b/public/src/app/rule-engine/host/host.service.spec.ts
@@ -0,0 +1,18 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { HostService } from './host.service';
+
+describe('HostService', () => {
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      providers: [HostService]
+    });
+  });
+
+  it(
+    'should be created',
+    inject([HostService], (service: HostService) => {
+      expect(service).toBeTruthy();
+    })
+  );
+});
diff --git a/public/src/app/rule-engine/host/host.service.ts b/public/src/app/rule-engine/host/host.service.ts
new file mode 100644
index 0000000..7918d30
--- /dev/null
+++ b/public/src/app/rule-engine/host/host.service.ts
@@ -0,0 +1,56 @@
+import { Injectable } from '@angular/core';
+import { HostParams } from './host-params';
+import { ExitMode } from './exit-mode.enum';
+
+@Injectable()
+export class HostService {
+  /* Public Members */
+
+  public static getParams(): HostParams {
+    return this.getQueryParamsObj(window.location.search) as HostParams;
+  }
+
+  public static enterModifyRule(): void {
+    this.postMessage('modifyRule', null);
+  }
+
+  public static exitModifyRule(): void {
+    this.postMessage('ruleList', null);
+  }
+
+  public static disableLoader(): void {
+    this.postMessage('disable-loader', null);
+  }
+
+  public static exit(mode: ExitMode, data: string): void {
+    if (mode === ExitMode.Cancel) {
+      this.postMessage('exit', null);
+    } else if (mode === ExitMode.Done) {
+      this.postMessage('exit', data);
+    }
+  }
+
+  /* Private Methods */
+
+  private static postMessage(eventName: string, data: string): void {
+    window.parent.postMessage(
+      {
+        type: eventName,
+        data: data
+      },
+      '*'
+    );
+  }
+
+  private static getQueryParamsObj(query: string): object {
+    return query
+      .substring(1) // removes '?' that always appears as prefix to the query-string
+      .split('&') // splits query-string to "key=value" strings
+      .map(p => p.split('=')) // splits each "key=value" string to [key,value] array
+      .reduce((res, p) => {
+        // converts to a dictionary (object) of params
+        res[p[0]] = p[1];
+        return res;
+      }, {});
+  }
+}
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.html b/public/src/app/rule-engine/rule-list/rule-list.component.html
new file mode 100644
index 0000000..c68c706
--- /dev/null
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.html
@@ -0,0 +1,73 @@
+<div class="container">
+  <div class="header">
+    <span style="font-size: 18px;">Rule Engine</span>
+    <div style="display:flex">
+      <button mat-raised-button (click)="translateRules()" color="primary" [disabled]="store.ruleList.length === 0" style="margin-left: 20px;"
+        data-tests-id="btnTranslate">
+        Translate
+      </button>
+      <app-bar-icons [tabName]="this.store.tabParmasForRule[0].name"></app-bar-icons>
+    </div>
+  </div>
+
+  <div style="margin: 0rem 1rem; flex-grow: 1; overflow-y: auto;">
+
+    <!-- error container -->
+    <div *ngIf="error" style="color: white; background: red; padding: 1rem; border-radius: 5px; font-weight: bold;">
+      {{ error }}
+    </div>
+
+    <app-version-type-select #versionEventType [versions]="versions" [metaData]="metaData" (nodesUpdated)="handleUpdateNode($event)"
+      (refrashRuleList)="handlePropertyChange()"></app-version-type-select>
+
+    <div *ngIf="targetSource && store.ruleList.length === 0" style="margin: 30px 0; display: flex; align-items: center; justify-content: center; flex-direction: column;">
+
+      <div style="margin: 3em 0 2em 0;">
+        <div style="font-size: 1.5em;">
+          Rules were not yet created
+        </div>
+        <div style="padding: 0.5em; padding-top: 1em;">
+          Please create a new normalization rule
+        </div>
+      </div>
+
+      <button mat-fab (click)="openAction()" style="background-color:#009FDB" data-tests-id="btnAddFirstRule">
+        <span [innerHTML]="'plus' | feather:24"></span>
+      </button>
+      <span style="margin-top: 1rem; font-size: 14px; color: #009FDB;">
+        Add First Rule
+      </span>
+    </div>
+
+    <div *ngIf="store.ruleList.length > 0">
+      <div style="padding: 10px 0;">
+        Rules
+      </div>
+      <div style="display: flex; align-items: center;">
+        <button mat-mini-fab color="primary" id="addMoreRule" data-tests-id="addMoreRule" style="height: 24px; width: 24px; display:flex"
+          (click)="openAction()">
+          <mat-icon class="material-icons md-18">add</mat-icon>
+        </button>
+        <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 10px">Add Rule</span>
+      </div>
+    </div>
+
+    <div style="margin: 30px 0 10px 0;">
+
+      <div *ngFor="let item of store.ruleList; let index = index" data-tests-id="ruleElement" (mouseleave)="hoveredIndex=-1" (mouseover)="hoveredIndex=index"
+        class="item" style="display: flex;" [ngStyle]="hoveredIndex === index ? {'background-color': '#E6F6FB', 'color': '#009FDB'} : {'background-color': '#FFFFFF', 'color':'gray'}">
+        <span style="width:100%; display: flex; align-items: center;">
+          {{item.description}} - [{{item.uid}}]
+        </span>
+        <div style="display: flex; justify-content: flex-end;" *ngIf="index==hoveredIndex">
+          <button (click)="openAction(item)" data-tests-id="editRule" class="btn-list" mat-icon-button>
+            <mat-icon class="md-24">mode_edit</mat-icon>
+          </button>
+          <button (click)="removeItem(item.uid)" data-tests-id="deleteRule" class="btn-list" mat-icon-button>
+            <mat-icon class="md-24">delete</mat-icon>
+          </button>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.scss b/public/src/app/rule-engine/rule-list/rule-list.component.scss
new file mode 100644
index 0000000..c4aee05
--- /dev/null
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.scss
@@ -0,0 +1,109 @@
+.container {
+  // margin: 1rem;
+  position: relative;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+
+  .header {
+    position: relative;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    color: #191919;
+    border-bottom: 2px solid #d2d2d2;
+    padding-bottom: 0.5rem;
+    margin: 1rem;
+  }
+
+  .item {
+    border: 1px solid #d2d2d2;
+    padding: 0 10px;
+    height: 40px;
+  }
+
+  .mat-fab,
+  .mat-mini-fab,
+  .mat-raised-button {
+    box-shadow: none;
+  }
+}
+.my-full-screen-dialog .mat-dialog-container {
+  max-width: none;
+  width: 100vw;
+  height: 100vh;
+  padding: 0;
+}
+
+.my-confrim-dialog .mat-dialog-container {
+  max-width: 600px;
+  width: 500px;
+  height: 200px;
+  padding: 0;
+}
+
+.btn-list {
+  display: flex !important;
+  justify-content: center !important;
+  color: #d2d2d2 !important;
+
+  &:hover {
+    color: #009fdb !important;
+  }
+}
+
+.hr {
+  display: block;
+  margin: 10px 0 10px 0;
+  border-top: 1px solid rgba(0, 0, 0, 0.12);
+  width: 100%;
+}
+
+.mat-fab,
+.mat-mini-fab,
+.mat-raised-button {
+  box-shadow: none;
+}
+
+.mat-mini-fab .mat-button-wrapper {
+  padding: 0 !important;
+}
+.mat-icon {
+  // width: 18px;
+  // height: 18px;
+  display: flex !important;
+  justify-content: center !important;
+  align-items: center !important;
+}
+/* Rules for sizing the icon. */
+.material-icons.md-18 {
+  font-size: 18px;
+}
+.material-icons.md-24 {
+  font-size: 24px;
+}
+.material-icons.md-30 {
+  font-size: 30px;
+}
+.material-icons.md-36 {
+  font-size: 36px;
+}
+.material-icons.md-48 {
+  font-size: 48px;
+}
+
+/* Rules for using icons as black on a light background. */
+.material-icons.md-dark {
+  color: rgba(0, 0, 0, 0.54);
+}
+.material-icons.md-dark.md-inactive {
+  color: rgba(0, 0, 0, 0.26);
+}
+
+/* Rules for using icons as white on a dark background. */
+.material-icons.md-light {
+  color: rgba(255, 255, 255, 1);
+}
+.material-icons.md-light.md-inactive {
+  color: rgba(255, 255, 255, 0.3);
+}
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.ts b/public/src/app/rule-engine/rule-list/rule-list.component.ts
new file mode 100644
index 0000000..45cfbd0
--- /dev/null
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.ts
@@ -0,0 +1,197 @@
+import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
+import { MatDialog } from '@angular/material';
+import { ActionListComponent } from '../action-list/action-list.component';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
+import { ConfirmPopupComponent } from '../confirm-popup/confirm-popup.component';
+import { Store } from '../../store/store';
+import { isEmpty } from 'lodash';
+import { ToastrService } from 'ngx-toastr';
+import { timer } from 'rxjs/observable/timer';
+
+const primaryColor = '#009fdb';
+
+@Component({
+  selector: 'app-rule-list',
+  templateUrl: './rule-list.component.html',
+  styleUrls: ['./rule-list.component.scss'],
+  encapsulation: ViewEncapsulation.None
+})
+export class RuleListComponent {
+  @ViewChild('versionEventType') versionType;
+  error: Array<string>;
+  // list = new Array();
+  schema;
+  targetSource;
+  dialogRef;
+  crud;
+  hoveredIndex;
+  params;
+  versions;
+  metaData;
+
+  private errorHandler(error: any) {
+    this.store.loader = false;
+    console.log(error);
+    this.error = [];
+    if (typeof error === 'string') {
+      this.error.push(error);
+    } else {
+      console.log(error.notes);
+      const errorFromServer = Object.values(error)[0] as any;
+      if (Object.keys(error)[0] === 'serviceExceptions') {
+        this.error = errorFromServer.map(x => x.formattedErrorMessage);
+      } else {
+        this.error = errorFromServer.formattedErrorMessage;
+      }
+    }
+  }
+
+  private getListOfRules() {
+    this._ruleApi.getListOfRules().subscribe(
+      response => {
+        console.log('res: %o', response);
+        if (response && Object.keys(response).length !== 0) {
+          this.versionType.updateData(
+            response.version,
+            response.eventType,
+            true
+          );
+          this.store.updateRuleList(Object.values(response.rules));
+          this.targetSource = response.schema;
+        } else {
+          this.store.resetRuleList();
+          this.versionType.updateVersionTypeFlag(false);
+          this.targetSource = null;
+          // if the the list is empty then get version and domain events
+          this._ruleApi.getMetaData().subscribe(data => {
+            console.log(data);
+            this.versions = data.map(x => x.version);
+            this.metaData = data;
+          });
+        }
+        this.store.loader = false;
+      },
+      error => {
+        this.errorHandler(error);
+      }
+    );
+  }
+
+  constructor(
+    private _ruleApi: RuleEngineApiService,
+    public dialog: MatDialog,
+    private toastr: ToastrService,
+    public store: Store
+  ) {
+    this.store.loader = true;
+    this.params = {
+      vfcmtUuid: this.store.mcUuid,
+      nodeName: this.store.tabParmasForRule[0].name,
+      nodeId: this.store.tabParmasForRule[0].nid,
+      fieldName: this.store.configurationForm[0].name,
+      userId: 'ym903w', // this.store.sdcParmas.userId
+      flowType: this.store.cdump.flowType
+    };
+    console.log('params: %o', this.params);
+    this.store.loader = true;
+    // set api params by iframe url query
+    this._ruleApi.setParams(this.params);
+    this.getListOfRules();
+  }
+
+  handlePropertyChange() {
+    this.store.loader = true;
+    this.error = null;
+    this.getListOfRules();
+  }
+
+  translateRules() {
+    this.store.loader = true;
+    // send translate JSON
+    this._ruleApi.translate().subscribe(
+      data => {
+        this.store.loader = false;
+        console.log(JSON.stringify(data));
+        let domElementName: string;
+        this.store.configurationForm.forEach(property => {
+          console.log('mappingTarget ', this.versionType.mappingTarget);
+          if (property.name === this.versionType.mappingTarget) {
+            property.assignment.value = JSON.stringify(data);
+            domElementName = property.name;
+            console.log(property.name);
+          }
+        });
+        this.toastr.success('', 'Translate succeeded');
+        this.store.expandAdvancedSetting[this.store.tabIndex] = true;
+        const source = timer(500);
+        source.subscribe(val => {
+          const el = document.getElementById(domElementName);
+          const label = el.children.item(0) as HTMLElement;
+          label.style.color = primaryColor;
+          const input = el.children.item(1) as HTMLElement;
+          input.style.color = primaryColor;
+          input.style.borderColor = primaryColor;
+          el.scrollIntoView();
+        });
+      },
+      error => {
+        this.errorHandler(error);
+      }
+    );
+  }
+
+  handleUpdateNode(data) {
+    this.targetSource = data.nodes;
+    this.store.resetRuleList();
+  }
+
+  removeItem(uid) {
+    this.dialogRef = this.dialog.open(ConfirmPopupComponent, {
+      panelClass: 'my-confrim-dialog',
+      disableClose: true
+    });
+    this.dialogRef.afterClosed().subscribe(result => {
+      // if the user want to delete
+      if (result) {
+        // call be api
+        this.store.loader = true;
+        this._ruleApi.deleteRule(uid).subscribe(
+          success => {
+            this.store.removeRuleFromList(uid);
+            // if its the last rule
+            if (this.store.ruleList.length === 0) {
+              this._ruleApi.getMetaData().subscribe(data => {
+                console.log(data);
+                this.versions = data.map(x => x.version);
+                this.metaData = data;
+                this.versionType.updateVersionTypeFlag(false);
+                this.targetSource = null;
+              });
+            }
+            this.store.loader = false;
+          },
+          error => {
+            this.store.loader = false;
+            this.errorHandler(error);
+          }
+        );
+      }
+    });
+  }
+
+  openAction(item): void {
+    this.crud = isEmpty(item) ? 'new' : 'edit';
+    this._ruleApi.passDataToEditor({
+      version: this.versionType.selectedVersion,
+      eventType: this.versionType.selectedEvent,
+      targetSource: this.targetSource,
+      item: isEmpty(item) ? null : item,
+      params: this.params
+    });
+    this.store.isLeftVisible = false;
+
+    this._ruleApi.updateVersionLock.subscribe(() => {
+      this.versionType.updateVersionTypeFlag(true);
+    });
+  }
+}
diff --git a/public/src/app/rule-engine/slide-panel/slide-panel.component.html b/public/src/app/rule-engine/slide-panel/slide-panel.component.html
new file mode 100644
index 0000000..f0ee27e
--- /dev/null
+++ b/public/src/app/rule-engine/slide-panel/slide-panel.component.html
@@ -0,0 +1,8 @@
+<div class="panes" [@slide]="activePane">
+  <div style="height: 100%">
+    <ng-content select="[leftPane]"></ng-content>
+  </div>
+  <div style="height: 100%">
+    <ng-content select="[rightPane]"></ng-content>
+  </div>
+</div>
diff --git a/public/src/app/rule-engine/slide-panel/slide-panel.component.scss b/public/src/app/rule-engine/slide-panel/slide-panel.component.scss
new file mode 100644
index 0000000..2c9f00a
--- /dev/null
+++ b/public/src/app/rule-engine/slide-panel/slide-panel.component.scss
@@ -0,0 +1,15 @@
+:host {
+  display: block;
+  overflow: hidden;
+  height: 100%;
+}
+
+.panes {
+  height: 100%;
+  width: 200%;
+
+  display: flex;
+  div {
+    flex: 1;
+  }
+}
diff --git a/public/src/app/rule-engine/slide-panel/slide-panel.component.ts b/public/src/app/rule-engine/slide-panel/slide-panel.component.ts
new file mode 100644
index 0000000..d7aa652
--- /dev/null
+++ b/public/src/app/rule-engine/slide-panel/slide-panel.component.ts
@@ -0,0 +1,27 @@
+import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
+import {
+  animate,
+  state,
+  style,
+  transition,
+  trigger
+} from '@angular/animations';
+
+type PaneType = 'left' | 'right';
+
+@Component({
+  selector: 'app-slide-panel',
+  changeDetection: ChangeDetectionStrategy.OnPush,
+  templateUrl: './slide-panel.component.html',
+  styleUrls: ['./slide-panel.component.scss'],
+  animations: [
+    trigger('slide', [
+      state('left', style({ transform: 'translateX(0)' })),
+      state('right', style({ transform: 'translateX(-50%)' })),
+      transition('* => *', animate(300))
+    ])
+  ]
+})
+export class SlidePanelComponent {
+  @Input() activePane: PaneType = 'left';
+}
diff --git a/public/src/app/rule-engine/target/target.component.html b/public/src/app/rule-engine/target/target.component.html
new file mode 100644
index 0000000..7a321ef
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.component.html
@@ -0,0 +1,28 @@
+<form #targetFrm="ngForm" novalidate class="target">
+  <div class="top-select">
+    <span class="label" style="border-right: none;">Target</span>
+    <input class="text-input" style="border-right: none;" type="text" [(ngModel)]="selectedNode.id" (ngModelChange)="inputChange()"
+      ngModel required name="targetInput" data-tests-id="inputTarget">
+    <span class="label clickable" data-tests-id="openTargetTree" style="border-left: none;" (click)="showOption = !showOption">
+      <img src="{{imgBase}}/target.svg" alt="target">
+    </span>
+  </div>
+  <div class="bottom-select" *ngIf="showOption" [@toggleDropdown]>
+    <div class="filter-container" style="display: flex; border-bottom: 1px solid #F2F2F2;margin-bottom: 1rem; width:100%;">
+      <input id="filter" #filter class="filter" (keyup)="tree.treeModel.filterNodes(filter.value)" placeholder="Search..." />
+      <button mat-raised-button style="min-width: 18px; box-shadow: none; display: flex; justify-content: center;" (click)="tree.treeModel.clearFilter(); filter.value = ''">
+        <mat-icon>clear</mat-icon>
+      </button>
+    </div>
+
+    <tree-root #tree [focused]="true" class="targetTree" (event)="onEvent($event)" [nodes]="nodes" [options]="options">
+      <ng-template #treeNodeTemplate let-node let-index="index">
+        <span *ngIf="node.data.isRequired" class="required"></span>
+        <span data-tests-id="targetNode">
+          {{ node.data.name }}
+        </span>
+      </ng-template>
+    </tree-root>
+
+  </div>
+</form>
diff --git a/public/src/app/rule-engine/target/target.component.scss b/public/src/app/rule-engine/target/target.component.scss
new file mode 100644
index 0000000..ed2d70e
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.component.scss
@@ -0,0 +1,99 @@
+.targetTree {
+  tree-viewport {
+    overflow: hidden;
+  }
+}
+
+.conatiner {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  height: 100%;
+  justify-content: space-between;
+
+  .center-content {
+    display: flex;
+    width: 100%;
+
+    .action-info {
+      background: #93cdff;
+      padding: 6px;
+      border-radius: 5px;
+      height: 20px;
+      margin: 0 10px;
+    }
+
+    .regex {
+      max-width: 250px;
+      float: right;
+      display: flex;
+      align-items: center;
+      padding: 20px 10px;
+
+      .label {
+        border: 1px solid #d2d2d2;
+        padding: 0 5px;
+        height: 30px;
+        justify-content: center;
+        align-items: center;
+        display: flex;
+      }
+    }
+  }
+}
+.target {
+  width: 100%;
+  .top-select {
+    overflow: hidden;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+  }
+  .label {
+    border: 1px solid #d2d2d2;
+    padding: 0 5px;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    display: flex;
+  }
+
+  .bottom-select {
+    border: 1px solid #ccc;
+    padding: 7px;
+    .filter-container {
+      padding: 5px;
+      .filter {
+        background: #fff;
+        color: black;
+        font: inherit;
+        border: 0;
+        outline: 0;
+        padding: 10px;
+        width: 100%;
+      }
+    }
+  }
+}
+
+.small-padding {
+  padding-right: 10px;
+}
+
+.text-input {
+  width: 100%;
+  height: 30px;
+  margin: 0;
+  padding: 0 5px;
+  border: 1px solid #d2d2d2;
+}
+
+.clickable {
+  cursor: pointer;
+}
+
+.required::before {
+  content: '*';
+  color: red;
+}
diff --git a/public/src/app/rule-engine/target/target.component.spec.ts b/public/src/app/rule-engine/target/target.component.spec.ts
new file mode 100644
index 0000000..6ddd8cd
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.component.spec.ts
@@ -0,0 +1,57 @@
+import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { DebugElement } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { MatButtonModule, MatIconModule } from '@angular/material';
+// component
+import { TargetComponent } from './target.component';
+
+describe('TargetComponent', () => {
+  let component: TargetComponent;
+  let fixture: ComponentFixture<TargetComponent>;
+  let de: DebugElement;
+  let el: HTMLElement;
+
+  beforeEach(
+    async(() => {
+      TestBed.configureTestingModule({
+        imports: [
+          FormsModule,
+          BrowserAnimationsModule,
+          MatButtonModule,
+          MatIconModule
+        ],
+        providers: [],
+        schemas: [CUSTOM_ELEMENTS_SCHEMA],
+        declarations: [TargetComponent]
+      }).compileComponents();
+    })
+  );
+
+  beforeEach(() => {
+    // create component and test fixture
+    fixture = TestBed.createComponent(TargetComponent);
+    // get test component from the fixture
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should be created', () => {
+    expect(component).toBeTruthy();
+  });
+
+  it('should open target tree when click on button', () => {
+    const openTargetElement = fixture.debugElement
+      .query(By.css('span[data-tests-id=openTargetTree]'))
+      .nativeElement.click();
+
+    fixture.detectChanges();
+
+    const treeContainer = fixture.debugElement.query(
+      By.css('.filter-container')
+    );
+    expect(treeContainer).not.toBeNull();
+  });
+});
diff --git a/public/src/app/rule-engine/target/target.component.ts b/public/src/app/rule-engine/target/target.component.ts
new file mode 100644
index 0000000..f17cdef
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.component.ts
@@ -0,0 +1,77 @@
+import {
+  Component,
+  ViewEncapsulation,
+  ViewChild,
+  Input,
+  Output,
+  EventEmitter
+} from '@angular/core';
+import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
+import {
+  trigger,
+  state,
+  animate,
+  transition,
+  style
+} from '@angular/animations';
+import { fuzzysearch, getBranchRequierds, validation } from './target.util';
+import { environment } from '../../../environments/environment';
+import { NgForm } from '@angular/forms';
+
+@Component({
+  selector: 'app-target',
+  templateUrl: './target.component.html',
+  styleUrls: ['./target.component.scss'],
+  encapsulation: ViewEncapsulation.None,
+  animations: [
+    trigger('toggleDropdown', [
+      transition('void => *', [
+        style({ opacity: 0, offset: 0, height: 0 }),
+        animate('300ms cubic-bezier(0.17, 0.04, 0.03, 0.94)')
+      ]),
+      transition('* => void', [
+        style({ opacity: 1, offset: 1, height: 'auto' }),
+        animate('100ms cubic-bezier(0.17, 0.04, 0.03, 0.94)')
+      ])
+    ])
+  ]
+})
+export class TargetComponent {
+  imgBase = environment.imagePath;
+  showOption = false;
+  selectedNode = { name: '', id: '' };
+  @Input() nodes;
+  @Output() onTargetChange = new EventEmitter();
+  @ViewChild(TreeComponent) private tree: TreeComponent;
+  @ViewChild('targetFrm') targetFrm: NgForm;
+  options: ITreeOptions = {
+    animateExpand: true,
+    animateSpeed: 30,
+    animateAcceleration: 1.2
+  };
+
+  filterFn(value, treeModel: TreeModel) {
+    treeModel.filterNodes(node => fuzzysearch(value, node.data.name));
+  }
+
+  inputChange() {
+    this.onTargetChange.emit(this.selectedNode.id);
+  }
+
+  updateMode(action) {
+    this.selectedNode = {
+      id: action.target,
+      name: ''
+    };
+  }
+
+  onEvent(event) {
+    if (event.eventName === 'activate') {
+      if (event.node.data.children === null) {
+        this.selectedNode = event.node.data;
+        this.onTargetChange.emit(this.selectedNode);
+        this.showOption = false;
+      }
+    }
+  }
+}
diff --git a/public/src/app/rule-engine/target/target.util.ts b/public/src/app/rule-engine/target/target.util.ts
new file mode 100644
index 0000000..6a6df62
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.util.ts
@@ -0,0 +1,50 @@
+export function getBranchRequierds(node, requiredArr) {
+  if (node.parent) {
+    if (node.parent.data.hasOwnProperty('requiredChildren')) {
+      requiredArr.push(node.parent.data.requiredChildren);
+    }
+    return getBranchRequierds(node.parent, requiredArr);
+  }
+  return requiredArr;
+}
+
+export function validation(node, userSelection) {
+  const requiredArr = [];
+  const validationRequired = getBranchRequierds(node, requiredArr);
+  const nonValidationArr = [];
+  validationRequired.forEach(nodeRequireds => {
+    return nodeRequireds.forEach(levelRequired => {
+      if (userSelection.filter(node => node === levelRequired).length === 0) {
+        nonValidationArr.push(levelRequired);
+      }
+      return;
+    });
+  });
+  return nonValidationArr;
+}
+
+export function fuzzysearch(needle, haystack) {
+  const haystackLC = haystack.toLowerCase();
+  const needleLC = needle.toLowerCase();
+
+  const hlen = haystack.length;
+  const nlen = needleLC.length;
+
+  if (nlen > hlen) {
+    return false;
+  }
+  if (nlen === hlen) {
+    return needleLC === haystackLC;
+  }
+  outer: for (let i = 0, j = 0; i < nlen; i++) {
+    const nch = needleLC.charCodeAt(i);
+
+    while (j < hlen) {
+      if (haystackLC.charCodeAt(j++) === nch) {
+        continue outer;
+      }
+    }
+    return false;
+  }
+  return true;
+}
diff --git a/public/src/app/rule-engine/target/target.validation.spec.ts b/public/src/app/rule-engine/target/target.validation.spec.ts
new file mode 100644
index 0000000..71dc083
--- /dev/null
+++ b/public/src/app/rule-engine/target/target.validation.spec.ts
@@ -0,0 +1,83 @@
+import { TestBed, async } from '@angular/core/testing';
+import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
+import { validation, getBranchRequierds } from './target.util';
+
+const _nodes = [
+  {
+    id: 1,
+    name: 'North America',
+    requiredChildren: ['United States'],
+    children: [
+      {
+        id: 11,
+        name: 'United States',
+        requiredChildren: ['New York', 'Florida'],
+        children: [
+          { id: 111, name: 'New York' },
+          { id: 112, name: 'California' },
+          { id: 113, name: 'Florida' }
+        ]
+      },
+      { id: 12, name: 'Canada' }
+    ]
+  },
+  {
+    name: 'South America',
+    children: [{ name: 'Argentina', children: [] }, { name: 'Brazil' }]
+  },
+  {
+    name: 'Europe',
+    children: [
+      { name: 'England' },
+      { name: 'Germany' },
+      { name: 'France' },
+      { name: 'Italy' },
+      { name: 'Spain' }
+    ]
+  }
+];
+
+const tree = new TreeModel();
+
+describe('treeTest', () => {
+  beforeAll(() => {
+    tree.setData({
+      nodes: _nodes,
+      options: null,
+      events: null
+    });
+  });
+
+  it('should return node branch requireds', () => {
+    // console.log('root', tree.getFirstRoot().data.name);
+    // console.log(tree.getNodeBy((node) => node.data.name === 'California').data.uuid);
+    // console.log(tree.getNodeBy((node) => node.data.name === 'California').id);
+    // console.log(tree.getNodeById(1));
+    const selectedNode = tree.getNodeBy(
+      node => node.data.name === 'California'
+    );
+    const result = getBranchRequierds(selectedNode, []);
+    const expected = [['New York', 'Florida'], ['United States']];
+
+    expect(result.length).toBeGreaterThan(1);
+    expect(result).toEqual(expected);
+  });
+
+  it('should return empty array - success state', () => {
+    const userSelect = ['Florida', 'New York', 'United States'];
+    const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
+    const result = validation(selectedNode, userSelect);
+
+    expect(result.length).toEqual(0);
+    expect(result).toEqual([]);
+  });
+
+  it('should return validation array - missing required filed', () => {
+    const userSelect = ['New York'];
+    const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
+    const result = validation(selectedNode, userSelect);
+    const expected = ['Florida', 'United States'];
+
+    expect(result).toEqual(expected);
+  });
+});
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.html b/public/src/app/rule-engine/version-type-select/version-type-select.component.html
new file mode 100644
index 0000000..79b9eae
--- /dev/null
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.html
@@ -0,0 +1,34 @@
+<div class="selected-event">
+
+  <div style="flex:1; display: flex; align-items: center;">
+
+    <span class="field-label required" style="margin-right: 10px;">Mapping Target</span>
+    <select name="mappingTarget" [(ngModel)]="mappingTarget" (ngModelChange)="onChangeMapping($event)" data-tests-id="mappingDdl"
+      style="height: 27px; padding: 0.3rem; margin-right: 18px;" class="field-select">
+      <option [ngValue]="null" disabled>Select Mapping</option>
+      <option *ngFor="let target of advancedSetting" [value]="target.name" data-tests-id="templateOptions">{{target.name}}</option>
+    </select>
+
+    <span class="field-label required" style="font-size: 13px; margin-right: 10px; display: flex;
+    align-items: center;" [ngClass]="{'required' : !readOnly}">
+      Version
+    </span>
+    <select *ngIf="!readOnly" style="height: 27px; padding: 0.3rem; margin-right: 18px;" [(ngModel)]="selectedVersion" (ngModelChange)="onSelectVersion($event)"
+      data-tests-id="selectVersion">
+      <option [ngValue]="null" disabled>Select Version</option>
+      <option *ngFor="let version of versions" [value]="version" data-tests-id="option">{{version}}</option>
+    </select>
+    <span *ngIf="readOnly" style="height: 27px; padding: 0.3rem; width:100px; margin-right: 18px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedVersion}}</span>
+
+    <span class="field-label required" style="font-size: 13px; display: flex; align-items: center; width: 100px;" [ngClass]="{'required' : !readOnly}">
+      Event Domain
+    </span>
+    <select *ngIf="!readOnly" style="height: 27px; padding: 0.3rem;" [(ngModel)]="selectedEvent" (ngModelChange)="onSelectEventType($event)"
+      data-tests-id="selectEventType">
+      <option [ngValue]="null" disabled>Select Type</option>
+      <option *ngFor="let event of events" [value]="event" data-tests-id="option">{{event | slice:0:event.length-6}}</option>
+    </select>
+    <span *ngIf="readOnly" style="height: 27px; padding: 0.3rem; width:200px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedEvent | slice:0:selectedEvent.length-6}}</span>
+  </div>
+
+</div>
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.scss b/public/src/app/rule-engine/version-type-select/version-type-select.component.scss
new file mode 100644
index 0000000..9f7bad3
--- /dev/null
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.scss
@@ -0,0 +1,46 @@
+.selected-event {
+  display: flex;
+  margin: 10px 0;
+  // align-items: center;
+  flex-direction: column;
+  margin-bottom: 30px;
+}
+
+.small-padding {
+  padding-right: 1rem;
+}
+
+.btn {
+  padding: 6px;
+  margin: 6px 8px 6px 8px;
+  min-width: 88px;
+  border-radius: 3px;
+  font-size: 14px;
+  text-align: center;
+  text-transform: uppercase;
+  text-decoration: none;
+  border: none;
+  outline: none;
+}
+
+.target-field {
+  width: 370px;
+  display: flex;
+  align-items: center;
+  margin: 10px;
+  .field-label {
+    padding-right: 10px;
+  }
+  .required::before {
+    content: '*';
+    color: red;
+    padding-right: 5px;
+  }
+  .field-select {
+    flex: 1;
+    width: 100%;
+    min-width: 250px;
+    padding: 5px 0 5px 5px;
+    margin: 0;
+  }
+}
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.ts b/public/src/app/rule-engine/version-type-select/version-type-select.component.ts
new file mode 100644
index 0000000..b4170a5
--- /dev/null
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.ts
@@ -0,0 +1,86 @@
+import { Component, Output, EventEmitter, Input } from '@angular/core';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
+import { Store } from '../../store/store';
+
+@Component({
+  selector: 'app-version-type-select',
+  templateUrl: './version-type-select.component.html',
+  styleUrls: ['./version-type-select.component.scss']
+})
+export class VersionTypeSelectComponent {
+  mappingTarget: string;
+  selectedEvent: String;
+  selectedVersion: String;
+  events: Array<String>;
+  loader: boolean;
+  editMode = false;
+  readOnly = false;
+  @Input() versions;
+  @Input() metaData;
+  @Output() nodesUpdated = new EventEmitter();
+  @Output() refrashRuleList = new EventEmitter();
+  advancedSetting;
+
+  constructor(private _ruleApi: RuleEngineApiService, public store: Store) {
+    this.selectedVersion = null;
+    this.selectedEvent = null;
+    // set ddl with the first option value.
+    this.mappingTarget = this.store.configurationForm[0].name;
+    this.advancedSetting = this.store.configurationForm.filter(item => {
+      if (
+        !(
+          item.hasOwnProperty('constraints') &&
+          !item.assignment.value.includes('get_input')
+        )
+      ) {
+        return item;
+      }
+    });
+  }
+
+  onChangeMapping(configurationKey) {
+    console.log('changing propertiy key:', configurationKey);
+    this._ruleApi.setFieldName(configurationKey);
+    this.refrashRuleList.next();
+  }
+
+  updateData(version, eventType, isList) {
+    this.selectedVersion = version;
+    this.selectedEvent = eventType;
+    this.readOnly = true;
+  }
+
+  updateVersionTypeFlag(flag) {
+    this.readOnly = flag;
+    if (flag === false) {
+      this.selectedVersion = null;
+      this.selectedEvent = null;
+    }
+  }
+
+  onSelectVersion(version, eventType) {
+    if (typeof eventType === 'undefined') {
+      this.selectedEvent = '';
+      this.events = this.metaData
+        .filter(x => x.version === version)
+        .map(x => x.eventTypes)[0];
+      if (eventType) {
+        this.editMode = true;
+        this.selectedEvent = eventType + 'Fields';
+      }
+    }
+  }
+
+  onSelectEventType(eventType) {
+    this.loader = true;
+    this._ruleApi
+      .getSchema(this.selectedVersion, this.selectedEvent)
+      .subscribe(tree => {
+        console.log('tree: ', tree);
+        this.loader = false;
+        this.nodesUpdated.emit({
+          nodes: tree
+        });
+      });
+  }
+}
diff --git a/public/src/app/rule-frame/rule-frame.component.html b/public/src/app/rule-frame/rule-frame.component.html
new file mode 100644
index 0000000..10f3032
--- /dev/null
+++ b/public/src/app/rule-frame/rule-frame.component.html
@@ -0,0 +1,19 @@
+<div style="position: relative; display: flex; justify-content: flex-end; height: 100%;">
+
+  <div *ngIf="!tabName.includes('map')" style="margin: 1em;">
+    <app-bar-icons [tabName]="tabName"></app-bar-icons>
+  </div>
+
+  <!-- rule engine -->
+  <div style="width: 100%;" *ngIf="tabName.includes('map')">
+    <app-slide-panel [activePane]="store.isLeftVisible ? 'left' : 'right'">
+      <div leftPane style="height: 100%; overflow: auto;">
+        <app-rule-list></app-rule-list>
+      </div>
+      <div rightPane style="height: 100%; overflow: auto;">
+        <app-action-list></app-action-list>
+      </div>
+    </app-slide-panel>
+  </div>
+
+</div>
diff --git a/public/src/app/rule-frame/rule-frame.component.scss b/public/src/app/rule-frame/rule-frame.component.scss
new file mode 100644
index 0000000..2a95e01
--- /dev/null
+++ b/public/src/app/rule-frame/rule-frame.component.scss
@@ -0,0 +1,10 @@
+.frame {
+  display: block;
+  width: 100vw;
+  height: 100vh;
+  max-width: 100%;
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  box-sizing: border-box;
+}
diff --git a/public/src/app/rule-frame/rule-frame.component.ts b/public/src/app/rule-frame/rule-frame.component.ts
new file mode 100644
index 0000000..4d5f999
--- /dev/null
+++ b/public/src/app/rule-frame/rule-frame.component.ts
@@ -0,0 +1,35 @@
+import { Component, OnDestroy, Input, ViewChild } from '@angular/core';
+import { Store } from '../store/store';
+import { BarIconsComponent } from '../bar-icons/bar-icons.component';
+
+@Component({
+  selector: 'app-rule-frame',
+  templateUrl: './rule-frame.component.html',
+  styleUrls: ['./rule-frame.component.scss']
+})
+export class RuleFrameComponent implements OnDestroy {
+  expandSetting = false;
+  configuration;
+  mappingTarget: string;
+  showHeaderBtn = true;
+  @Input() tabName: string;
+  // @ViewChild(BarIconsComponent) barFormsRef: BarIconsComponent;
+
+  constructor(public store: Store) {
+    this.store.isLeftVisible = true;
+  }
+
+  ngOnDestroy() {}
+
+  onChangeMapping(configurationKey) {
+    console.log('changing ifrmae entry', configurationKey);
+  }
+
+  isPropertyDdl(property) {
+    return property.hasOwnProperty('constraints');
+  }
+
+  enableSetting() {
+    this.expandSetting = !this.expandSetting;
+  }
+}
diff --git a/public/src/app/store/store.ts b/public/src/app/store/store.ts
new file mode 100644
index 0000000..a9f2431
--- /dev/null
+++ b/public/src/app/store/store.ts
@@ -0,0 +1,98 @@
+import { Injectable } from '@angular/core';
+import { observable, computed, action, toJS, reaction } from 'mobx';
+import { findIndex } from 'lodash';
+
+@Injectable()
+export class Store {
+  @observable sdcParmas;
+  @observable isOwner;
+  @observable mcUuid;
+  @observable cdump;
+  @observable tabsProperties;
+  @observable tabIndex = 0;
+  @observable isEditMode = false;
+  @observable loader = false;
+  @observable cdumpIsDirty = false;
+  @observable expandAdvancedSetting = [];
+  @observable generalflow;
+  @observable vfiName;
+  // error dialog
+  @observable displayErrorDialog = false;
+  @observable ErrorContent = [];
+
+  // rule-engine
+  @observable tabParmasForRule;
+  @observable ruleList = new Array();
+  @observable ruleEditorInitializedState;
+  @observable isLeftVisible;
+  @observable inprogress;
+
+  @action
+  updateRuleInList(rule) {
+    console.log('current list:', toJS(this.ruleList));
+    console.log('new rule', rule);
+    const ruleIndex = findIndex(this.ruleList, function(ruleFromList) {
+      console.log(
+        `find match rule: list - ${ruleFromList.uid}, rule - ${rule.uid}`
+      );
+      return ruleFromList.uid === rule.uid;
+    });
+    if (ruleIndex > -1) {
+      console.log('update rule');
+      this.ruleList[ruleIndex] = rule;
+    } else {
+      console.log('new rule');
+      this.ruleList.push(rule);
+    }
+  }
+
+  @action
+  updateRuleList(listOfRules) {
+    this.ruleList = listOfRules;
+    console.log(toJS(this.ruleList));
+  }
+
+  @action
+  removeRuleFromList(uid) {
+    this.ruleList = this.ruleList.filter(item => item.uid !== uid);
+  }
+
+  @action
+  resetRuleList() {
+    this.ruleList = new Array();
+  }
+
+  @action
+  changeStateForEditor(data) {
+    this.ruleEditorInitializedState = data;
+  }
+
+  @action
+  setTabIndex(value) {
+    this.tabIndex = value;
+  }
+
+  @action
+  setTabsProperties(nodes) {
+    this.tabsProperties = nodes.map(tabItem => {
+      return tabItem.properties.map(x => {
+        if (!x.assignment) {
+          x.assignment = {};
+          x.assignment.value = '';
+        } else if (typeof x.assignment.value === 'object') {
+          x.assignment.value = JSON.stringify(x.assignment.value);
+        }
+        return x;
+      });
+    });
+    nodes.map(() => {
+      this.expandAdvancedSetting.push(false);
+    });
+    console.log('tabsProperties: %o', this.tabsProperties.toJS());
+  }
+
+  @computed
+  get configurationForm() {
+    return this.tabIndex >= 0 ? this.tabsProperties[this.tabIndex] : null;
+  }
+}
diff --git a/public/src/assets/.gitkeep b/public/src/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/src/assets/.gitkeep
diff --git a/public/src/assets/fonts/OpenSans-Bold.ttf b/public/src/assets/fonts/OpenSans-Bold.ttf
new file mode 100644
index 0000000..7b52945
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-Bold.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-BoldItalic.ttf b/public/src/assets/fonts/OpenSans-BoldItalic.ttf
new file mode 100644
index 0000000..a670e14
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-BoldItalic.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-ExtraBold.ttf b/public/src/assets/fonts/OpenSans-ExtraBold.ttf
new file mode 100644
index 0000000..3660681
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-ExtraBold.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-ExtraBoldItalic.ttf b/public/src/assets/fonts/OpenSans-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..8c4c15d
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-ExtraBoldItalic.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-Italic.ttf b/public/src/assets/fonts/OpenSans-Italic.ttf
new file mode 100644
index 0000000..e6c5414
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-Italic.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-Light.ttf b/public/src/assets/fonts/OpenSans-Light.ttf
new file mode 100644
index 0000000..563872c
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-Light.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-LightItalic.ttf b/public/src/assets/fonts/OpenSans-LightItalic.ttf
new file mode 100644
index 0000000..5ebe2a2
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-LightItalic.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-Regular.ttf b/public/src/assets/fonts/OpenSans-Regular.ttf
new file mode 100644
index 0000000..2e31d02
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-Regular.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-SemiBold.ttf b/public/src/assets/fonts/OpenSans-SemiBold.ttf
new file mode 100644
index 0000000..99db86a
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-SemiBold.ttf
Binary files differ
diff --git a/public/src/assets/fonts/OpenSans-SemiBoldItalic.ttf b/public/src/assets/fonts/OpenSans-SemiBoldItalic.ttf
new file mode 100644
index 0000000..8cad4e3
--- /dev/null
+++ b/public/src/assets/fonts/OpenSans-SemiBoldItalic.ttf
Binary files differ
diff --git a/public/src/assets/images/Regex.svg b/public/src/assets/images/Regex.svg
new file mode 100644
index 0000000..9665d32
--- /dev/null
+++ b/public/src/assets/images/Regex.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/Regex</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/Regex" fill="#666666">
+            <path d="M3.54146058,12.0499152 L1.86915752,12.0499152 L1.86915752,15.0314555 L1,15.0314555 L1,7.33005982 L3.55246258,7.33005982 C4.37394889,7.33005982 5.0138918,7.53359467 5.47231051,7.94067048 C5.93072921,8.34774628 6.15993512,8.92167789 6.15993512,9.66248252 C6.15993512,10.2199197 6.00957604,10.7003353 5.70885337,11.1037437 C5.40813071,11.5071522 4.99005912,11.7821993 4.45462607,11.9288933 L6.42398298,15.0314555 L5.37879356,15.0314555 L3.54146058,12.0499152 Z M1.86915752,11.2467696 L3.56346457,11.2467696 C4.09889762,11.2467696 4.5169692,11.1074124 4.81769187,10.8286939 C5.11841454,10.5499753 5.26877362,10.1649094 5.26877362,9.67348451 C5.26877362,9.18939436 5.12208184,8.81166301 4.82869387,8.54027914 C4.5353059,8.26889527 4.11356701,8.13320537 3.56346457,8.13320537 L1.86915752,8.13320537 L1.86915752,11.2467696 Z M8.08528405,12.4789929 C8.14396164,13.0731036 8.35483108,13.5425173 8.7178987,13.8872482 C9.08096631,14.231979 9.54854637,14.4043419 10.1206529,14.4043419 C10.4653838,14.4043419 10.7661019,14.3713362 11.0228164,14.3053239 C11.2795309,14.2393116 11.554578,14.1219582 11.847966,13.9532601 L12.1230158,14.5913758 C11.8076237,14.7820779 11.4867355,14.9214351 11.1603413,15.0094515 C10.8339472,15.0974679 10.4653841,15.1414755 10.054641,15.1414755 C9.48253441,15.1414755 8.98378234,15.0131201 8.55836979,14.7564057 C8.13295723,14.4996912 7.80656801,14.1494646 7.57919233,13.7057153 C7.35181665,13.261966 7.23813052,12.7540457 7.23813052,12.1819391 C7.23813052,11.5951632 7.3573176,11.0744073 7.59569532,10.619656 C7.83407305,10.1649046 8.15129403,9.81467799 8.54736779,9.56896557 C8.94344155,9.32325314 9.37984961,9.20039877 9.85660506,9.20039877 C10.3480299,9.20039877 10.7752697,9.31591855 11.1383373,9.54696158 C11.501405,9.77800461 11.781953,10.0952256 11.9799899,10.498634 C12.1780268,10.9020425 12.2770437,11.356787 12.2770437,11.8628813 C12.2770437,12.0682529 12.2697091,12.2736214 12.2550397,12.4789929 L8.08528405,12.4789929 Z M9.86760706,9.93753236 C9.3981863,9.93753236 9.00395213,10.1025606 8.68489272,10.4326221 C8.3658333,10.7626836 8.16963304,11.2064262 8.09628604,11.7638633 L11.4408922,11.7638633 L11.4408922,11.7088534 C11.4408922,11.3714572 11.3730472,11.0652381 11.2373553,10.7901869 C11.1016634,10.5151357 10.916465,10.3042662 10.6817546,10.1575722 C10.4470442,10.0108783 10.1756644,9.93753236 9.86760706,9.93753236 Z M17.183933,7 L18.0200845,7 L13.7513109,16.8357825 L12.9151594,16.8357825 L17.183933,7 Z M20.4955331,17.5179061 C19.7400591,17.5179061 19.0506077,17.3565452 18.4271583,17.0338184 L18.6471982,16.3516948 C18.9039126,16.4837194 19.1899616,16.5882373 19.5053537,16.6652516 C19.8207458,16.742266 20.1287985,16.7807725 20.4295212,16.7807725 C21.0603053,16.7807725 21.5205508,16.6340808 21.8102714,16.3406928 C22.099992,16.0473048 22.2448502,15.5852257 22.2448502,14.9544416 L22.2448502,14.3603339 C21.9514622,14.5950443 21.6599123,14.7655735 21.3701916,14.8719266 C21.080471,14.9782798 20.7522482,15.0314555 20.3855132,15.0314555 C19.9087577,15.0314555 19.4888525,14.9049339 19.1257849,14.6518867 C18.7627173,14.3988396 18.4840029,14.0522803 18.2896334,13.6121983 C18.0952638,13.1721164 17.9980805,12.6733643 17.9980805,12.1159271 C17.9980805,11.5364859 18.109933,11.0248983 18.3336413,10.581149 C18.5573497,10.1373997 18.8599015,9.7963413 19.2413058,9.55796357 C19.6227102,9.31958585 20.055451,9.20039877 20.5395411,9.20039877 C21.1849946,9.20039877 21.7717618,9.40576727 22.2998601,9.81651043 L22.3658721,9.32142071 L23.0699997,9.32142071 L23.0699997,14.8884296 C23.0699997,15.7465894 22.8517957,16.3993679 22.4153811,16.8467845 C21.9789665,17.2942012 21.3390235,17.5179061 20.4955331,17.5179061 Z M20.5725471,14.2943219 C20.8732698,14.2943219 21.1574851,14.2411462 21.4252016,14.134793 C21.6929181,14.0284399 21.9661316,13.8579107 22.2448502,13.6232003 L22.2448502,10.564646 C22.0174745,10.3666091 21.7680984,10.2125828 21.4967146,10.1025623 C21.2253307,9.99254178 20.9539509,9.93753236 20.682567,9.93753236 C20.1177952,9.93753236 19.6685516,10.1373999 19.3348228,10.537141 C19.001094,10.9368821 18.8342321,11.4631389 18.8342321,12.1159271 C18.8342321,12.7613807 18.9937594,13.2858038 19.3128188,13.6892123 C19.6318782,14.0926207 20.0517834,14.2943219 20.5725471,14.2943219 Z" id="Re/g"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/add-b.svg b/public/src/assets/images/add-b.svg
new file mode 100644
index 0000000..25eb583
--- /dev/null
+++ b/public/src/assets/images/add-b.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/add-b</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/add-b" fill="#009FDB">
+            <path d="M25,22.9614258 L25,12 L23,12 L23,22.9614258 L12,22.9614258 L12,25 L23,25 L23,37 L25,37 L25,25 L37,25 L37,22.9614258 L25,22.9614258 Z M24,48 C10.745166,48 0,37.254834 0,24 C0,10.745166 10.745166,0 24,0 C37.254834,0 48,10.745166 48,24 C48,37.254834 37.254834,48 24,48 Z" id="Combined-Shape"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/add-s.svg b/public/src/assets/images/add-s.svg
new file mode 100644
index 0000000..4487f54
--- /dev/null
+++ b/public/src/assets/images/add-s.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/add-s</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/add-s" fill="#009FDB">
+            <path d="M12.4761905,11.5238095 L12.4761905,6.76190476 L11.5238095,6.76190476 L11.5238095,11.5238095 L6.76190476,11.5238095 L6.76190476,12.4761905 L11.5238095,12.4761905 L11.5238095,17.2380952 L12.4761905,17.2380952 L12.4761905,12.4761905 L17.2380952,12.4761905 L17.2380952,11.5238095 L12.4761905,11.5238095 Z M12,22 C6.4771525,22 2,17.5228475 2,12 C2,6.4771525 6.4771525,2 12,2 C17.5228475,2 22,6.4771525 22,12 C22,17.5228475 17.5228475,22 12,22 Z" id="Combined-Shape"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/checkbox.png b/public/src/assets/images/checkbox.png
new file mode 100644
index 0000000..e00c535
--- /dev/null
+++ b/public/src/assets/images/checkbox.png
Binary files differ
diff --git a/public/src/assets/images/close.svg b/public/src/assets/images/close.svg
new file mode 100644
index 0000000..5fe4cba
--- /dev/null
+++ b/public/src/assets/images/close.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/close</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/close" fill="#5A5A5A">
+            <path d="M20.1538462,11.8461538 L12.7692308,11.8461538 L12.7692308,4.46153846 C12.7692308,4.20769231 12.5615385,4 12.3076923,4 C12.0538462,4 11.8461538,4.20769231 11.8461538,4.46153846 L11.8461538,11.8461538 L4.46153846,11.8461538 C4.20769231,11.8461538 4,12.0538462 4,12.3076923 C4,12.5615385 4.20769231,12.7692308 4.46153846,12.7692308 L11.8461538,12.7692308 L11.8461538,20.1538462 C11.8461538,20.4076923 12.0538462,20.6153846 12.3076923,20.6153846 C12.5615385,20.6153846 12.7692308,20.4076923 12.7692308,20.1538462 L12.7692308,12.7692308 L20.1538462,12.7692308 C20.4076923,12.7692308 20.6153846,12.5615385 20.6153846,12.3076923 C20.6153846,12.0538462 20.4076923,11.8461538 20.1538462,11.8461538" id="close" transform="translate(12.307692, 12.307692) rotate(-315.000000) translate(-12.307692, -12.307692) "></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/concat copy.svg b/public/src/assets/images/concat copy.svg
new file mode 100644
index 0000000..7906ae7
--- /dev/null
+++ b/public/src/assets/images/concat copy.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/concat copy</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/concat-copy" fill="#979797">
+            <path d="M14,14 L17.7458333,14 L17.7458333,6.25416667 L10,6.25416667 L10,10 L6.225,10 L6.225,17.775 L14,17.775 L14,14 Z M15,15 L17.8802083,15 C18.1753487,15 18.4357628,14.8914941 18.6614583,14.6744792 C18.8871539,14.4574642 19,14.2013904 19,13.90625 L19,6.11979167 C19,5.8246513 18.8871539,5.56423724 18.6614583,5.33854167 C18.4357628,5.11284609 18.1753487,5 17.8802083,5 L10.09375,5 C9.79860964,5 9.54253581,5.11284609 9.32552083,5.33854167 C9.10850586,5.56423724 9,5.8246513 9,6.11979167 L9,9 L6.09375,9 C5.79860964,9 5.54253581,9.11284609 5.32552083,9.33854167 C5.10850586,9.56423724 5,9.8246513 5,10.1197917 L5,17.90625 C5,18.2013904 5.10850586,18.4574642 5.32552083,18.6744792 C5.54253581,18.8914941 5.79860964,19 6.09375,19 L13.8802083,19 C14.1753487,19 14.4357628,18.8914941 14.6614583,18.6744792 C14.8871539,18.4574642 15,18.2013904 15,17.90625 L15,15 Z" id="Combined-Shape"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/copy.svg b/public/src/assets/images/copy.svg
new file mode 100644
index 0000000..382aeca
--- /dev/null
+++ b/public/src/assets/images/copy.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/copy</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/copy" fill="#009FDB">
+            <path d="M16.6823207,17.779975 L16.6823207,8.13076534 L9.13076534,8.13076534 L9.13076534,17.779975 L16.6823207,17.779975 Z M16.6823207,6.77535796 C17.0480674,6.77535796 17.3707802,6.90982163 17.6504688,7.17875301 C17.9301575,7.44768439 18.0699997,7.76501866 18.0699997,8.13076534 L18.0699997,17.779975 C18.0699997,18.1457217 17.9301575,18.4684345 17.6504688,18.7481231 C17.3707802,19.0278117 17.0480674,19.167654 16.6823207,19.167654 L9.13076534,19.167654 C8.76501866,19.167654 8.44230584,19.0278117 8.16261721,18.7481231 C7.88292858,18.4684345 7.74308636,18.1457217 7.74308636,17.779975 L7.74308636,8.13076534 C7.74308636,7.76501866 7.88292858,7.44768439 8.16261721,7.17875301 C8.44230584,6.90982163 8.76501866,6.77535796 9.13076534,6.77535796 L16.6823207,6.77535796 Z M14.616938,4 L14.616938,5.38767898 L6.35540738,5.38767898 L6.35540738,15.0368886 L5,15.0368886 L5,5.38767898 C5,5.0219323 5.13446367,4.69921949 5.40339505,4.41953085 C5.67232643,4.13984222 5.9896607,4 6.35540738,4 L14.616938,4 Z" id="content_copy"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/delete-b.svg b/public/src/assets/images/delete-b.svg
new file mode 100644
index 0000000..0d6575c
--- /dev/null
+++ b/public/src/assets/images/delete-b.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/delete-b</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/delete-b" fill="#959595">
+            <path d="M9,2 L9,3.979 L4,3.979 L4,7 L6.005,7 L6.005,22 L18.991,22 L18.991,7 L21,7 L21,3.979 L15.979,3.979 L15.979,2 L9,2 Z M10,4 L15,4 L15,3 L10,3 L10,4 Z M5,6 L20,6 L20,5 L5,5 L5,6 Z M7,21 L18,21 L18,7 L7,7 L7,21 Z M15,19 L16,19 L16,9 L15,9 L15,19 Z M12,19 L13,19 L13,9 L12,9 L12,19 Z M9,19 L10,19 L10,9 L9,9 L9,19 Z" id="Page-1"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/delete-s.svg b/public/src/assets/images/delete-s.svg
new file mode 100644
index 0000000..a0bc142
--- /dev/null
+++ b/public/src/assets/images/delete-s.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/delete-s</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/delete-s" fill="#959595">
+            <path d="M10.001,5 L10.001,7.00009538 L7,7.00009538 L7.017,9 L8,9 L7.983,18.0000954 L17,18.0000954 L17,9 L18,9 L18,7.00009538 L15.001,7.00009538 L15.001,5 L10.001,5 Z M11.001,7 L14.001,7 L14.001,6 L11.001,6 L11.001,7 Z M14,16 L15,16 L14.983,10 L13.983,10 L14,16 Z M12,16 L13,16 L13,10 L11.983,10 L12,16 Z M10,16 L11,16 L10.983,10 L9.983,10 L10,16 Z" id="Page-1"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/edit.svg b/public/src/assets/images/edit.svg
new file mode 100644
index 0000000..a93cd07
--- /dev/null
+++ b/public/src/assets/images/edit.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/edit</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/edit" fill="#0568AE">
+            <path d="M14.3676968,3 C14.34993,3.00162523 14.3322912,3.0044314 14.3148973,3.00839992 C14.1901219,3.02176437 14.0734683,3.07670988 13.9837006,3.16439835 L0.564235418,16.5154642 C0.476555486,16.6047554 0.421588128,16.7210325 0.408236985,16.8454609 L0.00264105915,20.3866253 C-0.0117307683,20.5335434 0.0329561816,20.6801411 0.126838313,20.7940604 C0.220720445,20.9079798 0.35607874,20.9798542 0.503036033,20.9938192 C0.542920833,20.998105 0.583150027,20.998105 0.623034827,20.9938192 L4.17259917,20.6026232 C4.30044091,20.5914939 4.42046286,20.5363602 4.51219576,20.4466247 L17.9220611,7.09555886 C18.0268567,6.99187563 18.0858246,6.8505817 18.0858246,6.7031628 C18.0858246,6.55574391 18.0268567,6.41444997 17.9220611,6.31076674 L14.7660928,3.17039829 C14.660086,3.06385873 14.5155836,3.00458679 14.3652968,3.00599994 L14.3652968,3.00599994 L14.3676968,3 Z M14.3760967,4.3439865 L16.7388729,6.69476289 L15.9540808,7.48435495 L13.5913046,5.13357857 L14.3760967,4.3439865 Z M12.7981125,5.91477072 L15.1608888,8.26554711 L4.31419775,19.0654386 L1.95142148,16.7134622 L12.7981125,5.91477072 Z M1.42822674,17.7646517 L3.25940834,19.5862334 L1.20142902,19.8118311 L1.42822674,17.7646517 Z M7.81936254,19.8814304 C7.51251621,19.8814304 7.26376812,20.1301785 7.26376812,20.4370248 C7.26376812,20.7438712 7.51251621,20.9926193 7.81936254,20.9926193 L23.4444056,20.9926193 C23.7512519,20.9926193 24,20.7438712 24,20.4370248 C24,20.1301785 23.7512519,19.8814304 23.4444056,19.8814304 L7.81936254,19.8814304 L7.81936254,19.8814304 Z" id="Shape"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/error404.svg b/public/src/assets/images/error404.svg
new file mode 100644
index 0000000..24ccab6
--- /dev/null
+++ b/public/src/assets/images/error404.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="222px" height="186px" viewBox="0 0 222 186" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/error404</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/error404">
+            <image id="Page-1" x="0" y="0" width="222" height="186" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAC6CAYAAADBAvP7AAAABGdBTUEAA1teXP8meAAAKVlJREFUeAHtfQl0XMWZbtXtVqu1WLK8r3jBw2ITIM+SAUPIOJABJyQhwxYmLLYMhCSHxLIx8JL3ztM5My+PYbFNeG8IA5ZtIBBwmDDEAyEBHIghYEkJmw0B77sto11qLd233vff7ttqtfsurb7dfbu76hzp3r5Vt5bvr+/WX39tjBWoW7Os6W9rlzWvRvF5BAK+urbpoTXLmncUKCSy2BlEwJvBtFyVFBfsdVCubk1tk7ejYfPyytpvPMI5u00V4ueuyqjMTF4ioH/t87JwFoWiFu5RhfNbmWA7QMK5CP9/l6+b/yNchcW70lsikBICSkpv5/bLorNh8+2CiU8jpPugfd1vf4wiSdLltlxzIveFTDxeueyKRznjpzEhPoK0zq6s/TqpmYWsBeREpc2HTBYs8WBEeQSku4X6dO0Nm88B+X7BufJDqJ9r80GwsgzuRqCAjSviyxDNgysaqlfhKlhD/Q9AugEYWC5xt8hk7iQCEgGJgERAIiARkAhIBCQCEgGJgCEC0oJnCE12Pe6/8ZUyxVs1Rg2pVR6PZxZT+EyF8RlCiKkwvI5BX7QK91W4+pjgxYILHxd8gHHRLwRDX5W34dqG7msr7g+pTOxjqtgbCoX2KB6lTQ22ta568rKe7JaycFOXxHOJ7Ouvec5XXnrqFzyKOgtk+qJgvBoEm4d7EM1ZB0IeAiG3cyaacP/XkKrs6e7d9WH9pmsHnE1JxmaEgCSeETIZeE5kqyiftRgjhxeiNatmnNcg2fLYpDGar3I0bbHPUrkXaP4g9PhhpG4MpzSiVWyCffetzu49L0sSpoKy9buSeNYYOR5izdLmr4Bs16HFAdH4ubiPysFpolll/iQiYioPWsP30OI24u7ZuvXzX7eKQ/onj0BU4Mm/Kt9IBoEHrm8ap5SyaxXBl6Bmz0WzUxZ9X4hQ9D7bN5x79Cygne1BBdmB/G4MBcSzdz5TfUL3k9fUEJDESw0/y7cfWNJ0huJh12M1xFIoedOjL4RbFjX623U3HNpvTEssxAHB2Xo1xJ65c0P1J67Lbo5lyHHiPbi0+QpFUatYqPu3dRsWtcfi8X/+6U9V/hL/FaqqtK1cP39zrF++3a++eds87lFuBMA/Rt/Nr5XP9WQzkkIMCYXoQwv4kAipT67YuGC70RvyuTkCjhNvzbLGG5lQKqA99XLR8xudfGuWbBkteNm3ocmUMq521q2redI8a7np+7Ob3h1b4lXugP3i+1AnJ2ilcJMqmSqsEVUUauhx2H0eCQTVh3/yxHmfpxptob3vOPGoVSsuLr6SCEbk6+/vf8HvCwqddPqz//70lzDGlF9ubW3zrVDH7gKoc7SSOUg4smsKFU0mXbV/uFIi2r84HJEBTbB0BfvJjMmV8DUu5Mh/6gRkbCfU6PuWN8x/bOSRFd6bmnycLnY8+Sj+WCLmG+moH+fx8PtQAa+I9otSJJ0aEiw0KFhwUMW4t2Ber8KKihXm9SnM4+X4Uxj6jjGEIlFGiAmCoi/GQkEVf4hjQGWD/SoL4jcW/jJvEeIo4ng/RfFHyKcly9nmUEjcJft/9tiUIvLGicSSj0Lla0uHFQ23ozL/DEWs0tBIgXBEkoG+EEgSYj6/l1WM87Hy0V5WUuHjoyf4WdWkYj5qTBErrfSxknIPKy7xsCK/h2sEBKGoJSTCDfaFRH8gxALdIdbbMcC6WgdZ29F+0X68jwU6B0R3e5B1nhhAWkGQ2YO0PBqZtfyP5J9OQMba8JH4CVZ8/GIk0RTSO2lbFqSpl6x4GJb0bNiDHP7x4NJt0z2K8iDanGu0YqRAOBCFBXpDrKTMy6aeVsHGzyjhk2aU4lqqjJ9ewnwgmLUjaMPj4sWlHj5sFD78svaRHQAhWw4GWMveXvXovl7Wsi8gju3pZj2dg6ykVCOydVLxIfSyc16Fj9Aj2MfmElWoK1auX3AgPqj8HUYgLS1erCGFWjpKSlc1Yw0uuSqEB5dtuwTK2i8A3oj6cno/LQj1j9TIKadWsDnVlcqUOeWMiFZaCT0w1iEMvZOqo76e1uGLiai3Y1C0HAiwwzu72c6mDvXwrs6wOgq1Vu8fxgS3vo20fsjuTii6t69ct+A165cKL8RwATtQ/lgVk0hHxhWKNtbgksvkW7u08XuCKw+iEpehciU1nYuMI4Pob5Gho6Tcy2adM5qfuXAMnzizjJdWDFc+KGy6HeUj1vV2BtmxvT3i47dbxZ7320WgO6gZdIrQr4wPG/te/L0+GwYfix4u1JXL19c8Gh+m0H8PR94BNGKHE4h0uiEllpC5OJxQz+qVytor6tEK/E8NJl29solZX09Ia7XGTilmc2rG8HMWjVeqJhYPq9CZIJtRdmOJRfloO9bP3t/Sou5sbBWth/vRUjLmL7Oj8sakoLd+QvwztlCsB4YunjAQk+8M3DpOPH0AvS/Qt1knnV4OIl8uDqDfNr+paO45/FFUvqVaWWySjlQ7auECXSE2ZrKfnbFwLF/wtUm8fMyQKqkPDegYZf2KPJOKqbvutkHR+NJR8fFbn4vWI32sZBT6gWgBbau+uuFFsPXtXbtul5Ovw8gOIawjLa/DEKi/Zkt5ZcWopzAK9i0ym8M+a+urTXWXWjmvj7N5F4/n8/9hIh83vUTDO5st27DC2fiht4QnDgRE8++Pie1vtojggNBaP9vkQ7tOwyyA7z87OrtuqN+0qNtG0nkdRBLPRLz3XtNU6a9gT6MN+FoypKPxs4E+lU2fW8G/fN00ZdoZo7RUcolw8bDoBDz4SRd749mD6oEdncLnpzHF+BVG8W/qvyPkE+zl/i5x/T2bqjt0n0K8SuIZSL3+G02llePZRqhdV9slHbUA/RgWoL7Q/K9NUmoWT+Iw7Wsp5DLpdIh08lEZG18+KppfOqpSq05ljNFO9eAJrjr5xK87WtjN9b+t1izeCQLm/aPhprS8L679AlaO4w+jMtkiHVU6Gvzu6wmyyRgSuPg705TZsFhSavlAOB01vSxEtIuumsqnzClT3vzVQfUIhiL8GIOkGTXm6ifUdJiE6WNWOY51It5letyFdpUtXgKJr65tvE/hyirNy8KQQqQLYmpXfyDIzrxwPL/0plOU8qoimqpjUQkTJJxDj7QWDv9gfGGvPrFf/fitFlFc4sV0NCvyoZARgwsG2e9f0VBzVw4V27GsSuLFQbl2adOPMIL8kPbYBukGMAhOcyovuHIqv/g7U7UOj94yxEWdlz919fPNXx1S//zCIUFzQH0YfDdv+QCFbu1UxY+Xr68uuBOaJPFi6LB6ybbLucfzXwCFag5mPZo7mn7lRSX78vWnKP/tHyZoWBYS6XR0dPL95ffHxRvP7FdpRo6taW4gH01CgD5+RV1Dzct6fIVwlcSLSHlNbeNs8O11aE8zrEhHahYZGIox++QSqJbzLhpXsKTTSaKTb/vWE+I1qJ796O/SJG47LR/GMg8MhtiiuzZW79Ljy/erXVtwvuOA8nGaBmZNOkyzItIVoVJdtmyWJF2kZugtPX2ELls2U6HlSwMBmh5nUXWgWcDYMr3IyzDhvHCcFSwFgQQWsK6C8K/U1B6TEodbuqC2jm3xbbOU08+rKviWLhYunXynnzeGf7V2pgI8w+Sz0KsId5qgQHKIjS+f7y0gyeeih8u2uvbdagwD/wmdfb+VikkLSmmB6mW3zlLOXjQe5jsyXlL1ki4WAXzEoEAw1vTSMfW1J/YJav3I2mnqwsaW/mAo9KU7NyxoNA2bB55JznrNgxLHFOGaa57zzCge+yuQbnb4qxvjGXerr+ReeNU0pebrk7RaJEkXB1LMTyLflL8r5/hQ8f3bO4RCW0/ErYaICY7hPfgzVoQwcyvmXLpxx45Nef1FK2hVc+GoU+8A6S6iCmC2WzM1amTBPHPhOH7R1VPDpMvAsp3Yiplr97raefF107D0aRzvx2JfM+VAxx/0u/CC8ll0Dn1eO4v2P7Wya6sR/KX34mN2WySm5mCQfe/OjfObU4s59bfX3NA0mfn4n5E3U4MK/LXJzhNnlbOrV81RyqpwNogknW0BUCvX0z4ofn3fZyqtdKfpdGYEDI/vif39ou+CuxsuOmw7oSwETKV+p7XF8/tLn4shHUEz3+MRz2UBo5OT9ImfhklHPTVjhw18WDEqyyU3TfcQ6bBk3Diw9DkZAeBVNrqIE36EI+Fp6jDhB/rHKcXM/1PTcC7wTKV+p4142HeDWrpL4/GB7j87/lmmf69Zsu1cqDSReYImy3xQBWg86oIrp4RXGOBTbVFtMl0U16en4QXcaIUG4Uh4moMYlUctycmtBUy1fqeFeGtqm28Dwe6OAc1de2h6lOVkxUSlMF1b19M1yGaeU8WrL9eNKTElkre2EdBVS8KR8CRczZwmF7Iyk5xc6Jyo344T74Gbm+ejpbt3CC+xCZ+4fx36nd27+29652ysyLwBX12c5ahXibg8oV9H2+P5y4rYhVdP4QrNupcqZhxIyf0k/AjHC6+awglXwpfMmImcJhdNPuyGB2vfPSdRmGw9c6p+O0o86mxG+nDhPSYZaw4EAt/LFkiJ0vUWFf0g0oE3bO2oktBi1rMuHsennz5KG69LFJd8liQCaMqmnzGKE66Er/nHDConxvYU7v1+kqmkLbiT9dtR4pWUlP4hpg/XRhbM+H1X0oaKjYhX3/D2HLS+37EKSqvHx04r4wu/PRn44NNr0DBaxSP9hyMQxlEwwnXMtFJOOFs78Z2w3KxDpjuEk/XbMeJB76Ut3OYPFV64YthgKD+YAu3zLYNRpZK4FPs89p4qBw32nnXhWFZehePF7dSN2AjkvSkChCfhOvf8sRrOph81UjchL+7z3WIaaQY8na7fjhAv3NmMjtUBBnHP8nXV6Nu5x92x+KVisO3b4RwZ00mF0W30hGJ27lfHO4KNexBwV07OuWS8MmqMT9ty3jhnUTldSfIzDpden3TU75QrV6SzGd2wFA3Gv4N0rjGm6CKZPWn8N2D0ma3/TnSFv3bAx1zMsC+twCpy6dKGQMVYH2YCjeU0/5VwN3Mkt1OnTPimWZh0+aWrfqdEPFrD5vWyP8QUurmvr/eemN/uucXqA5jRiszUTDrwoxSHhGB3Zw0X886/e4qWaznRcT3ryzidutJr3upp3QLIjTHIL7MunfV7xMQjCw/nCs1C0S2YbUKo17rJmKKL6b4l2ybhq7kw/Duqvuje0WsAg7s0r3A0dniWLv0IVE3ya3gT7sYuLC8csLhQm+ZnHNBRn3TX7xETD9NlaKwuakwh0mH5/m5HS+9QZEUe7IvJ+Cyz6Gi5Dy1dOa0a3xOw1LTTbxaR9LOFAOFLKibhTbgT/mYOYWeyYrHYLIyTfumu3yMi3tplTXcDCH3iM8or7gHpXnWy4E7GxQWv0eIz2UelD6vKp55ewSfMLA33OMzrgZPZK8y4IvgS3oQ74W/oonJTFhiGcdAjE/U7aeIhUzgPjkdnprjVmKLLgc4kh036fP230ZUOgzxl7qjwBrSSdEYwOfscONMenYQ7nVhr6QQ7n+RpGS6FAJmq30kRjyw8IF3UgonyudeYEgG/hCtn4PYsM1mQZa1ybDEOhQwf5yjVTDO0nPPTcZ56+ijg79MsymaxowNwVkSeZsFG7JfJ+m17J2nqbMKCSaTLijEFYynvQaX9bPeR4zc8/PLX+gldGtuZPXnic9ANJy9vmJ9QDcGko7kI6sXHFft6JHYDaO0mnTqKg3hGQRK/KJ86gsC008r4uBllWKnerm0TkShSTX60PYSHz4P/W4nCpPIs0/XbdotXUlJCpMumMWUfjB5Xnzpl4gv1S7b4iXR0j77mNyGUI0agY0ag1r8zmhANVVkzZ4+d6tfOAtdN3UbxyefOIkB40znshD8N55A8EjldfhhdqE7kn+qzTNdvW8SjtUdQMdG3013mjSkdaud1SP13+Lt8tKfiN0Q6uqdnu48cuxbXkxyd9oMm7OyTPGIekDWtpNTLJupGlRg/eZs5BCbOKOUkB0vrJuRJcnUyZ9mo35bEC0+XGVpbly1jSv2GRX3toU6a8qWRD1eNdLsOH7tSVz3jheGt6B+NpSfUxzN0goiHQVwI3jCM9Eg/AoQ/yYHkYeogT02upoHse2arfpsSLzJdBq1d1LnOmDJ2Yviwx2gOY248wjslPCnaeDt2Wp6CHaH5BHxxY16VtxlGgPAnOZA8DB1tfotJ0yRXwzBJeGSzfhsSjzqbcWvrsjozhfp1pGICV62lwzWqdpJfIryF8JyW6HnsMww1sPLKIu0MBNm/i0Umc/eEO51BQXIgeVg5zpS/swpj5Z/t+m1IvPBGLkP7o2R7ZkqlUvEswNRIRyonqZj4rZEv4ncS1pyLWSc9jHlAHXkvTjSlqUvSZR8BkgPJw8jAEs0h56dE70d4k+36nXA4AXrvo7AWXjpUpswbU4bSjt7NwATn53cdOfZdvU8Hy+aVNJyAEAlVD0xKgqpp4iBhxcMZzZSXLvsIkBxIHhrzUAGNHOZtTjfys/PcDfX7JOKFO5tD08HImFLXkP1lPnUN88+NBzVCwG/FP9d/Q3YT9PtEV+rG0ymmWBdmLOVEL8pnaUGgHHKAPARtAWgqEC4mjjQDbqnfw1TNSGczp2amWAhgjKk/mEerzUvRt5Au+wiUQQ4kD+P9AaJ5NJdrNNjwGzfV7yjxIiP3sWvrsmpMGQ7ZyH5hNzF9lk3CCKgvwaHa+HHOnXTZR4DkQPKw6uNZyTVRSdxWvzXiUaZoIxdkOFpRs21MSQRe0s/QfbN6h7oSPj99ZqXLNgLFJQqtyLJ0UERHWQaKCeDG+q0RL37tEdp6Vy/zicHU9BadcFunIXmoQy9d1hHQ1Ex7uUhKRXFj/faGl0G4z5hiD3+LUFyUQJk0DUSHanikbcUUo0x5khzMjvKK5kOTa/SX6Y1b6zdavKHpYCiB62ammKLqkKdqMlnCoSRkNDYQSI8c3Fm/qcmOrjige/T1WtcuS+8pWoifLPmmbvm6+eZNlenbEU/BAxYNnrabsTpomR07qckwKSJAcrA1e4jkat+5sn5TH6/NfhlyKyRmrpjsJzBUFtP5gUPB5F2aEbArB7tyjWTXlfVbgen2njTjmbXo0Y51mSVOFjTawwoHaMgmzwyoDPn1B1QY09H5sdJ1BOu0myW31m8vZoT8O8ytm/x+f2yTbLdctsJhG8B7ETAaP9D9qq0XUw/UahWFigm6/d22GkarqKR/igj0dQ8y1UZHDxOpbbdibq3fmlk2shdm2nYJwzSdttivWAZ3JDMnHr6stPCyu03r5Fl9Z1OsVvJ1KwRIDrQK3apfjhDmco1LyI31WxvHi8tn3vyEmnHcrDDEtFAQekvrgFkw6ZchBLpaBzV5WH4BBT+WoSylLZm8Jh4mH5kfXo9mmIjX0SKJl7YalkTEHScGNHnY6OQdTCJaVwbNa+JhCvReM9RJ/SVVs/14XziY5afWLDbpN2IEIri3H+vT5BHbLUkUJz6o+xI9z6VneU684N+shMGBQKA7yHo6B/Ghlcyzwisd/oQ74U9yIHlYOcHUz6zCuN3fRjHdXgTj/IV48DCGZDvAKMM5m7Twsq9rULTs7ZVDCsZQpt2H8Cc5aAthjVKDHEmeJFejILnyPK+JF+wsbsfark/MhEELYXs6BtnRPT1mwaRfmhE4tqeX9UIOlhPWIU9NrmnOT7qjz2vi3bOpugPN2AdmINKMeNq3//j+gNbiSW3TDC3n/XS8j+3vFbSjt2mLh+RJniRX53OS2RjzmngEpcJ4I12FSQeONthpPdKH8TxYN/WaQC9Jl34EgDfhTvh7vYY9gqj8sH6hKf2ZSn8KeU88EVJ3oF8QhNnEsKxYCMta9vaIg5/2yH5e+uvcSSkQ7oQ/ycHIafKj47pC6najMLn03LikuVQKk7wGhEp9vI9MgjAF/by+3iA78HFXRN2U1k0zvJzy05UQwp3wJzmYOaw8/ygiT7NgOeGX98T7yRPnfY49Ot6xkkYx9u0/sL1DhNVNq9DS3xEEwDPC++CODlFcYmNROWfvkDwdSTvLkeQ98QhfwYXWzzMbVij2e9ixvT3s0GfdYXXT/OObZbHlQfIRfA/t7BZkUS4uMe7fDclN3ZYHJdeKUBDEY/38Zczb3GsqNFQEb5HCdrzViom6UGqkkcUUrlQ9CV/CecfWVkG4W02M1uQHOaaarlveL5jvOvbe+CWk+0+wR6NFo1VfiR1Vhuv+xxnKlDnl4SPZpLklMVCpPEWtI+IdRmv37L98opoPIWAuC0yZkNnTy9dVfzeVZN30bmG0eGHEcZ6ewLwwk28rxEvHMn/w+glpZEljLdW1CcKZ8DaRCPkR6QaRHToPMW9cwRBv1+HjL0Jd2W0qOdDNA7Vn119axQkM6JqGlZ4pIUD4Es6EN+kgZo7kRvIzC5NrfgVDPDpnAZ/O34QFZDwVV0Efv7czxJpeOR6uDnhJOgcRiOBJ+BLOhLexi8rpBf2gGuOwueVTMMQjsagDA+vCk6aNlRtSg8iu8tm2VnEYFk5dLcotsbo3t1rfDrgSvoSzKb6kZgrRKQYGHndviUaWs4Ii3oqnFu6EqH9lBVURZlB0YXzp7f84HLZwyh3erSCz5U+b1ZLxinAlfAlnKwd2PhOWm1XI3PK3Lnlulccyt6oIPoKvKHb2iKoxCd8pLvOwnc1tYsdbn2sqJ32dpRs5Ajp+hOdnza2C8DV3kA/kFBwc/DfzcLnpW3DEW9lw3vvYpeopspaZ6ZE0tkRf6HdeOKx2fS4nT6dcvcE8wpHwVBRFGzM1ilOTiyYf9tSqJ843XV1iFIfbnxcc8TSBhNS1+Jr2oREzLj/auZJyD2s50Mu2/vqQNu5na19/t0s8C/nTcdv6/CGV8CRczSyZmlwgH0yIXpuF7GYkSeOKl5Hks5NI3YYF78HIsi6curHKCTM2K60oYh++0SLef60lonJKnTMZqenGk/e3tIgP/9giCE/C1dhF5dFAcjIOl9s+BUk8TWQD/H/js7ufVE4rEdKq6K2/Pqge+hTzOC1DW8VWYP7Ai3Db+txB1XJ1OUGjyUPs72d9kE/+uoIlXt1T1Udwft4aTbQme7KQv9cHKyf23nx1w14V20QIXXXK32rhTMkIJ8KLcCP8CEdTF5EDdvdee3fDRTm/r4pZWS2QMHs19/3e7tr1MPSerVQSM0ML+fuxbAjjeuyVx/bJIQYCxMIR6Wjo4JXH99F4qIaf2Ss6/ugCvPXn7j0/NwubD34FTbxNm67FATXqCgiSZrWYYkE9j5JRReyTdz8XrzTsk8YWk9qvawSE0yfvfC4It2jPzeC9CP79oZBaR3IxCJY3j60GU/KmoEYF+f17jx2+/Ivf60ff4qv46pp24WgsqqiIs4OfdLLBAcFnnV0J2wEemhoLjFLOz+c66V7/5QHR/NIRUVru1YZlzEpLrR1Q5EJVf7pyw4JNZmHzxQ/llY4QWLOs6QXQ7ls0aGuGCNUQ2vaddsRa8I0p/O+vn6ZQtbF1oKJZxHngR6QTMFn+8ZmD6rbfHha+Yg+j7RPNrZgoeHi/zP+sW1d9ZR7AYKsIpuqVrRjyJNBgkK1EBdlHlcCsSFSJaP1Ykc/Dmv7rCAwH+1XtTDdUukJ2GumggBMehAvhQzjZIp0QBwj/QsKvsGtLnKTX1DYuhl60GaBo05XivE/6SS0f7cl55kXj+OW3zFRolyz64heU6gmwqMUf6Aux3z2+T/146wlRVKxoLd1JgMU/oI8crCkhVb1i5Yaal+K98/m36dc9nwueqGyv/PWxnYvPva0dNQkE1MwBpr032gzXgz7fob91sSO7e9gpZ45i/jKLrbISJZyrzyKk62jpFy8+vFt8SoYUzEoxX1EeKayuWQixfMWGmqdyFYKR5lu2eAmQW13beJ/ClVWal0WfT3+dDt2YcEoJ+8rNM5XZMLrQ83zu9+lGlN0fdIjXN+5Vj+/vY2UVNnYKI2AipIOOfv+Khpq76FEm3JraphVQfk+07+5+uv6Pi4KUZv3fb/FWzCq7kSlKxYp11Q9lIh+UhiSeAdJrljavQ5tXS6oQUcggWPQxGV16O4MYcvCy6sWT+HnfnKzoA8b5RECdcLRlw7svHlGbXj4qAl1BTK3zWvfnNLSAKqxYQLShbv38ZVEAM3Czeum2pfigzkNv4JOOPV0bKMnKWaOWQHZn4COwfcX6BeszkA0tCZufqExlxz3pdJwQd1SOZxXov1yN0XUYoczJR107Ih31+bZuOigOftatksVz4swyzZyeD+TTSUfbIJLlcu977drWDVRuSyOKJtow6fApe57wzbS0O/f0PKkTja6UPpGOiEh+mcyPbPFM0L73mqZKf4W2cPZyuy0fRUeVcCAQ0oi44IrJytmLxnOqnJqfCs8cczrhqGX7AJOdt20+otK9D3thUktvz0VIx9jvRKjz+roNi9rtvedsKFItdfJRzEQ6av101dPZ1Ixjk8MJxtgwOpWmvW/wOojnJVKP8H20hRdVRj8WepI69tqT+9Tn/vVT9cM3TkRnu9ivrCaZy4AX5VMnHeWfykHloXJR+eyXI0w6VPIX+0Xg2myRLgOQ2U7C9vfKdox5GLB+yRZ/pTLqUaidN2nFs2lwCYdF3687vKvgjC+M5mcvGsfnXTR2GO5uUkN1ouli3L71c/HBlhNi34ft4I1gpeVFyVkGIoYUvLuxo3P3bfWbrs3agfOxrR21dFRGfDw0VTPTrZ4cTtBrmMn1j+9tDF7w1ykv+s49zQPyXQxpUctnT2cExYqwPTwNPZw42Mv2f9Qp9n7UBeoKXjHWx4swu4PGwfQ/m7Ga5DZ5LyJbNH28HoCF9uO3W8Xrvzyovv/qMdGCfNPZEsWlSVYX3Xqpin/pbNhcV7/jh5olMfkcOvPGNxf98GZMM5qrq5f97QPvFY8unkbk840umvzKe49lbP3fsC+vM8XL71hW1zbdjmr6AIRVBuap4e2m7ZeZBt0xMxsDzAoD8dgZ54/lc2pG86pJfh5/fkA6W8L4lq0ffdK2o31iZ2O7oInNndimQc8nTftKxkXmXiqo4Dj3TNy5oqH6F8m8n66wcjghXchmKF7McLkUnZ9HUB3naEkmo3pG8ohKqY3zDfSp2H+Es2lzK/nssyv4xJmlbNy0ElZaiYdxLhUixhONosbRx+LEwQAOa+lluz/oFHRqT3BQMJqBE24F4zJg52dUtWQ7UcDv1zXUvGrntUILc5JwCw2AkZb3waXbpmNMaDVUtKu1OEZAPu09SIAGKsgK2h/AeBiW0EycXc7GTS/l46b66Y+NnujnoycWjzSr0ffaj/Wz9mN94sShPoY/ceJArzi2u5v1dg3itB5v2EppX4mOxhu9iZAO6vLzIRGqW7l+wYGon7wZhoAk3jA4kv9Bqif6DT/Dm1Xa2yMlYCRpbeUD5j0OYDywCCu2y0cXUeun7f3iH1XEK6qKeFlVETYMQp8L5vyiEsyLxGRk3YWw+HQwoILEIRboDrKetkHW2TYo+roGsXPzILVyrLt9EMuaVObDnEof+p/JqpJ6WtGrTjjG2tAq/7RuffUjUT95kxCBIYkl9JYP7SDwwJKmM9Blux82sq+Hhx3wVooEpHRJtQyiT6hSvzCkauODdF47bT1Ip6fSnEjslBc2+ZOpR2s9ER4tKK3+pveCgyriUGE8wbkQnvB7XrybSPWkNJNyQ4Sj8m5GMqvu3FCtWQuTiqcAA0viOSj0tbXNt2Iy1N1gwKlatA6QLz57Wt9Q+0d1PeKrX+lnRKJENG3kETfafSSoY5co6cQupor7l6+vedSxuAsgIkk8h4X8s6Vvji/hJT9EW/QDVPzxWvRpIKDD2bYfnU44wbDfofpvARH4fz9Zf3GL/QhkSEJAEi9N9WD1zdvmcY9yIwD+MZocv5aMzQnXacpSCtFGp3tRM9uHBvYhLKJ7csXGBdtTiLSgX5XES7P4qf+Ho6iu54IthQV0ejQ515MwhmzINBb4HsDW9+vVEHtG9uOiUhzxjSTeiKFL7sUHrm8a5ynh1wHwm9FizEW/qywag5tUUV2VRObQh+xBfncgvxtDAfHsnc9Un4jmWd6khIAkXkrwjezlB5dtu4QL5TqQrwYt4RegikbnYqGSJz0bZmS5CL+lzzKJxoGPAFq2D0G6RsHVZ1euW/Ba1E/eOIaAJJ5jUCYf0R2LXyqeNWn85ehpX4i5ItUgYA1iKY+NyWkinkS0cGLdaN4aMWDRhMHvt/Ycbfldvp3AGoupG+4l8dwgBeSh/prnfOWlp37B6xWzQbYvQjDVWIA7D6Sc4ngWBTuMYY/tSKcJ6fw1GOS7u3t3fZjNlQNGZVxb2/Q4Dqy4inH1R3Xrap5MFG7NssYbmVB+jm0dnl/eUH1LojBueyaJ5zaJRPJz/42vlCneqjFqSK3yeDyzmMJnolWcASPHVBijx0BNrcI9zZbBpE7uF1z4cODfAGw2fXg2CENOG9TFNvTUWnGPc8bEPoy37Q2FQnsUj9KmBttaVz15WY9Lix/N1pra5jaUdTRa5BC2Z7g1fnsG2s6BK57HUZFpslvb8nXzx0RfdvGNJJ6LhSOzxtja2kasgeQNWj84jnzDSKcZqETt8oaaJ3IBN0m8XJBSgecxsknRY7Hkw5Q3auQe01q6OELmAlySeLkgJZlHFks+MjgRJLlKukjepVQlArmBQCz5tByjpYPh5Za6hvkbcqMEQ7mkDql0EoGcQYCGQ2IzC+4N+x3r5+Z7STw3S0fmLYpAvCFFUzcx8QCLkR8jv2jAHLnJya9FjmArs+kQAvGko2EFijo6jCCNKw4hLaORCEQQoOEEbOS9Hi2EdoJT7FhePCExZpkzwwlS1ZRV3NUICKY8lIh0lGkaTMeB9LfQ4DoNNVBYVxcmJnOSeDFgyFv3IUDTwDADpx0zc5bGz1qh3Grkgx+FobDuK4HMkURAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARKAAE5EJYFwgZ+2Negmz8I/5K8bcFf09jh4Mgro46pONDhDfi70v468LfJqTzJq7SSQQKCwGQ4X78xbs/4UGlk0ggvrH4eyc+IfyudzIdGZdEwPUIoNJ/JQER9Efv4sYR8iEeIt1f9IgTXBe6HiyZQYmAUwiAAA8nIEHso5TJh8isSEfpPeBUmWQ89hCQK9Dt4ZSuUNSnM3ML4Pl7EGNELR+RDu//AX9fNEsEfiUW/tJbIpA/CIAYN+HPjku65UOkdlo6Pe2r8wdVWRKJgAUCqPVe/G3Va7/F1Tb5EE8ypHsN4aXmYyEr6Z1nCKDSV+Lvz/iz4yzJh0iSId2bCD90JHSeYSuLIxEwRQCV3xHySdKZwiw9JQInI5Aq+STpTsZUPpEI2EIgQr63cbXjomonAkv10hbCMpBEwAABkIjUzmTINxvhzQbH4R11b+BO9ukMsJePCxwBkCMZ8g1EaWV+I0lX4PVKFt8GAkmSz5xyQkjS2cBcBpEIaAg4RD5JOlmfJALJIpAi+STpkgVchpcI6AiMkHySdDqA8ioRGCkCIB9ZL/vxZ8f1IdCUkaYl35MISASAAEiUzDidTszoOJ8EUSIgEUgSgRGSTpIvSZxlcIlAFIEUSSfJF0VS3kgEbCLgEOkk+WziLYNJBJLt0wV0dllcZZ9P1i2JgBECIM8Y/Nmde0nr6abgL5m5nSPaRsIov/K5RCDnERgB6bQJz3jPkfV8OQ+gLIBEIFkERko6PZ0kyUf7a8qWTwdPXgsTgVRJp6MmyacjIa8SAQsEnCKdnowkn46EvEoEDBAASXz4S7StOh6f5GxvTIQ3k+nz0ZxOr0EW5WOJQP4hgAq/7CR6JX5gm3Q6SogmGfJ9V39PXjODgNxPMTM4G6VykZFHzPM/4X4xTvXpiXlmeYvwHQh0Of7esQzM2AU2wsggDiIgiecgmCOIqtvinRGRTo8zCfIlRWo9fnmVCOQkAlAHL06sWWpPk1YvjUCwUDtV+J9n9K58LhHISwRQ6f8X/uLdH/DA0d3AEB/1+ciQEuuIdHfnJbAuL5Q8EdYFAkLlPx/ZuAp/fvy9ib/noSaquDrqkA5ZLykdOhGW1FxKpxFX6TKMwP8HGVohW+VEEEEAAAAASUVORK5CYII="></image>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/partial-error.svg b/public/src/assets/images/partial-error.svg
new file mode 100644
index 0000000..652075f
--- /dev/null
+++ b/public/src/assets/images/partial-error.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="190px" height="154px" viewBox="0 0 190 154" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/partial-error</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/partial-error">
+            <image id="Page-1" x="0" y="0" width="190" height="154" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAADdCAYAAACcyUb1AAAABGdBTUEAA1teXP8meAAANJxJREFUeAHtfQt8VcWd/2/OuY8kQBLeIAJKElARLQaIoEB4BpSEqq22vmpbrXX73Ha7u91PH9Ztt/vf7up269Zqte22tbbVWiHySAQJQURERKGAAkFeKu+8Se7NvWf+37lw483NPTf3cc7NOefOfD7JPWdmzsz8vnPu98785je/YSSDRCBBBB4kUr5+4/UFInuXmpvrDvKc8KOaQgFF62wV9+8famyfvHu3P5wmP52NAHO2eFK6RBA4eUP5KBfzlqgKXcKJxjJGFzFiI4j4MCI2tPuTkTeR8i7kCeK5M7g+Q5zhU1yz0yj/GOfaUdwfpUCwYUeHdnheXV0giXJlVoshIEnEYh1iZnM+qCwflsfdVzOmTOGMpoAorkJ9V4A08sysN37ZvIs4NYBcdnLGdypc2aVxbVdhde178Z+TqVZBQJKIVXrC4Ha8UVrqnjh6+DRS+CwUPYsYm4HPiw2uxrTiOPFmkMsWYrRFC7J6n1/bNqq2tt20CmXBKSPgaBJpuG7GNK7yE8X12zB87hkexPz+zjkzytubOrdevXOnI17OszcsnOJyuZbgC7gY0s5kjA3oKbWN7zgPcGI7GGnrME9a+1aL/1U5DbJGfzqWRBqunzGRKewdzMMbgxRYWFL/xo4w5H8mUkvnlv0ew/lPaURPFm987b5wmp0+j86cmTtwWP5ihdESEMYytN02I410cRYjFby86zSN1vpYoHrkyvUn0i1TPp8aAo4lkf1lZflKDtsOAYsxLD4bJpJIAiGOoNHni17Z+uvU4Mv8U/uXFnuHuYqWgDhuw1C/EkQ4MPOtsFyNQehU6tCbf1LaA8/nr18vFLoyZAgBx5KIwO/AnOlYaVA3QMgiQSQ8qFWQi31TjEBCBEL090X1W3+aIazTqYY1VlWUK0T3gDiWo/2hZdZ0CnTus7yLc1qP1Z/fn+w6+FzJmgM+58pqDckcTSIC4h5EQoTpNKmCQDTGvo5pzP9Yoxtit+L44sUjcnLYPeikezFdKYmdS8bqIYApz1n8ePw2wAK/HLpi/R69fDI+PQQcTyICnj2zpo7PcXuhH6GQcRTXtIeLNr3+zfSgM+/pszdWzHap7CvE+Meh03GbV1MWlcxpMyft0Tdb/M9Jhayx/e54EhE6kGlzyp7GEudt3dAJHQnvWlSyafub3XH9fPEgVou+VrXk45iyfAt2G9f2c3McWz10J4dJ4//tZ21PDV+5OWRh61hhMySYo0kkWokKfcIPsUx4O4QO6UisQCRCUTrcPeFz0HN8A1OW4gz1e9ZXg6lOE96Dx8918Idhf3Iy6wFJAwAnkwhrmFv2h2glag8dCUYkXZo2f9Irr7+dBoYpPSqMwYrHDP0siOM7aOPYlAqRD6WNAMikjWnsUe7nPymoqTmbdoFZWIBjSWT/nGlTVeZ6M9YqTCSR4CV6pmjj1tsz1fdidFSxvOIO7Cf5PqYtEzJVr6wnPgJ4D2Ahyx8JdDU/MnTN1pb4uWVqJAKOJZHQVGbOjO+QRvuKXnn9mUihxfW7M68e43LnfCsY0H4z8dVtb0Wnm3HfVLV4kULKf2NadYUZ5csyDUCA02ms3X3/zVb/E1IBmxiejiWRxMTPTK7mqopiTFn+A+RxU2ZqlLUYgMCuYJC+OvjFtXUGlOXoIiSJmNi9sPMYkJfDvoeVoa+jGo+JVcmizUKA01+DfvrG4LVrD5lVhd3LVe0ugFXb33zjkgq3h1ZBcSr2tEicrdpRfbWL0eVM5fd9e2LxuZx9Da/XwRS2r0eyLV2ORAzu8eaKiiHkZQ9DafoZg4uWxfUzAjCnfy3A+b1Dq2t293NTLFW9JBEDu6Np+eJPKJw9iunLSAOLlUVZCwE/FK//BsvXH0nF6/mOkSRiwAt6srx8YE5+jlh1+bwBxckibICAGJXwYOCOwlXrDtqguaY2UZJImvA2Vy6YToobvkloYppFycdthgCIpAW2JV8uqK75nc2abmhzJYmkDidrqqr4Fvx6/FBukksdRCc8iU3hz/ip7f5s3YsjSSSFt/jM0rJ8t6fw/0Ae2GUrg0RAIMD3wgr5pvyVa9/NNjwkiSTZ46dvXHi5W1X/iqXbSUk+KrM7HAExvYGn+s8Mrq59weGi9hAPO89lSBSBpsqKW9yqa6skkEQRy658WNbPVxl7vmV5xY/EtotskV6ORBLsaSzf/jOWb/8Ny7cSswQxy+pssHRtPtV8x9gtWzqcjkPoC7F/9tThjLlKFJ/SMGHr1rhes/fOmDHUlUsT/ef4e5O3bTvudIA2lJe7SvNz/hfLt19wuqxSPmMRgMJ1a0cnr3K6vxIxncHJCp5K7C6dqnn5x8U2eT0oD5aVjXR7lZtVzq7x5ilVG4hcenmdEC/sP67J966UBOKE3sy8DBi0luXmKq+23LDA0cv/PXQiCjGQArshFpEIAtE8rEphPCs2kp2oWjDSm+/diBdhaeZfP1mjUxDAUL+Iu11bmisXOtblpSAR7uOBNRqjLtFxsYgkmkAwTAv6u/w184gceRBz4w3zx+eQSxDINU55maUc/YcA3EAMIUV9qWl5xcL+a4V5NXcrCffMLh3tUVyVCqeQd3GNcGyhj61iaoef1Lzl4RGIIBBfsGvNFa/uOGxes/qv5KYbF05gKs6qYWxc/7VC1uxIBDj5iGufyK+ufdFJ8nWTiBAqFpEQV7RsIZDQ3NXtxsFH2XMcpZNeZpvI4g9q2m1OsiXpQSKiE965bupFLpdnWXhEEu4Yx49AKhdfqihKPeTNmvNsw30rPzOOgJ8HgzcVvPjS6ozXbEKFPRSrovzLNu/4gPHAll51KXy7U6cwZ5aWX4zpSy1klgTSq+NlhAkIeKAjeRZHo84zoeyMF9lrJCJsRlRyL4dRlTeyNUJHEuzyvThpy9vvR8bb/frDpbOHD3DnbYC8k+0ui2x/bwTOBQI4q6q3MzJVUShX7V+jUjSrlZi2qGBF7dbeLbdPTA8SiSYQMYXhDFqR0NIvwXG6s4jk7MKFBWqe+rJchbHPC5tMS/c2NdEbp87oPjJ39CgaN3CAbnomEsQhWsGu4Jwhq9ftykR9ZtTRPZ2JRSBdjGow/KgW5CEqF2Siur3LxHELZjQmk2XunjzZ48pzPS8JJJOoZ64uMfrY3dgUt0I3RiP9HbD8W+hyu1aLKXV/tyXV+kMo6hHIZfWvvyd0JGIaE00kQgGbaqVWeG5s0difwRJ1vhXaIttgPAKHWtuoIxDULfiywgIanZerm57hhIvdnpzVYmSc4XoNqS5EIoy8N4Z1IGIKE+S8VhBIuAahB4kmEo/qXmrXnYpiM500ZQ/3rjM/9zY16wo2NMdLpcOG6qb3U8IUdYDrd3b8TgkSYQppoT0wYQKZ+Mq2Xn4jo4lEw76ZCaWlIRLqJ9BTqra5avGnQrtxU3paPmQHBE50dNBZny9mUz2YwswZNZIUC27GhoKysqKq4mcxG27hSEECHDsNX4QOe1cg4KuORSDh9gsiUXzsBZEXj62etn17yFQ+nG71z7NVC66CZucpuZ3f6j2VXvv2NuqPQmaOHEED3SGj7PQqMelp6OgeaKpccr9JxZtSbI/VGVNqsEihF1ZitqGTSizSJNkMExBo7eqiFYeOxDxhSuhBpg8fZkKthhfpD/Dg/CErX9pseMkmFGi76UiKGDAs5f5WEkiK6NnosXegC+ltFYI5O2TASgi9efpM6G/n2Ubya5iUWzN4XKT8GcewjrBm83q2ytH+QMKiQpH6L3iBqsL38tOZCAhSONDSGlM4QSzCbiQyCP2IGJ1YMjB2UW4OPQ1F65JbifSXmSzQeMePRM5WLrweDpd+YAGsZRNMRuBAcwsFEhxduEAgFw/IM7lF6RWPkfPCxcsXfyu9Usx/2tEkIo52UBVVHCzUv/bN5vdj1tcgjMviLetGA3TN0CGWVrCG2yt+AJtuXFwavrfip6NJxOUpfBTTmEusCLxsk7EICOMysU8mkTAyN5cmWXUa01sAD1PZ09CP9K99fu92dcc4lkSali2+DQRyV7ek8sLRCLwHEkkkiGnMrJHDE8lqmTyY1kzKy1EetkyDohriyCXekzeUj/K6cvbAnmhwlLzy1qEI7IM+ROhEwgHbNKjR5w/fdn+WjRhOEwvyu+/tdAFj0KUFK2vWWq3NjiSR5qqKP4G9odSWIVsRONnRSTXHenqtGIW9MovG2HfLF3b8HvI1+6aMqKtLbNiVoc533HSmZdniSkkgGXp7LFzNcZi+RwaxY3cWrFXtHIR+zzso5yGryeAoEjlVdd0gUpWfWw1k2Z7MI3D8XE8SmYYNdwNc9jeLwka3rzZVLZqWeUT1a3QUiXho4I8hqm39Muh3k0xJBoEAlntPdXZ2P3JRXh4V21QP0i3ERxcqln2fFCczfhTVv1eOIZGzNy6+EgoeW21c6t+ud27tJzGVCbtEFNOYmTZbjemzZxi7emq+574+82Uog2NIRFXZw9idaxl2zlD/yWpiIBA5lREb7vIcMI2JFhOjkYcay8sLo+P7494RX7qWqiVV2Fu1qD8AlHWaj8BpTE3adQzJCjweKsRfZPjwgj5kDMzai/IHRSY555rRMGVQzvcg0Df6WyjbL/G+UVrqLhkzbDdWZEr6G0xZv/EIxNvaL2obBN8gH79kXHfF8MpHzxw4SGIaUzV+LOU6cBTSLSzxLuoKXJm/ev2+j+Iyf2X76UzJRUO/KAkk8y9OpmrU29ofrj96E50KC8MrBhfS9fBe5mwCEQgwN7lcYjGhX4OtRyJHZ87MLRhecBBTmVH9iqLTK8cXkxUWkjJkGLHBQ4hhtYPwhzOLQ5JzsXPW78fJ8FgREZ+trcTPniHtzGkc+Z7YfpZYEIqt/X9577DuztyhXi8tGTvGkq4OY8ljShzMWDVO0wqra940pfwECrW1TqRg2KAvSQJJoJeTzMKGDCX1kktJGTuOlNEXhYgDv3hJloLsmFrw5ibip05R8NgR0g69R9r7x0LxiRT2LhwM6W3tF9OVOaOt6Ss1EdkMy4NhOI6G+gHKqzSszCQLsu1IROxqzMtlBzGks7cZYpIdZlZ2ZfgIUq/6GKmXXU6CREwLWH4NNhyg4J6/4XO/7khFLNE+f+iw7rEPgkDGDxxoWjPtVjCOmSsreLHm9f5odwo/L/3RzN515uTSVySB9MYlmRiGLfEh4gB5KKNGJ/No6nlFnVdOCf0RVl38tWso+PaOXuXFOzdGbOOXBBIFmUoPIWZJVGxGbm1JIkIXonDlm5jKyJACAiw/n1yzZpPr6qlEUcujKRSX+iPQafDjH8Z8Xs/B0BA8Y8EzY2LKkMlIaK0qGqsWTh28cl1vRja5IbYkkUHD8+8EgdjCbbfJ/ZdU8UIh6ppdTq5rsPUiFR1HUrX1nTm4dzdpJ473yhjv3BgxzdnwwUfEMwojmyuHSI8PAkSFVOFK8fZegJocYcclXuxBYl83GRdnFQ/Vm2t6GeV86evkmnGtJQiEuEZddS/HxDneuTFNWP0RxmThPz3HzDELdngkBuafhE/hj4xmMiSv7UYijTgjDKOQKzKEj+2rEQpT97LlpFw8NnVZoLvQTp4gfvoUafCYzlvh/KfjHI55x/ItznkhGHwxb05oaiT0LKxALAcPhcp7JK5je1MP7tpJXCwBRwVhXHasvT0qVv92ihyFfAQOtn0ozAVdIWXUubPtSARbGOUo5KPXJu6Va9oMci+Cri3ZqQvIQaygaAfxd/gQaSAPsVybSmBYQVHGjie1qJiUkonEBsIMPRikrvoNMYvry7gs8qGLBwxwrll7pKBJXGO5996T5eU/yKTjIluRyOnKxZdhRaY8CUyzMyuUpR6MPtTJUxKXHyShHT2MlZK3KPjOHuIRW+kTL6R3Tt7WRkL3If6wQTJke8IKBxNvbOyVOd65MdGZvfg1uXaEVItF4yLMAr2DPHcjPmN+dWxFIi7G7o0GTd73RECsvHg/Bb3zyASNeDEqCO7eRV2v1MecXvQsPc07QVRHDhOJvxhBuDTUMy6Lzj4Nu3Odb9YeLXVi90xRvoicGSMR2yyS7p482TO2aOwx6EOGJwZl9uUS+g/PHXcTG5SAI2J8oYV9RtemjcSbeo8K+gM94Uxo15mz5Is4gEooUNuE3iUijBs4gOaOTpAkI57LqsuAdl3+qtpXMyGzbUYiY4rGLpcEov9KCPN07x2fIYJis6+gwTaja3X1eRP0vjJnMB0jTZoKN4aRYcXhI5G35MV+nRnw2C5DHwio7B7kyAiJ2GaJF++XnMrovDcKVkESIhCh0FxXQ74nf2E5AoklmvAh0uLvOQqZIaYxFzb+xXpGxp1HgBO77YPK0oycE2qLkciJqgUjMe9aIF+Q3giIfS6eu+7pcwQipiz+vz5H2rGjvQuxaEykhzLRRGHqfskguV8mke7Cj25+nja0Enn/lEj+dPLYYiSSw9VbIOT5fefpSOuwZ4VNhvfTUKLmxT9hUXuvgXy/fMxWBCK6KpJEckLTGLkak8wrzBSWEetVW5AIY8qtyYCXFXnxU+O56ZN97rgVKy++Z35v2JJtJrGNPDtmBpZzBZHIkDgCcBKw5OzChbGt/RIvps+clieRUxUVo6FQnd2nJFmWwT1nHikw4IoXAtu2hqYwwrjLbqEZ5u3hA7rFFCahXbuSZKK72aPmMTGlMTVYnkQ8Hv4JIGD5dpraS1GFK+PGYyPdnKjYnrfBXW9TV83qlC1Ne5aW+bvwVCY0jYEyNZHgni99dUfjxEi9OTrO6HvrfzkVZZnRQtu6PGGNuhzvBbYh6oXgvnfIv+J52xKIkKv5gm2IOIBbLOvGC8IgX4V5v/uW24iBYGX4CAHO+KL3ysuxscm8oP8mmldnwiWLJSrGaW7CD2RBRvfc+TBs1t/6zrFRzv/8s7YmENGNU+BsuRwGZcKwLF4QBMKmXE2593+J1FGjyH373cRVWyw6xhPLsDSYwQ8cku9dYFiBMQqyNIkMYMPmQR/ijdHurIwSFqmhrfx60vt95HsOK3pRFp562a0cL0zax/ZBIKL9bMzFNPCfv0vswiZD19Xw0jZzlpVFy3zbGLvBzEotTSIQHFtQZQgjENqRCwfFesG/+kXz97/oVd4P8Rw2Mnk/+DEx7OYNBzU3L7RqRdL/ahgS8bkw8sboa/03Mqqm3dOnj9qATeVR0T1u35159RhEGLcfh7GlPSrI4htl/CVxV2OCe/eQUKZmS+DYaJj3gx+ROqy30tUtsCo3dQRvK5jxhZzYeMN805RFCZFIw+yyW3JzlQ/GzS17bffMyUOiEfwz9FoNc8qecntyj+Hz4ej0VO6bKhdfCuGLUnnWic+IJV3d4PNR19pVuslOSzivB/kYueCnJFYQUxv3Yvz+CN8lMoQQUFVPnBcoPZASIhHYNY2CLwh8sNIc96CXIonkQSy/ls4t+yVSPyeagjwXpdek80/D2k7ahlwAUnglUy65VBfW0E7ctlbddKcl4Lwm6thUR51/26UrmvsiHGoFZ9QynEeAK3yuWVgkRCJv1G/9BY4hekY0AkxyjSCSnddPGfwgCOSuuWVPgjg+K9LwC/G3IPd9WVynG/CemCZ0um3L9POu6fCLqhOEq8LAttd0Up0ZLX7OxKJv42M/012FEqMRV8US4hcUrs5EIgmpOItvWJREUdFZEyIR2JwHt2/ceheI5I+iAEEkA9S8l+6eU/brSALRNN/8kk07TkVXksq9wmhmKs857RnhoV29XN+lbODVV3QPgHIaFmF5GC6E2wDlyCFq27ghHN3r042VG3b55F7x2RgBuCaIjaxmyJ4QiYiKLxDJnfC1GdoVKKY2YJO7RZoYgRhJIOft/dkkUXa2B/XKq6BxEr+7McK5cxR4840YCc6PUvCtcOOv7U9P645GFJxwpi5YLN5PGYBArqbOMAOIhElEVC6I5HD91jtxebi7MThPGMRys1EjEFGuMkCdLj6668jiC3XylbrSB95+M+tGIZFgqCARduwonYtDpC4xEhkwMPKxrL3mCvU/iQB9Nm7Otb/A5/junsAWW2hT/9BQWmrYbkGFM/z8yiA8oytjxuoCEdixXTctGxLCo5H2VdW64rqH4uiKK/SJWPdBJyYw5RozxErm154dmHvtEyD/z4uGQEO+B8rPv4pr/B5Mo4GudUYRCez9p4hysz2oxSUhBVQsHLQPP4Bh2ZlYSVkVJ4gksP11CjY3x5RbKFiV6TPklAbo4DiJqTFBSjMyURJhB+eWPY7M94r6BIEwH83fXv/aJ3H7rIgzmEgkiQBT5VJ9MxlhXCYDMAKJuDRO5954XRcO18TLiCOfDGz0B5Xlva3z0gQmIRI5MLfsPtAE/hA43ysIZMLWrSdCOpKNrwnvSZFE8mgoX4r/hOEaCEl/OSLFcu34mDJ2nG6ztQP7dNOyKSG0UoOlPN/mel2x1cFDEj9CQ7cUZyTkMo/h362ESIRxrV1AKEYg5KN5gkDCkM6Dau+wIBJO+P6LTBTKG05P9nNJ1ZJiPJOb7HNOyy9OjtM7gpI6OkLHWjpN5lTlEUSi7d4tXtCYRbhgIs/GXxozLdsigZXha94JkUhR/banNb+/5MiRE6WRBBLuAEEkE+pf+1SA0xXb67d+KRyf4qdc2gVwbKj+qDPkbFnnC5Mi5rZ+TExp6Fwb+bBSEzMgXbnscqkXATgY5YsfaUODK9HSire8eaCPvHxi/Wt7+8iTSLLhQiZSqdXyKMOG6zZJO/Ghblo2JoBCMAdm5MdRnV6dKSDDpjxhLi+sXbM6MAZtvbEhoZGIsVXGLw1WsRPi58iOVIalSb2gwfGQDD0RCK3SHNjfMzLiTsHILvZkJyJTFlwybvz3y3Ikgn78yAYlCzpVT0RW2GuzdHfWWIdhdydm6YUYXwSPHNKVXoHBmfR4BrURM/77ZTkSwcugb12l+4o4L0GcKaMXeEtsmwi9/NkQL0iEw3ZGLyheL1GOqa5G9aq2VDx0IgMby8sLjWyU5UgEqh9DXAkYCVJ/lMXES68TOFZnZOiJgNB1xBuhMbebCJsZZQDZDvBcbCQOViMRECXpKwOMlNzqZXl0SATn09rxHBmz4RYjETj1Jq7jX1YRLgHgKV8GYaDHDd3NaykSaVmwQCgCLNWmfnvpvDovvCARGWIiIBZetC5/7DTshJZWq+ehYUwdEROkFCOt9YX1ylFIuB/FvkYZUkAgqMV+KNuXdnugoukbIfXIl9iNpd5UrjL9JYnE5HFMLo5jJGMGvRFKzMzZFSmmNHq+V4SNCMlR3PkXgjHnKlYZV/QtrLLr+4AXviu2xGKEIpSEMvRCQNiBKHrY4DxiDofWMgABzgYbiYO1RiKMDTJSODuXxdv1tyAx6WQndtdiyhJahYmRqolRSGdnjJQsjGLc0LVua5EIFuGysEtjiszjeG9n+Yb5f4pZt10j4x0vir1fRB3n7Cqaoe3GzM65JII1OjlOv/C68LP6DoeUOCbxhr5tNipMTGXUSy7VbbEmRnZy02IIH8yIdewHdOGLm2CpkQj8LMqRyIXu0k6f1u04hjN5ZeiJgFCcqpMu7xkZcRdsPAsTJBkuIKDj+Ts1fCxFIpociXT3Ij+jTyLKGHFaqQyRCIRGIkX6nuACH7wvd/CGAeNkqOdqS5FIWEb5CaOp06cw/I5t86CMws4AeShTj9dEkIh7gr4XicC+d+VIpAdixt1IEjEOS2NLgiKQnzwZu0wQiAr/GDJ8hAAfNIjcej5YMNUJ7tgmSeQjuAy9shSJ4KgIHeMIQ2W2TWHBI4d126oUleimZVuCGIW4rp+LzTOxtR5dwhP88RNyOmPSi2EpEsEpWHINLqKjtQZ9JzuqOJRJ50sTUURWXGoYaXium6Mrq+9gAzadAS7dHNmVAGsaHXPo1HCwFInAkk6ORCL6MXj4kK6pNoPzYUU6Hw6hxbE71zPpsgjkel76ceB5yA9rz+isvcO5Tob6krAUieCXQo5EIl9t6EWC+/dFxvS4dk0t7XGfjTchhWrlx0nR2eYvdvV2ra+VW8MjXg54XmmNuE370lokwlhb2hI5rIDg7p26EqlXTKZst14VUxnvoqW6GHW8+w4pHZ1SHxKBENcUQ3+sLUUinAd0liMiEMiyyyCWJnm7DrcqCrmunZVliPQUV51+LblHj+4ZGXF3bs2L5IJCROpDIkBReFPEXdqXliIRFuRn05bIaQVg92nw7bd0pXKVTic2KF833ckJoVHIXffoihhobSVt00Y5lemFEHMuibSpQUkivTocutWtW/RdIsJmxD1/YYynnB+lli8kz7jxuoK2b6ojYd+d9WfNRCPENf2NWdF5E7i31Ejkieo6QSKxzTQTEMapWcSO3uCut3XFU6dcTcrF2eUkX4MiNeeez+kuc2vwtXru9/9HLiyDy6lMz1eHa/x4z5j07ixFIg8KAuEkRyMx+rQLw3JdB834oniWLcc2VjgjzoIgVmQ89z1ALhzUrRfaNtWTC9MZubTbGyGNM0NPP7MUiVwQV//wkN54ZE0Mb2qkwPZtuvKKnb3uRRW66U5KYFdMoZzyBboiCd8hbU8+Rm6pUI2JkRpghn7HLEciOEbzSEzJZSQFNr4Mxzr6dkKu6WUUsmR1MFYcXt1yv/mPuh7MhOjNq1aSW45CYr4F+H61FdTUGDratxyJQPKjMaWXkcTh3s9fuyYuEmJaw4Y48+gejmMfcv75u+TCubp6oQt+Qzp+85QchegABP2Q4d8vy5EIDhw+qCO/jAYCwZ1vkdZwQB8LHBXp/fSdcO80QD+PDVPEmTGeL36FPFdOidv6sw//hDxwoSB1IbFhgm1eQ+yU1GMtRyJBYvq7zlKX01FP+lf+FRsE9I0OxUjEc8fdxBxy9mzItP3Oe8i7YJHuaozo4Jb6OuI7tssVmfhve5xfoPgP6qVajkQ0JSBJRK+3LsSLJV//yufj+gxVRo0mD754bIDNRyQYgbhuv4tylt9MDBa6esEPd5Ktj/wneVVFjkL0QEI8dCL6m7HiPBcvSb9X4j1lYtrO5uA+SCoPCOkDY7ExLwBjqnhBGX0Ree+5l9hgQ48ZiVeloWlCB+L+wt9R7s23EovjyU3YhJz+3rfJG+wiVdqFxO0D7JvZGzdDComWI5F5dXUBbFU2XNAUsLH8I10YvsczQhMCiKmN9577SIlj2WlJQTGC8n7jn8hbcUNcAhEe3E898hNyHT1MbkkgfXalz6/t6TNTkhksRyKh9nOmb56ZpICOzo4vkL/6BdIOvRdXTDZwIHnv+iy5Z5fH1SnELSSDiezSCZTz0L+Td9b1cacwokln/u9XpNVvIA+mOlKZ2kcncX5iVG2t4ZtcLUkiWIbS3//eB05Zl4wNev4//4G094/FF13s+C2fT16hcLXqEjCmLK4bKyn3e/9K7qLiPgmvEQpm33N/pBxMeySBxO9+kcqJdvSdK/kcliQRjbRdyYuSvU+IM2b9f/gtaXF8sobRUS4topz7v0TuufMs5TFemTiJvN//IfbD3EdqHHP2sBzNL9VQ++M/pxyQo9SDhFHp45PT9j5ypJTsSukpkx9iPradvBiry+2XCSMtDNF8IBLPLbeSWjIp/nPiF3/OPFKv+hh1bdxwXq8CuPsjKBeNIRdWXlwzryM1weNBG//yLLX/6gnKw0qMCySCkasMCSCgKZopJGJZ/JurKt4Bh/TxbUgAuWzLAuWie9EScpXNTFhy3oh9Oa9vCZEJj2NWn3CBfWVEG9XiEnJBaarCH0oiI49QkSC600/+gjpfeF4SSF8Yx0jv7OocPWJ1naE7eEU11iWR5RW/xibue2JgIaMSQEDsofHA9yh5vQnkvpAlEKDggX0hq9igsIrFvWEBxKGMHEXKlVeRC1MpsVqkFhQmXLyGkdbJn/yYtK2vhqYwcgSSMHShjLAPOVSwoubS5J5KLLclpzOi6WC3enzcI67tFH63P3Wr4rtKigwTNbh3N3WeOE6emz5BYsqQUMA0R73sitCfIBANy6ZBrPwIXQtHWUL3knAQyk4ocJWx40gpmUgM5KEKEsG+F4a0ZEIn2nDyB98h96mTlItn09WBWKWPksEg7bw89H1Ku5hYBViWRLRAcKMSx8AoljAyricC/OwZ8v3mSXItuYHc066FIlUlHoTPp0T0Hx6VWNFEcuFPBKGeEu4IODa48dYWCk17sOU+FIReQnhbz82F4+h8YqPHEBuGTXK5eaQMHESKsJrF80kHtLMJO3Jbn3iMcrAfxnNhFSaFkpKu2mkP4MBz8aNsSrAsiRSuWncQepH38PKaMgQzBc2oQv9ud2wL459PPv/FDKeH7we9EH+HblTxjr7tamuj5r17Qv5jh3z7u+R2u41bxr37jhB2X/jt06HPJy7ch/sjGthw/0TH2+wefiTMCZYlkQvirsXnA+aIbn6pDnn5zAcqogZhwt6CE+v8H35AHoxEc7CJUMUIJBMLdU7tL4xC3iusro1vkRjRB8leWppEoFi1NYkk2xnZnF+DDqYVug/fsWOhXbgDoBB2gUSEEVkmCMTh2IvvkWnB0iTS2dL5ck5+jg9a1iSWGEzDKumCHT48ThqPWA8E4NKg7egR8n34IciDKA+6FRd0N6rQs6SiR4lVSYJxDu6vVQlCkFI2S5PIiLq6tpaqJZsh2fyUpOvnh5w6PE4X1pAn9pMnqAPEEWxuwrTFTQP6kTzC8ji0vzpaTrWYpg8R2FmaREQDMZ+rxi+SLUlEtF8G9KGmkQ9k4TtzhvwwbNPg/1SFE2U3pit5eXkhnUd/jDyyoW/w/Xlp7JYtHWbKankS6eJdz+LM9/8CCIqZQJhRtoOHx73gEqMLodcQB2gHO30U6DhHgfZ26mptI+1cG8HtJVaY1dAyrSsXylJMVxShMEVJmZ629Gr8hQgn9hcW5uG9ytxgiyV3TGk24W273lwojCk9HUOmJePsfQCVUGGInSzipRIKUQw2QoZhIk4VaUJJijRBGuKzv0I6fWSkQaD58vMuLdA+snDVK41m1mX5kYgQnjN6Fi+dLUgknc7Kd9uiO3RFDBNDJFFEXus+KBNMQQCDv1qzCUQ0PNzvpghhVKGnKipGe3PYMZRnuymNURjIciQCySKA4zLvKKiu+UOyzyWb3xZfyuE1NR9Cw7oxWeFkfolAtiKAUUhrh4+vyIT8tiARAQRAeTITgMg6JAJOQABTjGfgCrE9E7LYhkROBhr+gu3MZzIBiqxDImB3BDjvytiPrm1IpGTNAR+cRP7O7p0r2y8RMB0BTjsLqtfrn/5ucANsQyJC7mCQP2Ww/LI4iYDjEOBcezyTQtmKRIasqv0blCP1mQRI1iURsBMCmPK3aa1+01dkIjGxFYmIhgc5PRwpgLyWCEgEIhFgvx5cV9cUGWP2te1I5KfVNdXYD3DAbGBk+RIB2yHAeSCoBf4z0+22HYk8SKRhSvNIpoGS9UkErI4ADv14fkj1uiNGtPPArKtGvHPdpEHxynrnuqkXbbjkkhxbWKxGC3J05szcguEFR2BvC0eeMkgEJAICAa4FZhZUr3stXTT2zJo6Psfl+TLK6cRBck8U1287GlUm2z+7rApboGZjI9QR241EhDBiazNY96dRgslbiUD2IsDpZSMIRADoVZTQSWZw6Z2LvdZfODBneuTO0I8IBHmxO5vZkkSEoIGuxv+RxmcCCRkkAkAgqH3XKByKXtl+JKCx50AO8LF/nkj2l5VdLMrvHoHgGtOY09Qe+I0tpzNhsJoqK/5JUdi/h+/lp0QgGxHAj2kNDqZaYrTs+68ruxYuX24BkYjRBkb/fC/Otr1G1MM4naFzgZ8Xbd/ebNuRiBCk08cfBVmeFNcySASyFoEgfc8M2Us2b30tGKS/hEcksQhE1GtrEgltMOLs/5kBoCxTImAHBKC8qC54seZ1s9oqiERjtD+yfE3TVooRSDjO1iQihDjRdeB/xbkaYYHkp0QgixAIBgPav5gp78G50yuxZ+38aWsXKlJV5VPvzry6+2xW25OI2JgHNwHfMhNIWbZEwJIIcP6r0FYQkxonCETjylxRvNCBME1bG57auD0594eJxPYkIgQsrK75C3QjdeJaBolANiCAH86WzoDPFF2IwK/h+hnLwgSiMH62pdX3WNEr29bBbuSvISLhlBcmEkeQiBA62KX9vfgQ1zJIBJyOALy4PzRidd1xM+RsmFNWwhVWLsoWBNLc7P/51LfeCu3HgeHZqxoPvhAmEpc7907HkMjg1S+9BYv4jDliMaPzZJkSgYQQ4LRn3/un/yehvClkYj5qgXd0n7ADaQt2PBYmkHBRxZve2BwakTBsQdH4SVvbiYSFCn82lpcXqvne3TDFvSgcJz8lAo5CAKsIgSDNHbKqZpOZcr1RWup+cfv24INir5pO2F9c7C05cMDvKBIRssIA7RYYoD2nI7eMlgjYGwFOT+WvXHuvlYRwzHQmDGpIycoz4+U6XKf8lAhkBAHOP9CCbZZbiXQciYjO9GtdX4KJbrcxTEY6WFYiETAdAfZAJg6jSlYMR5LIsBdffh8zua8kC4bMLxGwKgL4UfwNpjErrdg+R5KIABonf/0OwP/JiqDLNkkEkkEANiEH/bztq8k8k8m8jiURASIPtD8AIol2qJJJfGVdEoH0EMBiDDHt9uErN7emV5B5TzuaRMT8UeP0GcCnu0xlHrSyZIlA+gjgMPt/LVhRuzX9kswrwdEkImAbvLJmAw42/qF5EMqSJQJmIcA31ayo+ZFZpRtVrmpUQVYu55p9DZuKJhXNYIwVW7mdsm0SgW4EOD/h89HCGQ0NLd1xFr1w/EhE4H6r2FPjozukywCLvoWyWT0REEapXLtteE3Nhz0TrHmXFSQioC+oqTkLLfcncNlhza6QrZIInEcAjob+YXD1SxvtgkfWkIjoEFizvolzSu/DuTXoJxkkAtZDQNP4rwtW1tjqJIOsIhHxyhSsrH0aFPKv1nt9ZIuyHgEc+/D+wWNftBsOjtuAl2AHsOaqJb/D4Tt3JJhfZpMImI3ArkB7YPaQdetst10j60YiF94Efqzh6OfgO/Jls98MWb5EoE8EOJ0KaIFlRhDI/lmlRe9eP+PqPuuMyPBuaekwHFA1awORKyI64ctsJRGavHu3P3AucDOQ2pUwWjKjRMBgBMRGUc60SiPO0G2YM+N21e1+160qb8E72S/Q1D5nGvvmTJ/jGuBqUJi6edycstoHUzgBImtJRLwLgvm7/J03iL0J4l4GiUCGEfDDEPJm4yxS2efR/pDtF2yi7j84t+xx3OsSSYhAmLIaefOF3Pic96nrppWI62RCVpOIAGromrpj2GVTganN+8kAJ/NKBNJEwB/U+K2F1bWGTanBFq/2bBO7T49IDs6dMdsFAgF1DAg/g1HRsbPa8SPh+0Q/s55EBFBYUjuAjwVY+j2RKHAyn0QgDQSCcE56x+DqmhVplNHr0bPtgYdgvYCTDyIDiCRqaiMIBOSxJopATsPCbdmsLceStqPSHepENiNbrk/fuPByj6qukz5as6XH+0VOPzaF3lm4cu2zZtS+e/JkT87QgX/A1OSWyPJBLo8X1W99AARyvQ6BLJz0yutvRz6T6LUkkSikmpbOL2Iez3oAMz4qSd5KBNJDgPNOjHY/mV9d+2J6BcV/+gKRPAMiEQsH3QFE8jx+IBfj3R4YjsQU5jSOW1k08dVtOC0htSBJJAZuZysXjlOZug6dkLSSKUZxMkoiAO6gc5zx5YUratZlAg49IulZNz8T6NIWpkMgojxJIj1R7b47VVEx2ptDtYDoyu5IeSERSAEBsYwb1ILLsIz7SgqPp/zIeSIZ9EcYVd7UuxBjCESUKxWrvdENxYgdlFqgfY40SNMBSEYnhACmEEeCAX59pglENE7YQmH087OYDeVsPUYgKelAosuTJBKNSMS98Ix2tOHoUrwIv42IlpcSgYQQwBRmh5+0mWYeuh2vIcIKFQdxvxAzD6NbYZAmCCbt2UjaBcRsoPMiWXNlxYMYFn5XWOQ4TzwpkdEIYJv4al9z520j6urajC47kfJCBELKGryuIUOy0DPYwo73t8fAAStFjxbXvyacQKe8s71HgYk0LkvzcHiP/z7mtncJBVmWYiDFThABfFUfqVmxtqpfCSTCEjXUbE6NwSBdh/e3OlIMhdGXD8699qeIS/nHUZJIJKJ9XAs3AvD3MAsdIc3k+8AqG5Mx7W3Hj/2nC6rXfiPkTa8fQNg/d8ZMDDZWM2IF3dWDQPDeLirZvPW1zjOtn8CQI3qJ+SvpEEnK7NPdwCy8aK6oGEJeehpDxSVZKL4UOQYCIJADQQrcMmTl+p0xkjMStW/W9I+pbqWuB4EQb9KCtLD4la3bw40IrdoMG/QXfPmXhePOf/KfTNi49R97xvV9J0cifWPUK4dwtfjIypobsXnqISQGe2WQEdmFAM5+1lp80/uTQATgqkt9qC8CEfnEqk3n6dZbQHyrxH134PQP0KWM7b5P8EKSSIJARWd7EGfZCD1JgAfnYnh4ODpd3mcBApx8XNO+mr+y5qbBdXVNFpA4wjM8b+IBvihyBBLZvhCRnGm7GUSCTXjnA2fMDx/RneH7RD8liSSKlE6+IStf2hxsD1wNPckfdbLIaCciwGlngLpmFFTXimXSlFc2jITGx7u+BeW/eA/XwhJ1XtHm19+IV/4FIrkJjX8EZLKJk/bpkk07TsV7Jlaa1InEQiXFOCwD3wXzvf/GkHJIikXIx6yOgDjWkujhE10N3ytZc8Bn9eZmon2SRAxG+UTVgpG55P4ZFsw+aXDRsrh+RgC/8m9h+fbz4tSAfm6KpaqXJGJSd7RULalC0T8HmYwxqQpZbOYQ6ID/j4d2NPv/c15dnRiJyBCBgCSRCDCMvjy7cGGBmqs8hKXgv4OlYEpOcI1ukywvOQSgK1jLAoGv5a9evy+5J7MntySRDPT1meULrnBx139Ju5IMgG1QFVA27sP+/a/B691ag4p0bDGSRDLYtS3LFldyhT0MMinOYLWyqiQQgN6jCZvWfni04djPxOpFEo9mbVZJIhnu+jdKS93FY4Z+FkTyHaziJG3Yk+HmZk11mLa0Y2vlo9QW+En++vVnskZwAwSVJGIAiKkUsX9psXeEp/h+/Op9G8rXUamUIZ8xAAG4LMTU5fFOCvx45Mr10lF3CpBKEkkBNCMf+aCyNG8gG/YAZ/Q1OTIxEtn4ZcE48BzI+6mAv/M/zh8bEj+/TNVHQJKIPjYZTRHTnJIxQ24jpnwTZPKxjFaeTZXhyEpMXR47Fzj36Og1m5K2zswmqBKVVZJIokhlMF/T8oqFmOZ8DXqTpag2dKJZBqt3ZFVQmG6HodgvGlt9v7+0ri7p/SGOBMUgoSSJGASkGcWcWbx4rCuHPgd/MZ8DoYwzow4nl4kpSyte8Ge0oPZE4ara7q3wTpa5P2STJNIfqCdZ558xGqlYtqiCFOUzIJRlWEXIS7KIbMquYT9cvabR0/5W3x/7y7tYNgEuScRmvX188eIBuTlUyUiB8yy+FJawOTYTwfjmQskBcn0Vyuk/+zv5s8JTv/GVyBL1EJAkooeMDeLPLC3LV9WCpUxlSxhnN2K1YbgNmm1IEy+srtTBqnRNoJOvGFpbe9SQgmUhSSMgSSRpyKz5wIM4Q+jvKxeUEnMtwepOBVo5DaTitWZrU2qVmKbs4Rp7iVNwbWNrV71UkKaEo+EPSRIxHFJrFCiM2UYqE0o1hc2GDmUWCOU6kMtQa7QuoVZ0YJSxDSOOTWj7Frgf3GwR72EJNT6bMkkSyaLevnDG8BScijZF2KJgCjSFGMd5w8zdbzBAnwG3fEdAGLtAdjuhEH07oAV37WoP7Jfb7vutV5KqWJJIUnA5L/OG8nLX1FxlPFM8xVzl42CfcjGUteND+hVOo0Eyw4izQnzBByUrPWwzcHATOwPngTDq4qfFNZSfH+KlO4p6DgWC2sHmdv8BOS1JFllr5ZckYq3+sGxrQmQzIDAowDx5Lq54maoqPMi7zzYJKNTu0jQ4+tWC8Pfbcko7fk66D7RsdxrasP8PdfAGoLBSg7EAAAAASUVORK5CYII="></image>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/settings.svg b/public/src/assets/images/settings.svg
new file mode 100644
index 0000000..8d60b5a
--- /dev/null
+++ b/public/src/assets/images/settings.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/settings</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/settings" fill="#999999">
+            <path d="M12,15.4042105 C10.1203158,15.4042105 8.59505263,13.8804211 8.59505263,12 C8.59505263,10.1210526 10.1203158,8.59652632 12,8.59652632 C13.8796842,8.59652632 15.4049474,10.1210526 15.4049474,12 C15.4049474,13.8804211 13.8796842,15.4042105 12,15.4042105 L12,15.4042105 Z M19,13.2835789 L19,10.7178947 L17.432,10.4548421 C17.3111579,10.0318947 17.1438947,9.62884211 16.9338947,9.25231579 L17.8571579,7.95768421 L16.0430526,6.14357895 L14.7476842,7.06684211 C14.3718947,6.85684211 13.9688421,6.68884211 13.5458947,6.56873684 L13.2828421,5 L10.7171579,5 L10.4541053,6.56873684 C10.0311579,6.68884211 9.62884211,6.85684211 9.25231579,7.06684211 L7.95694737,6.14357895 L6.14284211,7.95768421 L7.06610526,9.25231579 C6.85610526,9.62884211 6.68884211,10.0311579 6.568,10.4548421 L5,10.7178947 L5,13.2835789 L6.568,13.5466316 C6.68884211,13.9695789 6.85610526,14.3718947 7.06610526,14.7484211 L6.14284211,16.0430526 L7.95694737,17.8578947 L9.25231579,16.9346316 C9.62884211,17.1446316 10.0311579,17.3118947 10.4541053,17.432 L10.7171579,19.0007368 L13.2835789,19.0007368 L13.5458947,17.432 C13.9688421,17.3118947 14.3718947,17.1446316 14.7476842,16.9346316 L16.0430526,17.8578947 L17.8578947,16.0437895 L16.9346316,14.7491579 C17.1446316,14.3726316 17.3118947,13.9695789 17.4327368,13.5466316 L19,13.2835789 Z" id="Fill-1-Copy-15"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/assets/images/target.svg b/public/src/assets/images/target.svg
new file mode 100644
index 0000000..d7199ec
--- /dev/null
+++ b/public/src/assets/images/target.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
+    <title>icon/target</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon/target" fill="#979797">
+            <path d="M7,8 L18,8 L18,9 L7,9 L7,8 Z M7,12 L18,12 L18,13 L7,13 L7,12 Z M7,16 L18,16 L18,17 L7,17 L7,16 Z" id="Combined-Shape"></path>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/public/src/environments/environment.prod.ts b/public/src/environments/environment.prod.ts
new file mode 100644
index 0000000..bc3ac4b
--- /dev/null
+++ b/public/src/environments/environment.prod.ts
@@ -0,0 +1,5 @@
+export const environment = {
+  production: true,
+  apiBaseUrl: 'dcae/dcaeProxy',
+  imagePath: 'dcae_fe/assets/images'
+};
diff --git a/public/src/environments/environment.ts b/public/src/environments/environment.ts
new file mode 100644
index 0000000..7a68ddd
--- /dev/null
+++ b/public/src/environments/environment.ts
@@ -0,0 +1,10 @@
+// The file contents for the current environment will overwrite these during build.
+// The build system defaults to the dev environment which uses `environment.ts`, but if you do
+// `ng build --env=prod` then `environment.prod.ts` will be used instead.
+// The list of which env maps to which file can be found in `.angular-cli.json`.
+
+export const environment = {
+  production: false,
+  apiBaseUrl: 'http://localhost:8446',
+  imagePath: './assets/images'
+};
diff --git a/public/src/favicon.ico b/public/src/favicon.ico
new file mode 100644
index 0000000..8081c7c
--- /dev/null
+++ b/public/src/favicon.ico
Binary files differ
diff --git a/public/src/index.html b/public/src/index.html
new file mode 100644
index 0000000..4821f7e
--- /dev/null
+++ b/public/src/index.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8">
+  <title>DcaeFe</title>
+  <base href="/">
+
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="icon" type="image/x-icon" href="favicon.ico">
+</head>
+
+<body>
+  <app-root></app-root>
+</body>
+
+</html>
diff --git a/public/src/jestGlobalMocks.ts b/public/src/jestGlobalMocks.ts
new file mode 100644
index 0000000..e93276f
--- /dev/null
+++ b/public/src/jestGlobalMocks.ts
@@ -0,0 +1,33 @@
+global['CSS'] = null;
+
+const mock = () => {
+  let storage = {};
+  return {
+    getItem: key => (key in storage ? storage[key] : null),
+    setItem: (key, value) => (storage[key] = value || ''),
+    removeItem: key => delete storage[key],
+    clear: () => (storage = {})
+  };
+};
+
+Object.defineProperty(window, 'localStorage', { value: mock() });
+Object.defineProperty(window, 'sessionStorage', { value: mock() });
+Object.defineProperty(document, 'doctype', {
+  value: '<!DOCTYPE html>'
+});
+Object.defineProperty(window, 'getComputedStyle', {
+  value: () => {
+    return {
+      display: 'none',
+      appearance: ['-webkit-appearance']
+    };
+  }
+});
+Object.defineProperty(document.body.style, 'transform', {
+  value: () => {
+    return {
+      enumerable: true,
+      configurable: true
+    };
+  }
+});
diff --git a/public/src/main.ts b/public/src/main.ts
new file mode 100644
index 0000000..91ec6da
--- /dev/null
+++ b/public/src/main.ts
@@ -0,0 +1,12 @@
+import { enableProdMode } from '@angular/core';
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+
+import { AppModule } from './app/app.module';
+import { environment } from './environments/environment';
+
+if (environment.production) {
+  enableProdMode();
+}
+
+platformBrowserDynamic().bootstrapModule(AppModule)
+  .catch(err => console.log(err));
diff --git a/public/src/polyfills.ts b/public/src/polyfills.ts
new file mode 100644
index 0000000..d68672f
--- /dev/null
+++ b/public/src/polyfills.ts
@@ -0,0 +1,66 @@
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
+ *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
+ *      file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
+ */
+
+/***************************************************************************************************
+ * BROWSER POLYFILLS
+ */
+
+/** IE9, IE10 and IE11 requires all of the following polyfills. **/
+// import 'core-js/es6/symbol';
+// import 'core-js/es6/object';
+// import 'core-js/es6/function';
+// import 'core-js/es6/parse-int';
+// import 'core-js/es6/parse-float';
+// import 'core-js/es6/number';
+// import 'core-js/es6/math';
+// import 'core-js/es6/string';
+// import 'core-js/es6/date';
+// import 'core-js/es6/array';
+// import 'core-js/es6/regexp';
+// import 'core-js/es6/map';
+// import 'core-js/es6/weak-map';
+// import 'core-js/es6/set';
+
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+// import 'classlist.js';  // Run `npm install --save classlist.js`.
+
+/** IE10 and IE11 requires the following for the Reflect API. */
+// import 'core-js/es6/reflect';
+
+
+/** Evergreen browsers require these. **/
+// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
+import 'core-js/es7/reflect';
+
+
+/**
+ * Required to support Web Animations `@angular/platform-browser/animations`.
+ * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
+ **/
+// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
+
+
+
+/***************************************************************************************************
+ * Zone JS is required by default for Angular itself.
+ */
+import 'zone.js/dist/zone';  // Included with Angular CLI.
+
+
+
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
diff --git a/public/src/setupJest.ts b/public/src/setupJest.ts
new file mode 100644
index 0000000..1d3bd02
--- /dev/null
+++ b/public/src/setupJest.ts
@@ -0,0 +1,2 @@
+import 'jest-preset-angular';
+import './jestGlobalMocks';
diff --git a/public/src/stories/button.stories.ts b/public/src/stories/button.stories.ts
new file mode 100644
index 0000000..80411e8
--- /dev/null
+++ b/public/src/stories/button.stories.ts
@@ -0,0 +1,33 @@
+import { storiesOf } from '@storybook/angular';
+import { action } from '@storybook/addon-actions';
+import { boolean, text } from '@storybook/addon-knobs/angular';
+import { MatButtonModule, MatIconModule } from '@angular/material';
+
+storiesOf('Button', module)
+  .add('Basic', () => ({
+    template: `
+    <div style="margin:2em;">
+      <button mat-raised-button color="primary" (click)="onClick($event)">primary</button>
+      <button mat-raised-button color="primary" [disabled]="disabled">disabled</button>
+      <button mat-raised-button class="btn-secondry"> {{ btnText }} </button>
+    </div>
+    `,
+    props: {
+      disabled: boolean('disabled', true),
+      btnText: text('btnText', 'secondry'),
+      onClick: action('click')
+    },
+    moduleMetadata: {
+      imports: [MatButtonModule]
+    }
+  }))
+  .add('Round', () => ({
+    template: `
+    <button mat-mini-fab style="background-color:#009FDB">
+      <mat-icon class="material-icons">add</mat-icon>
+    </button>
+  `,
+    moduleMetadata: {
+      imports: [MatButtonModule, MatIconModule]
+    }
+  }));
diff --git a/public/src/stories/diagram.stories.ts b/public/src/stories/diagram.stories.ts
new file mode 100644
index 0000000..00dd922
--- /dev/null
+++ b/public/src/stories/diagram.stories.ts
@@ -0,0 +1,22 @@
+import { storiesOf } from '@storybook/angular';
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { DiagramComponent } from '../app/diagram/diagram.component';
+import { array } from '@storybook/addon-knobs/angular';
+
+storiesOf('Diagram', module).add('simple', () => ({
+  component: DiagramComponent,
+  moduleMetadata: {
+    imports: [],
+    schemas: [NO_ERRORS_SCHEMA],
+    declarations: [],
+    providers: []
+  },
+  props: {
+    list: array('list', [
+      { source: 'node1dsvsdsvd', target: 'node2' },
+      { source: 'node3', target: 'node4' },
+      { source: 'node5', target: 'nodedsvsds6' },
+      { source: 'node7', target: 'node8' }
+    ])
+  }
+}));
diff --git a/public/src/stories/index.ts b/public/src/stories/index.ts
new file mode 100644
index 0000000..5c1c18f
--- /dev/null
+++ b/public/src/stories/index.ts
@@ -0,0 +1 @@
+declare module '*.md';
diff --git a/public/src/stories/loader.stories.ts b/public/src/stories/loader.stories.ts
new file mode 100644
index 0000000..38d6f90
--- /dev/null
+++ b/public/src/stories/loader.stories.ts
@@ -0,0 +1,6 @@
+import { storiesOf } from '@storybook/angular';
+import { LoaderComponent } from '../app/loader/loader.component';
+
+storiesOf('Loader', module).add('simple loader', () => ({
+  component: LoaderComponent
+}));
diff --git a/public/src/stories/sdc-dropdown.stories.ts b/public/src/stories/sdc-dropdown.stories.ts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/src/stories/sdc-dropdown.stories.ts
diff --git a/public/src/stories/select-autocomplete.stories.ts b/public/src/stories/select-autocomplete.stories.ts
new file mode 100644
index 0000000..104f0b1
--- /dev/null
+++ b/public/src/stories/select-autocomplete.stories.ts
@@ -0,0 +1,25 @@
+import { storiesOf } from '@storybook/angular';
+import { action } from '@storybook/addon-actions';
+import { boolean, text, array } from '@storybook/addon-knobs/angular';
+import { NgSelectModule } from '@ng-select/ng-select';
+
+storiesOf('select-autocomplete', module).add('select', () => ({
+  template: `
+    <ng-select [items]="cities"
+                bindLabel="name"
+                bindValue="id"
+                placeholder="Select city"
+                [(ngModel)]="selectedCityId">
+        </ng-select>
+    `,
+  props: {
+    cities: array('cities', [
+      { id: 1, name: 'Vilnius' },
+      { id: 2, name: 'Kaunas' },
+      { id: 3, name: 'PabradÄ—' }
+    ])
+  },
+  moduleMetadata: {
+    imports: [NgSelectModule]
+  }
+}));
diff --git a/public/src/stories/treeSelect.stories.ts b/public/src/stories/treeSelect.stories.ts
new file mode 100644
index 0000000..9d34c6b
--- /dev/null
+++ b/public/src/stories/treeSelect.stories.ts
@@ -0,0 +1,40 @@
+import { storiesOf } from '@storybook/angular';
+import { TreeModule } from 'angular-tree-component';
+import { MatButtonModule, MatIconModule } from '@angular/material';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { TargetComponent } from '../app/rule-engine/target/target.component';
+
+storiesOf('Target', module).add('target component', () => ({
+  component: TargetComponent,
+  moduleMetadata: {
+    imports: [
+      TreeModule,
+      MatButtonModule,
+      MatIconModule,
+      BrowserAnimationsModule
+    ]
+  },
+  props: {
+    nodes: [
+      {
+        name: 'commonEventHeader',
+        children: [
+          {
+            name: 'domain',
+            children: null,
+            isRequired: true,
+            requiredChildren: null,
+            id: 'event.commonEventHeader.domain'
+          },
+          {
+            name: 'eventId',
+            children: null,
+            isRequired: true,
+            requiredChildren: null,
+            id: 'event.commonEventHeader.eventId'
+          }
+        ]
+      }
+    ]
+  }
+}));
diff --git a/public/src/styles.css b/public/src/styles.css
new file mode 100644
index 0000000..4b1d433
--- /dev/null
+++ b/public/src/styles.css
@@ -0,0 +1,76 @@
+/* You can add global styles to this file, and also import other style files */
+@import '@angular/material/prebuilt-themes/indigo-pink.css';
+
+@font-face {
+  font-family: 'Open Sans';
+  src: url('./assets/fonts/OpenSans-SemiBold.ttf') format('ttf');
+}
+
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  /* font-family: 'Open Sans', sans-serif;
+  font-size: 13px; */
+}
+
+html,
+body,
+app-root,
+app-home {
+  height: 100%;
+  font-family: 'Open Sans', sans-serif;
+  font-size: 13px;
+  /* height: 100vh; */
+}
+
+div,
+span {
+  font-weight: 400;
+}
+
+div .field-label,
+span .field-label,
+div .field-label > span {
+  font-weight: 600;
+}
+
+/* form input validation border */
+textarea.ng-touched.ng-invalid:not(form),input.ng-touched.ng-invalid:not(form) {
+  border: 1px solid #cf2a2a !important;
+}
+
+/** reset button **/
+.mat-fab.mat-primary,
+.mat-mini-fab.mat-primary,
+.mat-raised-button.mat-primary {
+  background-color: #009fdb;
+}
+
+.mat-fab,
+.mat-mini-fab,
+.mat-raised-button {
+  box-shadow: none !important;
+}
+
+.btn-secondry {
+  border: 1px solid #009fdb !important;
+  color: #009fdb !important;
+  background: #ffffff !important;
+  box-shadow: none !important;
+}
+
+/* Astrix required */
+.required::before {
+  content: '*';
+  color: red;
+  margin-right: 3px;
+}
+
+/** overide dialog **/
+.ui-dialog {
+  border-top: solid 6px #cf2a2a;
+}
+.ui-dialog-titlebar {
+  background: white;
+}
diff --git a/public/src/test.ts b/public/src/test.ts
new file mode 100644
index 0000000..1631789
--- /dev/null
+++ b/public/src/test.ts
@@ -0,0 +1,20 @@
+// This file is required by karma.conf.js and loads recursively all the .spec and framework files
+
+import 'zone.js/dist/zone-testing';
+import { getTestBed } from '@angular/core/testing';
+import {
+  BrowserDynamicTestingModule,
+  platformBrowserDynamicTesting
+} from '@angular/platform-browser-dynamic/testing';
+
+declare const require: any;
+
+// First, initialize the Angular testing environment.
+getTestBed().initTestEnvironment(
+  BrowserDynamicTestingModule,
+  platformBrowserDynamicTesting()
+);
+// Then we find all the tests.
+const context = require.context('./', true, /\.spec\.ts$/);
+// And load the modules.
+context.keys().map(context);
diff --git a/public/src/tsconfig.app.json b/public/src/tsconfig.app.json
new file mode 100644
index 0000000..5ed576b
--- /dev/null
+++ b/public/src/tsconfig.app.json
@@ -0,0 +1,10 @@
+{
+  "extends": "../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../out-tsc/app",
+    "baseUrl": "./",
+    "module": "es2015",
+    "types": ["node"]
+  },
+  "exclude": ["test.ts", "**/*.spec.ts"]
+}
diff --git a/public/src/tsconfig.spec.json b/public/src/tsconfig.spec.json
new file mode 100644
index 0000000..63d89ff
--- /dev/null
+++ b/public/src/tsconfig.spec.json
@@ -0,0 +1,20 @@
+{
+  "extends": "../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../out-tsc/spec",
+    "baseUrl": "./",
+    "module": "commonjs",
+    "target": "es5",
+    "types": [
+      "jasmine",
+      "node"
+    ]
+  },
+  "files": [
+    "test.ts"
+  ],
+  "include": [
+    "**/*.spec.ts",
+    "**/*.d.ts"
+  ]
+}
diff --git a/public/src/typings.d.ts b/public/src/typings.d.ts
new file mode 100644
index 0000000..ef5c7bd
--- /dev/null
+++ b/public/src/typings.d.ts
@@ -0,0 +1,5 @@
+/* SystemJS module definition */
+declare var module: NodeModule;
+interface NodeModule {
+  id: string;
+}
diff --git a/public/src/wallabyTest.ts b/public/src/wallabyTest.ts
new file mode 100644
index 0000000..a0a2899
--- /dev/null
+++ b/public/src/wallabyTest.ts
@@ -0,0 +1,14 @@
+import './polyfills';
+
+import 'zone.js/dist/zone-testing';
+
+import { getTestBed } from '@angular/core/testing';
+import {
+  BrowserDynamicTestingModule,
+  platformBrowserDynamicTesting
+} from '@angular/platform-browser-dynamic/testing';
+
+getTestBed().initTestEnvironment(
+  BrowserDynamicTestingModule,
+  platformBrowserDynamicTesting()
+);
diff --git a/public/test-report.xml b/public/test-report.xml
new file mode 100644
index 0000000..2b8cdde
--- /dev/null
+++ b/public/test-report.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testExecutions version="1">
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\general\general.component.spec.ts">
+    <testCase name="GeneralComponent should sort vfcmt by A to Z" duration="6"/>
+    <testCase name="GeneralComponent should group vfcmt by name" duration="1"/>
+    <testCase name="GeneralComponent should version array be sorted in group" duration="1"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.component.spec.ts">
+    <testCase name="TargetComponent should be created" duration="702">
+      <failure message="Error: The animation trigger &quot;toggleDropdown&quot; has failed to build due to the following errors:"><![CDATA[Error: The animation trigger "toggleDropdown" has failed to build due to the following errors:
+ - The provided animation property "offset" is not a supported CSS property for animations
+ - The provided animation property "offset" is not a supported CSS property for animations
+    at InjectableAnimationEngine.Object.<anonymous>.AnimationEngine.registerTrigger (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\animations\esm5\browser\src\render\animation_engine_next.js:50:14)
+    at C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\platform-browser\bundles\platform-browser-animations.umd.js:322:33
+    at Array.forEach (<anonymous>)
+    at AnimationRendererFactory.Object.<anonymous>.AnimationRendererFactory.createRenderer (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\platform-browser\bundles\platform-browser-animations.umd.js:321:27)
+    at DebugRendererFactory2.Object.<anonymous>.DebugRendererFactory2.createRenderer (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:898:42)
+    at createComponentView (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:13672:56)
+    at callWithDebugContext (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:864:6)
+    at Object.debugCreateComponentView [as createComponentView] (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:14409:12)
+    at createViewNodes (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\view.js:296:36)
+    at createRootView (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:13655:5)
+    at callWithDebugContext (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:864:6)
+    at Object.debugCreateRootView [as createRootView] (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:14363:12)
+    at ComponentFactory_.Object.<anonymous>.ComponentFactory_.create (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\refs.js:121:44)
+    at initComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\testing\src\test_bed.js:566:24)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Object.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\zone\ng_zone.js:594:10)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at NgZone.Object.<anonymous>.NgZone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:4589:69)
+    at TestBed.Object.<anonymous>.TestBed.createComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\testing\src\test_bed.js:569:6)
+    at Function.Object.<anonymous>.TestBed.createComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core-testing.umd.js:866:29)
+    at C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.component.spec.ts:35:23
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at Object.testBody.length (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-zone-patch\index.js:50:27)
+    at Object.asyncFn (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\jasmine_async.js:51:37)
+    at resolve (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:52:12)
+    at new Promise (<anonymous>)
+    at mapper (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:39:19)
+    at promise.then (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:73:82)
+    at <anonymous>]]></failure>
+      <failure message="Error: expect(received).toBeTruthy()"><![CDATA[Error: expect(received).toBeTruthy()
+
+Expected value to be truthy, instead received
+  undefined
+    at C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.component.spec.ts:42:23
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at Object.testBody.length (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-zone-patch\index.js:50:27)
+    at Object.asyncFn (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\jasmine_async.js:82:37)
+    at resolve (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:52:12)
+    at new Promise (<anonymous>)
+    at mapper (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:39:19)
+    at promise.then (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:73:82)
+    at <anonymous>]]></failure>
+    </testCase>
+    <testCase name="TargetComponent should open target tree when click on button" duration="132">
+      <failure message="Error: The animation trigger &quot;toggleDropdown&quot; has failed to build due to the following errors:"><![CDATA[Error: The animation trigger "toggleDropdown" has failed to build due to the following errors:
+ - The provided animation property "offset" is not a supported CSS property for animations
+ - The provided animation property "offset" is not a supported CSS property for animations
+    at InjectableAnimationEngine.Object.<anonymous>.AnimationEngine.registerTrigger (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\animations\esm5\browser\src\render\animation_engine_next.js:50:14)
+    at C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\platform-browser\bundles\platform-browser-animations.umd.js:322:33
+    at Array.forEach (<anonymous>)
+    at AnimationRendererFactory.Object.<anonymous>.AnimationRendererFactory.createRenderer (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\platform-browser\bundles\platform-browser-animations.umd.js:321:27)
+    at DebugRendererFactory2.Object.<anonymous>.DebugRendererFactory2.createRenderer (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:898:42)
+    at createComponentView (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:13672:56)
+    at callWithDebugContext (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:864:6)
+    at Object.debugCreateComponentView [as createComponentView] (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:14409:12)
+    at createViewNodes (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\view.js:296:36)
+    at createRootView (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:13655:5)
+    at callWithDebugContext (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\services.js:864:6)
+    at Object.debugCreateRootView [as createRootView] (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:14363:12)
+    at ComponentFactory_.Object.<anonymous>.ComponentFactory_.create (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\view\refs.js:121:44)
+    at initComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\testing\src\test_bed.js:566:24)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Object.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\src\zone\ng_zone.js:594:10)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at NgZone.Object.<anonymous>.NgZone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core.umd.js:4589:69)
+    at TestBed.Object.<anonymous>.TestBed.createComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\packages\core\esm5\testing\src\test_bed.js:569:6)
+    at Function.Object.<anonymous>.TestBed.createComponent (C:\Users\ym903w\project\dcae-fe\public\node_modules\@angular\core\bundles\core-testing.umd.js:866:29)
+    at C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.component.spec.ts:35:23
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at Object.testBody.length (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-zone-patch\index.js:50:27)
+    at Object.asyncFn (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\jasmine_async.js:51:37)
+    at resolve (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:52:12)
+    at new Promise (<anonymous>)
+    at mapper (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:39:19)
+    at promise.then (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:73:82)
+    at <anonymous>]]></failure>
+      <failure message="TypeError: Cannot read property &apos;debugElement&apos; of undefined"><![CDATA[TypeError: Cannot read property 'debugElement' of undefined
+    at C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.component.spec.ts:46:39
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:388:26)
+    at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\proxy.js:79:39)
+    at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:387:32)
+    at Zone.Object.<anonymous>.Zone.run (C:\Users\ym903w\project\dcae-fe\public\node_modules\zone.js\dist\zone.js:138:43)
+    at Object.testBody.length (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-zone-patch\index.js:50:27)
+    at Object.asyncFn (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\jasmine_async.js:82:37)
+    at resolve (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:52:12)
+    at new Promise (<anonymous>)
+    at mapper (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:39:19)
+    at promise.then (C:\Users\ym903w\project\dcae-fe\public\node_modules\jest-jasmine2\build\queue_runner.js:73:82)
+    at <anonymous>]]></failure>
+    </testCase>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\api\rule-engine-api.service.spec.ts">
+    <testCase name="RuleEngineApiService should be created" duration="57"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\condition\condition.component.spec.ts">
+    <testCase name="Condition Component should be created" duration="225"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\target\target.validation.spec.ts">
+    <testCase name="treeTest should return node branch requireds" duration="3"/>
+    <testCase name="treeTest should return empty array - success state" duration="1"/>
+    <testCase name="treeTest should return validation array - missing required filed" duration="0"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\loader\loader.component.spec.ts">
+    <testCase name="LoaderComponent should create" duration="94"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\api\rest-api.service.spec.ts">
+    <testCase name="RestApiService should be created" duration="19"/>
+    <testCase name="RestApiService should genrate deffrent uuid each time for request id" duration="1"/>
+  </file>
+  <file path="C:\Users\ym903w\project\dcae-fe\public\src\app\rule-engine\host\host.service.spec.ts">
+    <testCase name="HostService should be created" duration="14"/>
+  </file>
+</testExecutions>
\ No newline at end of file
diff --git a/public/tsconfig.json b/public/tsconfig.json
new file mode 100644
index 0000000..be76f06
--- /dev/null
+++ b/public/tsconfig.json
@@ -0,0 +1,15 @@
+{
+  "compileOnSave": false,
+  "compilerOptions": {
+    "outDir": "./dist/out-tsc",
+    "sourceMap": true,
+    "declaration": false,
+    "moduleResolution": "node",
+    "emitDecoratorMetadata": true,
+    "experimentalDecorators": true,
+    "target": "es5",
+    "typeRoots": ["node_modules/@types"],
+    "lib": ["es2017", "dom"]
+  },
+  "exclude": ["wallabyTest.ts"]
+}
diff --git a/public/tslint.json b/public/tslint.json
new file mode 100644
index 0000000..a2e30ef
--- /dev/null
+++ b/public/tslint.json
@@ -0,0 +1,144 @@
+{
+  "rulesDirectory": [
+    "node_modules/codelyzer"
+  ],
+  "rules": {
+    "arrow-return-shorthand": true,
+    "callable-types": true,
+    "class-name": true,
+    "comment-format": [
+      true,
+      "check-space"
+    ],
+    "curly": true,
+    "deprecation": {
+      "severity": "warn"
+    },
+    "eofline": true,
+    "forin": true,
+    "import-blacklist": [
+      true,
+      "rxjs",
+      "rxjs/Rx"
+    ],
+    "import-spacing": true,
+    "indent": [
+      true,
+      "spaces"
+    ],
+    "interface-over-type-literal": true,
+    "label-position": true,
+    "max-line-length": [
+      true,
+      140
+    ],
+    "member-access": false,
+    "member-ordering": [
+      true,
+      {
+        "order": [
+          "static-field",
+          "instance-field",
+          "static-method",
+          "instance-method"
+        ]
+      }
+    ],
+    "no-arg": true,
+    "no-bitwise": true,
+    "no-console": [
+      true,
+      "debug",
+      "info",
+      "time",
+      "timeEnd",
+      "trace"
+    ],
+    "no-construct": true,
+    "no-debugger": true,
+    "no-duplicate-super": true,
+    "no-empty": false,
+    "no-empty-interface": true,
+    "no-eval": true,
+    "no-inferrable-types": [
+      true,
+      "ignore-params"
+    ],
+    "no-misused-new": true,
+    "no-non-null-assertion": true,
+    "no-shadowed-variable": true,
+    "no-string-literal": false,
+    "no-string-throw": true,
+    "no-switch-case-fall-through": true,
+    "no-trailing-whitespace": true,
+    "no-unnecessary-initializer": true,
+    "no-unused-expression": true,
+    "no-use-before-declare": true,
+    "no-var-keyword": true,
+    "object-literal-sort-keys": false,
+    "one-line": [
+      true,
+      "check-open-brace",
+      "check-catch",
+      "check-else",
+      "check-whitespace"
+    ],
+    "prefer-const": true,
+    "quotemark": [
+      true,
+      "single"
+    ],
+    "radix": true,
+    "semicolon": [
+      true,
+      "always"
+    ],
+    "triple-equals": [
+      true,
+      "allow-null-check"
+    ],
+    "typedef-whitespace": [
+      true,
+      {
+        "call-signature": "nospace",
+        "index-signature": "nospace",
+        "parameter": "nospace",
+        "property-declaration": "nospace",
+        "variable-declaration": "nospace"
+      }
+    ],
+    "typeof-compare": true,
+    "unified-signatures": true,
+    "variable-name": false,
+    "whitespace": [
+      true,
+      "check-branch",
+      "check-decl",
+      "check-operator",
+      "check-separator",
+      "check-type"
+    ],
+    "directive-selector": [
+      true,
+      "attribute",
+      "app",
+      "camelCase"
+    ],
+    "component-selector": [
+      true,
+      "element",
+      "app",
+      "kebab-case"
+    ],
+    "no-output-on-prefix": true,
+    "use-input-property-decorator": true,
+    "use-output-property-decorator": true,
+    "use-host-property-decorator": true,
+    "no-input-rename": true,
+    "no-output-rename": true,
+    "use-life-cycle-interface": true,
+    "use-pipe-transform-interface": true,
+    "component-class-suffix": true,
+    "directive-class-suffix": true
+  }
+}
diff --git a/public/wallaby.jasmine.js b/public/wallaby.jasmine.js
new file mode 100644
index 0000000..0140e87
--- /dev/null
+++ b/public/wallaby.jasmine.js
@@ -0,0 +1,96 @@
+var wallabyWebpack = require('wallaby-webpack');
+var path = require('path');
+
+var compilerOptions = Object.assign(
+  require('./tsconfig.json').compilerOptions,
+  require('./src/tsconfig.spec.json').compilerOptions
+);
+
+compilerOptions.module = 'CommonJs';
+
+module.exports = function(wallaby) {
+  var webpackPostprocessor = wallabyWebpack({
+    entryPatterns: ['src/wallabyTest.js', 'src/**/*spec.js'],
+
+    module: {
+      rules: [
+        { test: /\.css$/, loader: ['raw-loader', 'css-loader'] },
+        { test: /\.html$/, loader: 'raw-loader' },
+        {
+          test: /\.ts$/,
+          loader: '@ngtools/webpack',
+          include: /node_modules/,
+          query: { tsConfigPath: 'tsconfig.json' }
+        },
+        {
+          test: /\.js$/,
+          loader: 'angular2-template-loader',
+          exclude: /node_modules/
+        },
+        { test: /\.json$/, loader: 'json-loader' },
+        { test: /\.styl$/, loaders: ['raw-loader', 'stylus-loader'] },
+        { test: /\.less$/, loaders: ['raw-loader', 'less-loader'] },
+        { test: /\.scss$|\.sass$/, loaders: ['raw-loader', 'sass-loader'] },
+        { test: /\.(jpg|png)$/, loader: 'url-loader?limit=128000' }
+      ]
+    },
+
+    resolve: {
+      extensions: ['.js', '.ts'],
+      modules: [
+        path.join(wallaby.projectCacheDir, 'src/app'),
+        path.join(wallaby.projectCacheDir, 'src'),
+        'node_modules'
+      ]
+    },
+    node: {
+      fs: 'empty',
+      net: 'empty',
+      tls: 'empty',
+      dns: 'empty'
+    }
+  });
+
+  return {
+    files: [
+      {
+        pattern: 'src/**/*.+(ts|css|less|scss|sass|styl|html|json|svg)',
+        load: false
+      },
+      { pattern: 'src/**/*.d.ts', ignore: true },
+      { pattern: 'src/**/*spec.ts', ignore: true }
+    ],
+
+    tests: [
+      { pattern: 'src/**/*spec.ts', load: false },
+      { pattern: 'src/**/*e2e-spec.ts', ignore: true }
+    ],
+
+    testFramework: 'jasmine',
+
+    compilers: {
+      '**/*.ts': wallaby.compilers.typeScript(compilerOptions)
+    },
+
+    middleware: function(app, express) {
+      var path = require('path');
+      app.use(
+        '/favicon.ico',
+        express.static(path.join(__dirname, 'src/favicon.ico'))
+      );
+      app.use('/assets', express.static(path.join(__dirname, 'src/assets')));
+    },
+
+    env: {
+      kind: 'electron'
+    },
+
+    postprocessor: webpackPostprocessor,
+
+    setup: function() {
+      window.__moduleBundler.loadTests();
+    },
+
+    debug: true
+  };
+};
diff --git a/public/wallaby.js b/public/wallaby.js
new file mode 100644
index 0000000..4e5f2d3
--- /dev/null
+++ b/public/wallaby.js
@@ -0,0 +1,123 @@
+var wallabyWebpack = require('wallaby-webpack');
+var path = require('path');
+
+var compilerOptions = Object.assign(
+  require('./tsconfig.json').compilerOptions,
+  require('./src/tsconfig.spec.json').compilerOptions
+);
+
+compilerOptions.module = 'CommonJs';
+
+module.exports = function(wallaby) {
+  var webpackPostprocessor = wallabyWebpack({
+    entryPatterns: ['src/wallabyTest.js', 'src/**/*spec.js'],
+
+    module: {
+      rules: [
+        { test: /\.css$/, loader: ['raw-loader', 'css-loader'] },
+        { test: /\.html$/, loader: 'raw-loader' },
+        {
+          test: /\.ts$/,
+          loader: '@ngtools/webpack',
+          include: /node_modules/,
+          query: { tsConfigPath: 'tsconfig.json' }
+        },
+        {
+          test: /\.js$/,
+          loader: 'angular2-template-loader',
+          exclude: /node_modules/
+        },
+        { test: /\.json$/, loader: 'json-loader' },
+        { test: /\.styl$/, loaders: ['raw-loader', 'stylus-loader'] },
+        { test: /\.less$/, loaders: ['raw-loader', 'less-loader'] },
+        { test: /\.scss$|\.sass$/, loaders: ['raw-loader', 'sass-loader'] },
+        { test: /\.(jpg|png)$/, loader: 'url-loader?limit=128000' }
+      ]
+    },
+
+    resolve: {
+      extensions: ['.js', '.ts'],
+      modules: [
+        path.join(wallaby.projectCacheDir, 'src/app'),
+        path.join(wallaby.projectCacheDir, 'src'),
+        'node_modules'
+      ]
+    },
+    node: {
+      fs: 'empty',
+      net: 'empty',
+      tls: 'empty',
+      dns: 'empty'
+    }
+  });
+
+  return {
+    files: [
+      'src/setupJest.ts',
+      'src/**/*.ts',
+      '!src/**/*.spec.ts',
+      '!src/**/*.d.ts',
+      'src/**/*.json'
+    ],
+
+    tests: ['src/**/*.spec.ts'],
+
+    testFramework: 'jest',
+
+    compilers: {
+      '**/*.ts': wallaby.compilers.typeScript(compilerOptions)
+    },
+
+    env: {
+      type: 'node',
+      runner: 'node',
+      kind: 'chrome'
+    },
+
+    setup: function(wallaby) {
+      //Use the configured jest file for testing
+      const jestConfig = {
+        mapCoverage: true,
+        globals: {
+          __TS_CONFIG__: {
+            target: 'es6',
+            module: 'commonjs',
+            moduleResolution: 'node'
+          },
+          'ts-jest': {
+            tsConfigFile: 'src/tsconfig.spec.json'
+          },
+          __TRANSFORM_HTML__: true
+        },
+        testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|js)$',
+        setupTestFrameworkScriptFile: '<rootDir>/src/setupJest.ts',
+        transform: {
+          '^.+\\.(ts|html)$':
+            '<rootDir>/node_modules/jest-preset-angular/preprocessor.js'
+        },
+        transformIgnorePatterns: ['node_modules/(?!@ngrx)'],
+        collectCoverageFrom: [
+          'src/app/module/**/*.{ts}',
+          '!src/app/*.{ts}',
+          '!src/app/**/*.{js}',
+          '!src/app/environment/*.{ts}',
+          '!src/app/language/*.{ts}',
+          '!src/app/**/*.module.{ts}',
+          '!src/app/**/*.interface.{ts}',
+          '!src/app/**/*.state.{ts}',
+          '!src/app/**/*.entity.{ts}'
+        ],
+        moduleFileExtensions: ['ts', 'tsx', 'js', 'json'],
+        testPathIgnorePatterns: ['/node_modules/', '/dist/', 'src/app/*.{js}'],
+        testResultsProcessor: 'jest-sonar-reporter',
+        moduleNameMapper: {
+          'app/(.*)': '<rootDir>/src/app/$1',
+          '@common/(.*)': '<rootDir>/src/app/common/$1'
+        }
+      };
+      wallaby.testFramework.configure(jestConfig);
+    },
+
+    debug: true
+  };
+};
diff --git a/public/yarn-error.log b/public/yarn-error.log
new file mode 100644
index 0000000..2cf1df9
--- /dev/null
+++ b/public/yarn-error.log
@@ -0,0 +1,11569 @@
+Arguments: 
+  C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js add sdc-ui --save
+
+PATH: 
+  C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\cygdrive\c\Users\ym903w\.local\bin;C:\OCaml\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\RSA SecurID Token Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\ProgramData\chocolatey\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\PuTTY;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\tools\go\bin;C:\Go\bin;C:\HashiCorp\Vagrant\bin;C:\Program Files\Git\cmd;C:\ProgramData\nvm;C:\Program Files\nodejs;C:\Program Files\nodejs;C:\Android\android-sdk\tools;C:\Android\android-sdk\platform-tools;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files\dotnet;C:\ProgramData\chocolatey\lib\Elixir\bin;C:\Program Files\Rust stable GNU 1.23\bin;C:\Program Files (x86)\Yarn\bin;C:\Program Files\PostgreSQL\9.6\data\bin;C:\Users\ym903w\.cargo\bin;C:\Program Files (x86)\Elm Platform\0.18\bin;C:\Python35\Scripts;C:\Python35;C:\Program Files\Oracle\VirtualBox;C:\Program Files\MongoDB\Server\3.2\bin;C:\Program Files\Docker Toolbox;C:\Users\ym903w\.babun;C:\Program Files\Microsoft VS Code Insiders\bin;C:\Program Files\kdiff3;C:\Users\ym903w\AppData\Roaming\Dashlane\5.2.0.12122\bin\Firefox_Extension\{442718d9-475e-452a-b3e1-fb1ee16b8e9f}\components;C:\Users\ym903w\AppData\Roaming\Dashlane\5.2.0.12122\ucrt;C:\Users\ym903w\AppData\Roaming\npm;C:\Users\ym903w\AppData\Local\Programs\Fiddler;C:\Users\ym903w\.rustup\toolchains\stable-x86_64-pc-windows-msvc\bin;C:\Users\ym903w\AppData\Local\Yarn\bin;C:\Users\ym903w\AppData\Roaming\Dashlane\5.9.0.17744\bin\Firefox_Extension\{442718d9-475e-452a-b3e1-fb1ee16b8e9f}\components;C:\Users\ym903w\AppData\Roaming\Dashlane\5.9.0.17744\ucrt
+
+Yarn version: 
+  1.3.2
+
+Node version: 
+  8.7.0
+
+Platform: 
+  win32 x64
+
+npm manifest: 
+  {
+    "name": "dcae-fe",
+    "version": "0.0.0",
+    "license": "MIT",
+    "scripts": {
+      "ng": "ng",
+      "start": "ng serve",
+      "build": "ng build --prod --deploy-url=/dcae",
+      "test": "ng test",
+      "test:jest": "jest --watch",
+      "test:ci": "jest --runInBand",
+      "test:coverage": "jest --coverage",
+      "lint": "ng lint",
+      "e2e": "ng e2e",
+      "cy:run": "cypress run",
+      "cy:open": "cypress open",
+      "cy:report": "cypress run --reporter  mochawesome",
+      "war-local": "npm run build && cd dist && jar -cvf rule_engine.war *",
+      "war-remote": "mvn clean install",
+      "storybook": "start-storybook -p 9001 -c .storybook",
+      "build-storybook": "build-storybook"
+    },
+    "jest": {
+      "preset": "jest-preset-angular",
+      "roots": ["<rootDir>/src"],
+      "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",
+      "globals": {
+        "ts-jest": {
+          "tsConfigFile": "src/tsconfig.spec.json"
+        },
+        "__TRANSFORM_HTML__": true
+      }
+    },
+    "private": true,
+    "dependencies": {
+      "@angular/animations": "^5.1.0",
+      "@angular/cdk": "^5.1.1",
+      "@angular/common": "^5.1.0",
+      "@angular/compiler": "^5.1.0",
+      "@angular/core": "^5.1.0",
+      "@angular/forms": "^5.1.0",
+      "@angular/http": "^5.1.0",
+      "@angular/material": "5.1.1",
+      "@angular/platform-browser": "^5.1.0",
+      "@angular/platform-browser-dynamic": "^5.1.0",
+      "@angular/router": "^5.1.0",
+      "@bahmutov/add-typescript-to-cypress": "^2.0.0",
+      "@ng-select/ng-select": "^0.26.2",
+      "angular-tree-component": "^7.0.1",
+      "core-js": "^2.4.1",
+      "feather-icons": "^4.5.0",
+      "font-awesome": "^4.7.0",
+      "material-design-icons": "^3.0.1",
+      "mobx": "^3.4.1",
+      "mobx-angular": "^2.0.1",
+      "ngx-toastr": "^8.2.1",
+      "papaparse": "^4.3.6",
+      "pretty-checkbox": "3.0.3",
+      "primeng": "^5.0.2",
+      "ramda": "^0.25.0",
+      "rxjs": "^5.5.6",
+      "uuid": "^3.2.1",
+      "zone.js": "^0.8.19"
+    },
+    "devDependencies": {
+      "@angular/cli": "^1.7.3",
+      "@angular/compiler-cli": "^5.1.0",
+      "@angular/language-service": "^5.1.0",
+      "@storybook/addon-actions": "3.4.0-alpha.9",
+      "@storybook/addon-knobs": "3.4.0-alpha.9",
+      "@storybook/addon-links": "3.4.0-alpha.9",
+      "@storybook/addon-notes": "3.4.0-alpha.9",
+      "@storybook/addon-options": "3.4.0-alpha.9",
+      "@storybook/addons": "3.4.0-alpha.9",
+      "@storybook/angular": "^3.4.0-alpha.9",
+      "@types/jasmine": "~2.8.3",
+      "@types/jasminewd2": "~2.0.2",
+      "@types/jest": "^22.2.0",
+      "@types/node": "^9.4.6",
+      "angular2-template-loader": "^0.6.2",
+      "babel-core": "^6.26.0",
+      "codelyzer": "^4.0.1",
+      "cypress": "1.4.2",
+      "electron": "^1.8.3",
+      "jasmine-core": "~2.8.0",
+      "jasmine-spec-reporter": "~4.2.1",
+      "jest": "^22.4.2",
+      "jest-preset-angular": "^5.2.1",
+      "jest-sonar-reporter": "^1.3.0",
+      "karma": "~2.0.0",
+      "karma-chrome-launcher": "~2.2.0",
+      "karma-cli": "~1.0.1",
+      "karma-coverage-istanbul-reporter": "^1.2.1",
+      "karma-jasmine": "~1.1.0",
+      "karma-jasmine-html-reporter": "^0.2.2",
+      "mocha": "^5.0.0",
+      "mocha-rp-reporter": "^1.0.12",
+      "mochawesome": "^3.0.2",
+      "protractor": "~5.1.2",
+      "ts-node": "~3.2.0",
+      "tslint": "~5.9.1",
+      "typescript": "~2.5.3",
+      "wallaby-webpack": "^3.9.5"
+    }
+  }
+
+yarn manifest: 
+  No manifest
+
+Lockfile: 
+  # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+  # yarn lockfile v1
+  
+  
+  "@angular-devkit/build-optimizer@0.3.2":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.3.2.tgz#77d4d1e4fcd09575f0200e2d6d21c1a3f995096f"
+    dependencies:
+      loader-utils "^1.1.0"
+      source-map "^0.5.6"
+      typescript "~2.6.2"
+      webpack-sources "^1.0.1"
+  
+  "@angular-devkit/core@0.3.2":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.3.2.tgz#b6fd6aa2e4f4ac3c39478198ba91a53d4c0f88d5"
+    dependencies:
+      ajv "~5.5.1"
+      chokidar "^1.7.0"
+      rxjs "^5.5.6"
+      source-map "^0.5.6"
+  
+  "@angular-devkit/schematics@0.3.2":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.3.2.tgz#09a2268fad61f4f956f42db87913b8748c512a78"
+    dependencies:
+      "@ngtools/json-schema" "^1.1.0"
+      rxjs "^5.5.6"
+  
+  "@angular/animations@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.2.0.tgz#a3ce02c01b074f0de7c2c23c1f08b4a00f0bec5f"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/cdk@^5.1.1":
+    version "5.1.1"
+    resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-5.1.1.tgz#a278b44ec02145a4691aa466dde06a1ae8c0fe88"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/cli@^1.7.3":
+    version "1.7.3"
+    resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.7.3.tgz#ac917b69240bb1b340421e9f985135890e0d53b4"
+    dependencies:
+      "@angular-devkit/build-optimizer" "0.3.2"
+      "@angular-devkit/core" "0.3.2"
+      "@angular-devkit/schematics" "0.3.2"
+      "@ngtools/json-schema" "1.2.0"
+      "@ngtools/webpack" "1.10.2"
+      "@schematics/angular" "0.3.2"
+      "@schematics/package-update" "0.3.2"
+      ajv "^6.1.1"
+      autoprefixer "^7.2.3"
+      cache-loader "^1.2.0"
+      chalk "~2.2.0"
+      circular-dependency-plugin "^4.2.1"
+      clean-css "^4.1.11"
+      common-tags "^1.3.1"
+      copy-webpack-plugin "~4.4.1"
+      core-object "^3.1.0"
+      denodeify "^1.2.1"
+      ember-cli-string-utils "^1.0.0"
+      extract-text-webpack-plugin "^3.0.2"
+      file-loader "^1.1.5"
+      fs-extra "^4.0.0"
+      glob "^7.0.3"
+      html-webpack-plugin "^2.29.0"
+      istanbul-instrumenter-loader "^3.0.0"
+      karma-source-map-support "^1.2.0"
+      less "^2.7.2"
+      less-loader "^4.0.5"
+      license-webpack-plugin "^1.0.0"
+      loader-utils "1.1.0"
+      lodash "^4.11.1"
+      memory-fs "^0.4.1"
+      minimatch "^3.0.4"
+      node-modules-path "^1.0.0"
+      nopt "^4.0.1"
+      opn "~5.1.0"
+      portfinder "~1.0.12"
+      postcss "^6.0.16"
+      postcss-import "^11.0.0"
+      postcss-loader "^2.0.10"
+      postcss-url "^7.1.2"
+      raw-loader "^0.5.1"
+      resolve "^1.1.7"
+      rxjs "^5.5.6"
+      sass-loader "^6.0.6"
+      semver "^5.1.0"
+      silent-error "^1.0.0"
+      source-map-support "^0.4.1"
+      style-loader "^0.19.1"
+      stylus "^0.54.5"
+      stylus-loader "^3.0.1"
+      uglifyjs-webpack-plugin "^1.1.8"
+      url-loader "^0.6.2"
+      webpack "~3.11.0"
+      webpack-dev-middleware "~1.12.0"
+      webpack-dev-server "~2.11.0"
+      webpack-merge "^4.1.0"
+      webpack-sources "^1.0.0"
+      webpack-subresource-integrity "^1.0.1"
+    optionalDependencies:
+      node-sass "^4.7.2"
+  
+  "@angular/common@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.2.0.tgz#d184fb90763da1d1bab1f6c4f41dd80c79e47506"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/compiler-cli@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.0.tgz#336b6d0127c69f25637cbcd82a4b76de6f3a2cce"
+    dependencies:
+      chokidar "^1.4.2"
+      minimist "^1.2.0"
+      reflect-metadata "^0.1.2"
+      tsickle "^0.26.0"
+  
+  "@angular/compiler@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.0.tgz#3798795b97e60b47fdc0a150e062dedb4ac39467"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/core@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.0.tgz#f91bf83de3e0defd621adcc007c25d7cd5a85af1"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/forms@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.2.0.tgz#b5fb6b9ba97334bca0e3202d7fee6b9162cbc824"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/http@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.2.0.tgz#ebffff97e6c7baa3609a2d68e982bf990b1c72dc"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/language-service@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.2.0.tgz#c8fab0ca8cbd79dafc96fad844ae69e9038b69ad"
+  
+  "@angular/material@5.1.1":
+    version "5.1.1"
+    resolved "https://registry.yarnpkg.com/@angular/material/-/material-5.1.1.tgz#fafbd6bd98f2521ac5e3e2b2f720214386e3f31d"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/platform-browser-dynamic@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.0.tgz#6d3e074363606b559c3319d2433d1c08ccaefbad"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/platform-browser@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.2.0.tgz#89cbc8abf54171ecf3dd9a40970b4982eecc9f73"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@angular/router@^5.1.0":
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.2.0.tgz#0a43f1c6add592c9cb0b9846fc157fc5b23ee73d"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@babel/code-frame@^7.0.0-beta.35":
+    version "7.0.0-beta.40"
+    resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6"
+    dependencies:
+      "@babel/highlight" "7.0.0-beta.40"
+  
+  "@babel/highlight@7.0.0-beta.40":
+    version "7.0.0-beta.40"
+    resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255"
+    dependencies:
+      chalk "^2.0.0"
+      esutils "^2.0.2"
+      js-tokens "^3.0.0"
+  
+  "@bahmutov/add-typescript-to-cypress@^2.0.0":
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/@bahmutov/add-typescript-to-cypress/-/add-typescript-to-cypress-2.0.0.tgz#5458b630d1d9d309b10941df8757bb59a5db2abf"
+    dependencies:
+      "@cypress/webpack-preprocessor" "1.1.3"
+      am-i-a-dependency "1.1.2"
+      chalk "2.3.0"
+      debug "3.1.0"
+      shelljs "0.8.0"
+      terminal-banner "1.1.0"
+      ts-loader "3.2.0"
+  
+  "@cypress/listr-verbose-renderer@0.4.1":
+    version "0.4.1"
+    resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
+    dependencies:
+      chalk "^1.1.3"
+      cli-cursor "^1.0.2"
+      date-fns "^1.27.2"
+      figures "^1.7.0"
+  
+  "@cypress/webpack-preprocessor@1.1.3":
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-1.1.3.tgz#ee216893714c6e89a171ff4a6ffa03893c308c78"
+    dependencies:
+      babel-core "6.26.0"
+      babel-loader "7.1.2"
+      babel-preset-env "1.6.0"
+      babel-preset-react "6.24.1"
+      bluebird "3.5.0"
+      debug "3.1.0"
+      lodash.clonedeep "4.5.0"
+      webpack "3.6.0"
+  
+  "@cypress/xvfb@1.1.3":
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.1.3.tgz#6294a7d1feb751f12302248f2089fc534c4acb7f"
+    dependencies:
+      lodash.once "^4.1.1"
+  
+  "@ng-select/ng-select@^0.26.2":
+    version "0.26.2"
+    resolved "https://registry.yarnpkg.com/@ng-select/ng-select/-/ng-select-0.26.2.tgz#4e3bbf3743294b7435868af48b1f4dd593ca4c58"
+    dependencies:
+      tslib "^1.7.1"
+  
+  "@ngtools/json-schema@1.2.0":
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.2.0.tgz#06e5ecd29e9a37d260a447dd873ea2becd228c4f"
+  
+  "@ngtools/json-schema@^1.1.0":
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
+  
+  "@ngtools/webpack@1.10.2":
+    version "1.10.2"
+    resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.10.2.tgz#373705fd19992b36e996203480b1d412e942c8d6"
+    dependencies:
+      chalk "~2.2.0"
+      enhanced-resolve "^3.1.0"
+      loader-utils "^1.0.2"
+      magic-string "^0.22.3"
+      semver "^5.3.0"
+      source-map "^0.5.6"
+      tree-kill "^1.0.0"
+      webpack-sources "^1.1.0"
+  
+  "@schematics/angular@0.3.2":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.3.2.tgz#be209a032a3e4577992d94fbaa14bd4bfde485e2"
+    dependencies:
+      typescript "~2.6.2"
+  
+  "@schematics/package-update@0.3.2":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/@schematics/package-update/-/package-update-0.3.2.tgz#c5a299ceba8b9e56f3e1f804f86f07664ec6e01c"
+    dependencies:
+      rxjs "^5.5.6"
+      semver "^5.3.0"
+      semver-intersect "^1.1.2"
+  
+  "@storybook/addon-actions@3.4.0-alpha.9", "@storybook/addon-actions@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.4.0-alpha.9.tgz#1016751ed00aa043a0b228a8e7e9b370712f4a61"
+    dependencies:
+      "@storybook/components" "^3.4.0-alpha.9"
+      deep-equal "^1.0.1"
+      glamorous "^4.11.6"
+      global "^4.3.2"
+      make-error "^1.3.4"
+      prop-types "^15.6.0"
+      react-inspector "^2.2.2"
+      uuid "^3.2.1"
+  
+  "@storybook/addon-knobs@3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-3.4.0-alpha.9.tgz#7e316eb6055718033b240fc3bae20c7f9533f0e8"
+    dependencies:
+      "@storybook/components" "^3.4.0-alpha.9"
+      babel-runtime "^6.26.0"
+      deep-equal "^1.0.1"
+      global "^4.3.2"
+      insert-css "^2.0.0"
+      lodash.debounce "^4.0.8"
+      moment "^2.20.1"
+      prop-types "^15.6.0"
+      react-color "^2.11.4"
+      react-datetime "^2.14.0"
+      react-textarea-autosize "^5.2.1"
+      util-deprecate "^1.0.2"
+  
+  "@storybook/addon-links@3.4.0-alpha.9", "@storybook/addon-links@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.4.0-alpha.9.tgz#cfa0c571cbb2d6da614fe25269e014d88dceaae5"
+    dependencies:
+      "@storybook/components" "^3.4.0-alpha.9"
+      global "^4.3.2"
+      prop-types "^15.5.10"
+  
+  "@storybook/addon-notes@3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addon-notes/-/addon-notes-3.4.0-alpha.9.tgz#767bdd8ea044ea29b4215286bfa9c09d3ed1aa57"
+    dependencies:
+      babel-runtime "^6.26.0"
+      marked "^0.3.16"
+      prop-types "^15.6.0"
+      util-deprecate "^1.0.2"
+    optionalDependencies:
+      "@types/react" "^16.0.20"
+  
+  "@storybook/addon-options@3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addon-options/-/addon-options-3.4.0-alpha.9.tgz#453a642442c3770eb77be11593f8b925e62841ec"
+  
+  "@storybook/addons@3.4.0-alpha.9", "@storybook/addons@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.4.0-alpha.9.tgz#7701a8a42e6016ae07430e4576b5277cef489f43"
+  
+  "@storybook/angular@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/angular/-/angular-3.4.0-alpha.9.tgz#40305a4bf13873a383c9c6c123864f0f8b27cac5"
+    dependencies:
+      "@storybook/addon-actions" "^3.4.0-alpha.9"
+      "@storybook/addon-links" "^3.4.0-alpha.9"
+      "@storybook/addons" "^3.4.0-alpha.9"
+      "@storybook/channel-postmessage" "^3.4.0-alpha.9"
+      "@storybook/core" "^3.4.0-alpha.9"
+      "@storybook/node-logger" "^3.4.0-alpha.9"
+      "@storybook/ui" "^3.4.0-alpha.9"
+      airbnb-js-shims "^1.4.1"
+      angular2-template-loader "^0.6.2"
+      autoprefixer "^7.2.6"
+      babel-core "^6.26.0"
+      babel-loader "^7.0.0"
+      babel-plugin-macros "^2.1.0"
+      babel-plugin-react-docgen "^1.8.2"
+      babel-preset-env "^1.6.0"
+      babel-preset-react "^6.24.1"
+      babel-preset-react-app "^3.1.1"
+      babel-preset-stage-0 "^6.24.1"
+      babel-runtime "^6.23.0"
+      case-sensitive-paths-webpack-plugin "^2.0.0"
+      common-tags "^1.7.2"
+      configstore "^3.1.0"
+      core-js "^2.4.1"
+      cross-env "^5.1.1"
+      css-loader "^0.28.9"
+      dotenv-webpack "^1.5.4"
+      express "^4.15.3"
+      file-loader "^1.1.8"
+      find-cache-dir "^1.0.0"
+      global "^4.3.2"
+      html-loader "^0.5.5"
+      html-webpack-plugin "^2.30.1"
+      json-loader "^0.5.4"
+      json-stringify-safe "^5.0.1"
+      json5 "^0.5.1"
+      lodash.pick "^4.4.0"
+      markdown-loader "^2.0.2"
+      node-sass "^4.7.2"
+      postcss-flexbugs-fixes "^3.3.0"
+      postcss-loader "^2.1.0"
+      prop-types "^15.5.10"
+      qs "^6.5.1"
+      raw-loader "^0.5.1"
+      react "^16.0.0"
+      react-dev-utils "^5.0.0"
+      react-dom "^16.0.0"
+      react-modal "^3.3.1"
+      redux "^3.6.0"
+      request "^2.81.0"
+      rxjs "^5.4.2"
+      sass-loader "^6.0.6"
+      style-loader "^0.20.2"
+      ts-loader "^3.5.0"
+      uglifyjs-webpack-plugin "^1.2.0"
+      url-loader "^0.6.2"
+      util-deprecate "^1.0.2"
+      webpack "^3.11.0"
+      zone.js "^0.8.20"
+  
+  "@storybook/channel-postmessage@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.4.0-alpha.9.tgz#effa7f240b2d4e41b21d5a4c82b8a3cbbd43a1b2"
+    dependencies:
+      "@storybook/channels" "^3.4.0-alpha.9"
+      global "^4.3.2"
+      json-stringify-safe "^5.0.1"
+  
+  "@storybook/channels@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.4.0-alpha.9.tgz#953eeb38c657be6eb2b6ee7b1d7637e038fc5ddf"
+  
+  "@storybook/client-logger@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-3.4.0-alpha.9.tgz#10704a010ec2643937d098202c894f3c392ebfbe"
+  
+  "@storybook/components@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.4.0-alpha.9.tgz#dc313e9f788780c6eca16c69e30186021466fd20"
+    dependencies:
+      glamor "^2.20.40"
+      glamorous "^4.11.6"
+      prop-types "^15.6.0"
+  
+  "@storybook/core@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/core/-/core-3.4.0-alpha.9.tgz#b80f640b1d482cd4fd49a47cd3ad9e3e9e8e89a3"
+    dependencies:
+      "@storybook/addons" "^3.4.0-alpha.9"
+      "@storybook/channel-postmessage" "^3.4.0-alpha.9"
+      "@storybook/client-logger" "^3.4.0-alpha.9"
+      "@storybook/node-logger" "^3.4.0-alpha.9"
+      "@storybook/ui" "^3.4.0-alpha.9"
+      autoprefixer "^7.2.6"
+      babel-runtime "^6.26.0"
+      chalk "^2.3.1"
+      commander "^2.14.1"
+      css-loader "^0.28.9"
+      dotenv "^5.0.0"
+      events "^1.1.1"
+      express "^4.16.2"
+      file-loader "^1.1.8"
+      global "^4.3.2"
+      json-loader "^0.5.7"
+      postcss-flexbugs-fixes "^3.2.0"
+      postcss-loader "^2.1.0"
+      prop-types "^15.5.10"
+      qs "^6.5.1"
+      react "^16.0.0"
+      react-dom "^16.0.0"
+      serve-favicon "^2.4.5"
+      shelljs "^0.8.1"
+      style-loader "^0.20.2"
+      url-loader "^0.6.2"
+      webpack "^3.11.0"
+      webpack-dev-middleware "^1.12.2"
+      webpack-hot-middleware "^2.21.0"
+  
+  "@storybook/mantra-core@^1.7.2":
+    version "1.7.2"
+    resolved "https://registry.yarnpkg.com/@storybook/mantra-core/-/mantra-core-1.7.2.tgz#e10c7faca29769e97131e0e0308ef7cfb655b70c"
+    dependencies:
+      "@storybook/react-komposer" "^2.0.1"
+      "@storybook/react-simple-di" "^1.2.1"
+      babel-runtime "6.x.x"
+  
+  "@storybook/node-logger@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-3.4.0-alpha.9.tgz#edb5813f51a9c5c8487988b3e7582aa4d841ad25"
+    dependencies:
+      chalk "^2.3.1"
+      npmlog "^4.1.2"
+  
+  "@storybook/podda@^1.2.3":
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/@storybook/podda/-/podda-1.2.3.tgz#53c4a1a3f8c7bbd5755dff5c34576fd1af9d38ba"
+    dependencies:
+      babel-runtime "^6.11.6"
+      immutable "^3.8.1"
+  
+  "@storybook/react-komposer@^2.0.1", "@storybook/react-komposer@^2.0.3":
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/@storybook/react-komposer/-/react-komposer-2.0.3.tgz#f9e12a9586b2ce95c24c137eabb8b71527ddb369"
+    dependencies:
+      "@storybook/react-stubber" "^1.0.0"
+      babel-runtime "^6.11.6"
+      hoist-non-react-statics "^1.2.0"
+      lodash.pick "^4.4.0"
+      shallowequal "^0.2.2"
+  
+  "@storybook/react-simple-di@^1.2.1":
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/@storybook/react-simple-di/-/react-simple-di-1.3.0.tgz#13116d89a2f42898716a7f8c4095b47415526371"
+    dependencies:
+      babel-runtime "6.x.x"
+      create-react-class "^15.6.2"
+      hoist-non-react-statics "1.x.x"
+      prop-types "^15.6.0"
+  
+  "@storybook/react-stubber@^1.0.0":
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/@storybook/react-stubber/-/react-stubber-1.0.1.tgz#8c312c2658b9eeafce470e1c39e4193f0b5bf9b1"
+    dependencies:
+      babel-runtime "^6.5.0"
+  
+  "@storybook/ui@^3.4.0-alpha.9":
+    version "3.4.0-alpha.9"
+    resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.4.0-alpha.9.tgz#0d507003c95eb7e3db5d6725c98bc9c9db445728"
+    dependencies:
+      "@storybook/components" "^3.4.0-alpha.9"
+      "@storybook/mantra-core" "^1.7.2"
+      "@storybook/podda" "^1.2.3"
+      "@storybook/react-komposer" "^2.0.3"
+      babel-runtime "^6.26.0"
+      deep-equal "^1.0.1"
+      events "^1.1.1"
+      fuse.js "^3.2.0"
+      global "^4.3.2"
+      json-stringify-safe "^5.0.1"
+      keycode "^2.1.9"
+      lodash.debounce "^4.0.8"
+      lodash.pick "^4.4.0"
+      lodash.sortby "^4.7.0"
+      prop-types "^15.6.0"
+      qs "^6.5.1"
+      react-fuzzy "^0.5.2"
+      react-icons "^2.2.7"
+      react-inspector "^2.2.2"
+      react-modal "^3.3.1"
+      react-split-pane "^0.1.77"
+      react-treebeard "^2.1.0"
+      redux "^3.7.2"
+  
+  "@types/blob-util@1.3.3":
+    version "1.3.3"
+    resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a"
+  
+  "@types/bluebird@3.5.18":
+    version "3.5.18"
+    resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6"
+  
+  "@types/chai-jquery@1.1.35":
+    version "1.1.35"
+    resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.35.tgz#9a8f0a39ec0851b2768a8f8c764158c2a2568d04"
+    dependencies:
+      "@types/chai" "*"
+      "@types/jquery" "*"
+  
+  "@types/chai@*":
+    version "4.1.2"
+    resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.2.tgz#f1af664769cfb50af805431c407425ed619daa21"
+  
+  "@types/chai@4.0.8":
+    version "4.0.8"
+    resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.8.tgz#d27600e9ba2f371e08695d90a0fe0408d89c7be7"
+  
+  "@types/jasmine@*", "@types/jasmine@~2.8.3":
+    version "2.8.4"
+    resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.4.tgz#5528fb5e53f1b27594f81f18debb7eab8dc532cb"
+  
+  "@types/jasminewd2@~2.0.2":
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95"
+    dependencies:
+      "@types/jasmine" "*"
+  
+  "@types/jest@^22.1.3", "@types/jest@^22.2.0":
+    version "22.2.0"
+    resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.0.tgz#55ce83139f7ad1b48b414c3927746614c6963c0f"
+  
+  "@types/jquery@*":
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.0.tgz#6316ac20a1a13c5d521a2dc661befc7184f73f5b"
+  
+  "@types/jquery@3.2.16":
+    version "3.2.16"
+    resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.2.16.tgz#04419c404a3194350e7d3f339a90e72c88db3111"
+  
+  "@types/lodash@4.14.87":
+    version "4.14.87"
+    resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b"
+  
+  "@types/minimatch@3.0.1":
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550"
+  
+  "@types/mocha@2.2.44":
+    version "2.2.44"
+    resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e"
+  
+  "@types/node@^6.0.46":
+    version "6.0.96"
+    resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.96.tgz#7bf0bf40d6ce51e93762cc47d010c8cc5ebb2179"
+  
+  "@types/node@^8.0.24":
+    version "8.9.5"
+    resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.5.tgz#162b864bc70be077e6db212b322754917929e976"
+  
+  "@types/node@^9.4.6":
+    version "9.4.6"
+    resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e"
+  
+  "@types/q@^0.0.32":
+    version "0.0.32"
+    resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
+  
+  "@types/react@^16.0.20":
+    version "16.0.40"
+    resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.40.tgz#caabc2296886f40b67f6fc80f0f3464476461df9"
+  
+  "@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39":
+    version "2.53.43"
+    resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz#2de3d718819bc20165754c4a59afb7e9833f6707"
+  
+  "@types/sinon-chai@2.7.29":
+    version "2.7.29"
+    resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-2.7.29.tgz#4db01497e2dd1908b2bd30d1782f456353f5f723"
+    dependencies:
+      "@types/chai" "*"
+      "@types/sinon" "*"
+  
+  "@types/sinon@*":
+    version "4.1.3"
+    resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.1.3.tgz#2ee25e0e302f31e78a945650a60029e08878eaf8"
+  
+  "@types/sinon@4.0.0":
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.0.0.tgz#9a93ffa4ee1329e85166278a5ed99f81dc4c8362"
+  
+  JSONStream@^1.0.3:
+    version "1.3.2"
+    resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea"
+    dependencies:
+      jsonparse "^1.2.0"
+      through ">=2.2.7 <3"
+  
+  abab@^1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
+  
+  abbrev@1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+  
+  accepts@1.3.3:
+    version "1.3.3"
+    resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
+    dependencies:
+      mime-types "~2.1.11"
+      negotiator "0.6.1"
+  
+  accepts@~1.3.4:
+    version "1.3.4"
+    resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
+    dependencies:
+      mime-types "~2.1.16"
+      negotiator "0.6.1"
+  
+  acorn-dynamic-import@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+    dependencies:
+      acorn "^4.0.3"
+  
+  acorn-globals@^4.1.0:
+    version "4.1.0"
+    resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
+    dependencies:
+      acorn "^5.0.0"
+  
+  acorn@^4.0.3:
+    version "4.0.13"
+    resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+  
+  acorn@^5.0.0, acorn@^5.2.1:
+    version "5.3.0"
+    resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
+  
+  acorn@^5.3.0:
+    version "5.5.3"
+    resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
+  
+  address@1.0.3, address@^1.0.1:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
+  
+  addressparser@1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746"
+  
+  adm-zip@0.4.4:
+    version "0.4.4"
+    resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736"
+  
+  adm-zip@^0.4.7:
+    version "0.4.7"
+    resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1"
+  
+  after@0.8.2:
+    version "0.8.2"
+    resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+  
+  agent-base@2:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7"
+    dependencies:
+      extend "~3.0.0"
+      semver "~5.0.1"
+  
+  airbnb-js-shims@^1.4.1:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.4.1.tgz#cc3e8eb8d35877f9d0fdc6583e26b0ee75b98ad0"
+    dependencies:
+      array-includes "^3.0.3"
+      array.prototype.flatmap "^1.2.0"
+      array.prototype.flatten "^1.2.0"
+      es5-shim "^4.5.10"
+      es6-shim "^0.35.3"
+      function.prototype.name "^1.1.0"
+      object.entries "^1.0.4"
+      object.getownpropertydescriptors "^2.0.3"
+      object.values "^1.0.4"
+      promise.prototype.finally "^3.1.0"
+      string.prototype.padend "^3.0.0"
+      string.prototype.padstart "^3.0.0"
+  
+  ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+  
+  ajv-keywords@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
+  
+  ajv@^4.9.1:
+    version "4.11.8"
+    resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
+    dependencies:
+      co "^4.6.0"
+      json-stable-stringify "^1.0.1"
+  
+  ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@~5.5.1:
+    version "5.5.2"
+    resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+    dependencies:
+      co "^4.6.0"
+      fast-deep-equal "^1.0.0"
+      fast-json-stable-stringify "^2.0.0"
+      json-schema-traverse "^0.3.0"
+  
+  ajv@^6.1.0, ajv@^6.1.1:
+    version "6.2.1"
+    resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671"
+    dependencies:
+      fast-deep-equal "^1.0.0"
+      fast-json-stable-stringify "^2.0.0"
+      json-schema-traverse "^0.3.0"
+  
+  align-text@^0.1.1, align-text@^0.1.3:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+    dependencies:
+      kind-of "^3.0.2"
+      longest "^1.0.1"
+      repeat-string "^1.5.2"
+  
+  alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+  
+  am-i-a-dependency@1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/am-i-a-dependency/-/am-i-a-dependency-1.1.2.tgz#f9d3422304d6f642f821e4c407565035f6167f1f"
+  
+  amdefine@>=0.0.4:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+  
+  angular-tree-component@^7.0.1:
+    version "7.0.1"
+    resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.0.1.tgz#fc8d0e72d8c34b87131a3ba2bd32ad20945689ac"
+    dependencies:
+      lodash "4.17.4"
+      mobx ">=3"
+      mobx-angular ">=1"
+  
+  angular2-template-loader@^0.6.2:
+    version "0.6.2"
+    resolved "https://registry.yarnpkg.com/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz#c0d44e90fff0fac95e8b23f043acda7fd1c51d7c"
+    dependencies:
+      loader-utils "^0.2.15"
+  
+  ansi-escapes@^1.0.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+  
+  ansi-escapes@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+  
+  ansi-html@0.0.7:
+    version "0.0.7"
+    resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+  
+  ansi-regex@^2.0.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+  
+  ansi-regex@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+  
+  ansi-styles@^2.2.1:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+  
+  ansi-styles@^3.1.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+    dependencies:
+      color-convert "^1.9.0"
+  
+  ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+    version "3.2.1"
+    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+    dependencies:
+      color-convert "^1.9.0"
+  
+  anymatch@^1.3.0:
+    version "1.3.2"
+    resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+    dependencies:
+      micromatch "^2.1.5"
+      normalize-path "^2.0.0"
+  
+  anymatch@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+    dependencies:
+      micromatch "^3.1.4"
+      normalize-path "^2.1.1"
+  
+  app-root-path@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
+  
+  append-transform@^0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+    dependencies:
+      default-require-extensions "^1.0.0"
+  
+  aproba@^1.0.3, aproba@^1.1.1:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+  
+  are-we-there-yet@~1.1.2:
+    version "1.1.4"
+    resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+    dependencies:
+      delegates "^1.0.0"
+      readable-stream "^2.0.6"
+  
+  argparse@^1.0.7:
+    version "1.0.9"
+    resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+    dependencies:
+      sprintf-js "~1.0.2"
+  
+  arr-diff@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+    dependencies:
+      arr-flatten "^1.0.1"
+  
+  arr-diff@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+  
+  arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+  
+  arr-union@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+  
+  array-equal@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+  
+  array-filter@~0.0.0:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+  
+  array-find-index@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+  
+  array-find@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8"
+  
+  array-flatten@1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+  
+  array-flatten@^2.1.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
+  
+  array-includes@^3.0.3:
+    version "3.0.3"
+    resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.7.0"
+  
+  array-map@~0.0.0:
+    version "0.0.0"
+    resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+  
+  array-reduce@~0.0.0:
+    version "0.0.0"
+    resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+  
+  array-slice@^0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
+  
+  array-union@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+    dependencies:
+      array-uniq "^1.0.1"
+  
+  array-uniq@^1.0.1:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+  
+  array-unique@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+  
+  array-unique@^0.3.2:
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+  
+  array.prototype.flatmap@^1.2.0:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz#3103cd4826ef90019c9b0a4839b2535fa6faf4e9"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.10.0"
+      function-bind "^1.1.1"
+  
+  array.prototype.flatten@^1.2.0:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz#a77ae1b64524ce373b137fade324d12040d3c680"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.10.0"
+      function-bind "^1.1.1"
+  
+  arraybuffer.slice@~0.0.7:
+    version "0.0.7"
+    resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
+  
+  arrify@^1.0.0, arrify@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+  
+  asap@~2.0.3:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+  
+  asn1.js@^4.0.0:
+    version "4.9.2"
+    resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
+    dependencies:
+      bn.js "^4.0.0"
+      inherits "^2.0.1"
+      minimalistic-assert "^1.0.0"
+  
+  asn1@~0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+  
+  assert-plus@1.0.0, assert-plus@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+  
+  assert-plus@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+  
+  assert@^1.1.1, assert@^1.4.0:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+    dependencies:
+      util "0.10.3"
+  
+  assign-symbols@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+  
+  ast-types@0.10.1, ast-types@0.x.x:
+    version "0.10.1"
+    resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd"
+  
+  ast-types@0.9.6:
+    version "0.9.6"
+    resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
+  
+  astral-regex@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+  
+  astw@^2.0.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917"
+    dependencies:
+      acorn "^4.0.3"
+  
+  async-each@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+  
+  async-foreach@^0.1.3:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+  
+  async-limiter@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+  
+  async@2.1.4:
+    version "2.1.4"
+    resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
+    dependencies:
+      lodash "^4.14.0"
+  
+  async@^1.4.0, async@^1.5.2:
+    version "1.5.2"
+    resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+  
+  async@^2.1.2, async@^2.1.4, async@^2.4.1:
+    version "2.6.0"
+    resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+    dependencies:
+      lodash "^4.14.0"
+  
+  async@~2.1.2:
+    version "2.1.5"
+    resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
+    dependencies:
+      lodash "^4.14.0"
+  
+  asynckit@^0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+  
+  atob@^2.0.0:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+  
+  autoprefixer@^6.3.1:
+    version "6.7.7"
+    resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+    dependencies:
+      browserslist "^1.7.6"
+      caniuse-db "^1.0.30000634"
+      normalize-range "^0.1.2"
+      num2fraction "^1.2.2"
+      postcss "^5.2.16"
+      postcss-value-parser "^3.2.3"
+  
+  autoprefixer@^7.2.3:
+    version "7.2.5"
+    resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.5.tgz#04ccbd0c6a61131b6d13f53d371926092952d192"
+    dependencies:
+      browserslist "^2.11.1"
+      caniuse-lite "^1.0.30000791"
+      normalize-range "^0.1.2"
+      num2fraction "^1.2.2"
+      postcss "^6.0.16"
+      postcss-value-parser "^3.2.3"
+  
+  autoprefixer@^7.2.6:
+    version "7.2.6"
+    resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc"
+    dependencies:
+      browserslist "^2.11.3"
+      caniuse-lite "^1.0.30000805"
+      normalize-range "^0.1.2"
+      num2fraction "^1.2.2"
+      postcss "^6.0.17"
+      postcss-value-parser "^3.2.3"
+  
+  aws-sign2@~0.6.0:
+    version "0.6.0"
+    resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+  
+  aws-sign2@~0.7.0:
+    version "0.7.0"
+    resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+  
+  aws4@^1.2.1, aws4@^1.6.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+  
+  axios@^0.15.3:
+    version "0.15.3"
+    resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053"
+    dependencies:
+      follow-redirects "1.0.0"
+  
+  babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+    dependencies:
+      chalk "^1.1.3"
+      esutils "^2.0.2"
+      js-tokens "^3.0.2"
+  
+  babel-core@6.26.0, babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+    dependencies:
+      babel-code-frame "^6.26.0"
+      babel-generator "^6.26.0"
+      babel-helpers "^6.24.1"
+      babel-messages "^6.23.0"
+      babel-register "^6.26.0"
+      babel-runtime "^6.26.0"
+      babel-template "^6.26.0"
+      babel-traverse "^6.26.0"
+      babel-types "^6.26.0"
+      babylon "^6.18.0"
+      convert-source-map "^1.5.0"
+      debug "^2.6.8"
+      json5 "^0.5.1"
+      lodash "^4.17.4"
+      minimatch "^3.0.4"
+      path-is-absolute "^1.0.1"
+      private "^0.1.7"
+      slash "^1.0.0"
+      source-map "^0.5.6"
+  
+  babel-generator@^6.18.0, babel-generator@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
+    dependencies:
+      babel-messages "^6.23.0"
+      babel-runtime "^6.26.0"
+      babel-types "^6.26.0"
+      detect-indent "^4.0.0"
+      jsesc "^1.3.0"
+      lodash "^4.17.4"
+      source-map "^0.5.6"
+      trim-right "^1.0.1"
+  
+  babel-helper-bindify-decorators@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+    dependencies:
+      babel-helper-explode-assignable-expression "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-helper-builder-react-jsx@^6.24.1:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
+    dependencies:
+      babel-runtime "^6.26.0"
+      babel-types "^6.26.0"
+      esutils "^2.0.2"
+  
+  babel-helper-call-delegate@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+    dependencies:
+      babel-helper-hoist-variables "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-define-map@^6.24.1:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+    dependencies:
+      babel-helper-function-name "^6.24.1"
+      babel-runtime "^6.26.0"
+      babel-types "^6.26.0"
+      lodash "^4.17.4"
+  
+  babel-helper-explode-assignable-expression@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-explode-class@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
+    dependencies:
+      babel-helper-bindify-decorators "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-function-name@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+    dependencies:
+      babel-helper-get-function-arity "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-get-function-arity@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-helper-hoist-variables@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-helper-optimise-call-expression@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-helper-regex@^6.24.1:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+    dependencies:
+      babel-runtime "^6.26.0"
+      babel-types "^6.26.0"
+      lodash "^4.17.4"
+  
+  babel-helper-remap-async-to-generator@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+    dependencies:
+      babel-helper-function-name "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helper-replace-supers@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+    dependencies:
+      babel-helper-optimise-call-expression "^6.24.1"
+      babel-messages "^6.23.0"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-helpers@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-jest@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.1.tgz#ff53ebca45957347f27ff4666a31499fbb4c4ddd"
+    dependencies:
+      babel-plugin-istanbul "^4.1.5"
+      babel-preset-jest "^22.4.1"
+  
+  babel-loader@7.1.2:
+    version "7.1.2"
+    resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
+    dependencies:
+      find-cache-dir "^1.0.0"
+      loader-utils "^1.0.2"
+      mkdirp "^0.5.1"
+  
+  babel-loader@^7.0.0:
+    version "7.1.3"
+    resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.3.tgz#ff5b440da716e9153abb946251a9ab7670037b16"
+    dependencies:
+      find-cache-dir "^1.0.0"
+      loader-utils "^1.0.2"
+      mkdirp "^0.5.1"
+  
+  babel-messages@^6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-check-es2015-constants@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-dynamic-import-node@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a"
+    dependencies:
+      babel-plugin-syntax-dynamic-import "^6.18.0"
+      babel-template "^6.26.0"
+      babel-types "^6.26.0"
+  
+  babel-plugin-istanbul@^4.1.4, babel-plugin-istanbul@^4.1.5:
+    version "4.1.5"
+    resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
+    dependencies:
+      find-up "^2.1.0"
+      istanbul-lib-instrument "^1.7.5"
+      test-exclude "^4.1.1"
+  
+  babel-plugin-jest-hoist@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz#d712fe5da8b6965f3191dacddbefdbdf4fb66d63"
+  
+  babel-plugin-macros@^2.1.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.2.0.tgz#31fc16748d6480697a517f692dc4421cb7bff0cc"
+    dependencies:
+      cosmiconfig "^4.0.0"
+  
+  babel-plugin-react-docgen@^1.8.2:
+    version "1.8.3"
+    resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.8.3.tgz#bdb0fe41f72eaa9444fe7872866d2f372afd72bb"
+    dependencies:
+      babel-types "^6.24.1"
+      lodash "^4.17.0"
+      react-docgen "^2.20.0"
+  
+  babel-plugin-syntax-async-functions@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+  
+  babel-plugin-syntax-async-generators@^6.5.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
+  
+  babel-plugin-syntax-class-constructor-call@^6.18.0:
+    version "6.18.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
+  
+  babel-plugin-syntax-class-properties@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
+  
+  babel-plugin-syntax-decorators@^6.13.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
+  
+  babel-plugin-syntax-do-expressions@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
+  
+  babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0:
+    version "6.18.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
+  
+  babel-plugin-syntax-exponentiation-operator@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+  
+  babel-plugin-syntax-export-extensions@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
+  
+  babel-plugin-syntax-flow@^6.18.0:
+    version "6.18.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+  
+  babel-plugin-syntax-function-bind@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
+  
+  babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
+    version "6.18.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+  
+  babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0:
+    version "6.13.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+  
+  babel-plugin-syntax-trailing-function-commas@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+  
+  babel-plugin-transform-async-generator-functions@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
+    dependencies:
+      babel-helper-remap-async-to-generator "^6.24.1"
+      babel-plugin-syntax-async-generators "^6.5.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+    dependencies:
+      babel-helper-remap-async-to-generator "^6.24.1"
+      babel-plugin-syntax-async-functions "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-class-constructor-call@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
+    dependencies:
+      babel-plugin-syntax-class-constructor-call "^6.18.0"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-properties@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
+    dependencies:
+      babel-helper-function-name "^6.24.1"
+      babel-plugin-syntax-class-properties "^6.8.0"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-decorators@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
+    dependencies:
+      babel-helper-explode-class "^6.24.1"
+      babel-plugin-syntax-decorators "^6.13.0"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-do-expressions@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
+    dependencies:
+      babel-plugin-syntax-do-expressions "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-block-scoping@^6.23.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+    dependencies:
+      babel-runtime "^6.26.0"
+      babel-template "^6.26.0"
+      babel-traverse "^6.26.0"
+      babel-types "^6.26.0"
+      lodash "^4.17.4"
+  
+  babel-plugin-transform-es2015-classes@^6.23.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+    dependencies:
+      babel-helper-define-map "^6.24.1"
+      babel-helper-function-name "^6.24.1"
+      babel-helper-optimise-call-expression "^6.24.1"
+      babel-helper-replace-supers "^6.24.1"
+      babel-messages "^6.23.0"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-computed-properties@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-es2015-destructuring@6.23.0, babel-plugin-transform-es2015-destructuring@^6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-for-of@^6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-function-name@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+    dependencies:
+      babel-helper-function-name "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-literals@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+    dependencies:
+      babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+    dependencies:
+      babel-plugin-transform-strict-mode "^6.24.1"
+      babel-runtime "^6.26.0"
+      babel-template "^6.26.0"
+      babel-types "^6.26.0"
+  
+  babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+    dependencies:
+      babel-helper-hoist-variables "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-es2015-modules-umd@^6.23.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+    dependencies:
+      babel-plugin-transform-es2015-modules-amd "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+  
+  babel-plugin-transform-es2015-object-super@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+    dependencies:
+      babel-helper-replace-supers "^6.24.1"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-parameters@^6.23.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+    dependencies:
+      babel-helper-call-delegate "^6.24.1"
+      babel-helper-get-function-arity "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-template "^6.24.1"
+      babel-traverse "^6.24.1"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-spread@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+    dependencies:
+      babel-helper-regex "^6.24.1"
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-plugin-transform-es2015-template-literals@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+    dependencies:
+      babel-helper-regex "^6.24.1"
+      babel-runtime "^6.22.0"
+      regexpu-core "^2.0.0"
+  
+  babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+    dependencies:
+      babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+      babel-plugin-syntax-exponentiation-operator "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-export-extensions@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
+    dependencies:
+      babel-plugin-syntax-export-extensions "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-flow-strip-types@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
+    dependencies:
+      babel-plugin-syntax-flow "^6.18.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-function-bind@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
+    dependencies:
+      babel-plugin-syntax-function-bind "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-object-rest-spread@6.26.0, babel-plugin-transform-object-rest-spread@^6.22.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
+    dependencies:
+      babel-plugin-syntax-object-rest-spread "^6.8.0"
+      babel-runtime "^6.26.0"
+  
+  babel-plugin-transform-react-constant-elements@6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-react-display-name@^6.23.0:
+    version "6.25.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
+    dependencies:
+      babel-plugin-syntax-jsx "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0:
+    version "6.22.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
+    dependencies:
+      babel-plugin-syntax-jsx "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
+    dependencies:
+      babel-helper-builder-react-jsx "^6.24.1"
+      babel-plugin-syntax-jsx "^6.8.0"
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
+    dependencies:
+      regenerator-transform "^0.10.0"
+  
+  babel-plugin-transform-runtime@6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
+    dependencies:
+      babel-runtime "^6.22.0"
+  
+  babel-plugin-transform-strict-mode@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+    dependencies:
+      babel-runtime "^6.22.0"
+      babel-types "^6.24.1"
+  
+  babel-preset-env@1.6.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4"
+    dependencies:
+      babel-plugin-check-es2015-constants "^6.22.0"
+      babel-plugin-syntax-trailing-function-commas "^6.22.0"
+      babel-plugin-transform-async-to-generator "^6.22.0"
+      babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+      babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+      babel-plugin-transform-es2015-block-scoping "^6.23.0"
+      babel-plugin-transform-es2015-classes "^6.23.0"
+      babel-plugin-transform-es2015-computed-properties "^6.22.0"
+      babel-plugin-transform-es2015-destructuring "^6.23.0"
+      babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+      babel-plugin-transform-es2015-for-of "^6.23.0"
+      babel-plugin-transform-es2015-function-name "^6.22.0"
+      babel-plugin-transform-es2015-literals "^6.22.0"
+      babel-plugin-transform-es2015-modules-amd "^6.22.0"
+      babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+      babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+      babel-plugin-transform-es2015-modules-umd "^6.23.0"
+      babel-plugin-transform-es2015-object-super "^6.22.0"
+      babel-plugin-transform-es2015-parameters "^6.23.0"
+      babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+      babel-plugin-transform-es2015-spread "^6.22.0"
+      babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+      babel-plugin-transform-es2015-template-literals "^6.22.0"
+      babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+      babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+      babel-plugin-transform-exponentiation-operator "^6.22.0"
+      babel-plugin-transform-regenerator "^6.22.0"
+      browserslist "^2.1.2"
+      invariant "^2.2.2"
+      semver "^5.3.0"
+  
+  babel-preset-env@1.6.1, babel-preset-env@^1.6.0:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+    dependencies:
+      babel-plugin-check-es2015-constants "^6.22.0"
+      babel-plugin-syntax-trailing-function-commas "^6.22.0"
+      babel-plugin-transform-async-to-generator "^6.22.0"
+      babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+      babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+      babel-plugin-transform-es2015-block-scoping "^6.23.0"
+      babel-plugin-transform-es2015-classes "^6.23.0"
+      babel-plugin-transform-es2015-computed-properties "^6.22.0"
+      babel-plugin-transform-es2015-destructuring "^6.23.0"
+      babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+      babel-plugin-transform-es2015-for-of "^6.23.0"
+      babel-plugin-transform-es2015-function-name "^6.22.0"
+      babel-plugin-transform-es2015-literals "^6.22.0"
+      babel-plugin-transform-es2015-modules-amd "^6.22.0"
+      babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+      babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+      babel-plugin-transform-es2015-modules-umd "^6.23.0"
+      babel-plugin-transform-es2015-object-super "^6.22.0"
+      babel-plugin-transform-es2015-parameters "^6.23.0"
+      babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+      babel-plugin-transform-es2015-spread "^6.22.0"
+      babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+      babel-plugin-transform-es2015-template-literals "^6.22.0"
+      babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+      babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+      babel-plugin-transform-exponentiation-operator "^6.22.0"
+      babel-plugin-transform-regenerator "^6.22.0"
+      browserslist "^2.1.2"
+      invariant "^2.2.2"
+      semver "^5.3.0"
+  
+  babel-preset-flow@^6.23.0:
+    version "6.23.0"
+    resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
+    dependencies:
+      babel-plugin-transform-flow-strip-types "^6.22.0"
+  
+  babel-preset-jest@^22.4.0, babel-preset-jest@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a"
+    dependencies:
+      babel-plugin-jest-hoist "^22.4.1"
+      babel-plugin-syntax-object-rest-spread "^6.13.0"
+  
+  babel-preset-react-app@^3.1.1:
+    version "3.1.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz#d3f06a79742f0e89d7afcb72e282d9809c850920"
+    dependencies:
+      babel-plugin-dynamic-import-node "1.1.0"
+      babel-plugin-syntax-dynamic-import "6.18.0"
+      babel-plugin-transform-class-properties "6.24.1"
+      babel-plugin-transform-es2015-destructuring "6.23.0"
+      babel-plugin-transform-object-rest-spread "6.26.0"
+      babel-plugin-transform-react-constant-elements "6.23.0"
+      babel-plugin-transform-react-jsx "6.24.1"
+      babel-plugin-transform-react-jsx-self "6.22.0"
+      babel-plugin-transform-react-jsx-source "6.22.0"
+      babel-plugin-transform-regenerator "6.26.0"
+      babel-plugin-transform-runtime "6.23.0"
+      babel-preset-env "1.6.1"
+      babel-preset-react "6.24.1"
+  
+  babel-preset-react@6.24.1, babel-preset-react@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
+    dependencies:
+      babel-plugin-syntax-jsx "^6.3.13"
+      babel-plugin-transform-react-display-name "^6.23.0"
+      babel-plugin-transform-react-jsx "^6.24.1"
+      babel-plugin-transform-react-jsx-self "^6.22.0"
+      babel-plugin-transform-react-jsx-source "^6.22.0"
+      babel-preset-flow "^6.23.0"
+  
+  babel-preset-stage-0@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
+    dependencies:
+      babel-plugin-transform-do-expressions "^6.22.0"
+      babel-plugin-transform-function-bind "^6.22.0"
+      babel-preset-stage-1 "^6.24.1"
+  
+  babel-preset-stage-1@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
+    dependencies:
+      babel-plugin-transform-class-constructor-call "^6.24.1"
+      babel-plugin-transform-export-extensions "^6.22.0"
+      babel-preset-stage-2 "^6.24.1"
+  
+  babel-preset-stage-2@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
+    dependencies:
+      babel-plugin-syntax-dynamic-import "^6.18.0"
+      babel-plugin-transform-class-properties "^6.24.1"
+      babel-plugin-transform-decorators "^6.24.1"
+      babel-preset-stage-3 "^6.24.1"
+  
+  babel-preset-stage-3@^6.24.1:
+    version "6.24.1"
+    resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
+    dependencies:
+      babel-plugin-syntax-trailing-function-commas "^6.22.0"
+      babel-plugin-transform-async-generator-functions "^6.24.1"
+      babel-plugin-transform-async-to-generator "^6.24.1"
+      babel-plugin-transform-exponentiation-operator "^6.24.1"
+      babel-plugin-transform-object-rest-spread "^6.22.0"
+  
+  babel-register@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
+    dependencies:
+      babel-core "^6.26.0"
+      babel-runtime "^6.26.0"
+      core-js "^2.5.0"
+      home-or-tmp "^2.0.0"
+      lodash "^4.17.4"
+      mkdirp "^0.5.1"
+      source-map-support "^0.4.15"
+  
+  babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.5.0, babel-runtime@^6.9.2:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+    dependencies:
+      core-js "^2.4.0"
+      regenerator-runtime "^0.11.0"
+  
+  babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+    dependencies:
+      babel-runtime "^6.26.0"
+      babel-traverse "^6.26.0"
+      babel-types "^6.26.0"
+      babylon "^6.18.0"
+      lodash "^4.17.4"
+  
+  babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+    dependencies:
+      babel-code-frame "^6.26.0"
+      babel-messages "^6.23.0"
+      babel-runtime "^6.26.0"
+      babel-types "^6.26.0"
+      babylon "^6.18.0"
+      debug "^2.6.8"
+      globals "^9.18.0"
+      invariant "^2.2.2"
+      lodash "^4.17.4"
+  
+  babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
+    version "6.26.0"
+    resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+    dependencies:
+      babel-runtime "^6.26.0"
+      esutils "^2.0.2"
+      lodash "^4.17.4"
+      to-fast-properties "^1.0.3"
+  
+  babylon@^6.18.0:
+    version "6.18.0"
+    resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+  
+  babylon@~5.8.3:
+    version "5.8.38"
+    resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd"
+  
+  backo2@1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+  
+  balanced-match@^0.4.2:
+    version "0.4.2"
+    resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+  
+  balanced-match@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+  
+  base64-arraybuffer@0.1.5:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
+  
+  base64-js@^1.0.2:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+  
+  base64id@1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
+  
+  base@^0.11.1:
+    version "0.11.2"
+    resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+    dependencies:
+      cache-base "^1.0.1"
+      class-utils "^0.3.5"
+      component-emitter "^1.2.1"
+      define-property "^1.0.0"
+      isobject "^3.0.1"
+      mixin-deep "^1.2.0"
+      pascalcase "^0.1.1"
+  
+  batch@0.6.1:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+  
+  bcrypt-pbkdf@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+    dependencies:
+      tweetnacl "^0.14.3"
+  
+  better-assert@~1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
+    dependencies:
+      callsite "1.0.0"
+  
+  big.js@^3.1.3:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+  
+  binary-extensions@^1.0.0:
+    version "1.11.0"
+    resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+  
+  bindings@~1.2.1:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
+  
+  bl@~1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
+    dependencies:
+      readable-stream "~2.0.5"
+  
+  blob@0.0.4:
+    version "0.0.4"
+    resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
+  
+  block-stream@*:
+    version "0.0.9"
+    resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+    dependencies:
+      inherits "~2.0.0"
+  
+  blocking-proxy@0.0.5:
+    version "0.0.5"
+    resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b"
+    dependencies:
+      minimist "^1.2.0"
+  
+  bluebird@3.5.0:
+    version "3.5.0"
+    resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
+  
+  bluebird@^3.3.0, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1:
+    version "3.5.1"
+    resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+  
+  bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+    version "4.11.8"
+    resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+  
+  body-parser@1.18.2, body-parser@^1.16.1:
+    version "1.18.2"
+    resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
+    dependencies:
+      bytes "3.0.0"
+      content-type "~1.0.4"
+      debug "2.6.9"
+      depd "~1.1.1"
+      http-errors "~1.6.2"
+      iconv-lite "0.4.19"
+      on-finished "~2.3.0"
+      qs "6.5.1"
+      raw-body "2.3.2"
+      type-is "~1.6.15"
+  
+  bonjour@^3.5.0:
+    version "3.5.0"
+    resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+    dependencies:
+      array-flatten "^2.1.0"
+      deep-equal "^1.0.1"
+      dns-equal "^1.0.0"
+      dns-txt "^2.0.2"
+      multicast-dns "^6.0.1"
+      multicast-dns-service-types "^1.1.0"
+  
+  boolbase@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+  
+  boom@2.x.x:
+    version "2.10.1"
+    resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+    dependencies:
+      hoek "2.x.x"
+  
+  boom@4.x.x:
+    version "4.3.1"
+    resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
+    dependencies:
+      hoek "4.x.x"
+  
+  boom@5.x.x:
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
+    dependencies:
+      hoek "4.x.x"
+  
+  bowser@^1.0.0, bowser@^1.7.3:
+    version "1.9.2"
+    resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.2.tgz#d66fc868ca5f4ba895bee1363c343fe7b37d3394"
+  
+  brace-expansion@^1.0.0, brace-expansion@^1.1.7:
+    version "1.1.11"
+    resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+    dependencies:
+      balanced-match "^1.0.0"
+      concat-map "0.0.1"
+  
+  braces@^0.1.2:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
+    dependencies:
+      expand-range "^0.1.0"
+  
+  braces@^1.8.2:
+    version "1.8.5"
+    resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+    dependencies:
+      expand-range "^1.8.1"
+      preserve "^0.2.0"
+      repeat-element "^1.1.2"
+  
+  braces@^2.3.0, braces@^2.3.1:
+    version "2.3.1"
+    resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb"
+    dependencies:
+      arr-flatten "^1.1.0"
+      array-unique "^0.3.2"
+      define-property "^1.0.0"
+      extend-shallow "^2.0.1"
+      fill-range "^4.0.0"
+      isobject "^3.0.1"
+      kind-of "^6.0.2"
+      repeat-element "^1.1.2"
+      snapdragon "^0.8.1"
+      snapdragon-node "^2.0.1"
+      split-string "^3.0.2"
+      to-regex "^3.0.1"
+  
+  brcast@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd"
+  
+  brorand@^1.0.1:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+  
+  browser-pack@^6.0.1:
+    version "6.0.3"
+    resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.3.tgz#91ca96518583ef580ab063a309de62e407767a39"
+    dependencies:
+      JSONStream "^1.0.3"
+      combine-source-map "~0.8.0"
+      defined "^1.0.0"
+      safe-buffer "^5.1.1"
+      through2 "^2.0.0"
+      umd "^3.0.0"
+  
+  browser-process-hrtime@^0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
+  
+  browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0:
+    version "1.11.2"
+    resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+    dependencies:
+      resolve "1.1.7"
+  
+  browser-stdout@1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+  
+  browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+    dependencies:
+      buffer-xor "^1.0.3"
+      cipher-base "^1.0.0"
+      create-hash "^1.1.0"
+      evp_bytestokey "^1.0.3"
+      inherits "^2.0.1"
+      safe-buffer "^5.0.1"
+  
+  browserify-cipher@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+    dependencies:
+      browserify-aes "^1.0.4"
+      browserify-des "^1.0.0"
+      evp_bytestokey "^1.0.0"
+  
+  browserify-des@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+    dependencies:
+      cipher-base "^1.0.1"
+      des.js "^1.0.0"
+      inherits "^2.0.1"
+  
+  browserify-rsa@^4.0.0:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+    dependencies:
+      bn.js "^4.1.0"
+      randombytes "^2.0.1"
+  
+  browserify-sign@^4.0.0:
+    version "4.0.4"
+    resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+    dependencies:
+      bn.js "^4.1.1"
+      browserify-rsa "^4.0.0"
+      create-hash "^1.1.0"
+      create-hmac "^1.1.2"
+      elliptic "^6.0.0"
+      inherits "^2.0.1"
+      parse-asn1 "^5.0.0"
+  
+  browserify-zlib@^0.2.0, browserify-zlib@~0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+    dependencies:
+      pako "~1.0.5"
+  
+  browserify@^14.5.0:
+    version "14.5.0"
+    resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5"
+    dependencies:
+      JSONStream "^1.0.3"
+      assert "^1.4.0"
+      browser-pack "^6.0.1"
+      browser-resolve "^1.11.0"
+      browserify-zlib "~0.2.0"
+      buffer "^5.0.2"
+      cached-path-relative "^1.0.0"
+      concat-stream "~1.5.1"
+      console-browserify "^1.1.0"
+      constants-browserify "~1.0.0"
+      crypto-browserify "^3.0.0"
+      defined "^1.0.0"
+      deps-sort "^2.0.0"
+      domain-browser "~1.1.0"
+      duplexer2 "~0.1.2"
+      events "~1.1.0"
+      glob "^7.1.0"
+      has "^1.0.0"
+      htmlescape "^1.1.0"
+      https-browserify "^1.0.0"
+      inherits "~2.0.1"
+      insert-module-globals "^7.0.0"
+      labeled-stream-splicer "^2.0.0"
+      module-deps "^4.0.8"
+      os-browserify "~0.3.0"
+      parents "^1.0.1"
+      path-browserify "~0.0.0"
+      process "~0.11.0"
+      punycode "^1.3.2"
+      querystring-es3 "~0.2.0"
+      read-only-stream "^2.0.0"
+      readable-stream "^2.0.2"
+      resolve "^1.1.4"
+      shasum "^1.0.0"
+      shell-quote "^1.6.1"
+      stream-browserify "^2.0.0"
+      stream-http "^2.0.0"
+      string_decoder "~1.0.0"
+      subarg "^1.0.0"
+      syntax-error "^1.1.1"
+      through2 "^2.0.0"
+      timers-browserify "^1.0.1"
+      tty-browserify "~0.0.0"
+      url "~0.11.0"
+      util "~0.10.1"
+      vm-browserify "~0.0.1"
+      xtend "^4.0.0"
+  
+  browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+    version "1.7.7"
+    resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+    dependencies:
+      caniuse-db "^1.0.30000639"
+      electron-to-chromium "^1.2.7"
+  
+  browserslist@^2.1.2, browserslist@^2.11.1, browserslist@^2.11.3:
+    version "2.11.3"
+    resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+    dependencies:
+      caniuse-lite "^1.0.30000792"
+      electron-to-chromium "^1.3.30"
+  
+  bser@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
+    dependencies:
+      node-int64 "^0.4.0"
+  
+  buffer-crc32@~0.2.3:
+    version "0.2.13"
+    resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+  
+  buffer-indexof@^1.0.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+  
+  buffer-xor@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+  
+  buffer@^4.3.0:
+    version "4.9.1"
+    resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+    dependencies:
+      base64-js "^1.0.2"
+      ieee754 "^1.1.4"
+      isarray "^1.0.0"
+  
+  buffer@^5.0.2:
+    version "5.0.8"
+    resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24"
+    dependencies:
+      base64-js "^1.0.2"
+      ieee754 "^1.1.4"
+  
+  buildmail@4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72"
+    dependencies:
+      addressparser "1.0.1"
+      libbase64 "0.1.0"
+      libmime "3.0.0"
+      libqp "1.1.0"
+      nodemailer-fetch "1.6.0"
+      nodemailer-shared "1.1.0"
+      punycode "1.4.1"
+  
+  builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+  
+  builtin-status-codes@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+  
+  bytes@3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+  
+  cacache@^10.0.1:
+    version "10.0.2"
+    resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8"
+    dependencies:
+      bluebird "^3.5.0"
+      chownr "^1.0.1"
+      glob "^7.1.2"
+      graceful-fs "^4.1.11"
+      lru-cache "^4.1.1"
+      mississippi "^1.3.0"
+      mkdirp "^0.5.1"
+      move-concurrently "^1.0.1"
+      promise-inflight "^1.0.1"
+      rimraf "^2.6.1"
+      ssri "^5.0.0"
+      unique-filename "^1.1.0"
+      y18n "^3.2.1"
+  
+  cacache@^10.0.4:
+    version "10.0.4"
+    resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+    dependencies:
+      bluebird "^3.5.1"
+      chownr "^1.0.1"
+      glob "^7.1.2"
+      graceful-fs "^4.1.11"
+      lru-cache "^4.1.1"
+      mississippi "^2.0.0"
+      mkdirp "^0.5.1"
+      move-concurrently "^1.0.1"
+      promise-inflight "^1.0.1"
+      rimraf "^2.6.2"
+      ssri "^5.2.4"
+      unique-filename "^1.1.0"
+      y18n "^4.0.0"
+  
+  cache-base@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+    dependencies:
+      collection-visit "^1.0.0"
+      component-emitter "^1.2.1"
+      get-value "^2.0.6"
+      has-value "^1.0.0"
+      isobject "^3.0.1"
+      set-value "^2.0.0"
+      to-object-path "^0.3.0"
+      union-value "^1.0.0"
+      unset-value "^1.0.0"
+  
+  cache-loader@^1.2.0:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5"
+    dependencies:
+      loader-utils "^1.1.0"
+      mkdirp "^0.5.1"
+      neo-async "^2.5.0"
+      schema-utils "^0.4.2"
+  
+  cached-path-relative@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
+  
+  callsite@1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+  
+  callsites@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+  
+  camel-case@3.0.x:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+    dependencies:
+      no-case "^2.2.0"
+      upper-case "^1.1.1"
+  
+  camelcase-keys@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+    dependencies:
+      camelcase "^2.0.0"
+      map-obj "^1.0.0"
+  
+  camelcase@^1.0.2:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+  
+  camelcase@^2.0.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+  
+  camelcase@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+  
+  camelcase@^4.1.0:
+    version "4.1.0"
+    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+  
+  caniuse-api@^1.5.2:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+    dependencies:
+      browserslist "^1.3.6"
+      caniuse-db "^1.0.30000529"
+      lodash.memoize "^4.1.2"
+      lodash.uniq "^4.5.0"
+  
+  caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+    version "1.0.30000792"
+    resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000792.tgz#a7dac6dc9f5181b675fd69e5cb06fefb523157f8"
+  
+  caniuse-lite@^1.0.30000791, caniuse-lite@^1.0.30000792:
+    version "1.0.30000792"
+    resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332"
+  
+  caniuse-lite@^1.0.30000805:
+    version "1.0.30000813"
+    resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz#7b25e27fdfb8d133f3c932b01f77452140fcc6c9"
+  
+  case-sensitive-paths-webpack-plugin@^2.0.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909"
+  
+  caseless@~0.11.0:
+    version "0.11.0"
+    resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+  
+  caseless@~0.12.0:
+    version "0.12.0"
+    resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+  
+  center-align@^0.1.1:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+    dependencies:
+      align-text "^0.1.3"
+      lazy-cache "^1.0.3"
+  
+  chain-function@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
+  
+  chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+    dependencies:
+      ansi-styles "^2.2.1"
+      escape-string-regexp "^1.0.2"
+      has-ansi "^2.0.0"
+      strip-ansi "^3.0.0"
+      supports-color "^2.0.0"
+  
+  chalk@2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
+    dependencies:
+      ansi-styles "^3.1.0"
+      escape-string-regexp "^1.0.5"
+      supports-color "^4.0.0"
+  
+  chalk@2.3.0, chalk@^2.0.0, chalk@^2.3.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+    dependencies:
+      ansi-styles "^3.1.0"
+      escape-string-regexp "^1.0.5"
+      supports-color "^4.0.0"
+  
+  chalk@^2.0.1, chalk@^2.3.1:
+    version "2.3.2"
+    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
+    dependencies:
+      ansi-styles "^3.2.1"
+      escape-string-regexp "^1.0.5"
+      supports-color "^5.3.0"
+  
+  chalk@~2.2.0:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb"
+    dependencies:
+      ansi-styles "^3.1.0"
+      escape-string-regexp "^1.0.5"
+      supports-color "^4.0.0"
+  
+  chardet@^0.4.0:
+    version "0.4.2"
+    resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+  
+  check-more-types@2.24.0:
+    version "2.24.0"
+    resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
+  
+  chokidar@^1.4.1, chokidar@^1.4.2, chokidar@^1.6.0, chokidar@^1.7.0:
+    version "1.7.0"
+    resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+    dependencies:
+      anymatch "^1.3.0"
+      async-each "^1.0.0"
+      glob-parent "^2.0.0"
+      inherits "^2.0.1"
+      is-binary-path "^1.0.0"
+      is-glob "^2.0.0"
+      path-is-absolute "^1.0.0"
+      readdirp "^2.0.0"
+    optionalDependencies:
+      fsevents "^1.0.0"
+  
+  chokidar@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7"
+    dependencies:
+      anymatch "^2.0.0"
+      async-each "^1.0.0"
+      braces "^2.3.0"
+      glob-parent "^3.1.0"
+      inherits "^2.0.1"
+      is-binary-path "^1.0.0"
+      is-glob "^4.0.0"
+      normalize-path "^2.1.1"
+      path-is-absolute "^1.0.0"
+      readdirp "^2.0.0"
+      upath "^1.0.0"
+    optionalDependencies:
+      fsevents "^1.0.0"
+  
+  chownr@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+  
+  ci-info@^1.0.0:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
+  
+  cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+    dependencies:
+      inherits "^2.0.1"
+      safe-buffer "^5.0.1"
+  
+  circular-dependency-plugin@^4.2.1:
+    version "4.4.0"
+    resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-4.4.0.tgz#f8a1a746a3f6c8e57f4dae9b54d991cd2a582f5d"
+  
+  circular-json@^0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd"
+  
+  clap@^1.0.9:
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+    dependencies:
+      chalk "^1.1.3"
+  
+  class-utils@^0.3.5:
+    version "0.3.6"
+    resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+    dependencies:
+      arr-union "^3.1.0"
+      define-property "^0.2.5"
+      isobject "^3.0.0"
+      static-extend "^0.1.1"
+  
+  classnames@^2.2.5:
+    version "2.2.5"
+    resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+  
+  clean-css@4.1.x:
+    version "4.1.9"
+    resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
+    dependencies:
+      source-map "0.5.x"
+  
+  clean-css@^4.1.11:
+    version "4.1.11"
+    resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a"
+    dependencies:
+      source-map "0.5.x"
+  
+  cli-cursor@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+    dependencies:
+      restore-cursor "^1.0.1"
+  
+  cli-cursor@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+    dependencies:
+      restore-cursor "^2.0.0"
+  
+  cli-spinners@^0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
+  
+  cli-truncate@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+    dependencies:
+      slice-ansi "0.0.4"
+      string-width "^1.0.1"
+  
+  cli-width@^2.0.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+  
+  cliui@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+    dependencies:
+      center-align "^0.1.1"
+      right-align "^0.1.1"
+      wordwrap "0.0.2"
+  
+  cliui@^3.2.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+    dependencies:
+      string-width "^1.0.1"
+      strip-ansi "^3.0.1"
+      wrap-ansi "^2.0.0"
+  
+  cliui@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc"
+    dependencies:
+      string-width "^2.1.1"
+      strip-ansi "^4.0.0"
+      wrap-ansi "^2.0.0"
+  
+  clone-deep@^2.0.1:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
+    dependencies:
+      for-own "^1.0.0"
+      is-plain-object "^2.0.4"
+      kind-of "^6.0.0"
+      shallow-clone "^1.0.0"
+  
+  clone@^1.0.2:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+  
+  clone@^2.1.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
+  
+  co@^4.6.0:
+    version "4.6.0"
+    resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+  
+  co@~3.0.6:
+    version "3.0.6"
+    resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda"
+  
+  coa@~1.0.1:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+    dependencies:
+      q "^1.1.2"
+  
+  code-point-at@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+  
+  codelyzer@^4.0.1:
+    version "4.0.2"
+    resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.0.2.tgz#d5e2390b97d95e73a7b1e6f0cf03e16cbf35b06f"
+    dependencies:
+      app-root-path "^2.0.1"
+      css-selector-tokenizer "^0.7.0"
+      cssauron "^1.4.0"
+      semver-dsl "^1.0.1"
+      source-map "^0.5.6"
+      sprintf-js "^1.0.3"
+  
+  collection-visit@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+    dependencies:
+      map-visit "^1.0.0"
+      object-visit "^1.0.0"
+  
+  color-convert@^1.3.0, color-convert@^1.9.0:
+    version "1.9.1"
+    resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+    dependencies:
+      color-name "^1.1.1"
+  
+  color-name@^1.0.0, color-name@^1.1.1:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+  
+  color-string@^0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+    dependencies:
+      color-name "^1.0.0"
+  
+  color@^0.11.0:
+    version "0.11.4"
+    resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+    dependencies:
+      clone "^1.0.2"
+      color-convert "^1.3.0"
+      color-string "^0.3.0"
+  
+  colormin@^1.0.5:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+    dependencies:
+      color "^0.11.0"
+      css-color-names "0.0.4"
+      has "^1.0.1"
+  
+  colors@1.1.2, colors@^1.1.0, colors@~1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+  
+  combine-lists@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
+    dependencies:
+      lodash "^4.5.0"
+  
+  combine-source-map@~0.7.1:
+    version "0.7.2"
+    resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
+    dependencies:
+      convert-source-map "~1.1.0"
+      inline-source-map "~0.6.0"
+      lodash.memoize "~3.0.3"
+      source-map "~0.5.3"
+  
+  combine-source-map@~0.8.0:
+    version "0.8.0"
+    resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
+    dependencies:
+      convert-source-map "~1.1.0"
+      inline-source-map "~0.6.0"
+      lodash.memoize "~3.0.3"
+      source-map "~0.5.3"
+  
+  combined-stream@^1.0.5, combined-stream@~1.0.5:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+    dependencies:
+      delayed-stream "~1.0.0"
+  
+  commander@2.11.0:
+    version "2.11.0"
+    resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
+  
+  commander@2.12.x:
+    version "2.12.2"
+    resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+  
+  commander@2.14.x, commander@^2.14.1:
+    version "2.14.1"
+    resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
+  
+  commander@2.9.0:
+    version "2.9.0"
+    resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+    dependencies:
+      graceful-readlink ">= 1.0.0"
+  
+  commander@^2.12.1, commander@^2.9.0, commander@~2.13.0:
+    version "2.13.0"
+    resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+  
+  common-tags@1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0"
+    dependencies:
+      babel-runtime "^6.18.0"
+  
+  common-tags@^1.3.1, common-tags@^1.7.2:
+    version "1.7.2"
+    resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771"
+    dependencies:
+      babel-runtime "^6.26.0"
+  
+  commondir@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+  
+  component-bind@1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
+  
+  component-emitter@1.2.1, component-emitter@^1.2.1:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+  
+  component-inherit@0.0.3:
+    version "0.0.3"
+    resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+  
+  compressible@~2.0.11:
+    version "2.0.12"
+    resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
+    dependencies:
+      mime-db ">= 1.30.0 < 2"
+  
+  compression@^1.5.2:
+    version "1.7.1"
+    resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
+    dependencies:
+      accepts "~1.3.4"
+      bytes "3.0.0"
+      compressible "~2.0.11"
+      debug "2.6.9"
+      on-headers "~1.0.1"
+      safe-buffer "5.1.1"
+      vary "~1.1.2"
+  
+  concat-map@0.0.1:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+  
+  concat-stream@1.6.0, concat-stream@^1.5.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+    dependencies:
+      inherits "^2.0.3"
+      readable-stream "^2.2.2"
+      typedarray "^0.0.6"
+  
+  concat-stream@~1.5.0, concat-stream@~1.5.1:
+    version "1.5.2"
+    resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
+    dependencies:
+      inherits "~2.0.1"
+      readable-stream "~2.0.0"
+      typedarray "~0.0.5"
+  
+  configstore@^3.1.0:
+    version "3.1.1"
+    resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
+    dependencies:
+      dot-prop "^4.1.0"
+      graceful-fs "^4.1.2"
+      make-dir "^1.0.0"
+      unique-string "^1.0.0"
+      write-file-atomic "^2.0.0"
+      xdg-basedir "^3.0.0"
+  
+  connect-history-api-fallback@^1.3.0:
+    version "1.5.0"
+    resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
+  
+  connect@^3.6.0:
+    version "3.6.5"
+    resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da"
+    dependencies:
+      debug "2.6.9"
+      finalhandler "1.0.6"
+      parseurl "~1.3.2"
+      utils-merge "1.0.1"
+  
+  console-browserify@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+    dependencies:
+      date-now "^0.1.4"
+  
+  console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+  
+  constants-browserify@^1.0.0, constants-browserify@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+  
+  content-disposition@0.5.2:
+    version "0.5.2"
+    resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+  
+  content-type-parser@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
+  
+  content-type@~1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+  
+  convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+    version "1.5.1"
+    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
+  
+  convert-source-map@~1.1.0:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
+  
+  cookie-signature@1.0.6:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+  
+  cookie@0.3.1:
+    version "0.3.1"
+    resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+  
+  copy-concurrently@^1.0.0:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+    dependencies:
+      aproba "^1.1.1"
+      fs-write-stream-atomic "^1.0.8"
+      iferr "^0.1.5"
+      mkdirp "^0.5.1"
+      rimraf "^2.5.4"
+      run-queue "^1.0.0"
+  
+  copy-descriptor@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+  
+  copy-webpack-plugin@~4.4.1:
+    version "4.4.3"
+    resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.4.3.tgz#65d56fb9e1936b39e129f9aa2aec097ce1fd44be"
+    dependencies:
+      cacache "^10.0.1"
+      find-cache-dir "^1.0.0"
+      globby "^7.1.1"
+      is-glob "^4.0.0"
+      loader-utils "^1.1.0"
+      minimatch "^3.0.4"
+      p-limit "^1.0.0"
+      serialize-javascript "^1.4.0"
+  
+  core-js@^1.0.0:
+    version "1.2.7"
+    resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+  
+  core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
+    version "2.5.3"
+    resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
+  
+  core-object@^3.1.0:
+    version "3.1.5"
+    resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9"
+    dependencies:
+      chalk "^2.0.0"
+  
+  core-util-is@1.0.2, core-util-is@~1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+  
+  cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
+    dependencies:
+      is-directory "^0.3.1"
+      js-yaml "^3.4.3"
+      minimist "^1.2.0"
+      object-assign "^4.1.0"
+      os-homedir "^1.0.1"
+      parse-json "^2.2.0"
+      require-from-string "^1.1.0"
+  
+  cosmiconfig@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
+    dependencies:
+      is-directory "^0.3.1"
+      js-yaml "^3.9.0"
+      parse-json "^4.0.0"
+      require-from-string "^2.0.1"
+  
+  cpx@^1.5.0:
+    version "1.5.0"
+    resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f"
+    dependencies:
+      babel-runtime "^6.9.2"
+      chokidar "^1.6.0"
+      duplexer "^0.1.1"
+      glob "^7.0.5"
+      glob2base "^0.0.12"
+      minimatch "^3.0.2"
+      mkdirp "^0.5.1"
+      resolve "^1.1.7"
+      safe-buffer "^5.0.1"
+      shell-quote "^1.6.1"
+      subarg "^1.0.0"
+  
+  create-ecdh@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+    dependencies:
+      bn.js "^4.1.0"
+      elliptic "^6.0.0"
+  
+  create-hash@^1.1.0, create-hash@^1.1.2:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+    dependencies:
+      cipher-base "^1.0.1"
+      inherits "^2.0.1"
+      ripemd160 "^2.0.0"
+      sha.js "^2.4.0"
+  
+  create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+    version "1.1.6"
+    resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+    dependencies:
+      cipher-base "^1.0.3"
+      create-hash "^1.1.0"
+      inherits "^2.0.1"
+      ripemd160 "^2.0.0"
+      safe-buffer "^5.0.1"
+      sha.js "^2.4.8"
+  
+  create-react-class@^15.5.2, create-react-class@^15.6.2:
+    version "15.6.3"
+    resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
+    dependencies:
+      fbjs "^0.8.9"
+      loose-envify "^1.3.1"
+      object-assign "^4.1.1"
+  
+  cross-env@^5.1.1:
+    version "5.1.3"
+    resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.3.tgz#f8ae18faac87692b0a8b4d2f7000d4ec3a85dfd7"
+    dependencies:
+      cross-spawn "^5.1.0"
+      is-windows "^1.0.0"
+  
+  cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
+    version "5.1.0"
+    resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+    dependencies:
+      lru-cache "^4.0.1"
+      shebang-command "^1.2.0"
+      which "^1.2.9"
+  
+  cross-spawn@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
+    dependencies:
+      lru-cache "^4.0.1"
+      which "^1.2.9"
+  
+  cryptiles@2.x.x:
+    version "2.0.5"
+    resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+    dependencies:
+      boom "2.x.x"
+  
+  cryptiles@3.x.x:
+    version "3.1.2"
+    resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
+    dependencies:
+      boom "5.x.x"
+  
+  crypto-browserify@^3.0.0, crypto-browserify@^3.11.0:
+    version "3.12.0"
+    resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+    dependencies:
+      browserify-cipher "^1.0.0"
+      browserify-sign "^4.0.0"
+      create-ecdh "^4.0.0"
+      create-hash "^1.1.0"
+      create-hmac "^1.1.0"
+      diffie-hellman "^5.0.0"
+      inherits "^2.0.1"
+      pbkdf2 "^3.0.3"
+      public-encrypt "^4.0.0"
+      randombytes "^2.0.0"
+      randomfill "^1.0.3"
+  
+  crypto-random-string@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+  
+  css-color-names@0.0.4:
+    version "0.0.4"
+    resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+  
+  css-in-js-utils@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz#5af1dd70f4b06b331f48d22a3d86e0786c0b9435"
+    dependencies:
+      hyphenate-style-name "^1.0.2"
+  
+  css-loader@^0.28.9:
+    version "0.28.10"
+    resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.10.tgz#40282e79230f7bcb4e483efa631d670b735ebf42"
+    dependencies:
+      babel-code-frame "^6.26.0"
+      css-selector-tokenizer "^0.7.0"
+      cssnano "^3.10.0"
+      icss-utils "^2.1.0"
+      loader-utils "^1.0.2"
+      lodash.camelcase "^4.3.0"
+      object-assign "^4.1.1"
+      postcss "^5.0.6"
+      postcss-modules-extract-imports "^1.2.0"
+      postcss-modules-local-by-default "^1.2.0"
+      postcss-modules-scope "^1.1.0"
+      postcss-modules-values "^1.3.0"
+      postcss-value-parser "^3.3.0"
+      source-list-map "^2.0.0"
+  
+  css-parse@1.7.x:
+    version "1.7.0"
+    resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
+  
+  css-select@^1.1.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+    dependencies:
+      boolbase "~1.0.0"
+      css-what "2.1"
+      domutils "1.5.1"
+      nth-check "~1.0.1"
+  
+  css-selector-tokenizer@^0.7.0:
+    version "0.7.0"
+    resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+    dependencies:
+      cssesc "^0.1.0"
+      fastparse "^1.1.1"
+      regexpu-core "^1.0.0"
+  
+  css-what@2.1:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+  
+  cssauron@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8"
+    dependencies:
+      through X.X.X
+  
+  cssesc@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+  
+  cssnano@^3.10.0:
+    version "3.10.0"
+    resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+    dependencies:
+      autoprefixer "^6.3.1"
+      decamelize "^1.1.2"
+      defined "^1.0.0"
+      has "^1.0.1"
+      object-assign "^4.0.1"
+      postcss "^5.0.14"
+      postcss-calc "^5.2.0"
+      postcss-colormin "^2.1.8"
+      postcss-convert-values "^2.3.4"
+      postcss-discard-comments "^2.0.4"
+      postcss-discard-duplicates "^2.0.1"
+      postcss-discard-empty "^2.0.1"
+      postcss-discard-overridden "^0.1.1"
+      postcss-discard-unused "^2.2.1"
+      postcss-filter-plugins "^2.0.0"
+      postcss-merge-idents "^2.1.5"
+      postcss-merge-longhand "^2.0.1"
+      postcss-merge-rules "^2.0.3"
+      postcss-minify-font-values "^1.0.2"
+      postcss-minify-gradients "^1.0.1"
+      postcss-minify-params "^1.0.4"
+      postcss-minify-selectors "^2.0.4"
+      postcss-normalize-charset "^1.1.0"
+      postcss-normalize-url "^3.0.7"
+      postcss-ordered-values "^2.1.0"
+      postcss-reduce-idents "^2.2.2"
+      postcss-reduce-initial "^1.0.0"
+      postcss-reduce-transforms "^1.0.3"
+      postcss-svgo "^2.1.1"
+      postcss-unique-selectors "^2.0.2"
+      postcss-value-parser "^3.2.3"
+      postcss-zindex "^2.0.1"
+  
+  csso@~2.3.1:
+    version "2.3.2"
+    resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+    dependencies:
+      clap "^1.0.9"
+      source-map "^0.5.3"
+  
+  cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+  
+  "cssstyle@>= 0.2.37 < 0.3.0":
+    version "0.2.37"
+    resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+    dependencies:
+      cssom "0.3.x"
+  
+  cuint@latest:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
+  
+  currently-unhandled@^0.4.1:
+    version "0.4.1"
+    resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+    dependencies:
+      array-find-index "^1.0.1"
+  
+  custom-event@~1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
+  
+  cyclist@~0.2.2:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+  
+  cypress@1.4.2:
+    version "1.4.2"
+    resolved "https://registry.yarnpkg.com/cypress/-/cypress-1.4.2.tgz#d957d631617aa87e64a7eae71502f2e175076638"
+    dependencies:
+      "@cypress/listr-verbose-renderer" "0.4.1"
+      "@cypress/xvfb" "1.1.3"
+      "@types/blob-util" "1.3.3"
+      "@types/bluebird" "3.5.18"
+      "@types/chai" "4.0.8"
+      "@types/chai-jquery" "1.1.35"
+      "@types/jquery" "3.2.16"
+      "@types/lodash" "4.14.87"
+      "@types/minimatch" "3.0.1"
+      "@types/mocha" "2.2.44"
+      "@types/sinon" "4.0.0"
+      "@types/sinon-chai" "2.7.29"
+      bluebird "3.5.0"
+      chalk "2.1.0"
+      check-more-types "2.24.0"
+      commander "2.11.0"
+      common-tags "1.4.0"
+      debug "3.1.0"
+      extract-zip "1.6.6"
+      fs-extra "4.0.1"
+      getos "2.8.4"
+      glob "7.1.2"
+      is-ci "1.0.10"
+      is-installed-globally "0.1.0"
+      lazy-ass "1.6.0"
+      listr "0.12.0"
+      lodash "4.17.4"
+      minimist "1.2.0"
+      progress "1.1.8"
+      ramda "0.24.1"
+      request "2.81.0"
+      request-progress "0.3.1"
+      supports-color "5.1.0"
+      tmp "0.0.31"
+      url "0.11.0"
+      yauzl "2.8.0"
+  
+  d@1:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+    dependencies:
+      es5-ext "^0.10.9"
+  
+  dashdash@^1.12.0:
+    version "1.14.1"
+    resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+    dependencies:
+      assert-plus "^1.0.0"
+  
+  data-uri-to-buffer@1:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835"
+  
+  date-fns@^1.27.2:
+    version "1.29.0"
+    resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
+  
+  date-format@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8"
+  
+  date-now@^0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+  
+  dateformat@^3.0.2:
+    version "3.0.3"
+    resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
+  
+  deasync@^0.1.8:
+    version "0.1.12"
+    resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.12.tgz#0159492a4133ab301d6c778cf01e74e63b10e549"
+    dependencies:
+      bindings "~1.2.1"
+      nan "^2.0.7"
+  
+  debug@*, debug@3.1.0, debug@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+    dependencies:
+      ms "2.0.0"
+  
+  debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9:
+    version "2.6.9"
+    resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+    dependencies:
+      ms "2.0.0"
+  
+  debug@2.6.8:
+    version "2.6.8"
+    resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
+    dependencies:
+      ms "2.0.0"
+  
+  debug@~2.2.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+    dependencies:
+      ms "0.7.1"
+  
+  decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+  
+  decode-uri-component@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+  
+  deep-equal@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+  
+  deep-extend@~0.4.0:
+    version "0.4.2"
+    resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+  
+  deep-is@~0.1.3:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+  
+  default-require-extensions@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+    dependencies:
+      strip-bom "^2.0.0"
+  
+  define-properties@^1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+    dependencies:
+      foreach "^2.0.5"
+      object-keys "^1.0.8"
+  
+  define-property@^0.2.5:
+    version "0.2.5"
+    resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+    dependencies:
+      is-descriptor "^0.1.0"
+  
+  define-property@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+    dependencies:
+      is-descriptor "^1.0.0"
+  
+  define-property@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+    dependencies:
+      is-descriptor "^1.0.2"
+      isobject "^3.0.1"
+  
+  defined@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+  
+  degenerator@~1.0.2:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095"
+    dependencies:
+      ast-types "0.x.x"
+      escodegen "1.x.x"
+      esprima "3.x.x"
+  
+  del@^2.2.0:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+    dependencies:
+      globby "^5.0.0"
+      is-path-cwd "^1.0.0"
+      is-path-in-cwd "^1.0.0"
+      object-assign "^4.0.1"
+      pify "^2.0.0"
+      pinkie-promise "^2.0.0"
+      rimraf "^2.2.8"
+  
+  del@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+    dependencies:
+      globby "^6.1.0"
+      is-path-cwd "^1.0.0"
+      is-path-in-cwd "^1.0.0"
+      p-map "^1.1.1"
+      pify "^3.0.0"
+      rimraf "^2.2.8"
+  
+  delayed-stream@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+  
+  delegates@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+  
+  denodeify@^1.2.1:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
+  
+  depd@1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+  
+  depd@~1.1.1:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+  
+  deps-sort@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
+    dependencies:
+      JSONStream "^1.0.3"
+      shasum "^1.0.0"
+      subarg "^1.0.0"
+      through2 "^2.0.0"
+  
+  des.js@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+    dependencies:
+      inherits "^2.0.1"
+      minimalistic-assert "^1.0.0"
+  
+  destroy@~1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+  
+  detect-indent@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+    dependencies:
+      repeating "^2.0.0"
+  
+  detect-libc@^1.0.2:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+  
+  detect-newline@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+  
+  detect-node@^2.0.3:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+  
+  detect-port-alt@1.1.5:
+    version "1.1.5"
+    resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.5.tgz#a1aa8fc805a4a5df9b905b7ddc7eed036bcce889"
+    dependencies:
+      address "^1.0.1"
+      debug "^2.6.0"
+  
+  detective@^4.0.0:
+    version "4.7.1"
+    resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
+    dependencies:
+      acorn "^5.2.1"
+      defined "^1.0.0"
+  
+  di@^0.0.1:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
+  
+  diff@3.2.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+  
+  diff@3.3.1:
+    version "3.3.1"
+    resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
+  
+  diff@^3.1.0, diff@^3.2.0, diff@^3.4.0:
+    version "3.4.0"
+    resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+  
+  diffie-hellman@^5.0.0:
+    version "5.0.2"
+    resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+    dependencies:
+      bn.js "^4.1.0"
+      miller-rabin "^4.0.0"
+      randombytes "^2.0.0"
+  
+  dir-glob@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+    dependencies:
+      arrify "^1.0.1"
+      path-type "^3.0.0"
+  
+  dns-equal@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+  
+  dns-packet@^1.0.1:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
+    dependencies:
+      ip "^1.1.0"
+      safe-buffer "^5.0.1"
+  
+  dns-txt@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+    dependencies:
+      buffer-indexof "^1.0.0"
+  
+  doctrine@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+    dependencies:
+      esutils "^2.0.2"
+  
+  dom-converter@~0.1:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
+    dependencies:
+      utila "~0.3"
+  
+  dom-helpers@^3.2.0:
+    version "3.3.1"
+    resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
+  
+  dom-serialize@^2.2.0:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
+    dependencies:
+      custom-event "~1.0.0"
+      ent "~2.2.0"
+      extend "^3.0.0"
+      void-elements "^2.0.0"
+  
+  dom-serializer@0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+    dependencies:
+      domelementtype "~1.1.1"
+      entities "~1.1.1"
+  
+  dom-walk@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
+  
+  domain-browser@^1.1.1, domain-browser@~1.1.0:
+    version "1.1.7"
+    resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+  
+  domelementtype@1:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+  
+  domelementtype@~1.1.1:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+  
+  domexception@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
+    dependencies:
+      webidl-conversions "^4.0.2"
+  
+  domhandler@2.1:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
+    dependencies:
+      domelementtype "1"
+  
+  domutils@1.1:
+    version "1.1.6"
+    resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
+    dependencies:
+      domelementtype "1"
+  
+  domutils@1.5.1:
+    version "1.5.1"
+    resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+    dependencies:
+      dom-serializer "0"
+      domelementtype "1"
+  
+  dot-prop@^4.1.0:
+    version "4.2.0"
+    resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+    dependencies:
+      is-obj "^1.0.0"
+  
+  dotenv-webpack@^1.5.4:
+    version "1.5.5"
+    resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.5.5.tgz#3441094f04d304b6119e6b72524e62fb3252f5f2"
+    dependencies:
+      dotenv "^5.0.1"
+  
+  dotenv@^5.0.0, dotenv@^5.0.1:
+    version "5.0.1"
+    resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+  
+  double-ended-queue@^2.1.0-0:
+    version "2.1.0-0"
+    resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
+  
+  duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+    dependencies:
+      readable-stream "^2.0.2"
+  
+  duplexer@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+  
+  duplexify@^3.4.2, duplexify@^3.5.3:
+    version "3.5.3"
+    resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e"
+    dependencies:
+      end-of-stream "^1.0.0"
+      inherits "^2.0.1"
+      readable-stream "^2.0.0"
+      stream-shift "^1.0.0"
+  
+  ecc-jsbn@~0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+    dependencies:
+      jsbn "~0.1.0"
+  
+  ee-first@1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+  
+  ejs@^2.5.7:
+    version "2.5.7"
+    resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
+  
+  electron-download@^3.0.1:
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz#2cfd54d6966c019c4d49ad65fbe65cc9cdef68c8"
+    dependencies:
+      debug "^2.2.0"
+      fs-extra "^0.30.0"
+      home-path "^1.0.1"
+      minimist "^1.2.0"
+      nugget "^2.0.0"
+      path-exists "^2.1.0"
+      rc "^1.1.2"
+      semver "^5.3.0"
+      sumchecker "^1.2.0"
+  
+  electron-releases@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/electron-releases/-/electron-releases-2.1.0.tgz#c5614bf811f176ce3c836e368a0625782341fd4e"
+  
+  electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
+    version "1.3.30"
+    resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz#9666f532a64586651fc56a72513692e820d06a80"
+    dependencies:
+      electron-releases "^2.1.0"
+  
+  electron@^1.8.3:
+    version "1.8.3"
+    resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.3.tgz#001416ea3a25ce594e317cb5531bc41eadd22f7f"
+    dependencies:
+      "@types/node" "^8.0.24"
+      electron-download "^3.0.1"
+      extract-zip "^1.0.3"
+  
+  elegant-spinner@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+  
+  elliptic@^6.0.0:
+    version "6.4.0"
+    resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+    dependencies:
+      bn.js "^4.4.0"
+      brorand "^1.0.1"
+      hash.js "^1.0.0"
+      hmac-drbg "^1.0.0"
+      inherits "^2.0.1"
+      minimalistic-assert "^1.0.0"
+      minimalistic-crypto-utils "^1.0.0"
+  
+  ember-cli-string-utils@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1"
+  
+  emojis-list@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+  
+  encodeurl@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+  
+  encoding@^0.1.11:
+    version "0.1.12"
+    resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
+    dependencies:
+      iconv-lite "~0.4.13"
+  
+  end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+    dependencies:
+      once "^1.4.0"
+  
+  engine.io-client@~3.1.0:
+    version "3.1.4"
+    resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1"
+    dependencies:
+      component-emitter "1.2.1"
+      component-inherit "0.0.3"
+      debug "~2.6.9"
+      engine.io-parser "~2.1.1"
+      has-cors "1.1.0"
+      indexof "0.0.1"
+      parseqs "0.0.5"
+      parseuri "0.0.5"
+      ws "~3.3.1"
+      xmlhttprequest-ssl "~1.5.4"
+      yeast "0.1.2"
+  
+  engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
+    version "2.1.2"
+    resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196"
+    dependencies:
+      after "0.8.2"
+      arraybuffer.slice "~0.0.7"
+      base64-arraybuffer "0.1.5"
+      blob "0.0.4"
+      has-binary2 "~1.0.2"
+  
+  engine.io@~3.1.0:
+    version "3.1.4"
+    resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e"
+    dependencies:
+      accepts "1.3.3"
+      base64id "1.0.0"
+      cookie "0.3.1"
+      debug "~2.6.9"
+      engine.io-parser "~2.1.0"
+      ws "~3.3.1"
+    optionalDependencies:
+      uws "~0.14.4"
+  
+  enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0, enhanced-resolve@^3.4.0:
+    version "3.4.1"
+    resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+    dependencies:
+      graceful-fs "^4.1.2"
+      memory-fs "^0.4.0"
+      object-assign "^4.0.1"
+      tapable "^0.2.7"
+  
+  ent@~2.2.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
+  
+  entities@~1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+  
+  errno@^0.1.1, errno@^0.1.3, errno@^0.1.4:
+    version "0.1.6"
+    resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026"
+    dependencies:
+      prr "~1.0.1"
+  
+  error-ex@^1.2.0, error-ex@^1.3.1:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+    dependencies:
+      is-arrayish "^0.2.1"
+  
+  es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0:
+    version "1.10.0"
+    resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+    dependencies:
+      es-to-primitive "^1.1.1"
+      function-bind "^1.1.1"
+      has "^1.0.1"
+      is-callable "^1.1.3"
+      is-regex "^1.0.4"
+  
+  es-to-primitive@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+    dependencies:
+      is-callable "^1.1.1"
+      is-date-object "^1.0.1"
+      is-symbol "^1.0.1"
+  
+  es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+    version "0.10.37"
+    resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3"
+    dependencies:
+      es6-iterator "~2.0.1"
+      es6-symbol "~3.1.1"
+  
+  es5-shim@^4.5.10:
+    version "4.5.10"
+    resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.10.tgz#b7e17ef4df2a145b821f1497b50c25cf94026205"
+  
+  es6-iterator@^2.0.1, es6-iterator@~2.0.1:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+    dependencies:
+      d "1"
+      es5-ext "^0.10.35"
+      es6-symbol "^3.1.1"
+  
+  es6-map@^0.1.3:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+    dependencies:
+      d "1"
+      es5-ext "~0.10.14"
+      es6-iterator "~2.0.1"
+      es6-set "~0.1.5"
+      es6-symbol "~3.1.1"
+      event-emitter "~0.3.5"
+  
+  es6-promise@^4.0.5:
+    version "4.2.4"
+    resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
+  
+  es6-set@~0.1.5:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+    dependencies:
+      d "1"
+      es5-ext "~0.10.14"
+      es6-iterator "~2.0.1"
+      es6-symbol "3.1.1"
+      event-emitter "~0.3.5"
+  
+  es6-shim@^0.35.3:
+    version "0.35.3"
+    resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26"
+  
+  es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+    version "3.1.1"
+    resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+    dependencies:
+      d "1"
+      es5-ext "~0.10.14"
+  
+  es6-templates@^0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
+    dependencies:
+      recast "~0.11.12"
+      through "~2.3.6"
+  
+  es6-weak-map@^2.0.1:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+    dependencies:
+      d "1"
+      es5-ext "^0.10.14"
+      es6-iterator "^2.0.1"
+      es6-symbol "^3.1.1"
+  
+  escape-html@~1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+  
+  escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+  
+  escodegen@1.x.x:
+    version "1.9.0"
+    resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
+    dependencies:
+      esprima "^3.1.3"
+      estraverse "^4.2.0"
+      esutils "^2.0.2"
+      optionator "^0.8.1"
+    optionalDependencies:
+      source-map "~0.5.6"
+  
+  escodegen@^1.9.0:
+    version "1.9.1"
+    resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
+    dependencies:
+      esprima "^3.1.3"
+      estraverse "^4.2.0"
+      esutils "^2.0.2"
+      optionator "^0.8.1"
+    optionalDependencies:
+      source-map "~0.6.1"
+  
+  escope@^3.6.0:
+    version "3.6.0"
+    resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+    dependencies:
+      es6-map "^0.1.3"
+      es6-weak-map "^2.0.1"
+      esrecurse "^4.1.0"
+      estraverse "^4.1.1"
+  
+  esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0:
+    version "3.1.3"
+    resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+  
+  esprima@^2.6.0:
+    version "2.7.3"
+    resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+  
+  esprima@^4.0.0, esprima@~4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+  
+  esrecurse@^4.1.0:
+    version "4.2.0"
+    resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+    dependencies:
+      estraverse "^4.1.0"
+      object-assign "^4.0.1"
+  
+  estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+    version "4.2.0"
+    resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+  
+  esutils@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+  
+  etag@~1.8.1:
+    version "1.8.1"
+    resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+  
+  event-emitter@~0.3.5:
+    version "0.3.5"
+    resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+    dependencies:
+      d "1"
+      es5-ext "~0.10.14"
+  
+  eventemitter3@1.x.x:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+  
+  events@^1.0.0, events@^1.1.1, events@~1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+  
+  eventsource@0.1.6:
+    version "0.1.6"
+    resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+    dependencies:
+      original ">=0.0.5"
+  
+  evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+    dependencies:
+      md5.js "^1.3.4"
+      safe-buffer "^5.1.1"
+  
+  exec-sh@^0.2.0:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
+    dependencies:
+      merge "^1.1.3"
+  
+  execa@^0.7.0:
+    version "0.7.0"
+    resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+    dependencies:
+      cross-spawn "^5.0.1"
+      get-stream "^3.0.0"
+      is-stream "^1.1.0"
+      npm-run-path "^2.0.0"
+      p-finally "^1.0.0"
+      signal-exit "^3.0.0"
+      strip-eof "^1.0.0"
+  
+  exenv@^1.2.0, exenv@^1.2.1:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+  
+  exit-hook@^1.0.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+  
+  exit@^0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+  
+  expand-braces@^0.1.1:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
+    dependencies:
+      array-slice "^0.2.3"
+      array-unique "^0.2.1"
+      braces "^0.1.2"
+  
+  expand-brackets@^0.1.4:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+    dependencies:
+      is-posix-bracket "^0.1.0"
+  
+  expand-brackets@^2.1.4:
+    version "2.1.4"
+    resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+    dependencies:
+      debug "^2.3.3"
+      define-property "^0.2.5"
+      extend-shallow "^2.0.1"
+      posix-character-classes "^0.1.0"
+      regex-not "^1.0.0"
+      snapdragon "^0.8.1"
+      to-regex "^3.0.1"
+  
+  expand-range@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
+    dependencies:
+      is-number "^0.1.1"
+      repeat-string "^0.2.2"
+  
+  expand-range@^1.8.1:
+    version "1.8.2"
+    resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+    dependencies:
+      fill-range "^2.1.0"
+  
+  expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+    dependencies:
+      homedir-polyfill "^1.0.1"
+  
+  expect@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.0.tgz#371edf1ae15b83b5bf5ec34b42f1584660a36c16"
+    dependencies:
+      ansi-styles "^3.2.0"
+      jest-diff "^22.4.0"
+      jest-get-type "^22.1.0"
+      jest-matcher-utils "^22.4.0"
+      jest-message-util "^22.4.0"
+      jest-regex-util "^22.1.0"
+  
+  express@^4.15.3, express@^4.16.2:
+    version "4.16.2"
+    resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+    dependencies:
+      accepts "~1.3.4"
+      array-flatten "1.1.1"
+      body-parser "1.18.2"
+      content-disposition "0.5.2"
+      content-type "~1.0.4"
+      cookie "0.3.1"
+      cookie-signature "1.0.6"
+      debug "2.6.9"
+      depd "~1.1.1"
+      encodeurl "~1.0.1"
+      escape-html "~1.0.3"
+      etag "~1.8.1"
+      finalhandler "1.1.0"
+      fresh "0.5.2"
+      merge-descriptors "1.0.1"
+      methods "~1.1.2"
+      on-finished "~2.3.0"
+      parseurl "~1.3.2"
+      path-to-regexp "0.1.7"
+      proxy-addr "~2.0.2"
+      qs "6.5.1"
+      range-parser "~1.2.0"
+      safe-buffer "5.1.1"
+      send "0.16.1"
+      serve-static "1.13.1"
+      setprototypeof "1.1.0"
+      statuses "~1.3.1"
+      type-is "~1.6.15"
+      utils-merge "1.0.1"
+      vary "~1.1.2"
+  
+  extend-shallow@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+    dependencies:
+      is-extendable "^0.1.0"
+  
+  extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+    dependencies:
+      assign-symbols "^1.0.0"
+      is-extendable "^1.0.1"
+  
+  extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
+  
+  external-editor@^2.0.4:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
+    dependencies:
+      chardet "^0.4.0"
+      iconv-lite "^0.4.17"
+      tmp "^0.0.33"
+  
+  extglob@^0.3.1:
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+    dependencies:
+      is-extglob "^1.0.0"
+  
+  extglob@^2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+    dependencies:
+      array-unique "^0.3.2"
+      define-property "^1.0.0"
+      expand-brackets "^2.1.4"
+      extend-shallow "^2.0.1"
+      fragment-cache "^0.2.1"
+      regex-not "^1.0.0"
+      snapdragon "^0.8.1"
+      to-regex "^3.0.1"
+  
+  extract-text-webpack-plugin@^3.0.2:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+    dependencies:
+      async "^2.4.1"
+      loader-utils "^1.1.0"
+      schema-utils "^0.3.0"
+      webpack-sources "^1.0.1"
+  
+  extract-zip@1.6.6, extract-zip@^1.0.3:
+    version "1.6.6"
+    resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c"
+    dependencies:
+      concat-stream "1.6.0"
+      debug "2.6.9"
+      mkdirp "0.5.0"
+      yauzl "2.4.1"
+  
+  extsprintf@1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+  
+  extsprintf@^1.2.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+  
+  fast-deep-equal@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+  
+  fast-json-stable-stringify@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+  
+  fast-levenshtein@~2.0.4:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+  
+  fast-memoize@^2.2.7:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.3.0.tgz#d7f81dc864489f582e30538923c423d85887af32"
+  
+  fastparse@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+  
+  faye-websocket@^0.10.0:
+    version "0.10.0"
+    resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+    dependencies:
+      websocket-driver ">=0.5.1"
+  
+  faye-websocket@~0.11.0:
+    version "0.11.1"
+    resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
+    dependencies:
+      websocket-driver ">=0.5.1"
+  
+  fb-watchman@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
+    dependencies:
+      bser "^2.0.0"
+  
+  fbjs@^0.8.12, fbjs@^0.8.16, fbjs@^0.8.9:
+    version "0.8.16"
+    resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+    dependencies:
+      core-js "^1.0.0"
+      isomorphic-fetch "^2.1.1"
+      loose-envify "^1.0.0"
+      object-assign "^4.1.0"
+      promise "^7.1.1"
+      setimmediate "^1.0.5"
+      ua-parser-js "^0.7.9"
+  
+  fd-slicer@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+    dependencies:
+      pend "~1.2.0"
+  
+  feather-icons@^4.5.0:
+    version "4.5.0"
+    resolved "https://registry.yarnpkg.com/feather-icons/-/feather-icons-4.5.0.tgz#5c0a38fe4633e88a14cc8d7aa822e2591828027d"
+    dependencies:
+      classnames "^2.2.5"
+  
+  figures@^1.7.0:
+    version "1.7.0"
+    resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+    dependencies:
+      escape-string-regexp "^1.0.5"
+      object-assign "^4.1.0"
+  
+  figures@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+    dependencies:
+      escape-string-regexp "^1.0.5"
+  
+  file-loader@^1.1.5:
+    version "1.1.6"
+    resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"
+    dependencies:
+      loader-utils "^1.0.2"
+      schema-utils "^0.3.0"
+  
+  file-loader@^1.1.8:
+    version "1.1.11"
+    resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
+    dependencies:
+      loader-utils "^1.0.2"
+      schema-utils "^0.4.5"
+  
+  file-uri-to-path@1:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+  
+  filename-regex@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+  
+  fileset@^2.0.2:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+    dependencies:
+      glob "^7.0.3"
+      minimatch "^3.0.3"
+  
+  filesize@3.5.11:
+    version "3.5.11"
+    resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+  
+  fill-range@^2.1.0:
+    version "2.2.3"
+    resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+    dependencies:
+      is-number "^2.1.0"
+      isobject "^2.0.0"
+      randomatic "^1.1.3"
+      repeat-element "^1.1.2"
+      repeat-string "^1.5.2"
+  
+  fill-range@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+    dependencies:
+      extend-shallow "^2.0.1"
+      is-number "^3.0.0"
+      repeat-string "^1.6.1"
+      to-regex-range "^2.1.0"
+  
+  finalhandler@1.0.6:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
+    dependencies:
+      debug "2.6.9"
+      encodeurl "~1.0.1"
+      escape-html "~1.0.3"
+      on-finished "~2.3.0"
+      parseurl "~1.3.2"
+      statuses "~1.3.1"
+      unpipe "~1.0.0"
+  
+  finalhandler@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+    dependencies:
+      debug "2.6.9"
+      encodeurl "~1.0.1"
+      escape-html "~1.0.3"
+      on-finished "~2.3.0"
+      parseurl "~1.3.2"
+      statuses "~1.3.1"
+      unpipe "~1.0.0"
+  
+  find-cache-dir@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
+    dependencies:
+      commondir "^1.0.1"
+      make-dir "^1.0.0"
+      pkg-dir "^2.0.0"
+  
+  find-index@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
+  
+  find-up@^1.0.0:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+    dependencies:
+      path-exists "^2.0.0"
+      pinkie-promise "^2.0.0"
+  
+  find-up@^2.0.0, find-up@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+    dependencies:
+      locate-path "^2.0.0"
+  
+  flatten@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+  
+  flush-write-stream@^1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417"
+    dependencies:
+      inherits "^2.0.1"
+      readable-stream "^2.0.4"
+  
+  follow-redirects@1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37"
+    dependencies:
+      debug "^2.2.0"
+  
+  font-awesome@^4.7.0:
+    version "4.7.0"
+    resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+  
+  for-in@^0.1.3:
+    version "0.1.8"
+    resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+  
+  for-in@^1.0.1, for-in@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+  
+  for-own@^0.1.4:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+    dependencies:
+      for-in "^1.0.1"
+  
+  for-own@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
+    dependencies:
+      for-in "^1.0.1"
+  
+  foreach@^2.0.5:
+    version "2.0.5"
+    resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+  
+  forever-agent@~0.6.1:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+  
+  form-data@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25"
+    dependencies:
+      asynckit "^0.4.0"
+      combined-stream "^1.0.5"
+      mime-types "^2.1.11"
+  
+  form-data@~2.1.1:
+    version "2.1.4"
+    resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
+    dependencies:
+      asynckit "^0.4.0"
+      combined-stream "^1.0.5"
+      mime-types "^2.1.12"
+  
+  form-data@~2.3.1:
+    version "2.3.1"
+    resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+    dependencies:
+      asynckit "^0.4.0"
+      combined-stream "^1.0.5"
+      mime-types "^2.1.12"
+  
+  forwarded@~0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+  
+  fragment-cache@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+    dependencies:
+      map-cache "^0.2.2"
+  
+  fresh@0.5.2:
+    version "0.5.2"
+    resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+  
+  from2@^2.1.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+    dependencies:
+      inherits "^2.0.1"
+      readable-stream "^2.0.0"
+  
+  fs-access@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
+    dependencies:
+      null-check "^1.0.0"
+  
+  fs-extra@4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880"
+    dependencies:
+      graceful-fs "^4.1.2"
+      jsonfile "^3.0.0"
+      universalify "^0.1.0"
+  
+  fs-extra@4.0.3, fs-extra@^4.0.0, fs-extra@^4.0.2:
+    version "4.0.3"
+    resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
+    dependencies:
+      graceful-fs "^4.1.2"
+      jsonfile "^4.0.0"
+      universalify "^0.1.0"
+  
+  fs-extra@^0.30.0:
+    version "0.30.0"
+    resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+    dependencies:
+      graceful-fs "^4.1.2"
+      jsonfile "^2.1.0"
+      klaw "^1.0.0"
+      path-is-absolute "^1.0.0"
+      rimraf "^2.2.8"
+  
+  fs-write-stream-atomic@^1.0.8:
+    version "1.0.10"
+    resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+    dependencies:
+      graceful-fs "^4.1.2"
+      iferr "^0.1.5"
+      imurmurhash "^0.1.4"
+      readable-stream "1 || 2"
+  
+  fs.realpath@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+  
+  fsevents@^1.0.0, fsevents@^1.1.1:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
+    dependencies:
+      nan "^2.3.0"
+      node-pre-gyp "^0.6.39"
+  
+  fstream-ignore@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+    dependencies:
+      fstream "^1.0.0"
+      inherits "2"
+      minimatch "^3.0.0"
+  
+  fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+    version "1.0.11"
+    resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
+    dependencies:
+      graceful-fs "^4.1.2"
+      inherits "~2.0.0"
+      mkdirp ">=0.5 0"
+      rimraf "2"
+  
+  fsu@^1.0.2:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/fsu/-/fsu-1.0.4.tgz#586a8fbd8d19acdf330cecbcf17d641e9c370ba0"
+  
+  ftp@~0.3.10:
+    version "0.3.10"
+    resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d"
+    dependencies:
+      readable-stream "1.1.x"
+      xregexp "2.0.0"
+  
+  function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+  
+  function.prototype.name@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
+    dependencies:
+      define-properties "^1.1.2"
+      function-bind "^1.1.1"
+      is-callable "^1.1.3"
+  
+  fuse.js@^3.0.1, fuse.js@^3.2.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.0.tgz#f0448e8069855bf2a3e683cdc1d320e7e2a07ef4"
+  
+  gauge@~2.7.3:
+    version "2.7.4"
+    resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+    dependencies:
+      aproba "^1.0.3"
+      console-control-strings "^1.0.0"
+      has-unicode "^2.0.0"
+      object-assign "^4.1.0"
+      signal-exit "^3.0.0"
+      string-width "^1.0.1"
+      strip-ansi "^3.0.1"
+      wide-align "^1.1.0"
+  
+  gaze@^1.0.0:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+    dependencies:
+      globule "^1.0.0"
+  
+  generate-function@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+  
+  generate-object-property@^1.1.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+    dependencies:
+      is-property "^1.0.0"
+  
+  get-caller-file@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+  
+  get-stdin@^4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+  
+  get-stream@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+  
+  get-uri@2:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59"
+    dependencies:
+      data-uri-to-buffer "1"
+      debug "2"
+      extend "3"
+      file-uri-to-path "1"
+      ftp "~0.3.10"
+      readable-stream "2"
+  
+  get-value@^2.0.3, get-value@^2.0.6:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+  
+  getos@2.8.4:
+    version "2.8.4"
+    resolved "https://registry.yarnpkg.com/getos/-/getos-2.8.4.tgz#7b8603d3619c28e38cb0fe7a4f63c3acb80d5163"
+    dependencies:
+      async "2.1.4"
+  
+  getpass@^0.1.1:
+    version "0.1.7"
+    resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+    dependencies:
+      assert-plus "^1.0.0"
+  
+  glamor@^2.20.40:
+    version "2.20.40"
+    resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05"
+    dependencies:
+      fbjs "^0.8.12"
+      inline-style-prefixer "^3.0.6"
+      object-assign "^4.1.1"
+      prop-types "^15.5.10"
+      through "^2.3.8"
+  
+  glamorous@^4.11.6:
+    version "4.12.0"
+    resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.12.0.tgz#47b864326ca37e1f1ea6d523b3d23402f6657af1"
+    dependencies:
+      brcast "^3.0.0"
+      fast-memoize "^2.2.7"
+      html-tag-names "^1.1.1"
+      is-function "^1.0.1"
+      is-plain-object "^2.0.4"
+      react-html-attributes "^1.3.0"
+      svg-tag-names "^1.1.0"
+  
+  glob-base@^0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+    dependencies:
+      glob-parent "^2.0.0"
+      is-glob "^2.0.0"
+  
+  glob-parent@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+    dependencies:
+      is-glob "^2.0.0"
+  
+  glob-parent@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+    dependencies:
+      is-glob "^3.1.0"
+      path-dirname "^1.0.0"
+  
+  glob2base@^0.0.12:
+    version "0.0.12"
+    resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
+    dependencies:
+      find-index "^0.1.1"
+  
+  glob@7.0.x:
+    version "7.0.6"
+    resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
+    dependencies:
+      fs.realpath "^1.0.0"
+      inflight "^1.0.4"
+      inherits "2"
+      minimatch "^3.0.2"
+      once "^1.3.0"
+      path-is-absolute "^1.0.0"
+  
+  glob@7.1.1:
+    version "7.1.1"
+    resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+    dependencies:
+      fs.realpath "^1.0.0"
+      inflight "^1.0.4"
+      inherits "2"
+      minimatch "^3.0.2"
+      once "^1.3.0"
+      path-is-absolute "^1.0.0"
+  
+  glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
+    version "7.1.2"
+    resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+    dependencies:
+      fs.realpath "^1.0.0"
+      inflight "^1.0.4"
+      inherits "2"
+      minimatch "^3.0.4"
+      once "^1.3.0"
+      path-is-absolute "^1.0.0"
+  
+  glob@^6.0.4:
+    version "6.0.4"
+    resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+    dependencies:
+      inflight "^1.0.4"
+      inherits "2"
+      minimatch "2 || 3"
+      once "^1.3.0"
+      path-is-absolute "^1.0.0"
+  
+  global-dirs@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+    dependencies:
+      ini "^1.3.4"
+  
+  global-modules@1.0.0, global-modules@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+    dependencies:
+      global-prefix "^1.0.1"
+      is-windows "^1.0.1"
+      resolve-dir "^1.0.0"
+  
+  global-prefix@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+    dependencies:
+      expand-tilde "^2.0.2"
+      homedir-polyfill "^1.0.1"
+      ini "^1.3.4"
+      is-windows "^1.0.1"
+      which "^1.2.14"
+  
+  global@^4.3.2:
+    version "4.3.2"
+    resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
+    dependencies:
+      min-document "^2.19.0"
+      process "~0.5.1"
+  
+  globals@^9.18.0:
+    version "9.18.0"
+    resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+  
+  globby@^5.0.0:
+    version "5.0.0"
+    resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+    dependencies:
+      array-union "^1.0.1"
+      arrify "^1.0.0"
+      glob "^7.0.3"
+      object-assign "^4.0.1"
+      pify "^2.0.0"
+      pinkie-promise "^2.0.0"
+  
+  globby@^6.1.0:
+    version "6.1.0"
+    resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+    dependencies:
+      array-union "^1.0.1"
+      glob "^7.0.3"
+      object-assign "^4.0.1"
+      pify "^2.0.0"
+      pinkie-promise "^2.0.0"
+  
+  globby@^7.1.1:
+    version "7.1.1"
+    resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
+    dependencies:
+      array-union "^1.0.1"
+      dir-glob "^2.0.0"
+      glob "^7.1.2"
+      ignore "^3.3.5"
+      pify "^3.0.0"
+      slash "^1.0.0"
+  
+  globule@^1.0.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+    dependencies:
+      glob "~7.1.1"
+      lodash "~4.17.4"
+      minimatch "~3.0.2"
+  
+  graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+    version "4.1.11"
+    resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+  
+  "graceful-readlink@>= 1.0.0":
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+  
+  growl@1.10.3:
+    version "1.10.3"
+    resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
+  
+  growl@1.9.2:
+    version "1.9.2"
+    resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
+  
+  growly@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+  
+  gzip-size@3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+    dependencies:
+      duplexer "^0.1.1"
+  
+  handle-thing@^1.2.5:
+    version "1.2.5"
+    resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+  
+  handlebars@^4.0.3:
+    version "4.0.11"
+    resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
+    dependencies:
+      async "^1.4.0"
+      optimist "^0.6.1"
+      source-map "^0.4.4"
+    optionalDependencies:
+      uglify-js "^2.6"
+  
+  har-schema@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+  
+  har-schema@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+  
+  har-validator@~2.0.6:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+    dependencies:
+      chalk "^1.1.1"
+      commander "^2.9.0"
+      is-my-json-valid "^2.12.4"
+      pinkie-promise "^2.0.0"
+  
+  har-validator@~4.2.1:
+    version "4.2.1"
+    resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
+    dependencies:
+      ajv "^4.9.1"
+      har-schema "^1.0.5"
+  
+  har-validator@~5.0.3:
+    version "5.0.3"
+    resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
+    dependencies:
+      ajv "^5.1.0"
+      har-schema "^2.0.0"
+  
+  has-ansi@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+    dependencies:
+      ansi-regex "^2.0.0"
+  
+  has-binary2@~1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98"
+    dependencies:
+      isarray "2.0.1"
+  
+  has-cors@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+  
+  has-flag@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+  
+  has-flag@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+  
+  has-flag@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+  
+  has-unicode@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+  
+  has-value@^0.3.1:
+    version "0.3.1"
+    resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+    dependencies:
+      get-value "^2.0.3"
+      has-values "^0.1.4"
+      isobject "^2.0.0"
+  
+  has-value@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+    dependencies:
+      get-value "^2.0.6"
+      has-values "^1.0.0"
+      isobject "^3.0.0"
+  
+  has-values@^0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+  
+  has-values@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+    dependencies:
+      is-number "^3.0.0"
+      kind-of "^4.0.0"
+  
+  has@^1.0.0, has@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+    dependencies:
+      function-bind "^1.0.2"
+  
+  hash-base@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+    dependencies:
+      inherits "^2.0.1"
+  
+  hash-base@^3.0.0:
+    version "3.0.4"
+    resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+    dependencies:
+      inherits "^2.0.1"
+      safe-buffer "^5.0.1"
+  
+  hash.js@^1.0.0, hash.js@^1.0.3:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+    dependencies:
+      inherits "^2.0.3"
+      minimalistic-assert "^1.0.0"
+  
+  hawk@3.1.3, hawk@~3.1.3:
+    version "3.1.3"
+    resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+    dependencies:
+      boom "2.x.x"
+      cryptiles "2.x.x"
+      hoek "2.x.x"
+      sntp "1.x.x"
+  
+  hawk@~6.0.2:
+    version "6.0.2"
+    resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
+    dependencies:
+      boom "4.x.x"
+      cryptiles "3.x.x"
+      hoek "4.x.x"
+      sntp "2.x.x"
+  
+  he@1.1.1, he@1.1.x:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+  
+  hipchat-notifier@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e"
+    dependencies:
+      lodash "^4.0.0"
+      request "^2.0.0"
+  
+  hmac-drbg@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+    dependencies:
+      hash.js "^1.0.3"
+      minimalistic-assert "^1.0.0"
+      minimalistic-crypto-utils "^1.0.1"
+  
+  hoek@2.x.x:
+    version "2.16.3"
+    resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+  
+  hoek@4.x.x:
+    version "4.2.0"
+    resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
+  
+  hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
+  
+  home-or-tmp@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+    dependencies:
+      os-homedir "^1.0.0"
+      os-tmpdir "^1.0.1"
+  
+  home-path@^1.0.1:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f"
+  
+  homedir-polyfill@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+    dependencies:
+      parse-passwd "^1.0.0"
+  
+  hosted-git-info@^2.1.4:
+    version "2.5.0"
+    resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+  
+  hpack.js@^2.1.6:
+    version "2.1.6"
+    resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+    dependencies:
+      inherits "^2.0.1"
+      obuf "^1.0.0"
+      readable-stream "^2.0.1"
+      wbuf "^1.1.0"
+  
+  html-comment-regex@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+  
+  html-element-attributes@^1.0.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/html-element-attributes/-/html-element-attributes-1.3.0.tgz#f06ebdfce22de979db82020265cac541fb17d4fc"
+  
+  html-encoding-sniffer@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
+    dependencies:
+      whatwg-encoding "^1.0.1"
+  
+  html-entities@^1.2.0:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+  
+  html-loader@^0.5.5:
+    version "0.5.5"
+    resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
+    dependencies:
+      es6-templates "^0.2.3"
+      fastparse "^1.1.1"
+      html-minifier "^3.5.8"
+      loader-utils "^1.1.0"
+      object-assign "^4.1.1"
+  
+  html-minifier@^3.2.3:
+    version "3.5.8"
+    resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700"
+    dependencies:
+      camel-case "3.0.x"
+      clean-css "4.1.x"
+      commander "2.12.x"
+      he "1.1.x"
+      ncname "1.0.x"
+      param-case "2.1.x"
+      relateurl "0.2.x"
+      uglify-js "3.3.x"
+  
+  html-minifier@^3.5.8:
+    version "3.5.10"
+    resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.10.tgz#8522c772c388db81aa5c26f62033302d906ea1c7"
+    dependencies:
+      camel-case "3.0.x"
+      clean-css "4.1.x"
+      commander "2.14.x"
+      he "1.1.x"
+      ncname "1.0.x"
+      param-case "2.1.x"
+      relateurl "0.2.x"
+      uglify-js "3.3.x"
+  
+  html-tag-names@^1.1.1:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.2.tgz#f65168964c5a9c82675efda882875dcb2a875c22"
+  
+  html-webpack-plugin@^2.29.0, html-webpack-plugin@^2.30.1:
+    version "2.30.1"
+    resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5"
+    dependencies:
+      bluebird "^3.4.7"
+      html-minifier "^3.2.3"
+      loader-utils "^0.2.16"
+      lodash "^4.17.3"
+      pretty-error "^2.0.2"
+      toposort "^1.0.0"
+  
+  htmlescape@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
+  
+  htmlparser2@~3.3.0:
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
+    dependencies:
+      domelementtype "1"
+      domhandler "2.1"
+      domutils "1.1"
+      readable-stream "1.0"
+  
+  http-deceiver@^1.2.7:
+    version "1.2.7"
+    resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+  
+  http-errors@1.6.2, http-errors@~1.6.2:
+    version "1.6.2"
+    resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+    dependencies:
+      depd "1.1.1"
+      inherits "2.0.3"
+      setprototypeof "1.0.3"
+      statuses ">= 1.3.1 < 2"
+  
+  http-parser-js@>=0.4.0:
+    version "0.4.9"
+    resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1"
+  
+  http-proxy-agent@1:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a"
+    dependencies:
+      agent-base "2"
+      debug "2"
+      extend "3"
+  
+  http-proxy-middleware@~0.17.4:
+    version "0.17.4"
+    resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+    dependencies:
+      http-proxy "^1.16.2"
+      is-glob "^3.1.0"
+      lodash "^4.17.2"
+      micromatch "^2.3.11"
+  
+  http-proxy@^1.13.0, http-proxy@^1.16.2:
+    version "1.16.2"
+    resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+    dependencies:
+      eventemitter3 "1.x.x"
+      requires-port "1.x.x"
+  
+  http-signature@~1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+    dependencies:
+      assert-plus "^0.2.0"
+      jsprim "^1.2.2"
+      sshpk "^1.7.0"
+  
+  http-signature@~1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+    dependencies:
+      assert-plus "^1.0.0"
+      jsprim "^1.2.2"
+      sshpk "^1.7.0"
+  
+  httpntlm@1.6.1:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2"
+    dependencies:
+      httpreq ">=0.4.22"
+      underscore "~1.7.0"
+  
+  httpreq@>=0.4.22:
+    version "0.4.24"
+    resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f"
+  
+  https-browserify@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+  
+  https-proxy-agent@1, https-proxy-agent@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6"
+    dependencies:
+      agent-base "2"
+      debug "2"
+      extend "3"
+  
+  hyphenate-style-name@^1.0.1, hyphenate-style-name@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
+  
+  iconv-lite@0.4.15:
+    version "0.4.15"
+    resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
+  
+  iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+    version "0.4.19"
+    resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+  
+  icss-replace-symbols@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+  
+  icss-utils@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
+    dependencies:
+      postcss "^6.0.1"
+  
+  ieee754@^1.1.4:
+    version "1.1.8"
+    resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+  
+  iferr@^0.1.5:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+  
+  ignore@^3.3.5:
+    version "3.3.7"
+    resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+  
+  image-size@~0.5.0:
+    version "0.5.5"
+    resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+  
+  immutable@^3.8.1:
+    version "3.8.2"
+    resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
+  
+  import-local@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
+    dependencies:
+      pkg-dir "^2.0.0"
+      resolve-cwd "^2.0.0"
+  
+  imurmurhash@^0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+  
+  in-publish@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
+  
+  indent-string@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+    dependencies:
+      repeating "^2.0.0"
+  
+  indent-string@^3.0.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+  
+  indexes-of@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+  
+  indexof@0.0.1:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+  
+  inflection@~1.10.0:
+    version "1.10.0"
+    resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f"
+  
+  inflection@~1.3.0:
+    version "1.3.8"
+    resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e"
+  
+  inflight@^1.0.4:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+    dependencies:
+      once "^1.3.0"
+      wrappy "1"
+  
+  inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+  
+  inherits@2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+  
+  ini@^1.3.4, ini@~1.3.0:
+    version "1.3.5"
+    resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+  
+  inline-source-map@~0.6.0:
+    version "0.6.2"
+    resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
+    dependencies:
+      source-map "~0.5.3"
+  
+  inline-style-prefixer@^2.0.5:
+    version "2.0.5"
+    resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7"
+    dependencies:
+      bowser "^1.0.0"
+      hyphenate-style-name "^1.0.1"
+  
+  inline-style-prefixer@^3.0.6:
+    version "3.0.8"
+    resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534"
+    dependencies:
+      bowser "^1.7.3"
+      css-in-js-utils "^2.0.0"
+  
+  inquirer@3.3.0:
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
+    dependencies:
+      ansi-escapes "^3.0.0"
+      chalk "^2.0.0"
+      cli-cursor "^2.1.0"
+      cli-width "^2.0.0"
+      external-editor "^2.0.4"
+      figures "^2.0.0"
+      lodash "^4.3.0"
+      mute-stream "0.0.7"
+      run-async "^2.2.0"
+      rx-lite "^4.0.8"
+      rx-lite-aggregates "^4.0.8"
+      string-width "^2.1.0"
+      strip-ansi "^4.0.0"
+      through "^2.3.6"
+  
+  insert-css@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
+  
+  insert-module-globals@^7.0.0:
+    version "7.0.1"
+    resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
+    dependencies:
+      JSONStream "^1.0.3"
+      combine-source-map "~0.7.1"
+      concat-stream "~1.5.1"
+      is-buffer "^1.1.0"
+      lexical-scope "^1.2.0"
+      process "~0.11.0"
+      through2 "^2.0.0"
+      xtend "^4.0.0"
+  
+  internal-ip@1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
+    dependencies:
+      meow "^3.3.0"
+  
+  interpret@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
+  
+  invariant@^2.2.2:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+    dependencies:
+      loose-envify "^1.0.0"
+  
+  invert-kv@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+  
+  ip@1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590"
+  
+  ip@^1.1.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5:
+    version "1.1.5"
+    resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+  
+  ipaddr.js@1.5.2:
+    version "1.5.2"
+    resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+  
+  is-absolute-url@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+  
+  is-accessor-descriptor@^0.1.6:
+    version "0.1.6"
+    resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+    dependencies:
+      kind-of "^3.0.2"
+  
+  is-accessor-descriptor@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+    dependencies:
+      kind-of "^6.0.0"
+  
+  is-arrayish@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+  
+  is-binary-path@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+    dependencies:
+      binary-extensions "^1.0.0"
+  
+  is-buffer@^1.1.0, is-buffer@^1.1.5:
+    version "1.1.6"
+    resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+  
+  is-builtin-module@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+    dependencies:
+      builtin-modules "^1.0.0"
+  
+  is-callable@^1.1.1, is-callable@^1.1.3:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+  
+  is-ci@1.0.10:
+    version "1.0.10"
+    resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+    dependencies:
+      ci-info "^1.0.0"
+  
+  is-ci@^1.0.10:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
+    dependencies:
+      ci-info "^1.0.0"
+  
+  is-data-descriptor@^0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+    dependencies:
+      kind-of "^3.0.2"
+  
+  is-data-descriptor@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+    dependencies:
+      kind-of "^6.0.0"
+  
+  is-date-object@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+  
+  is-descriptor@^0.1.0:
+    version "0.1.6"
+    resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+    dependencies:
+      is-accessor-descriptor "^0.1.6"
+      is-data-descriptor "^0.1.4"
+      kind-of "^5.0.0"
+  
+  is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+    dependencies:
+      is-accessor-descriptor "^1.0.0"
+      is-data-descriptor "^1.0.0"
+      kind-of "^6.0.2"
+  
+  is-directory@^0.3.1:
+    version "0.3.1"
+    resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+  
+  is-dom@^1.0.9:
+    version "1.0.9"
+    resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.0.9.tgz#483832d52972073de12b9fe3f60320870da8370d"
+  
+  is-dotfile@^1.0.0:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+  
+  is-equal-shallow@^0.1.3:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+    dependencies:
+      is-primitive "^2.0.0"
+  
+  is-extendable@^0.1.0, is-extendable@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+  
+  is-extendable@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+    dependencies:
+      is-plain-object "^2.0.4"
+  
+  is-extglob@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+  
+  is-extglob@^2.1.0, is-extglob@^2.1.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+  
+  is-finite@^1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+    dependencies:
+      number-is-nan "^1.0.0"
+  
+  is-fullwidth-code-point@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+    dependencies:
+      number-is-nan "^1.0.0"
+  
+  is-fullwidth-code-point@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+  
+  is-function@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
+  
+  is-generator-fn@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a"
+  
+  is-glob@^2.0.0, is-glob@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+    dependencies:
+      is-extglob "^1.0.0"
+  
+  is-glob@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+    dependencies:
+      is-extglob "^2.1.0"
+  
+  is-glob@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
+    dependencies:
+      is-extglob "^2.1.1"
+  
+  is-installed-globally@0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+    dependencies:
+      global-dirs "^0.1.0"
+      is-path-inside "^1.0.0"
+  
+  is-my-json-valid@^2.12.4:
+    version "2.17.1"
+    resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471"
+    dependencies:
+      generate-function "^2.0.0"
+      generate-object-property "^1.1.0"
+      jsonpointer "^4.0.0"
+      xtend "^4.0.0"
+  
+  is-number@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
+  
+  is-number@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+    dependencies:
+      kind-of "^3.0.2"
+  
+  is-number@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+    dependencies:
+      kind-of "^3.0.2"
+  
+  is-number@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+  
+  is-obj@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+  
+  is-odd@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
+    dependencies:
+      is-number "^4.0.0"
+  
+  is-path-cwd@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+  
+  is-path-in-cwd@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+    dependencies:
+      is-path-inside "^1.0.0"
+  
+  is-path-inside@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+    dependencies:
+      path-is-inside "^1.0.1"
+  
+  is-plain-obj@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+  
+  is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+    dependencies:
+      isobject "^3.0.1"
+  
+  is-posix-bracket@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+  
+  is-primitive@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+  
+  is-promise@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+  
+  is-property@^1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+  
+  is-regex@^1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+    dependencies:
+      has "^1.0.1"
+  
+  is-root@1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5"
+  
+  is-stream@^1.0.1, is-stream@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+  
+  is-svg@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+    dependencies:
+      html-comment-regex "^1.1.0"
+  
+  is-symbol@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+  
+  is-typedarray@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+  
+  is-utf8@^0.2.0:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+  
+  is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+  
+  is-wsl@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+  
+  isarray@0.0.1, isarray@~0.0.1:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+  
+  isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+  
+  isarray@2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
+  
+  isbinaryfile@^3.0.0:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621"
+  
+  isexe@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+  
+  isobject@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+    dependencies:
+      isarray "1.0.0"
+  
+  isobject@^3.0.0, isobject@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+  
+  isomorphic-fetch@^2.1.1:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+    dependencies:
+      node-fetch "^1.0.1"
+      whatwg-fetch ">=0.10.0"
+  
+  isstream@~0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+  
+  istanbul-api@^1.1.14:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"
+    dependencies:
+      async "^2.1.4"
+      fileset "^2.0.2"
+      istanbul-lib-coverage "^1.1.1"
+      istanbul-lib-hook "^1.1.0"
+      istanbul-lib-instrument "^1.9.1"
+      istanbul-lib-report "^1.1.2"
+      istanbul-lib-source-maps "^1.2.2"
+      istanbul-reports "^1.1.3"
+      js-yaml "^3.7.0"
+      mkdirp "^0.5.1"
+      once "^1.4.0"
+  
+  istanbul-instrumenter-loader@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.0.tgz#9f553923b22360bac95e617aaba01add1f7db0b2"
+    dependencies:
+      convert-source-map "^1.5.0"
+      istanbul-lib-instrument "^1.7.3"
+      loader-utils "^1.1.0"
+      schema-utils "^0.3.0"
+  
+  istanbul-lib-coverage@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
+  
+  istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
+  
+  istanbul-lib-hook@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
+    dependencies:
+      append-transform "^0.4.0"
+  
+  istanbul-lib-instrument@^1.7.3, istanbul-lib-instrument@^1.9.1:
+    version "1.9.1"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
+    dependencies:
+      babel-generator "^6.18.0"
+      babel-template "^6.16.0"
+      babel-traverse "^6.18.0"
+      babel-types "^6.18.0"
+      babylon "^6.18.0"
+      istanbul-lib-coverage "^1.1.1"
+      semver "^5.3.0"
+  
+  istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0:
+    version "1.10.1"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
+    dependencies:
+      babel-generator "^6.18.0"
+      babel-template "^6.16.0"
+      babel-traverse "^6.18.0"
+      babel-types "^6.18.0"
+      babylon "^6.18.0"
+      istanbul-lib-coverage "^1.2.0"
+      semver "^5.3.0"
+  
+  istanbul-lib-report@^1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
+    dependencies:
+      istanbul-lib-coverage "^1.1.1"
+      mkdirp "^0.5.1"
+      path-parse "^1.0.5"
+      supports-color "^3.1.2"
+  
+  istanbul-lib-source-maps@^1.2.1:
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
+    dependencies:
+      debug "^3.1.0"
+      istanbul-lib-coverage "^1.1.2"
+      mkdirp "^0.5.1"
+      rimraf "^2.6.1"
+      source-map "^0.5.3"
+  
+  istanbul-lib-source-maps@^1.2.2:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
+    dependencies:
+      debug "^3.1.0"
+      istanbul-lib-coverage "^1.1.1"
+      mkdirp "^0.5.1"
+      rimraf "^2.6.1"
+      source-map "^0.5.3"
+  
+  istanbul-reports@^1.1.3:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
+    dependencies:
+      handlebars "^4.0.3"
+  
+  jasmine-core@~2.8.0:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
+  
+  jasmine-spec-reporter@~4.2.1:
+    version "4.2.1"
+    resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22"
+    dependencies:
+      colors "1.1.2"
+  
+  jasmine@^2.5.3:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e"
+    dependencies:
+      exit "^0.1.2"
+      glob "^7.0.6"
+      jasmine-core "~2.8.0"
+  
+  jasminewd2@^2.1.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e"
+  
+  jest-changed-files@^22.2.0:
+    version "22.2.0"
+    resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.2.0.tgz#517610c4a8ca0925bdc88b0ca53bd678aa8d019e"
+    dependencies:
+      throat "^4.0.0"
+  
+  jest-cli@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.2.tgz#e6546dc651e13d164481aa3e76e53ac4f4edab06"
+    dependencies:
+      ansi-escapes "^3.0.0"
+      chalk "^2.0.1"
+      exit "^0.1.2"
+      glob "^7.1.2"
+      graceful-fs "^4.1.11"
+      import-local "^1.0.0"
+      is-ci "^1.0.10"
+      istanbul-api "^1.1.14"
+      istanbul-lib-coverage "^1.1.1"
+      istanbul-lib-instrument "^1.8.0"
+      istanbul-lib-source-maps "^1.2.1"
+      jest-changed-files "^22.2.0"
+      jest-config "^22.4.2"
+      jest-environment-jsdom "^22.4.1"
+      jest-get-type "^22.1.0"
+      jest-haste-map "^22.4.2"
+      jest-message-util "^22.4.0"
+      jest-regex-util "^22.1.0"
+      jest-resolve-dependencies "^22.1.0"
+      jest-runner "^22.4.2"
+      jest-runtime "^22.4.2"
+      jest-snapshot "^22.4.0"
+      jest-util "^22.4.1"
+      jest-validate "^22.4.2"
+      jest-worker "^22.2.2"
+      micromatch "^2.3.11"
+      node-notifier "^5.2.1"
+      realpath-native "^1.0.0"
+      rimraf "^2.5.4"
+      slash "^1.0.0"
+      string-length "^2.0.0"
+      strip-ansi "^4.0.0"
+      which "^1.2.12"
+      yargs "^10.0.3"
+  
+  jest-config@^22.4.0, jest-config@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.2.tgz#580ba5819bf81a5e48f4fd470e8b81834f45c855"
+    dependencies:
+      chalk "^2.0.1"
+      glob "^7.1.1"
+      jest-environment-jsdom "^22.4.1"
+      jest-environment-node "^22.4.1"
+      jest-get-type "^22.1.0"
+      jest-jasmine2 "^22.4.2"
+      jest-regex-util "^22.1.0"
+      jest-resolve "^22.4.2"
+      jest-util "^22.4.1"
+      jest-validate "^22.4.2"
+      pretty-format "^22.4.0"
+  
+  jest-diff@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.0.tgz#384c2b78519ca44ca126382df53f134289232525"
+    dependencies:
+      chalk "^2.0.1"
+      diff "^3.2.0"
+      jest-get-type "^22.1.0"
+      pretty-format "^22.4.0"
+  
+  jest-docblock@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8"
+    dependencies:
+      detect-newline "^2.1.0"
+  
+  jest-environment-jsdom@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.1.tgz#754f408872441740100d3917e5ec40c74de6447f"
+    dependencies:
+      jest-mock "^22.2.0"
+      jest-util "^22.4.1"
+      jsdom "^11.5.1"
+  
+  jest-environment-node@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.1.tgz#418850eb654596b8d6e36c2021cbedbc23df8e16"
+    dependencies:
+      jest-mock "^22.2.0"
+      jest-util "^22.4.1"
+  
+  jest-get-type@^22.1.0:
+    version "22.1.0"
+    resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9"
+  
+  jest-haste-map@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4"
+    dependencies:
+      fb-watchman "^2.0.0"
+      graceful-fs "^4.1.11"
+      jest-docblock "^22.4.0"
+      jest-serializer "^22.4.0"
+      jest-worker "^22.2.2"
+      micromatch "^2.3.11"
+      sane "^2.0.0"
+  
+  jest-jasmine2@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.2.tgz#dfd3d259579ed6f52510d8f1ab692808f0d40691"
+    dependencies:
+      chalk "^2.0.1"
+      co "^4.6.0"
+      expect "^22.4.0"
+      graceful-fs "^4.1.11"
+      is-generator-fn "^1.0.0"
+      jest-diff "^22.4.0"
+      jest-matcher-utils "^22.4.0"
+      jest-message-util "^22.4.0"
+      jest-snapshot "^22.4.0"
+      jest-util "^22.4.1"
+      source-map-support "^0.5.0"
+  
+  jest-leak-detector@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.0.tgz#64da77f05b001c96d2062226e079f89989c4aa2f"
+    dependencies:
+      pretty-format "^22.4.0"
+  
+  jest-matcher-utils@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz#d55f5faf2270462736bdf7c7485ee931c9d4b6a1"
+    dependencies:
+      chalk "^2.0.1"
+      jest-get-type "^22.1.0"
+      pretty-format "^22.4.0"
+  
+  jest-message-util@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.0.tgz#e3d861df16d2fee60cb2bc8feac2188a42579642"
+    dependencies:
+      "@babel/code-frame" "^7.0.0-beta.35"
+      chalk "^2.0.1"
+      micromatch "^2.3.11"
+      slash "^1.0.0"
+      stack-utils "^1.0.1"
+  
+  jest-mock@^22.2.0:
+    version "22.2.0"
+    resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7"
+  
+  jest-preset-angular@^5.2.1:
+    version "5.2.1"
+    resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-5.2.1.tgz#b93611145bf2ef373c1ffe80d8870af0e91f7b64"
+    dependencies:
+      "@types/jest" "^22.1.3"
+      jest-zone-patch "^0.0.8"
+      ts-jest "^22.4.1"
+  
+  jest-regex-util@^22.1.0:
+    version "22.1.0"
+    resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53"
+  
+  jest-resolve-dependencies@^22.1.0:
+    version "22.1.0"
+    resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31"
+    dependencies:
+      jest-regex-util "^22.1.0"
+  
+  jest-resolve@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.2.tgz#25d88aa4147462c9c1c6a1ba16250d3794c24d00"
+    dependencies:
+      browser-resolve "^1.11.2"
+      chalk "^2.0.1"
+  
+  jest-runner@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.2.tgz#19390ea9d99f768973e16f95a1efa351c0017e87"
+    dependencies:
+      exit "^0.1.2"
+      jest-config "^22.4.2"
+      jest-docblock "^22.4.0"
+      jest-haste-map "^22.4.2"
+      jest-jasmine2 "^22.4.2"
+      jest-leak-detector "^22.4.0"
+      jest-message-util "^22.4.0"
+      jest-runtime "^22.4.2"
+      jest-util "^22.4.1"
+      jest-worker "^22.2.2"
+      throat "^4.0.0"
+  
+  jest-runtime@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.2.tgz#0de0444f65ce15ee4f2e0055133fc7c17b9168f3"
+    dependencies:
+      babel-core "^6.0.0"
+      babel-jest "^22.4.1"
+      babel-plugin-istanbul "^4.1.5"
+      chalk "^2.0.1"
+      convert-source-map "^1.4.0"
+      exit "^0.1.2"
+      graceful-fs "^4.1.11"
+      jest-config "^22.4.2"
+      jest-haste-map "^22.4.2"
+      jest-regex-util "^22.1.0"
+      jest-resolve "^22.4.2"
+      jest-util "^22.4.1"
+      jest-validate "^22.4.2"
+      json-stable-stringify "^1.0.1"
+      micromatch "^2.3.11"
+      realpath-native "^1.0.0"
+      slash "^1.0.0"
+      strip-bom "3.0.0"
+      write-file-atomic "^2.1.0"
+      yargs "^10.0.3"
+  
+  jest-serializer@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566"
+  
+  jest-snapshot@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.0.tgz#03d3ce63f8fa7352388afc6a3c8b5ccc3a180ed7"
+    dependencies:
+      chalk "^2.0.1"
+      jest-diff "^22.4.0"
+      jest-matcher-utils "^22.4.0"
+      mkdirp "^0.5.1"
+      natural-compare "^1.4.0"
+      pretty-format "^22.4.0"
+  
+  jest-sonar-reporter@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/jest-sonar-reporter/-/jest-sonar-reporter-1.3.0.tgz#dd05b57a40d19cc8c8b1e5598acf632dbaafbb85"
+    dependencies:
+      xml "^1.0.1"
+  
+  jest-util@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.1.tgz#dd17c3bdb067f8e90591563ec0c42bf847dc249f"
+    dependencies:
+      callsites "^2.0.0"
+      chalk "^2.0.1"
+      graceful-fs "^4.1.11"
+      is-ci "^1.0.10"
+      jest-message-util "^22.4.0"
+      mkdirp "^0.5.1"
+      source-map "^0.6.0"
+  
+  jest-validate@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.2.tgz#e789a4e056173bf97fe797a2df2d52105c57d4f4"
+    dependencies:
+      chalk "^2.0.1"
+      jest-config "^22.4.2"
+      jest-get-type "^22.1.0"
+      leven "^2.1.0"
+      pretty-format "^22.4.0"
+  
+  jest-worker@^22.2.2:
+    version "22.2.2"
+    resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390"
+    dependencies:
+      merge-stream "^1.0.1"
+  
+  jest-zone-patch@^0.0.8:
+    version "0.0.8"
+    resolved "https://registry.yarnpkg.com/jest-zone-patch/-/jest-zone-patch-0.0.8.tgz#90fa3b5b60e95ad3e624dd2c3eb59bb1dcabd371"
+  
+  jest@^22.4.2:
+    version "22.4.2"
+    resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.2.tgz#34012834a49bf1bdd3bc783850ab44e4499afc20"
+    dependencies:
+      import-local "^1.0.0"
+      jest-cli "^22.4.2"
+  
+  js-base64@^2.1.8, js-base64@^2.1.9:
+    version "2.4.0"
+    resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa"
+  
+  js-tokens@^3.0.0, js-tokens@^3.0.2:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+  
+  js-yaml@^3.4.3, js-yaml@^3.7.0:
+    version "3.10.0"
+    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+    dependencies:
+      argparse "^1.0.7"
+      esprima "^4.0.0"
+  
+  js-yaml@^3.9.0:
+    version "3.11.0"
+    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
+    dependencies:
+      argparse "^1.0.7"
+      esprima "^4.0.0"
+  
+  js-yaml@~3.7.0:
+    version "3.7.0"
+    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+    dependencies:
+      argparse "^1.0.7"
+      esprima "^2.6.0"
+  
+  jsbn@~0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+  
+  jsdom@^11.5.1:
+    version "11.6.2"
+    resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.2.tgz#25d1ef332d48adf77fc5221fe2619967923f16bb"
+    dependencies:
+      abab "^1.0.4"
+      acorn "^5.3.0"
+      acorn-globals "^4.1.0"
+      array-equal "^1.0.0"
+      browser-process-hrtime "^0.1.2"
+      content-type-parser "^1.0.2"
+      cssom ">= 0.3.2 < 0.4.0"
+      cssstyle ">= 0.2.37 < 0.3.0"
+      domexception "^1.0.0"
+      escodegen "^1.9.0"
+      html-encoding-sniffer "^1.0.2"
+      left-pad "^1.2.0"
+      nwmatcher "^1.4.3"
+      parse5 "4.0.0"
+      pn "^1.1.0"
+      request "^2.83.0"
+      request-promise-native "^1.0.5"
+      sax "^1.2.4"
+      symbol-tree "^3.2.2"
+      tough-cookie "^2.3.3"
+      w3c-hr-time "^1.0.1"
+      webidl-conversions "^4.0.2"
+      whatwg-encoding "^1.0.3"
+      whatwg-url "^6.4.0"
+      ws "^4.0.0"
+      xml-name-validator "^3.0.0"
+  
+  jsesc@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+  
+  jsesc@~0.5.0:
+    version "0.5.0"
+    resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+  
+  json-loader@^0.5.4, json-loader@^0.5.7:
+    version "0.5.7"
+    resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+  
+  json-parse-better-errors@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
+  
+  json-schema-traverse@^0.3.0:
+    version "0.3.1"
+    resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+  
+  json-schema@0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+  
+  json-stable-stringify@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+    dependencies:
+      jsonify "~0.0.0"
+  
+  json-stable-stringify@~0.0.0:
+    version "0.0.1"
+    resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
+    dependencies:
+      jsonify "~0.0.0"
+  
+  json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+    version "5.0.1"
+    resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+  
+  json3@3.3.2, json3@^3.3.2:
+    version "3.3.2"
+    resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+  
+  json5@^0.5.0, json5@^0.5.1:
+    version "0.5.1"
+    resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+  
+  jsonfile@^2.1.0:
+    version "2.4.0"
+    resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+    optionalDependencies:
+      graceful-fs "^4.1.6"
+  
+  jsonfile@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
+    optionalDependencies:
+      graceful-fs "^4.1.6"
+  
+  jsonfile@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+    optionalDependencies:
+      graceful-fs "^4.1.6"
+  
+  jsonify@~0.0.0:
+    version "0.0.0"
+    resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+  
+  jsonparse@^1.2.0:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+  
+  jsonpointer@^4.0.0:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+  
+  jsprim@^1.2.2:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+    dependencies:
+      assert-plus "1.0.0"
+      extsprintf "1.3.0"
+      json-schema "0.2.3"
+      verror "1.10.0"
+  
+  karma-chrome-launcher@~2.2.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
+    dependencies:
+      fs-access "^1.0.0"
+      which "^1.2.1"
+  
+  karma-cli@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960"
+    dependencies:
+      resolve "^1.1.6"
+  
+  karma-coverage-istanbul-reporter@^1.2.1:
+    version "1.3.3"
+    resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.3.tgz#daf26051d5a0daa5838a4ce81aa4a41724bdf36b"
+    dependencies:
+      istanbul-api "^1.1.14"
+      minimatch "^3.0.4"
+  
+  karma-jasmine-html-reporter@^0.2.2:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c"
+    dependencies:
+      karma-jasmine "^1.0.2"
+  
+  karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529"
+  
+  karma-source-map-support@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz#1bf81e7bb4b089627ab352ec4179e117c406a540"
+    dependencies:
+      source-map-support "^0.4.1"
+  
+  karma@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58"
+    dependencies:
+      bluebird "^3.3.0"
+      body-parser "^1.16.1"
+      browserify "^14.5.0"
+      chokidar "^1.4.1"
+      colors "^1.1.0"
+      combine-lists "^1.0.0"
+      connect "^3.6.0"
+      core-js "^2.2.0"
+      di "^0.0.1"
+      dom-serialize "^2.2.0"
+      expand-braces "^0.1.1"
+      glob "^7.1.1"
+      graceful-fs "^4.1.2"
+      http-proxy "^1.13.0"
+      isbinaryfile "^3.0.0"
+      lodash "^4.17.4"
+      log4js "^2.3.9"
+      mime "^1.3.4"
+      minimatch "^3.0.2"
+      optimist "^0.6.1"
+      qjobs "^1.1.4"
+      range-parser "^1.2.0"
+      rimraf "^2.6.0"
+      safe-buffer "^5.0.1"
+      socket.io "2.0.4"
+      source-map "^0.6.1"
+      tmp "0.0.33"
+      useragent "^2.1.12"
+  
+  keycode@^2.1.9:
+    version "2.1.9"
+    resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
+  
+  killable@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
+  
+  kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+    version "3.2.2"
+    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+    dependencies:
+      is-buffer "^1.1.5"
+  
+  kind-of@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+    dependencies:
+      is-buffer "^1.1.5"
+  
+  kind-of@^5.0.0:
+    version "5.1.0"
+    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+  
+  kind-of@^6.0.0, kind-of@^6.0.2:
+    version "6.0.2"
+    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+  
+  klaw@^1.0.0:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+    optionalDependencies:
+      graceful-fs "^4.1.9"
+  
+  labeled-stream-splicer@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
+    dependencies:
+      inherits "^2.0.1"
+      isarray "~0.0.1"
+      stream-splicer "^2.0.0"
+  
+  lazy-ass@1.6.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
+  
+  lazy-cache@^1.0.3:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+  
+  lazy-cache@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
+    dependencies:
+      set-getter "^0.1.0"
+  
+  lcid@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+    dependencies:
+      invert-kv "^1.0.0"
+  
+  left-pad@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee"
+  
+  less-loader@^4.0.5:
+    version "4.0.5"
+    resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd"
+    dependencies:
+      clone "^2.1.1"
+      loader-utils "^1.1.0"
+      pify "^2.3.0"
+  
+  less@^2.7.2:
+    version "2.7.3"
+    resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b"
+    optionalDependencies:
+      errno "^0.1.1"
+      graceful-fs "^4.1.2"
+      image-size "~0.5.0"
+      mime "^1.2.11"
+      mkdirp "^0.5.0"
+      promise "^7.1.1"
+      request "2.81.0"
+      source-map "^0.5.3"
+  
+  leven@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+  
+  levn@~0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+    dependencies:
+      prelude-ls "~1.1.2"
+      type-check "~0.3.2"
+  
+  lexical-scope@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
+    dependencies:
+      astw "^2.0.0"
+  
+  libbase64@0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6"
+  
+  libmime@3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6"
+    dependencies:
+      iconv-lite "0.4.15"
+      libbase64 "0.1.0"
+      libqp "1.1.0"
+  
+  libqp@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8"
+  
+  license-webpack-plugin@^1.0.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz#76b2cedccc78f139fd7877e576f756cfc141b8c2"
+    dependencies:
+      ejs "^2.5.7"
+  
+  listr-silent-renderer@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+  
+  listr-update-renderer@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
+    dependencies:
+      chalk "^1.1.3"
+      cli-truncate "^0.2.1"
+      elegant-spinner "^1.0.1"
+      figures "^1.7.0"
+      indent-string "^3.0.0"
+      log-symbols "^1.0.2"
+      log-update "^1.0.2"
+      strip-ansi "^3.0.1"
+  
+  listr-verbose-renderer@^0.4.0:
+    version "0.4.1"
+    resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35"
+    dependencies:
+      chalk "^1.1.3"
+      cli-cursor "^1.0.2"
+      date-fns "^1.27.2"
+      figures "^1.7.0"
+  
+  listr@0.12.0:
+    version "0.12.0"
+    resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
+    dependencies:
+      chalk "^1.1.3"
+      cli-truncate "^0.2.1"
+      figures "^1.7.0"
+      indent-string "^2.1.0"
+      is-promise "^2.1.0"
+      is-stream "^1.1.0"
+      listr-silent-renderer "^1.1.1"
+      listr-update-renderer "^0.2.0"
+      listr-verbose-renderer "^0.4.0"
+      log-symbols "^1.0.2"
+      log-update "^1.0.2"
+      ora "^0.2.3"
+      p-map "^1.1.1"
+      rxjs "^5.0.0-beta.11"
+      stream-to-observable "^0.1.0"
+      strip-ansi "^3.0.1"
+  
+  load-json-file@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+    dependencies:
+      graceful-fs "^4.1.2"
+      parse-json "^2.2.0"
+      pify "^2.0.0"
+      pinkie-promise "^2.0.0"
+      strip-bom "^2.0.0"
+  
+  load-json-file@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+    dependencies:
+      graceful-fs "^4.1.2"
+      parse-json "^2.2.0"
+      pify "^2.0.0"
+      strip-bom "^3.0.0"
+  
+  loader-runner@^2.3.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
+  
+  loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+    dependencies:
+      big.js "^3.1.3"
+      emojis-list "^2.0.0"
+      json5 "^0.5.0"
+  
+  loader-utils@^0.2.15, loader-utils@^0.2.16:
+    version "0.2.17"
+    resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+    dependencies:
+      big.js "^3.1.3"
+      emojis-list "^2.0.0"
+      json5 "^0.5.0"
+      object-assign "^4.0.1"
+  
+  locate-path@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+    dependencies:
+      p-locate "^2.0.0"
+      path-exists "^3.0.0"
+  
+  lodash-es@^4.2.1:
+    version "4.17.5"
+    resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.5.tgz#9fc6e737b1c4d151d8f9cae2247305d552ce748f"
+  
+  lodash._baseassign@^3.0.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
+    dependencies:
+      lodash._basecopy "^3.0.0"
+      lodash.keys "^3.0.0"
+  
+  lodash._basecopy@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+  
+  lodash._basecreate@^3.0.0:
+    version "3.0.3"
+    resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
+  
+  lodash._getnative@^3.0.0:
+    version "3.9.1"
+    resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+  
+  lodash._isiterateecall@^3.0.0:
+    version "3.0.9"
+    resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+  
+  lodash.assign@^4.2.0:
+    version "4.2.0"
+    resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
+  
+  lodash.camelcase@^4.3.0:
+    version "4.3.0"
+    resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+  
+  lodash.clonedeep@4.5.0, lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0:
+    version "4.5.0"
+    resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+  
+  lodash.create@3.1.1:
+    version "3.1.1"
+    resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
+    dependencies:
+      lodash._baseassign "^3.0.0"
+      lodash._basecreate "^3.0.0"
+      lodash._isiterateecall "^3.0.0"
+  
+  lodash.debounce@^4.0.8:
+    version "4.0.8"
+    resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+  
+  lodash.isarguments@^3.0.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+  
+  lodash.isarray@^3.0.0:
+    version "3.0.4"
+    resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+  
+  lodash.isfunction@^3.0.8:
+    version "3.0.9"
+    resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051"
+  
+  lodash.keys@^3.0.0, lodash.keys@^3.1.2:
+    version "3.1.2"
+    resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+    dependencies:
+      lodash._getnative "^3.0.0"
+      lodash.isarguments "^3.0.0"
+      lodash.isarray "^3.0.0"
+  
+  lodash.memoize@^4.1.2:
+    version "4.1.2"
+    resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+  
+  lodash.memoize@~3.0.3:
+    version "3.0.4"
+    resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
+  
+  lodash.mergewith@^4.6.0:
+    version "4.6.0"
+    resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
+  
+  lodash.once@^4.1.1:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+  
+  lodash.pick@^4.4.0:
+    version "4.4.0"
+    resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+  
+  lodash.sortby@^4.7.0:
+    version "4.7.0"
+    resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+  
+  lodash.tail@^4.1.1:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+  
+  lodash.uniq@^4.5.0:
+    version "4.5.0"
+    resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+  
+  lodash@4.17.4, lodash@^4.0.0, lodash@^4.11.1, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.4:
+    version "4.17.4"
+    resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+  
+  lodash@^3.10.1, lodash@^3.5.0:
+    version "3.10.1"
+    resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
+  
+  lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.0, lodash@^4.2.1:
+    version "4.17.5"
+    resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
+  
+  log-symbols@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+    dependencies:
+      chalk "^1.0.0"
+  
+  log-update@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
+    dependencies:
+      ansi-escapes "^1.0.0"
+      cli-cursor "^1.0.2"
+  
+  log4js@^2.3.9:
+    version "2.4.1"
+    resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.4.1.tgz#b0c4e88133e0e3056afdc6f91f7f377576158778"
+    dependencies:
+      circular-json "^0.4.0"
+      date-format "^1.2.0"
+      debug "^3.1.0"
+      semver "^5.3.0"
+      streamroller "^0.7.0"
+    optionalDependencies:
+      axios "^0.15.3"
+      hipchat-notifier "^1.1.0"
+      loggly "^1.1.0"
+      mailgun-js "^0.7.0"
+      nodemailer "^2.5.0"
+      redis "^2.7.1"
+      slack-node "~0.2.0"
+  
+  loggly@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee"
+    dependencies:
+      json-stringify-safe "5.0.x"
+      request "2.75.x"
+      timespan "2.3.x"
+  
+  loglevel@^1.4.1:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
+  
+  longest@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+  
+  loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+    dependencies:
+      js-tokens "^3.0.0"
+  
+  loud-rejection@^1.0.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+    dependencies:
+      currently-unhandled "^0.4.1"
+      signal-exit "^3.0.0"
+  
+  lower-case@^1.1.1:
+    version "1.1.4"
+    resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+  
+  lru-cache@2.2.x:
+    version "2.2.4"
+    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
+  
+  lru-cache@^4.0.1, lru-cache@^4.1.1:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
+    dependencies:
+      pseudomap "^1.0.2"
+      yallist "^2.1.2"
+  
+  lru-cache@~2.6.5:
+    version "2.6.5"
+    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5"
+  
+  macaddress@^0.2.8:
+    version "0.2.8"
+    resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+  
+  magic-string@^0.22.3:
+    version "0.22.4"
+    resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff"
+    dependencies:
+      vlq "^0.2.1"
+  
+  mailcomposer@4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4"
+    dependencies:
+      buildmail "4.0.1"
+      libmime "3.0.0"
+  
+  mailgun-js@^0.7.0:
+    version "0.7.15"
+    resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb"
+    dependencies:
+      async "~2.1.2"
+      debug "~2.2.0"
+      form-data "~2.1.1"
+      inflection "~1.10.0"
+      is-stream "^1.1.0"
+      path-proxy "~1.0.0"
+      proxy-agent "~2.0.0"
+      q "~1.4.0"
+      tsscmp "~1.0.0"
+  
+  make-dir@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
+    dependencies:
+      pify "^3.0.0"
+  
+  make-error@^1.1.1:
+    version "1.3.2"
+    resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4"
+  
+  make-error@^1.3.4:
+    version "1.3.4"
+    resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535"
+  
+  makeerror@1.0.x:
+    version "1.0.11"
+    resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+    dependencies:
+      tmpl "1.0.x"
+  
+  map-cache@^0.2.2:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+  
+  map-obj@^1.0.0, map-obj@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+  
+  map-visit@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+    dependencies:
+      object-visit "^1.0.0"
+  
+  markdown-loader@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-2.0.2.tgz#1cdcf11307658cd611046d7db34c2fe80542af7c"
+    dependencies:
+      loader-utils "^1.1.0"
+      marked "^0.3.9"
+  
+  marked@^0.3.16, marked@^0.3.9:
+    version "0.3.17"
+    resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.17.tgz#607f06668b3c6b1246b28f13da76116ac1aa2d2b"
+  
+  material-colors@^1.2.1:
+    version "1.2.5"
+    resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.5.tgz#5292593e6754cb1bcc2b98030e4e0d6a3afc9ea1"
+  
+  material-design-icons@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/material-design-icons/-/material-design-icons-3.0.1.tgz#9a71c48747218ebca51e51a66da682038cdcb7bf"
+  
+  math-expression-evaluator@^1.2.14:
+    version "1.2.17"
+    resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
+  
+  md5.js@^1.3.4:
+    version "1.3.4"
+    resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+    dependencies:
+      hash-base "^3.0.0"
+      inherits "^2.0.1"
+  
+  media-typer@0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+  
+  mem@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+    dependencies:
+      mimic-fn "^1.0.0"
+  
+  memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
+    version "0.4.1"
+    resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+    dependencies:
+      errno "^0.1.3"
+      readable-stream "^2.0.1"
+  
+  meow@^3.1.0, meow@^3.3.0, meow@^3.7.0:
+    version "3.7.0"
+    resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+    dependencies:
+      camelcase-keys "^2.0.0"
+      decamelize "^1.1.2"
+      loud-rejection "^1.0.0"
+      map-obj "^1.0.1"
+      minimist "^1.1.3"
+      normalize-package-data "^2.3.4"
+      object-assign "^4.0.1"
+      read-pkg-up "^1.0.1"
+      redent "^1.0.0"
+      trim-newlines "^1.0.0"
+  
+  merge-descriptors@1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+  
+  merge-stream@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
+    dependencies:
+      readable-stream "^2.0.1"
+  
+  merge@^1.1.3:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+  
+  methods@~1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+  
+  micromatch@^2.1.5, micromatch@^2.3.11:
+    version "2.3.11"
+    resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+    dependencies:
+      arr-diff "^2.0.0"
+      array-unique "^0.2.1"
+      braces "^1.8.2"
+      expand-brackets "^0.1.4"
+      extglob "^0.3.1"
+      filename-regex "^2.0.0"
+      is-extglob "^1.0.0"
+      is-glob "^2.0.1"
+      kind-of "^3.0.2"
+      normalize-path "^2.0.1"
+      object.omit "^2.0.0"
+      parse-glob "^3.0.4"
+      regex-cache "^0.4.2"
+  
+  micromatch@^3.1.4, micromatch@^3.1.8:
+    version "3.1.9"
+    resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89"
+    dependencies:
+      arr-diff "^4.0.0"
+      array-unique "^0.3.2"
+      braces "^2.3.1"
+      define-property "^2.0.2"
+      extend-shallow "^3.0.2"
+      extglob "^2.0.4"
+      fragment-cache "^0.2.1"
+      kind-of "^6.0.2"
+      nanomatch "^1.2.9"
+      object.pick "^1.3.0"
+      regex-not "^1.0.0"
+      snapdragon "^0.8.1"
+      to-regex "^3.0.1"
+  
+  miller-rabin@^4.0.0:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+    dependencies:
+      bn.js "^4.0.0"
+      brorand "^1.0.1"
+  
+  "mime-db@>= 1.30.0 < 2":
+    version "1.32.0"
+    resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
+  
+  mime-db@~1.30.0:
+    version "1.30.0"
+    resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+  
+  mime-db@~1.33.0:
+    version "1.33.0"
+    resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+  
+  mime-types@^2.1.11, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17:
+    version "2.1.17"
+    resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
+    dependencies:
+      mime-db "~1.30.0"
+  
+  mime-types@^2.1.12, mime-types@~2.1.7:
+    version "2.1.18"
+    resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+    dependencies:
+      mime-db "~1.33.0"
+  
+  mime@1.4.1:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+  
+  mime@^1.2.11, mime@^1.3.4, mime@^1.4.1, mime@^1.5.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+  
+  mimic-fn@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+  
+  min-document@^2.19.0:
+    version "2.19.0"
+    resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+    dependencies:
+      dom-walk "^0.1.0"
+  
+  minimalistic-assert@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+  
+  minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+  
+  "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
+    version "3.0.4"
+    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+    dependencies:
+      brace-expansion "^1.1.7"
+  
+  minimatch@3.0.3:
+    version "3.0.3"
+    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+    dependencies:
+      brace-expansion "^1.0.0"
+  
+  minimist@0.0.8:
+    version "0.0.8"
+    resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+  
+  minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+  
+  minimist@~0.0.1:
+    version "0.0.10"
+    resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+  
+  mississippi@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5"
+    dependencies:
+      concat-stream "^1.5.0"
+      duplexify "^3.4.2"
+      end-of-stream "^1.1.0"
+      flush-write-stream "^1.0.0"
+      from2 "^2.1.0"
+      parallel-transform "^1.1.0"
+      pump "^1.0.0"
+      pumpify "^1.3.3"
+      stream-each "^1.1.0"
+      through2 "^2.0.0"
+  
+  mississippi@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+    dependencies:
+      concat-stream "^1.5.0"
+      duplexify "^3.4.2"
+      end-of-stream "^1.1.0"
+      flush-write-stream "^1.0.0"
+      from2 "^2.1.0"
+      parallel-transform "^1.1.0"
+      pump "^2.0.1"
+      pumpify "^1.3.3"
+      stream-each "^1.1.0"
+      through2 "^2.0.0"
+  
+  mixin-deep@^1.2.0:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+    dependencies:
+      for-in "^1.0.2"
+      is-extendable "^1.0.1"
+  
+  mixin-object@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+    dependencies:
+      for-in "^0.1.3"
+      is-extendable "^0.1.1"
+  
+  mkdirp@0.5.0:
+    version "0.5.0"
+    resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
+    dependencies:
+      minimist "0.0.8"
+  
+  mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+    version "0.5.1"
+    resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+    dependencies:
+      minimist "0.0.8"
+  
+  mobx-angular@>=1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.1.1.tgz#d5e36539acb200186dd5a1170806b4776b9a8b88"
+  
+  mobx-angular@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.0.1.tgz#2638d091618080693bbed02c5df8cd714b52c167"
+  
+  mobx@>=3:
+    version "3.5.1"
+    resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.5.1.tgz#8e682ec535cf44e04005b9e37e2df66acc975a42"
+  
+  mobx@^3.4.1:
+    version "3.4.1"
+    resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.4.1.tgz#37abe5ee882d401828d9f26c6c1a2f47614bbbef"
+  
+  mocha-rp-reporter@^1.0.12:
+    version "1.0.12"
+    resolved "https://registry.yarnpkg.com/mocha-rp-reporter/-/mocha-rp-reporter-1.0.12.tgz#408d2660d3f3e58f9762f6005e92bd1f9839b30e"
+    dependencies:
+      mocha "^3.2.0"
+      sync-rest-client "^1.0.3"
+  
+  mocha@^3.2.0:
+    version "3.5.3"
+    resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
+    dependencies:
+      browser-stdout "1.3.0"
+      commander "2.9.0"
+      debug "2.6.8"
+      diff "3.2.0"
+      escape-string-regexp "1.0.5"
+      glob "7.1.1"
+      growl "1.9.2"
+      he "1.1.1"
+      json3 "3.3.2"
+      lodash.create "3.1.1"
+      mkdirp "0.5.1"
+      supports-color "3.1.2"
+  
+  mocha@^5.0.0:
+    version "5.0.0"
+    resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e"
+    dependencies:
+      browser-stdout "1.3.0"
+      commander "2.11.0"
+      debug "3.1.0"
+      diff "3.3.1"
+      escape-string-regexp "1.0.5"
+      glob "7.1.2"
+      growl "1.10.3"
+      he "1.1.1"
+      mkdirp "0.5.1"
+      supports-color "4.4.0"
+  
+  mochawesome-report-generator@^3.0.1:
+    version "3.1.1"
+    resolved "https://registry.yarnpkg.com/mochawesome-report-generator/-/mochawesome-report-generator-3.1.1.tgz#4008aef2cd57c2af9ff2905ed6480d5804d86965"
+    dependencies:
+      chalk "^2.3.0"
+      dateformat "^3.0.2"
+      fs-extra "^4.0.2"
+      fsu "^1.0.2"
+      lodash.isfunction "^3.0.8"
+      opener "^1.4.2"
+      prop-types "^15.5.8"
+      react "^16.0.0"
+      react-dom "^16.0.0"
+      tcomb "^3.2.17"
+      tcomb-validation "^3.3.0"
+      validator "^9.1.2"
+      yargs "^10.0.3"
+  
+  mochawesome@^3.0.2:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/mochawesome/-/mochawesome-3.0.2.tgz#6884a8bb85c1d5033fe1d2e278ee309f433e750d"
+    dependencies:
+      babel-runtime "^6.20.0"
+      chalk "^2.3.0"
+      diff "^3.4.0"
+      json-stringify-safe "^5.0.1"
+      lodash "^4.17.3"
+      mochawesome-report-generator "^3.0.1"
+      strip-ansi "^4.0.0"
+      uuid "^3.0.1"
+  
+  module-deps@^4.0.8:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd"
+    dependencies:
+      JSONStream "^1.0.3"
+      browser-resolve "^1.7.0"
+      cached-path-relative "^1.0.0"
+      concat-stream "~1.5.0"
+      defined "^1.0.0"
+      detective "^4.0.0"
+      duplexer2 "^0.1.2"
+      inherits "^2.0.1"
+      parents "^1.0.0"
+      readable-stream "^2.0.2"
+      resolve "^1.1.3"
+      stream-combiner2 "^1.1.1"
+      subarg "^1.0.0"
+      through2 "^2.0.0"
+      xtend "^4.0.0"
+  
+  moment@^2.20.1:
+    version "2.21.0"
+    resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a"
+  
+  move-concurrently@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+    dependencies:
+      aproba "^1.1.1"
+      copy-concurrently "^1.0.0"
+      fs-write-stream-atomic "^1.0.8"
+      mkdirp "^0.5.1"
+      rimraf "^2.5.4"
+      run-queue "^1.0.3"
+  
+  ms@0.7.1:
+    version "0.7.1"
+    resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+  
+  ms@2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+  
+  multicast-dns-service-types@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+  
+  multicast-dns@^6.0.1:
+    version "6.2.1"
+    resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.1.tgz#c5035defa9219d30640558a49298067352098060"
+    dependencies:
+      dns-packet "^1.0.1"
+      thunky "^0.1.0"
+  
+  mute-stream@0.0.7:
+    version "0.0.7"
+    resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+  
+  nan@^2.0.7:
+    version "2.9.2"
+    resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866"
+  
+  nan@^2.3.0, nan@^2.3.2:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+  
+  nanomatch@^1.2.9:
+    version "1.2.9"
+    resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
+    dependencies:
+      arr-diff "^4.0.0"
+      array-unique "^0.3.2"
+      define-property "^2.0.2"
+      extend-shallow "^3.0.2"
+      fragment-cache "^0.2.1"
+      is-odd "^2.0.0"
+      is-windows "^1.0.2"
+      kind-of "^6.0.2"
+      object.pick "^1.3.0"
+      regex-not "^1.0.0"
+      snapdragon "^0.8.1"
+      to-regex "^3.0.1"
+  
+  natural-compare@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+  
+  ncname@1.0.x:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
+    dependencies:
+      xml-char-classes "^1.0.0"
+  
+  negotiator@0.6.1:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+  
+  neo-async@^2.5.0:
+    version "2.5.0"
+    resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f"
+  
+  netmask@~1.0.4:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35"
+  
+  ngx-toastr@^8.2.1:
+    version "8.2.1"
+    resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.2.1.tgz#86cffec666a9dadde5f8a37f2a8fe2ab527b3dde"
+    dependencies:
+      tslib "^1.7.1"
+  
+  no-case@^2.2.0:
+    version "2.3.2"
+    resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+    dependencies:
+      lower-case "^1.1.1"
+  
+  node-dir@^0.1.10:
+    version "0.1.17"
+    resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
+    dependencies:
+      minimatch "^3.0.2"
+  
+  node-fetch@^1.0.1:
+    version "1.7.3"
+    resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+    dependencies:
+      encoding "^0.1.11"
+      is-stream "^1.0.1"
+  
+  node-forge@0.6.33:
+    version "0.6.33"
+    resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
+  
+  node-gyp@^3.3.1:
+    version "3.6.2"
+    resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+    dependencies:
+      fstream "^1.0.0"
+      glob "^7.0.3"
+      graceful-fs "^4.1.2"
+      minimatch "^3.0.2"
+      mkdirp "^0.5.0"
+      nopt "2 || 3"
+      npmlog "0 || 1 || 2 || 3 || 4"
+      osenv "0"
+      request "2"
+      rimraf "2"
+      semver "~5.3.0"
+      tar "^2.0.0"
+      which "1"
+  
+  node-int64@^0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+  
+  node-libs-browser@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
+    dependencies:
+      assert "^1.1.1"
+      browserify-zlib "^0.2.0"
+      buffer "^4.3.0"
+      console-browserify "^1.1.0"
+      constants-browserify "^1.0.0"
+      crypto-browserify "^3.11.0"
+      domain-browser "^1.1.1"
+      events "^1.0.0"
+      https-browserify "^1.0.0"
+      os-browserify "^0.3.0"
+      path-browserify "0.0.0"
+      process "^0.11.10"
+      punycode "^1.2.4"
+      querystring-es3 "^0.2.0"
+      readable-stream "^2.3.3"
+      stream-browserify "^2.0.1"
+      stream-http "^2.7.2"
+      string_decoder "^1.0.0"
+      timers-browserify "^2.0.4"
+      tty-browserify "0.0.0"
+      url "^0.11.0"
+      util "^0.10.3"
+      vm-browserify "0.0.4"
+  
+  node-modules-path@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/node-modules-path/-/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8"
+  
+  node-notifier@^5.2.1:
+    version "5.2.1"
+    resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea"
+    dependencies:
+      growly "^1.3.0"
+      semver "^5.4.1"
+      shellwords "^0.1.1"
+      which "^1.3.0"
+  
+  node-pre-gyp@^0.6.39:
+    version "0.6.39"
+    resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
+    dependencies:
+      detect-libc "^1.0.2"
+      hawk "3.1.3"
+      mkdirp "^0.5.1"
+      nopt "^4.0.1"
+      npmlog "^4.0.2"
+      rc "^1.1.7"
+      request "2.81.0"
+      rimraf "^2.6.1"
+      semver "^5.3.0"
+      tar "^2.2.1"
+      tar-pack "^3.4.0"
+  
+  node-sass@^4.7.2:
+    version "4.7.2"
+    resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
+    dependencies:
+      async-foreach "^0.1.3"
+      chalk "^1.1.1"
+      cross-spawn "^3.0.0"
+      gaze "^1.0.0"
+      get-stdin "^4.0.1"
+      glob "^7.0.3"
+      in-publish "^2.0.0"
+      lodash.assign "^4.2.0"
+      lodash.clonedeep "^4.3.2"
+      lodash.mergewith "^4.6.0"
+      meow "^3.7.0"
+      mkdirp "^0.5.1"
+      nan "^2.3.2"
+      node-gyp "^3.3.1"
+      npmlog "^4.0.0"
+      request "~2.79.0"
+      sass-graph "^2.2.4"
+      stdout-stream "^1.4.0"
+      "true-case-path" "^1.0.2"
+  
+  node-uuid@~1.4.7:
+    version "1.4.8"
+    resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
+  
+  nodemailer-direct-transport@3.3.2:
+    version "3.3.2"
+    resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86"
+    dependencies:
+      nodemailer-shared "1.1.0"
+      smtp-connection "2.12.0"
+  
+  nodemailer-fetch@1.6.0:
+    version "1.6.0"
+    resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4"
+  
+  nodemailer-shared@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0"
+    dependencies:
+      nodemailer-fetch "1.6.0"
+  
+  nodemailer-smtp-pool@2.8.2:
+    version "2.8.2"
+    resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72"
+    dependencies:
+      nodemailer-shared "1.1.0"
+      nodemailer-wellknown "0.1.10"
+      smtp-connection "2.12.0"
+  
+  nodemailer-smtp-transport@2.7.2:
+    version "2.7.2"
+    resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77"
+    dependencies:
+      nodemailer-shared "1.1.0"
+      nodemailer-wellknown "0.1.10"
+      smtp-connection "2.12.0"
+  
+  nodemailer-wellknown@0.1.10:
+    version "0.1.10"
+    resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5"
+  
+  nodemailer@^2.5.0:
+    version "2.7.2"
+    resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9"
+    dependencies:
+      libmime "3.0.0"
+      mailcomposer "4.0.1"
+      nodemailer-direct-transport "3.3.2"
+      nodemailer-shared "1.1.0"
+      nodemailer-smtp-pool "2.8.2"
+      nodemailer-smtp-transport "2.7.2"
+      socks "1.1.9"
+  
+  "nopt@2 || 3":
+    version "3.0.6"
+    resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+    dependencies:
+      abbrev "1"
+  
+  nopt@^4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+    dependencies:
+      abbrev "1"
+      osenv "^0.1.4"
+  
+  normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+    version "2.4.0"
+    resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
+    dependencies:
+      hosted-git-info "^2.1.4"
+      is-builtin-module "^1.0.0"
+      semver "2 || 3 || 4 || 5"
+      validate-npm-package-license "^3.0.1"
+  
+  normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+    dependencies:
+      remove-trailing-separator "^1.0.1"
+  
+  normalize-range@^0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+  
+  normalize-url@^1.4.0:
+    version "1.9.1"
+    resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+    dependencies:
+      object-assign "^4.0.1"
+      prepend-http "^1.0.0"
+      query-string "^4.1.0"
+      sort-keys "^1.0.0"
+  
+  npm-run-path@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+    dependencies:
+      path-key "^2.0.0"
+  
+  "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2:
+    version "4.1.2"
+    resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+    dependencies:
+      are-we-there-yet "~1.1.2"
+      console-control-strings "~1.1.0"
+      gauge "~2.7.3"
+      set-blocking "~2.0.0"
+  
+  nth-check@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+    dependencies:
+      boolbase "~1.0.0"
+  
+  nugget@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
+    dependencies:
+      debug "^2.1.3"
+      minimist "^1.1.0"
+      pretty-bytes "^1.0.2"
+      progress-stream "^1.1.0"
+      request "^2.45.0"
+      single-line-log "^1.1.2"
+      throttleit "0.0.2"
+  
+  null-check@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
+  
+  num2fraction@^1.2.2:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+  
+  number-is-nan@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+  
+  nwmatcher@^1.4.3:
+    version "1.4.3"
+    resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
+  
+  oauth-sign@~0.8.1, oauth-sign@~0.8.2:
+    version "0.8.2"
+    resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+  
+  object-assign@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
+  
+  object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+  
+  object-component@0.0.3:
+    version "0.0.3"
+    resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
+  
+  object-copy@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+    dependencies:
+      copy-descriptor "^0.1.0"
+      define-property "^0.2.5"
+      kind-of "^3.0.3"
+  
+  object-keys@^1.0.8:
+    version "1.0.11"
+    resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+  
+  object-keys@~0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+  
+  object-visit@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+    dependencies:
+      isobject "^3.0.0"
+  
+  object.entries@^1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.6.1"
+      function-bind "^1.1.0"
+      has "^1.0.1"
+  
+  object.getownpropertydescriptors@^2.0.3:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.5.1"
+  
+  object.omit@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+    dependencies:
+      for-own "^0.1.4"
+      is-extendable "^0.1.1"
+  
+  object.pick@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+    dependencies:
+      isobject "^3.0.1"
+  
+  object.values@^1.0.4:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.6.1"
+      function-bind "^1.1.0"
+      has "^1.0.1"
+  
+  obuf@^1.0.0, obuf@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+  
+  on-finished@~2.3.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+    dependencies:
+      ee-first "1.1.1"
+  
+  on-headers@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
+  
+  once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+    dependencies:
+      wrappy "1"
+  
+  onetime@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+  
+  onetime@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+    dependencies:
+      mimic-fn "^1.0.0"
+  
+  opener@^1.4.2:
+    version "1.4.3"
+    resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
+  
+  opn@5.2.0, opn@^5.1.0:
+    version "5.2.0"
+    resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+    dependencies:
+      is-wsl "^1.1.0"
+  
+  opn@~5.1.0:
+    version "5.1.0"
+    resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
+    dependencies:
+      is-wsl "^1.1.0"
+  
+  optimist@^0.6.1, optimist@~0.6.0:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+    dependencies:
+      minimist "~0.0.1"
+      wordwrap "~0.0.2"
+  
+  optionator@^0.8.1:
+    version "0.8.2"
+    resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+    dependencies:
+      deep-is "~0.1.3"
+      fast-levenshtein "~2.0.4"
+      levn "~0.3.0"
+      prelude-ls "~1.1.2"
+      type-check "~0.3.2"
+      wordwrap "~1.0.0"
+  
+  options@>=0.0.5:
+    version "0.0.6"
+    resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
+  
+  ora@^0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
+    dependencies:
+      chalk "^1.1.1"
+      cli-cursor "^1.0.2"
+      cli-spinners "^0.1.2"
+      object-assign "^4.0.1"
+  
+  original@>=0.0.5:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+    dependencies:
+      url-parse "1.0.x"
+  
+  os-browserify@^0.3.0, os-browserify@~0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+  
+  os-homedir@^1.0.0, os-homedir@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+  
+  os-locale@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+    dependencies:
+      lcid "^1.0.0"
+  
+  os-locale@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
+    dependencies:
+      execa "^0.7.0"
+      lcid "^1.0.0"
+      mem "^1.1.0"
+  
+  os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+  
+  osenv@0, osenv@^0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+    dependencies:
+      os-homedir "^1.0.0"
+      os-tmpdir "^1.0.0"
+  
+  p-finally@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+  
+  p-limit@^1.0.0, p-limit@^1.1.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+    dependencies:
+      p-try "^1.0.0"
+  
+  p-locate@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+    dependencies:
+      p-limit "^1.1.0"
+  
+  p-map@^1.1.1:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+  
+  p-try@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+  
+  pac-proxy-agent@1:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d"
+    dependencies:
+      agent-base "2"
+      debug "2"
+      extend "3"
+      get-uri "2"
+      http-proxy-agent "1"
+      https-proxy-agent "1"
+      pac-resolver "~2.0.0"
+      raw-body "2"
+      socks-proxy-agent "2"
+  
+  pac-resolver@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd"
+    dependencies:
+      co "~3.0.6"
+      degenerator "~1.0.2"
+      ip "1.0.1"
+      netmask "~1.0.4"
+      thunkify "~2.1.1"
+  
+  pako@~1.0.5:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+  
+  papaparse@^4.3.6:
+    version "4.3.6"
+    resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-4.3.6.tgz#9566eda0ecab13afcb740a62381c699f486cb145"
+  
+  parallel-transform@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+    dependencies:
+      cyclist "~0.2.2"
+      inherits "^2.0.3"
+      readable-stream "^2.1.5"
+  
+  param-case@2.1.x:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+    dependencies:
+      no-case "^2.2.0"
+  
+  parents@^1.0.0, parents@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
+    dependencies:
+      path-platform "~0.11.15"
+  
+  parse-asn1@^5.0.0:
+    version "5.1.0"
+    resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+    dependencies:
+      asn1.js "^4.0.0"
+      browserify-aes "^1.0.0"
+      create-hash "^1.1.0"
+      evp_bytestokey "^1.0.0"
+      pbkdf2 "^3.0.3"
+  
+  parse-glob@^3.0.4:
+    version "3.0.4"
+    resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+    dependencies:
+      glob-base "^0.3.0"
+      is-dotfile "^1.0.0"
+      is-extglob "^1.0.0"
+      is-glob "^2.0.0"
+  
+  parse-json@^2.2.0:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+    dependencies:
+      error-ex "^1.2.0"
+  
+  parse-json@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+    dependencies:
+      error-ex "^1.3.1"
+      json-parse-better-errors "^1.0.1"
+  
+  parse-passwd@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+  
+  parse5@4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
+  
+  parseqs@0.0.5:
+    version "0.0.5"
+    resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
+    dependencies:
+      better-assert "~1.0.0"
+  
+  parseuri@0.0.5:
+    version "0.0.5"
+    resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
+    dependencies:
+      better-assert "~1.0.0"
+  
+  parseurl@~1.3.2:
+    version "1.3.2"
+    resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+  
+  pascalcase@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+  
+  path-browserify@0.0.0, path-browserify@~0.0.0:
+    version "0.0.0"
+    resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+  
+  path-dirname@^1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+  
+  path-exists@^2.0.0, path-exists@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+    dependencies:
+      pinkie-promise "^2.0.0"
+  
+  path-exists@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+  
+  path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+  
+  path-is-inside@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+  
+  path-key@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+  
+  path-parse@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+  
+  path-platform@~0.11.15:
+    version "0.11.15"
+    resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+  
+  path-proxy@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e"
+    dependencies:
+      inflection "~1.3.0"
+  
+  path-to-regexp@0.1.7:
+    version "0.1.7"
+    resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+  
+  path-type@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+    dependencies:
+      graceful-fs "^4.1.2"
+      pify "^2.0.0"
+      pinkie-promise "^2.0.0"
+  
+  path-type@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+    dependencies:
+      pify "^2.0.0"
+  
+  path-type@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+    dependencies:
+      pify "^3.0.0"
+  
+  pbkdf2@^3.0.3:
+    version "3.0.14"
+    resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+    dependencies:
+      create-hash "^1.1.2"
+      create-hmac "^1.1.4"
+      ripemd160 "^2.0.1"
+      safe-buffer "^5.0.1"
+      sha.js "^2.4.8"
+  
+  pend@~1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+  
+  performance-now@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+  
+  performance-now@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+  
+  pify@^2.0.0, pify@^2.3.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+  
+  pify@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+  
+  pinkie-promise@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+    dependencies:
+      pinkie "^2.0.0"
+  
+  pinkie@^2.0.0:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+  
+  pkg-dir@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+    dependencies:
+      find-up "^2.1.0"
+  
+  pn@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
+  
+  portfinder@^1.0.9, portfinder@~1.0.12:
+    version "1.0.13"
+    resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+    dependencies:
+      async "^1.5.2"
+      debug "^2.2.0"
+      mkdirp "0.5.x"
+  
+  posix-character-classes@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+  
+  postcss-calc@^5.2.0:
+    version "5.3.1"
+    resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+    dependencies:
+      postcss "^5.0.2"
+      postcss-message-helpers "^2.0.0"
+      reduce-css-calc "^1.2.6"
+  
+  postcss-colormin@^2.1.8:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+    dependencies:
+      colormin "^1.0.5"
+      postcss "^5.0.13"
+      postcss-value-parser "^3.2.3"
+  
+  postcss-convert-values@^2.3.4:
+    version "2.6.1"
+    resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+    dependencies:
+      postcss "^5.0.11"
+      postcss-value-parser "^3.1.2"
+  
+  postcss-discard-comments@^2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+    dependencies:
+      postcss "^5.0.14"
+  
+  postcss-discard-duplicates@^2.0.1:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+    dependencies:
+      postcss "^5.0.4"
+  
+  postcss-discard-empty@^2.0.1:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+    dependencies:
+      postcss "^5.0.14"
+  
+  postcss-discard-overridden@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+    dependencies:
+      postcss "^5.0.16"
+  
+  postcss-discard-unused@^2.2.1:
+    version "2.2.3"
+    resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+    dependencies:
+      postcss "^5.0.14"
+      uniqs "^2.0.0"
+  
+  postcss-filter-plugins@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+    dependencies:
+      postcss "^5.0.4"
+      uniqid "^4.0.0"
+  
+  postcss-flexbugs-fixes@^3.2.0, postcss-flexbugs-fixes@^3.3.0:
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.0.tgz#e00849b536063749da50a0d410ba5d9ee65e27b8"
+    dependencies:
+      postcss "^6.0.1"
+  
+  postcss-import@^11.0.0:
+    version "11.0.0"
+    resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.0.0.tgz#a962e2df82d3bc5a6da6a386841747204f41ef5b"
+    dependencies:
+      postcss "^6.0.1"
+      postcss-value-parser "^3.2.3"
+      read-cache "^1.0.0"
+      resolve "^1.1.7"
+  
+  postcss-load-config@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+    dependencies:
+      cosmiconfig "^2.1.0"
+      object-assign "^4.1.0"
+      postcss-load-options "^1.2.0"
+      postcss-load-plugins "^2.3.0"
+  
+  postcss-load-options@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
+    dependencies:
+      cosmiconfig "^2.1.0"
+      object-assign "^4.1.0"
+  
+  postcss-load-plugins@^2.3.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
+    dependencies:
+      cosmiconfig "^2.1.1"
+      object-assign "^4.1.0"
+  
+  postcss-loader@^2.0.10:
+    version "2.0.10"
+    resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674"
+    dependencies:
+      loader-utils "^1.1.0"
+      postcss "^6.0.0"
+      postcss-load-config "^1.2.0"
+      schema-utils "^0.3.0"
+  
+  postcss-loader@^2.1.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.1.tgz#208935af3b1d65e1abb1a870a912dd12e7b36895"
+    dependencies:
+      loader-utils "^1.1.0"
+      postcss "^6.0.0"
+      postcss-load-config "^1.2.0"
+      schema-utils "^0.4.0"
+  
+  postcss-merge-idents@^2.1.5:
+    version "2.1.7"
+    resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+    dependencies:
+      has "^1.0.1"
+      postcss "^5.0.10"
+      postcss-value-parser "^3.1.1"
+  
+  postcss-merge-longhand@^2.0.1:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+    dependencies:
+      postcss "^5.0.4"
+  
+  postcss-merge-rules@^2.0.3:
+    version "2.1.2"
+    resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+    dependencies:
+      browserslist "^1.5.2"
+      caniuse-api "^1.5.2"
+      postcss "^5.0.4"
+      postcss-selector-parser "^2.2.2"
+      vendors "^1.0.0"
+  
+  postcss-message-helpers@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+  
+  postcss-minify-font-values@^1.0.2:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+    dependencies:
+      object-assign "^4.0.1"
+      postcss "^5.0.4"
+      postcss-value-parser "^3.0.2"
+  
+  postcss-minify-gradients@^1.0.1:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+    dependencies:
+      postcss "^5.0.12"
+      postcss-value-parser "^3.3.0"
+  
+  postcss-minify-params@^1.0.4:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+    dependencies:
+      alphanum-sort "^1.0.1"
+      postcss "^5.0.2"
+      postcss-value-parser "^3.0.2"
+      uniqs "^2.0.0"
+  
+  postcss-minify-selectors@^2.0.4:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+    dependencies:
+      alphanum-sort "^1.0.2"
+      has "^1.0.1"
+      postcss "^5.0.14"
+      postcss-selector-parser "^2.0.0"
+  
+  postcss-modules-extract-imports@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
+    dependencies:
+      postcss "^6.0.1"
+  
+  postcss-modules-local-by-default@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+    dependencies:
+      css-selector-tokenizer "^0.7.0"
+      postcss "^6.0.1"
+  
+  postcss-modules-scope@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+    dependencies:
+      css-selector-tokenizer "^0.7.0"
+      postcss "^6.0.1"
+  
+  postcss-modules-values@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+    dependencies:
+      icss-replace-symbols "^1.1.0"
+      postcss "^6.0.1"
+  
+  postcss-normalize-charset@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+    dependencies:
+      postcss "^5.0.5"
+  
+  postcss-normalize-url@^3.0.7:
+    version "3.0.8"
+    resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+    dependencies:
+      is-absolute-url "^2.0.0"
+      normalize-url "^1.4.0"
+      postcss "^5.0.14"
+      postcss-value-parser "^3.2.3"
+  
+  postcss-ordered-values@^2.1.0:
+    version "2.2.3"
+    resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+    dependencies:
+      postcss "^5.0.4"
+      postcss-value-parser "^3.0.1"
+  
+  postcss-reduce-idents@^2.2.2:
+    version "2.4.0"
+    resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+    dependencies:
+      postcss "^5.0.4"
+      postcss-value-parser "^3.0.2"
+  
+  postcss-reduce-initial@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+    dependencies:
+      postcss "^5.0.4"
+  
+  postcss-reduce-transforms@^1.0.3:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+    dependencies:
+      has "^1.0.1"
+      postcss "^5.0.8"
+      postcss-value-parser "^3.0.1"
+  
+  postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+    version "2.2.3"
+    resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+    dependencies:
+      flatten "^1.0.2"
+      indexes-of "^1.0.1"
+      uniq "^1.0.1"
+  
+  postcss-svgo@^2.1.1:
+    version "2.1.6"
+    resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+    dependencies:
+      is-svg "^2.0.0"
+      postcss "^5.0.14"
+      postcss-value-parser "^3.2.3"
+      svgo "^0.7.0"
+  
+  postcss-unique-selectors@^2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+    dependencies:
+      alphanum-sort "^1.0.1"
+      postcss "^5.0.4"
+      uniqs "^2.0.0"
+  
+  postcss-url@^7.1.2:
+    version "7.3.0"
+    resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.0.tgz#cf2f45e06743cf43cfea25309f81cbc003dc783f"
+    dependencies:
+      mime "^1.4.1"
+      minimatch "^3.0.4"
+      mkdirp "^0.5.0"
+      postcss "^6.0.1"
+      xxhashjs "^0.2.1"
+  
+  postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+    version "3.3.0"
+    resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+  
+  postcss-zindex@^2.0.1:
+    version "2.2.0"
+    resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+    dependencies:
+      has "^1.0.1"
+      postcss "^5.0.4"
+      uniqs "^2.0.0"
+  
+  postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
+    version "5.2.18"
+    resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+    dependencies:
+      chalk "^1.1.3"
+      js-base64 "^2.1.9"
+      source-map "^0.5.6"
+      supports-color "^3.2.3"
+  
+  postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.16:
+    version "6.0.16"
+    resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146"
+    dependencies:
+      chalk "^2.3.0"
+      source-map "^0.6.1"
+      supports-color "^5.1.0"
+  
+  postcss@^6.0.17:
+    version "6.0.19"
+    resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555"
+    dependencies:
+      chalk "^2.3.1"
+      source-map "^0.6.1"
+      supports-color "^5.2.0"
+  
+  prelude-ls@~1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+  
+  prepend-http@^1.0.0:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+  
+  preserve@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+  
+  pretty-bytes@^1.0.2:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
+    dependencies:
+      get-stdin "^4.0.1"
+      meow "^3.1.0"
+  
+  pretty-checkbox@3.0.3:
+    version "3.0.3"
+    resolved "https://registry.yarnpkg.com/pretty-checkbox/-/pretty-checkbox-3.0.3.tgz#d49c8013a8fc08ee0c2d6ebde453464bfdbc428e"
+  
+  pretty-error@^2.0.2:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
+    dependencies:
+      renderkid "^2.0.1"
+      utila "~0.4"
+  
+  pretty-format@^22.4.0:
+    version "22.4.0"
+    resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.0.tgz#237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94"
+    dependencies:
+      ansi-regex "^3.0.0"
+      ansi-styles "^3.2.0"
+  
+  primeng@^5.0.2:
+    version "5.0.2"
+    resolved "https://registry.yarnpkg.com/primeng/-/primeng-5.0.2.tgz#05c4a4502efd4c3bc5d506aa01ae8eb30f9764db"
+  
+  private@^0.1.6, private@^0.1.7, private@~0.1.5:
+    version "0.1.8"
+    resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+  
+  process-nextick-args@~1.0.6:
+    version "1.0.7"
+    resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+  
+  process-nextick-args@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+  
+  process@^0.11.10, process@~0.11.0:
+    version "0.11.10"
+    resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+  
+  process@~0.5.1:
+    version "0.5.2"
+    resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
+  
+  progress-stream@^1.1.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
+    dependencies:
+      speedometer "~0.1.2"
+      through2 "~0.2.3"
+  
+  progress@1.1.8:
+    version "1.1.8"
+    resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+  
+  promise-inflight@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+  
+  promise.prototype.finally@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz#66f161b1643636e50e7cf201dc1b84a857f3864e"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.9.0"
+      function-bind "^1.1.1"
+  
+  promise@^7.1.1:
+    version "7.3.1"
+    resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
+    dependencies:
+      asap "~2.0.3"
+  
+  prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.9:
+    version "15.6.1"
+    resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
+    dependencies:
+      fbjs "^0.8.16"
+      loose-envify "^1.3.1"
+      object-assign "^4.1.1"
+  
+  prop-types@^15.5.8, prop-types@^15.6.0:
+    version "15.6.0"
+    resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+    dependencies:
+      fbjs "^0.8.16"
+      loose-envify "^1.3.1"
+      object-assign "^4.1.1"
+  
+  protractor@~5.1.2:
+    version "5.1.2"
+    resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.1.2.tgz#9b221741709a4c62d5cd53c6aadd54a71137e95f"
+    dependencies:
+      "@types/node" "^6.0.46"
+      "@types/q" "^0.0.32"
+      "@types/selenium-webdriver" "~2.53.39"
+      blocking-proxy "0.0.5"
+      chalk "^1.1.3"
+      glob "^7.0.3"
+      jasmine "^2.5.3"
+      jasminewd2 "^2.1.0"
+      optimist "~0.6.0"
+      q "1.4.1"
+      saucelabs "~1.3.0"
+      selenium-webdriver "3.0.1"
+      source-map-support "~0.4.0"
+      webdriver-js-extender "^1.0.0"
+      webdriver-manager "^12.0.6"
+  
+  proxy-addr@~2.0.2:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
+    dependencies:
+      forwarded "~0.1.2"
+      ipaddr.js "1.5.2"
+  
+  proxy-agent@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499"
+    dependencies:
+      agent-base "2"
+      debug "2"
+      extend "3"
+      http-proxy-agent "1"
+      https-proxy-agent "1"
+      lru-cache "~2.6.5"
+      pac-proxy-agent "1"
+      socks-proxy-agent "2"
+  
+  prr@~1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+  
+  pseudomap@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+  
+  public-encrypt@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+    dependencies:
+      bn.js "^4.1.0"
+      browserify-rsa "^4.0.0"
+      create-hash "^1.1.0"
+      parse-asn1 "^5.0.0"
+      randombytes "^2.0.1"
+  
+  pump@^1.0.0:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
+    dependencies:
+      end-of-stream "^1.1.0"
+      once "^1.3.1"
+  
+  pump@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.0.tgz#7946da1c8d622b098e2ceb2d3476582470829c9d"
+    dependencies:
+      end-of-stream "^1.1.0"
+      once "^1.3.1"
+  
+  pump@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+    dependencies:
+      end-of-stream "^1.1.0"
+      once "^1.3.1"
+  
+  pumpify@^1.3.3:
+    version "1.3.6"
+    resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.6.tgz#00d40e5ded0a3bf1e0788b1c0cf426a42882ab64"
+    dependencies:
+      duplexify "^3.5.3"
+      inherits "^2.0.3"
+      pump "^2.0.0"
+  
+  punycode@1.3.2:
+    version "1.3.2"
+    resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+  
+  punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+  
+  punycode@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+  
+  q@1.4.1, q@~1.4.0:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
+  
+  q@^1.1.2, q@^1.4.1:
+    version "1.5.1"
+    resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+  
+  qjobs@^1.1.4:
+    version "1.1.5"
+    resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73"
+  
+  qs@6.5.1, qs@^6.5.1, qs@~6.5.1:
+    version "6.5.1"
+    resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+  
+  qs@~6.2.0:
+    version "6.2.3"
+    resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe"
+  
+  qs@~6.3.0:
+    version "6.3.2"
+    resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+  
+  qs@~6.4.0:
+    version "6.4.0"
+    resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+  
+  query-string@^4.1.0:
+    version "4.3.4"
+    resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+    dependencies:
+      object-assign "^4.1.0"
+      strict-uri-encode "^1.0.0"
+  
+  querystring-es3@^0.2.0, querystring-es3@~0.2.0:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+  
+  querystring@0.2.0, querystring@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+  
+  querystringify@0.0.x:
+    version "0.0.4"
+    resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
+  
+  querystringify@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+  
+  radium@^0.19.0:
+    version "0.19.6"
+    resolved "https://registry.yarnpkg.com/radium/-/radium-0.19.6.tgz#b86721d08dbd303b061a4ae2ebb06cc6e335ae72"
+    dependencies:
+      array-find "^1.0.0"
+      exenv "^1.2.1"
+      inline-style-prefixer "^2.0.5"
+      prop-types "^15.5.8"
+  
+  ramda@0.24.1:
+    version "0.24.1"
+    resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857"
+  
+  ramda@^0.25.0:
+    version "0.25.0"
+    resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9"
+  
+  randomatic@^1.1.3:
+    version "1.1.7"
+    resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+    dependencies:
+      is-number "^3.0.0"
+      kind-of "^4.0.0"
+  
+  randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
+    dependencies:
+      safe-buffer "^5.1.0"
+  
+  randomfill@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62"
+    dependencies:
+      randombytes "^2.0.5"
+      safe-buffer "^5.1.0"
+  
+  range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+  
+  raw-body@2, raw-body@2.3.2:
+    version "2.3.2"
+    resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
+    dependencies:
+      bytes "3.0.0"
+      http-errors "1.6.2"
+      iconv-lite "0.4.19"
+      unpipe "1.0.0"
+  
+  raw-loader@^0.5.1:
+    version "0.5.1"
+    resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
+  
+  rc@^1.1.2:
+    version "1.2.5"
+    resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd"
+    dependencies:
+      deep-extend "~0.4.0"
+      ini "~1.3.0"
+      minimist "^1.2.0"
+      strip-json-comments "~2.0.1"
+  
+  rc@^1.1.7:
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.3.tgz#51575a900f8dd68381c710b4712c2154c3e2035b"
+    dependencies:
+      deep-extend "~0.4.0"
+      ini "~1.3.0"
+      minimist "^1.2.0"
+      strip-json-comments "~2.0.1"
+  
+  react-color@^2.11.4:
+    version "2.14.0"
+    resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.14.0.tgz#5828a11c034aa0939befbd888a066ee37d8c3cc2"
+    dependencies:
+      lodash "^4.0.1"
+      material-colors "^1.2.1"
+      prop-types "^15.5.10"
+      reactcss "^1.2.0"
+      tinycolor2 "^1.4.1"
+  
+  react-datetime@^2.14.0:
+    version "2.14.0"
+    resolved "https://registry.yarnpkg.com/react-datetime/-/react-datetime-2.14.0.tgz#c7859c5b765275d7980f1cca27c03a727ff9ccef"
+    dependencies:
+      create-react-class "^15.5.2"
+      object-assign "^3.0.0"
+      prop-types "^15.5.7"
+      react-onclickoutside "^6.5.0"
+  
+  react-dev-utils@^5.0.0:
+    version "5.0.0"
+    resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.0.tgz#425ac7c9c40c2603bc4f7ab8836c1406e96bb473"
+    dependencies:
+      address "1.0.3"
+      babel-code-frame "6.26.0"
+      chalk "1.1.3"
+      cross-spawn "5.1.0"
+      detect-port-alt "1.1.5"
+      escape-string-regexp "1.0.5"
+      filesize "3.5.11"
+      global-modules "1.0.0"
+      gzip-size "3.0.0"
+      inquirer "3.3.0"
+      is-root "1.0.0"
+      opn "5.2.0"
+      react-error-overlay "^4.0.0"
+      recursive-readdir "2.2.1"
+      shell-quote "1.6.1"
+      sockjs-client "1.1.4"
+      strip-ansi "3.0.1"
+      text-table "0.2.0"
+  
+  react-docgen@^2.20.0:
+    version "2.20.1"
+    resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-2.20.1.tgz#29c3a1216066f513958abb1a43678860bbd51c7f"
+    dependencies:
+      async "^2.1.4"
+      babel-runtime "^6.9.2"
+      babylon "~5.8.3"
+      commander "^2.9.0"
+      doctrine "^2.0.0"
+      node-dir "^0.1.10"
+      recast "^0.12.6"
+  
+  react-dom@^16.0.0:
+    version "16.2.0"
+    resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044"
+    dependencies:
+      fbjs "^0.8.16"
+      loose-envify "^1.1.0"
+      object-assign "^4.1.1"
+      prop-types "^15.6.0"
+  
+  react-error-overlay@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4"
+  
+  react-fuzzy@^0.5.2:
+    version "0.5.2"
+    resolved "https://registry.yarnpkg.com/react-fuzzy/-/react-fuzzy-0.5.2.tgz#fc13bf6f0b785e5fefe908724efebec4935eaefe"
+    dependencies:
+      babel-runtime "^6.23.0"
+      classnames "^2.2.5"
+      fuse.js "^3.0.1"
+      prop-types "^15.5.9"
+  
+  react-html-attributes@^1.3.0:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.1.tgz#97b5ec710da68833598c8be6f89ac436216840a5"
+    dependencies:
+      html-element-attributes "^1.0.0"
+  
+  react-icon-base@2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/react-icon-base/-/react-icon-base-2.1.0.tgz#a196e33fdf1e7aaa1fda3aefbb68bdad9e82a79d"
+  
+  react-icons@^2.2.7:
+    version "2.2.7"
+    resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-2.2.7.tgz#d7860826b258557510dac10680abea5ca23cf650"
+    dependencies:
+      react-icon-base "2.1.0"
+  
+  react-inspector@^2.2.2:
+    version "2.2.2"
+    resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.2.2.tgz#c04f5248fa92ab6c23e37960e725fb7f48c34d05"
+    dependencies:
+      babel-runtime "^6.26.0"
+      is-dom "^1.0.9"
+  
+  react-modal@^3.3.1:
+    version "3.3.1"
+    resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.3.1.tgz#7355db196482da0c7fa1cbecccf2bdd9bc366b14"
+    dependencies:
+      exenv "^1.2.0"
+      prop-types "^15.5.10"
+      warning "^3.0.0"
+  
+  react-onclickoutside@^6.5.0:
+    version "6.7.1"
+    resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93"
+  
+  react-split-pane@^0.1.77:
+    version "0.1.77"
+    resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.77.tgz#f0c8cd18d076bbac900248dcf6dbcec02d5340db"
+    dependencies:
+      inline-style-prefixer "^3.0.6"
+      prop-types "^15.5.10"
+      react-style-proptype "^3.0.0"
+  
+  react-style-proptype@^3.0.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/react-style-proptype/-/react-style-proptype-3.2.0.tgz#be5de15358b890d83aecfaf6634cc033aa2b1483"
+    dependencies:
+      prop-types "^15.5.4"
+  
+  react-textarea-autosize@^5.2.1:
+    version "5.2.1"
+    resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz#2b78f9067180f41b08ac59f78f1581abadd61e54"
+    dependencies:
+      prop-types "^15.6.0"
+  
+  react-transition-group@^1.1.2:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6"
+    dependencies:
+      chain-function "^1.0.0"
+      dom-helpers "^3.2.0"
+      loose-envify "^1.3.1"
+      prop-types "^15.5.6"
+      warning "^3.0.0"
+  
+  react-treebeard@^2.1.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/react-treebeard/-/react-treebeard-2.1.0.tgz#fbd5cf51089b6f09a9b18350ab3bddf736e57800"
+    dependencies:
+      babel-runtime "^6.23.0"
+      deep-equal "^1.0.1"
+      prop-types "^15.5.8"
+      radium "^0.19.0"
+      shallowequal "^0.2.2"
+      velocity-react "^1.3.1"
+  
+  react@^16.0.0:
+    version "16.2.0"
+    resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"
+    dependencies:
+      fbjs "^0.8.16"
+      loose-envify "^1.1.0"
+      object-assign "^4.1.1"
+      prop-types "^15.6.0"
+  
+  reactcss@^1.2.0:
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd"
+    dependencies:
+      lodash "^4.0.1"
+  
+  read-cache@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+    dependencies:
+      pify "^2.3.0"
+  
+  read-only-stream@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+    dependencies:
+      readable-stream "^2.0.2"
+  
+  read-pkg-up@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+    dependencies:
+      find-up "^1.0.0"
+      read-pkg "^1.0.0"
+  
+  read-pkg-up@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+    dependencies:
+      find-up "^2.0.0"
+      read-pkg "^2.0.0"
+  
+  read-pkg@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+    dependencies:
+      load-json-file "^1.0.0"
+      normalize-package-data "^2.3.2"
+      path-type "^1.0.0"
+  
+  read-pkg@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+    dependencies:
+      load-json-file "^2.0.0"
+      normalize-package-data "^2.3.2"
+      path-type "^2.0.0"
+  
+  "readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3:
+    version "2.3.3"
+    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
+    dependencies:
+      core-util-is "~1.0.0"
+      inherits "~2.0.3"
+      isarray "~1.0.0"
+      process-nextick-args "~1.0.6"
+      safe-buffer "~5.1.1"
+      string_decoder "~1.0.3"
+      util-deprecate "~1.0.1"
+  
+  readable-stream@1.0:
+    version "1.0.34"
+    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+    dependencies:
+      core-util-is "~1.0.0"
+      inherits "~2.0.1"
+      isarray "0.0.1"
+      string_decoder "~0.10.x"
+  
+  readable-stream@1.1.x, readable-stream@~1.1.9:
+    version "1.1.14"
+    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+    dependencies:
+      core-util-is "~1.0.0"
+      inherits "~2.0.1"
+      isarray "0.0.1"
+      string_decoder "~0.10.x"
+  
+  readable-stream@^2.2.2:
+    version "2.3.4"
+    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071"
+    dependencies:
+      core-util-is "~1.0.0"
+      inherits "~2.0.3"
+      isarray "~1.0.0"
+      process-nextick-args "~2.0.0"
+      safe-buffer "~5.1.1"
+      string_decoder "~1.0.3"
+      util-deprecate "~1.0.1"
+  
+  readable-stream@~2.0.0, readable-stream@~2.0.5:
+    version "2.0.6"
+    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+    dependencies:
+      core-util-is "~1.0.0"
+      inherits "~2.0.1"
+      isarray "~1.0.0"
+      process-nextick-args "~1.0.6"
+      string_decoder "~0.10.x"
+      util-deprecate "~1.0.1"
+  
+  readdirp@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+    dependencies:
+      graceful-fs "^4.1.2"
+      minimatch "^3.0.2"
+      readable-stream "^2.0.2"
+      set-immediate-shim "^1.0.1"
+  
+  realpath-native@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0"
+    dependencies:
+      util.promisify "^1.0.0"
+  
+  recast@^0.12.6:
+    version "0.12.9"
+    resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1"
+    dependencies:
+      ast-types "0.10.1"
+      core-js "^2.4.1"
+      esprima "~4.0.0"
+      private "~0.1.5"
+      source-map "~0.6.1"
+  
+  recast@~0.11.12:
+    version "0.11.23"
+    resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
+    dependencies:
+      ast-types "0.9.6"
+      esprima "~3.1.0"
+      private "~0.1.5"
+      source-map "~0.5.0"
+  
+  rechoir@^0.6.2:
+    version "0.6.2"
+    resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+    dependencies:
+      resolve "^1.1.6"
+  
+  recursive-readdir@2.2.1:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99"
+    dependencies:
+      minimatch "3.0.3"
+  
+  redent@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+    dependencies:
+      indent-string "^2.1.0"
+      strip-indent "^1.0.1"
+  
+  redis-commands@^1.2.0:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b"
+  
+  redis-parser@^2.6.0:
+    version "2.6.0"
+    resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
+  
+  redis@^2.7.1:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
+    dependencies:
+      double-ended-queue "^2.1.0-0"
+      redis-commands "^1.2.0"
+      redis-parser "^2.6.0"
+  
+  reduce-css-calc@^1.2.6:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+    dependencies:
+      balanced-match "^0.4.2"
+      math-expression-evaluator "^1.2.14"
+      reduce-function-call "^1.0.1"
+  
+  reduce-function-call@^1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
+    dependencies:
+      balanced-match "^0.4.2"
+  
+  redux@^3.6.0, redux@^3.7.2:
+    version "3.7.2"
+    resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
+    dependencies:
+      lodash "^4.2.1"
+      lodash-es "^4.2.1"
+      loose-envify "^1.1.0"
+      symbol-observable "^1.0.3"
+  
+  reflect-metadata@^0.1.2:
+    version "0.1.10"
+    resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a"
+  
+  regenerate@^1.2.1:
+    version "1.3.3"
+    resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+  
+  regenerator-runtime@^0.11.0:
+    version "0.11.1"
+    resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+  
+  regenerator-transform@^0.10.0:
+    version "0.10.1"
+    resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
+    dependencies:
+      babel-runtime "^6.18.0"
+      babel-types "^6.19.0"
+      private "^0.1.6"
+  
+  regex-cache@^0.4.2:
+    version "0.4.4"
+    resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+    dependencies:
+      is-equal-shallow "^0.1.3"
+  
+  regex-not@^1.0.0, regex-not@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+    dependencies:
+      extend-shallow "^3.0.2"
+      safe-regex "^1.1.0"
+  
+  regexpu-core@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+    dependencies:
+      regenerate "^1.2.1"
+      regjsgen "^0.2.0"
+      regjsparser "^0.1.4"
+  
+  regexpu-core@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+    dependencies:
+      regenerate "^1.2.1"
+      regjsgen "^0.2.0"
+      regjsparser "^0.1.4"
+  
+  regjsgen@^0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+  
+  regjsparser@^0.1.4:
+    version "0.1.5"
+    resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+    dependencies:
+      jsesc "~0.5.0"
+  
+  relateurl@0.2.x:
+    version "0.2.7"
+    resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+  
+  remove-trailing-separator@^1.0.1:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+  
+  renderkid@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319"
+    dependencies:
+      css-select "^1.1.0"
+      dom-converter "~0.1"
+      htmlparser2 "~3.3.0"
+      strip-ansi "^3.0.0"
+      utila "~0.3"
+  
+  repeat-element@^1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+  
+  repeat-string@^0.2.2:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
+  
+  repeat-string@^1.5.2, repeat-string@^1.6.1:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+  
+  repeating@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+    dependencies:
+      is-finite "^1.0.0"
+  
+  request-progress@0.3.1:
+    version "0.3.1"
+    resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz#0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a"
+    dependencies:
+      throttleit "~0.0.2"
+  
+  request-promise-core@1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
+    dependencies:
+      lodash "^4.13.1"
+  
+  request-promise-native@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
+    dependencies:
+      request-promise-core "1.1.1"
+      stealthy-require "^1.1.0"
+      tough-cookie ">=2.3.3"
+  
+  request@2, request@^2.0.0, request@^2.45.0, request@^2.74.0, request@^2.75.0, request@^2.78.0, request@^2.81.0, request@^2.83.0:
+    version "2.83.0"
+    resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
+    dependencies:
+      aws-sign2 "~0.7.0"
+      aws4 "^1.6.0"
+      caseless "~0.12.0"
+      combined-stream "~1.0.5"
+      extend "~3.0.1"
+      forever-agent "~0.6.1"
+      form-data "~2.3.1"
+      har-validator "~5.0.3"
+      hawk "~6.0.2"
+      http-signature "~1.2.0"
+      is-typedarray "~1.0.0"
+      isstream "~0.1.2"
+      json-stringify-safe "~5.0.1"
+      mime-types "~2.1.17"
+      oauth-sign "~0.8.2"
+      performance-now "^2.1.0"
+      qs "~6.5.1"
+      safe-buffer "^5.1.1"
+      stringstream "~0.0.5"
+      tough-cookie "~2.3.3"
+      tunnel-agent "^0.6.0"
+      uuid "^3.1.0"
+  
+  request@2.75.x:
+    version "2.75.0"
+    resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93"
+    dependencies:
+      aws-sign2 "~0.6.0"
+      aws4 "^1.2.1"
+      bl "~1.1.2"
+      caseless "~0.11.0"
+      combined-stream "~1.0.5"
+      extend "~3.0.0"
+      forever-agent "~0.6.1"
+      form-data "~2.0.0"
+      har-validator "~2.0.6"
+      hawk "~3.1.3"
+      http-signature "~1.1.0"
+      is-typedarray "~1.0.0"
+      isstream "~0.1.2"
+      json-stringify-safe "~5.0.1"
+      mime-types "~2.1.7"
+      node-uuid "~1.4.7"
+      oauth-sign "~0.8.1"
+      qs "~6.2.0"
+      stringstream "~0.0.4"
+      tough-cookie "~2.3.0"
+      tunnel-agent "~0.4.1"
+  
+  request@2.81.0:
+    version "2.81.0"
+    resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
+    dependencies:
+      aws-sign2 "~0.6.0"
+      aws4 "^1.2.1"
+      caseless "~0.12.0"
+      combined-stream "~1.0.5"
+      extend "~3.0.0"
+      forever-agent "~0.6.1"
+      form-data "~2.1.1"
+      har-validator "~4.2.1"
+      hawk "~3.1.3"
+      http-signature "~1.1.0"
+      is-typedarray "~1.0.0"
+      isstream "~0.1.2"
+      json-stringify-safe "~5.0.1"
+      mime-types "~2.1.7"
+      oauth-sign "~0.8.1"
+      performance-now "^0.2.0"
+      qs "~6.4.0"
+      safe-buffer "^5.0.1"
+      stringstream "~0.0.4"
+      tough-cookie "~2.3.0"
+      tunnel-agent "^0.6.0"
+      uuid "^3.0.0"
+  
+  request@~2.79.0:
+    version "2.79.0"
+    resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+    dependencies:
+      aws-sign2 "~0.6.0"
+      aws4 "^1.2.1"
+      caseless "~0.11.0"
+      combined-stream "~1.0.5"
+      extend "~3.0.0"
+      forever-agent "~0.6.1"
+      form-data "~2.1.1"
+      har-validator "~2.0.6"
+      hawk "~3.1.3"
+      http-signature "~1.1.0"
+      is-typedarray "~1.0.0"
+      isstream "~0.1.2"
+      json-stringify-safe "~5.0.1"
+      mime-types "~2.1.7"
+      oauth-sign "~0.8.1"
+      qs "~6.3.0"
+      stringstream "~0.0.4"
+      tough-cookie "~2.3.0"
+      tunnel-agent "~0.4.1"
+      uuid "^3.0.0"
+  
+  requestretry@^1.2.2:
+    version "1.12.2"
+    resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.12.2.tgz#13ce38a4ce4e809f3c9ec6d4ca3b7b9ba4acf26c"
+    dependencies:
+      extend "^3.0.0"
+      lodash "^4.15.0"
+      request "^2.74.0"
+      when "^3.7.7"
+  
+  require-directory@^2.1.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+  
+  require-from-string@^1.1.0:
+    version "1.2.1"
+    resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
+  
+  require-from-string@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff"
+  
+  require-main-filename@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+  
+  requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+  
+  resolve-cwd@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+    dependencies:
+      resolve-from "^3.0.0"
+  
+  resolve-dir@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+    dependencies:
+      expand-tilde "^2.0.0"
+      global-modules "^1.0.0"
+  
+  resolve-from@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+  
+  resolve-url@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+  
+  resolve@1.1.7:
+    version "1.1.7"
+    resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+  
+  resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2:
+    version "1.5.0"
+    resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+    dependencies:
+      path-parse "^1.0.5"
+  
+  restore-cursor@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+    dependencies:
+      exit-hook "^1.0.0"
+      onetime "^1.0.0"
+  
+  restore-cursor@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+    dependencies:
+      onetime "^2.0.0"
+      signal-exit "^3.0.2"
+  
+  ret@~0.1.10:
+    version "0.1.15"
+    resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+  
+  right-align@^0.1.1:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+    dependencies:
+      align-text "^0.1.1"
+  
+  rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2:
+    version "2.6.2"
+    resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+    dependencies:
+      glob "^7.0.5"
+  
+  ripemd160@^2.0.0, ripemd160@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+    dependencies:
+      hash-base "^2.0.0"
+      inherits "^2.0.1"
+  
+  run-async@^2.2.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+    dependencies:
+      is-promise "^2.1.0"
+  
+  run-queue@^1.0.0, run-queue@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+    dependencies:
+      aproba "^1.1.1"
+  
+  rx-lite-aggregates@^4.0.8:
+    version "4.0.8"
+    resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
+    dependencies:
+      rx-lite "*"
+  
+  rx-lite@*, rx-lite@^4.0.8:
+    version "4.0.8"
+    resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
+  
+  rxjs@^5.0.0-beta.11, rxjs@^5.4.2, rxjs@^5.5.6:
+    version "5.5.6"
+    resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
+    dependencies:
+      symbol-observable "1.0.1"
+  
+  safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+    version "5.1.1"
+    resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+  
+  safe-regex@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+    dependencies:
+      ret "~0.1.10"
+  
+  sane@^2.0.0:
+    version "2.4.1"
+    resolved "https://registry.yarnpkg.com/sane/-/sane-2.4.1.tgz#29f991208cf28636720efdc584293e7fd66663a5"
+    dependencies:
+      anymatch "^1.3.0"
+      exec-sh "^0.2.0"
+      fb-watchman "^2.0.0"
+      minimatch "^3.0.2"
+      minimist "^1.1.1"
+      walker "~1.0.5"
+      watch "~0.18.0"
+    optionalDependencies:
+      fsevents "^1.1.1"
+  
+  sass-graph@^2.2.4:
+    version "2.2.4"
+    resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
+    dependencies:
+      glob "^7.0.0"
+      lodash "^4.0.0"
+      scss-tokenizer "^0.2.3"
+      yargs "^7.0.0"
+  
+  sass-loader@^6.0.6:
+    version "6.0.7"
+    resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.7.tgz#dd2fdb3e7eeff4a53f35ba6ac408715488353d00"
+    dependencies:
+      clone-deep "^2.0.1"
+      loader-utils "^1.0.1"
+      lodash.tail "^4.1.1"
+      neo-async "^2.5.0"
+      pify "^3.0.0"
+  
+  saucelabs@~1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee"
+    dependencies:
+      https-proxy-agent "^1.0.0"
+  
+  sax@0.5.x:
+    version "0.5.8"
+    resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
+  
+  sax@0.6.x:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9"
+  
+  sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1:
+    version "1.2.4"
+    resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+  
+  schema-utils@^0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+    dependencies:
+      ajv "^5.0.0"
+  
+  schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.5:
+    version "0.4.5"
+    resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
+    dependencies:
+      ajv "^6.1.0"
+      ajv-keywords "^3.1.0"
+  
+  schema-utils@^0.4.2:
+    version "0.4.3"
+    resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e"
+    dependencies:
+      ajv "^5.0.0"
+      ajv-keywords "^2.1.0"
+  
+  scss-tokenizer@^0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
+    dependencies:
+      js-base64 "^2.1.8"
+      source-map "^0.4.2"
+  
+  select-hose@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+  
+  selenium-webdriver@3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7"
+    dependencies:
+      adm-zip "^0.4.7"
+      rimraf "^2.5.4"
+      tmp "0.0.30"
+      xml2js "^0.4.17"
+  
+  selenium-webdriver@^2.53.2:
+    version "2.53.3"
+    resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085"
+    dependencies:
+      adm-zip "0.4.4"
+      rimraf "^2.2.8"
+      tmp "0.0.24"
+      ws "^1.0.1"
+      xml2js "0.4.4"
+  
+  selfsigned@^1.9.1:
+    version "1.10.1"
+    resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52"
+    dependencies:
+      node-forge "0.6.33"
+  
+  semver-dsl@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0"
+    dependencies:
+      semver "^5.3.0"
+  
+  semver-intersect@^1.1.2:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.3.1.tgz#8fa84a9e1028bd239e4530d1a3e181e698d884ba"
+    dependencies:
+      semver "^5.0.0"
+  
+  "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0:
+    version "5.4.1"
+    resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+  
+  semver@^5.0.0, semver@^5.0.1, semver@^5.4.1:
+    version "5.5.0"
+    resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+  
+  semver@~5.0.1:
+    version "5.0.3"
+    resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a"
+  
+  semver@~5.3.0:
+    version "5.3.0"
+    resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+  
+  send@0.16.1:
+    version "0.16.1"
+    resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+    dependencies:
+      debug "2.6.9"
+      depd "~1.1.1"
+      destroy "~1.0.4"
+      encodeurl "~1.0.1"
+      escape-html "~1.0.3"
+      etag "~1.8.1"
+      fresh "0.5.2"
+      http-errors "~1.6.2"
+      mime "1.4.1"
+      ms "2.0.0"
+      on-finished "~2.3.0"
+      range-parser "~1.2.0"
+      statuses "~1.3.1"
+  
+  serialize-javascript@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005"
+  
+  serve-favicon@^2.4.5:
+    version "2.4.5"
+    resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436"
+    dependencies:
+      etag "~1.8.1"
+      fresh "0.5.2"
+      ms "2.0.0"
+      parseurl "~1.3.2"
+      safe-buffer "5.1.1"
+  
+  serve-index@^1.7.2:
+    version "1.9.1"
+    resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+    dependencies:
+      accepts "~1.3.4"
+      batch "0.6.1"
+      debug "2.6.9"
+      escape-html "~1.0.3"
+      http-errors "~1.6.2"
+      mime-types "~2.1.17"
+      parseurl "~1.3.2"
+  
+  serve-static@1.13.1:
+    version "1.13.1"
+    resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+    dependencies:
+      encodeurl "~1.0.1"
+      escape-html "~1.0.3"
+      parseurl "~1.3.2"
+      send "0.16.1"
+  
+  set-blocking@^2.0.0, set-blocking@~2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+  
+  set-getter@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
+    dependencies:
+      to-object-path "^0.3.0"
+  
+  set-immediate-shim@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+  
+  set-value@^0.4.3:
+    version "0.4.3"
+    resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+    dependencies:
+      extend-shallow "^2.0.1"
+      is-extendable "^0.1.1"
+      is-plain-object "^2.0.1"
+      to-object-path "^0.3.0"
+  
+  set-value@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+    dependencies:
+      extend-shallow "^2.0.1"
+      is-extendable "^0.1.1"
+      is-plain-object "^2.0.3"
+      split-string "^3.0.1"
+  
+  setimmediate@^1.0.4, setimmediate@^1.0.5:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+  
+  setprototypeof@1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+  
+  setprototypeof@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+  
+  sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
+    version "2.4.9"
+    resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d"
+    dependencies:
+      inherits "^2.0.1"
+      safe-buffer "^5.0.1"
+  
+  shallow-clone@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
+    dependencies:
+      is-extendable "^0.1.1"
+      kind-of "^5.0.0"
+      mixin-object "^2.0.1"
+  
+  shallowequal@^0.2.2:
+    version "0.2.2"
+    resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e"
+    dependencies:
+      lodash.keys "^3.1.2"
+  
+  shasum@^1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
+    dependencies:
+      json-stable-stringify "~0.0.0"
+      sha.js "~2.4.4"
+  
+  shebang-command@^1.2.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+    dependencies:
+      shebang-regex "^1.0.0"
+  
+  shebang-regex@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+  
+  shell-quote@1.6.1, shell-quote@^1.6.1:
+    version "1.6.1"
+    resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+    dependencies:
+      array-filter "~0.0.0"
+      array-map "~0.0.0"
+      array-reduce "~0.0.0"
+      jsonify "~0.0.0"
+  
+  shelljs@0.8.0:
+    version "0.8.0"
+    resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.0.tgz#12f561c52ec5d0d3315af15616c011a18ff80d59"
+    dependencies:
+      glob "^7.0.0"
+      interpret "^1.0.0"
+      rechoir "^0.6.2"
+  
+  shelljs@^0.8.1:
+    version "0.8.1"
+    resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1"
+    dependencies:
+      glob "^7.0.0"
+      interpret "^1.0.0"
+      rechoir "^0.6.2"
+  
+  shellwords@^0.1.1:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+  
+  signal-exit@^3.0.0, signal-exit@^3.0.2:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+  
+  silent-error@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9"
+    dependencies:
+      debug "^2.2.0"
+  
+  single-line-log@^1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
+    dependencies:
+      string-width "^1.0.1"
+  
+  slack-node@~0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30"
+    dependencies:
+      requestretry "^1.2.2"
+  
+  slash@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+  
+  slice-ansi@0.0.4:
+    version "0.0.4"
+    resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+  
+  smart-buffer@^1.0.13, smart-buffer@^1.0.4:
+    version "1.1.15"
+    resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16"
+  
+  smtp-connection@2.12.0:
+    version "2.12.0"
+    resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1"
+    dependencies:
+      httpntlm "1.6.1"
+      nodemailer-shared "1.1.0"
+  
+  snapdragon-node@^2.0.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+    dependencies:
+      define-property "^1.0.0"
+      isobject "^3.0.0"
+      snapdragon-util "^3.0.1"
+  
+  snapdragon-util@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+    dependencies:
+      kind-of "^3.2.0"
+  
+  snapdragon@^0.8.1:
+    version "0.8.1"
+    resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
+    dependencies:
+      base "^0.11.1"
+      debug "^2.2.0"
+      define-property "^0.2.5"
+      extend-shallow "^2.0.1"
+      map-cache "^0.2.2"
+      source-map "^0.5.6"
+      source-map-resolve "^0.5.0"
+      use "^2.0.0"
+  
+  sntp@1.x.x:
+    version "1.0.9"
+    resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+    dependencies:
+      hoek "2.x.x"
+  
+  sntp@2.x.x:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
+    dependencies:
+      hoek "4.x.x"
+  
+  socket.io-adapter@~1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
+  
+  socket.io-client@2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e"
+    dependencies:
+      backo2 "1.0.2"
+      base64-arraybuffer "0.1.5"
+      component-bind "1.0.0"
+      component-emitter "1.2.1"
+      debug "~2.6.4"
+      engine.io-client "~3.1.0"
+      has-cors "1.1.0"
+      indexof "0.0.1"
+      object-component "0.0.3"
+      parseqs "0.0.5"
+      parseuri "0.0.5"
+      socket.io-parser "~3.1.1"
+      to-array "0.1.4"
+  
+  socket.io-parser@~3.1.1:
+    version "3.1.2"
+    resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2"
+    dependencies:
+      component-emitter "1.2.1"
+      debug "~2.6.4"
+      has-binary2 "~1.0.2"
+      isarray "2.0.1"
+  
+  socket.io@2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014"
+    dependencies:
+      debug "~2.6.6"
+      engine.io "~3.1.0"
+      socket.io-adapter "~1.1.0"
+      socket.io-client "2.0.4"
+      socket.io-parser "~3.1.1"
+  
+  sockjs-client@1.1.4:
+    version "1.1.4"
+    resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
+    dependencies:
+      debug "^2.6.6"
+      eventsource "0.1.6"
+      faye-websocket "~0.11.0"
+      inherits "^2.0.1"
+      json3 "^3.3.2"
+      url-parse "^1.1.8"
+  
+  sockjs@0.3.19:
+    version "0.3.19"
+    resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
+    dependencies:
+      faye-websocket "^0.10.0"
+      uuid "^3.0.1"
+  
+  socks-proxy-agent@2:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3"
+    dependencies:
+      agent-base "2"
+      extend "3"
+      socks "~1.1.5"
+  
+  socks@1.1.9:
+    version "1.1.9"
+    resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691"
+    dependencies:
+      ip "^1.1.2"
+      smart-buffer "^1.0.4"
+  
+  socks@~1.1.5:
+    version "1.1.10"
+    resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a"
+    dependencies:
+      ip "^1.1.4"
+      smart-buffer "^1.0.13"
+  
+  sort-keys@^1.0.0:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+    dependencies:
+      is-plain-obj "^1.0.0"
+  
+  source-list-map@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
+  
+  source-list-map@~0.1.7:
+    version "0.1.8"
+    resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
+  
+  source-map-resolve@^0.5.0:
+    version "0.5.1"
+    resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+    dependencies:
+      atob "^2.0.0"
+      decode-uri-component "^0.2.0"
+      resolve-url "^0.2.1"
+      source-map-url "^0.4.0"
+      urix "^0.1.0"
+  
+  source-map-support@^0.4.0, source-map-support@^0.4.1, source-map-support@^0.4.15, source-map-support@^0.4.2, source-map-support@~0.4.0:
+    version "0.4.18"
+    resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+    dependencies:
+      source-map "^0.5.6"
+  
+  source-map-support@^0.5.0:
+    version "0.5.3"
+    resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76"
+    dependencies:
+      source-map "^0.6.0"
+  
+  source-map-url@^0.4.0:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+  
+  source-map@0.1.x:
+    version "0.1.43"
+    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
+    dependencies:
+      amdefine ">=0.0.4"
+  
+  source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6:
+    version "0.5.7"
+    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+  
+  source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1:
+    version "0.4.4"
+    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+    dependencies:
+      amdefine ">=0.0.4"
+  
+  source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+    version "0.6.1"
+    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+  
+  spdx-correct@~1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+    dependencies:
+      spdx-license-ids "^1.0.2"
+  
+  spdx-expression-parse@~1.0.0:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+  
+  spdx-license-ids@^1.0.2:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+  
+  spdy-transport@^2.0.18:
+    version "2.0.20"
+    resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+    dependencies:
+      debug "^2.6.8"
+      detect-node "^2.0.3"
+      hpack.js "^2.1.6"
+      obuf "^1.1.1"
+      readable-stream "^2.2.9"
+      safe-buffer "^5.0.1"
+      wbuf "^1.7.2"
+  
+  spdy@^3.4.1:
+    version "3.4.7"
+    resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
+    dependencies:
+      debug "^2.6.8"
+      handle-thing "^1.2.5"
+      http-deceiver "^1.2.7"
+      safe-buffer "^5.0.1"
+      select-hose "^2.0.0"
+      spdy-transport "^2.0.18"
+  
+  speedometer@~0.1.2:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
+  
+  split-string@^3.0.1, split-string@^3.0.2:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+    dependencies:
+      extend-shallow "^3.0.0"
+  
+  sprintf-js@^1.0.3:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c"
+  
+  sprintf-js@~1.0.2:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+  
+  sshpk@^1.7.0:
+    version "1.13.1"
+    resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+    dependencies:
+      asn1 "~0.2.3"
+      assert-plus "^1.0.0"
+      dashdash "^1.12.0"
+      getpass "^0.1.1"
+    optionalDependencies:
+      bcrypt-pbkdf "^1.0.0"
+      ecc-jsbn "~0.1.1"
+      jsbn "~0.1.0"
+      tweetnacl "~0.14.0"
+  
+  ssri@^5.0.0:
+    version "5.0.0"
+    resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.0.0.tgz#13c19390b606c821f2a10d02b351c1729b94d8cf"
+    dependencies:
+      safe-buffer "^5.1.0"
+  
+  ssri@^5.2.4:
+    version "5.3.0"
+    resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+    dependencies:
+      safe-buffer "^5.1.1"
+  
+  stack-utils@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
+  
+  static-extend@^0.1.1:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+    dependencies:
+      define-property "^0.2.5"
+      object-copy "^0.1.0"
+  
+  "statuses@>= 1.3.1 < 2":
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
+  
+  statuses@~1.3.1:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
+  
+  stdout-stream@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
+    dependencies:
+      readable-stream "^2.0.1"
+  
+  stealthy-require@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+  
+  stream-browserify@^2.0.0, stream-browserify@^2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+    dependencies:
+      inherits "~2.0.1"
+      readable-stream "^2.0.2"
+  
+  stream-combiner2@^1.1.1:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+    dependencies:
+      duplexer2 "~0.1.0"
+      readable-stream "^2.0.2"
+  
+  stream-each@^1.1.0:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+    dependencies:
+      end-of-stream "^1.1.0"
+      stream-shift "^1.0.0"
+  
+  stream-http@^2.0.0, stream-http@^2.7.2:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10"
+    dependencies:
+      builtin-status-codes "^3.0.0"
+      inherits "^2.0.1"
+      readable-stream "^2.3.3"
+      to-arraybuffer "^1.0.0"
+      xtend "^4.0.0"
+  
+  stream-shift@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+  
+  stream-splicer@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
+    dependencies:
+      inherits "^2.0.1"
+      readable-stream "^2.0.2"
+  
+  stream-to-observable@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
+  
+  streamroller@^0.7.0:
+    version "0.7.0"
+    resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
+    dependencies:
+      date-format "^1.2.0"
+      debug "^3.1.0"
+      mkdirp "^0.5.1"
+      readable-stream "^2.3.0"
+  
+  strict-uri-encode@^1.0.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+  
+  string-length@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
+    dependencies:
+      astral-regex "^1.0.0"
+      strip-ansi "^4.0.0"
+  
+  string-width@^1.0.1, string-width@^1.0.2:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+    dependencies:
+      code-point-at "^1.0.0"
+      is-fullwidth-code-point "^1.0.0"
+      strip-ansi "^3.0.0"
+  
+  string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+    dependencies:
+      is-fullwidth-code-point "^2.0.0"
+      strip-ansi "^4.0.0"
+  
+  string.prototype.padend@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.4.3"
+      function-bind "^1.0.2"
+  
+  string.prototype.padstart@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz#5bcfad39f4649bb2d031292e19bcf0b510d4b242"
+    dependencies:
+      define-properties "^1.1.2"
+      es-abstract "^1.4.3"
+      function-bind "^1.0.2"
+  
+  string_decoder@^1.0.0, string_decoder@~1.0.0, string_decoder@~1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+    dependencies:
+      safe-buffer "~5.1.0"
+  
+  string_decoder@~0.10.x:
+    version "0.10.31"
+    resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+  
+  stringstream@~0.0.4, stringstream@~0.0.5:
+    version "0.0.5"
+    resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+  
+  strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+    dependencies:
+      ansi-regex "^2.0.0"
+  
+  strip-ansi@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+    dependencies:
+      ansi-regex "^3.0.0"
+  
+  strip-bom@3.0.0, strip-bom@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+  
+  strip-bom@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+    dependencies:
+      is-utf8 "^0.2.0"
+  
+  strip-eof@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+  
+  strip-indent@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+    dependencies:
+      get-stdin "^4.0.1"
+  
+  strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+  
+  style-loader@^0.19.1:
+    version "0.19.1"
+    resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
+    dependencies:
+      loader-utils "^1.0.2"
+      schema-utils "^0.3.0"
+  
+  style-loader@^0.20.2:
+    version "0.20.2"
+    resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.2.tgz#851b373c187890331776e9cde359eea9c95ecd00"
+    dependencies:
+      loader-utils "^1.1.0"
+      schema-utils "^0.4.3"
+  
+  stylus-loader@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.1.tgz#77f4b34fd030d25b2617bcf5513db5b0730c4089"
+    dependencies:
+      loader-utils "^1.0.2"
+      lodash.clonedeep "^4.5.0"
+      when "~3.6.x"
+  
+  stylus@^0.54.5:
+    version "0.54.5"
+    resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
+    dependencies:
+      css-parse "1.7.x"
+      debug "*"
+      glob "7.0.x"
+      mkdirp "0.5.x"
+      sax "0.5.x"
+      source-map "0.1.x"
+  
+  subarg@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+    dependencies:
+      minimist "^1.1.0"
+  
+  sumchecker@^1.2.0:
+    version "1.3.1"
+    resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d"
+    dependencies:
+      debug "^2.2.0"
+      es6-promise "^4.0.5"
+  
+  supports-color@3.1.2:
+    version "3.1.2"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+    dependencies:
+      has-flag "^1.0.0"
+  
+  supports-color@4.4.0:
+    version "4.4.0"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
+    dependencies:
+      has-flag "^2.0.0"
+  
+  supports-color@5.1.0, supports-color@^5.1.0:
+    version "5.1.0"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
+    dependencies:
+      has-flag "^2.0.0"
+  
+  supports-color@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+  
+  supports-color@^3.1.2, supports-color@^3.2.3:
+    version "3.2.3"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+    dependencies:
+      has-flag "^1.0.0"
+  
+  supports-color@^4.0.0, supports-color@^4.2.1:
+    version "4.5.0"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+    dependencies:
+      has-flag "^2.0.0"
+  
+  supports-color@^5.2.0, supports-color@^5.3.0:
+    version "5.3.0"
+    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
+    dependencies:
+      has-flag "^3.0.0"
+  
+  svg-tag-names@^1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/svg-tag-names/-/svg-tag-names-1.1.1.tgz#9641b29ef71025ee094c7043f7cdde7d99fbd50a"
+  
+  svgo@^0.7.0:
+    version "0.7.2"
+    resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+    dependencies:
+      coa "~1.0.1"
+      colors "~1.1.2"
+      csso "~2.3.1"
+      js-yaml "~3.7.0"
+      mkdirp "~0.5.1"
+      sax "~1.2.1"
+      whet.extend "~0.9.9"
+  
+  symbol-observable@1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
+  
+  symbol-observable@^1.0.3:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+  
+  symbol-tree@^3.2.2:
+    version "3.2.2"
+    resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+  
+  sync-rest-client@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/sync-rest-client/-/sync-rest-client-1.0.3.tgz#a36273679a9c22a18733bdafd91d659f90d46dcf"
+    dependencies:
+      deasync "^0.1.8"
+      request "^2.75.0"
+      wait-sync "^1.0.1"
+  
+  syntax-error@^1.1.1:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1"
+    dependencies:
+      acorn "^4.0.3"
+  
+  tapable@^0.2.7:
+    version "0.2.8"
+    resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
+  
+  tar-pack@^3.4.0:
+    version "3.4.1"
+    resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
+    dependencies:
+      debug "^2.2.0"
+      fstream "^1.0.10"
+      fstream-ignore "^1.0.5"
+      once "^1.3.3"
+      readable-stream "^2.1.4"
+      rimraf "^2.5.1"
+      tar "^2.2.1"
+      uid-number "^0.0.6"
+  
+  tar@^2.0.0, tar@^2.2.1:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+    dependencies:
+      block-stream "*"
+      fstream "^1.0.2"
+      inherits "2"
+  
+  tcomb-validation@^3.3.0:
+    version "3.4.1"
+    resolved "https://registry.yarnpkg.com/tcomb-validation/-/tcomb-validation-3.4.1.tgz#a7696ec176ce56a081d9e019f8b732a5a8894b65"
+    dependencies:
+      tcomb "^3.0.0"
+  
+  tcomb@^3.0.0, tcomb@^3.2.17:
+    version "3.2.24"
+    resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.24.tgz#7f427053cc393b5997c4c3d859ca20411180887b"
+  
+  terminal-banner@1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/terminal-banner/-/terminal-banner-1.1.0.tgz#ef81ce7d9d7e541a81d09eb2c0257c3d5463c3ea"
+  
+  test-exclude@^4.1.1:
+    version "4.2.1"
+    resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
+    dependencies:
+      arrify "^1.0.1"
+      micromatch "^3.1.8"
+      object-assign "^4.1.0"
+      read-pkg-up "^1.0.1"
+      require-main-filename "^1.0.1"
+  
+  text-table@0.2.0:
+    version "0.2.0"
+    resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+  
+  throat@^4.0.0:
+    version "4.1.0"
+    resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
+  
+  throttleit@0.0.2, throttleit@~0.0.2:
+    version "0.0.2"
+    resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
+  
+  through2@^2.0.0:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+    dependencies:
+      readable-stream "^2.1.5"
+      xtend "~4.0.1"
+  
+  through2@~0.2.3:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
+    dependencies:
+      readable-stream "~1.1.9"
+      xtend "~2.1.1"
+  
+  "through@>=2.2.7 <3", through@X.X.X, through@^2.3.6, through@^2.3.8, through@~2.3.6:
+    version "2.3.8"
+    resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+  
+  thunkify@~2.1.1:
+    version "2.1.2"
+    resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d"
+  
+  thunky@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
+  
+  time-stamp@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+  
+  timers-browserify@^1.0.1:
+    version "1.4.2"
+    resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+    dependencies:
+      process "~0.11.0"
+  
+  timers-browserify@^2.0.4:
+    version "2.0.4"
+    resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
+    dependencies:
+      setimmediate "^1.0.4"
+  
+  timespan@2.3.x:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929"
+  
+  tinycolor2@^1.4.1:
+    version "1.4.1"
+    resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
+  
+  tmp@0.0.24:
+    version "0.0.24"
+    resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"
+  
+  tmp@0.0.30:
+    version "0.0.30"
+    resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
+    dependencies:
+      os-tmpdir "~1.0.1"
+  
+  tmp@0.0.31:
+    version "0.0.31"
+    resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
+    dependencies:
+      os-tmpdir "~1.0.1"
+  
+  tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33:
+    version "0.0.33"
+    resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+    dependencies:
+      os-tmpdir "~1.0.2"
+  
+  tmpl@1.0.x:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+  
+  to-array@0.1.4:
+    version "0.1.4"
+    resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+  
+  to-arraybuffer@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+  
+  to-fast-properties@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+  
+  to-object-path@^0.3.0:
+    version "0.3.0"
+    resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+    dependencies:
+      kind-of "^3.0.2"
+  
+  to-regex-range@^2.1.0:
+    version "2.1.1"
+    resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+    dependencies:
+      is-number "^3.0.0"
+      repeat-string "^1.6.1"
+  
+  to-regex@^3.0.1:
+    version "3.0.2"
+    resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+    dependencies:
+      define-property "^2.0.2"
+      extend-shallow "^3.0.2"
+      regex-not "^1.0.2"
+      safe-regex "^1.1.0"
+  
+  toposort@^1.0.0:
+    version "1.0.6"
+    resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec"
+  
+  tough-cookie@>=2.3.3, tough-cookie@^2.3.3:
+    version "2.3.4"
+    resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
+    dependencies:
+      punycode "^1.4.1"
+  
+  tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+    version "2.3.3"
+    resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
+    dependencies:
+      punycode "^1.4.1"
+  
+  tr46@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+    dependencies:
+      punycode "^2.1.0"
+  
+  tree-kill@^1.0.0:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
+  
+  trim-newlines@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+  
+  trim-right@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+  
+  "true-case-path@^1.0.2":
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62"
+    dependencies:
+      glob "^6.0.4"
+  
+  ts-jest@^22.4.1:
+    version "22.4.1"
+    resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.1.tgz#69defb2042d689cff9b4244365ef638ecd35f706"
+    dependencies:
+      babel-core "^6.24.1"
+      babel-plugin-istanbul "^4.1.4"
+      babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+      babel-preset-jest "^22.4.0"
+      cpx "^1.5.0"
+      fs-extra "4.0.3"
+      jest-config "^22.4.0"
+      pkg-dir "^2.0.0"
+      yargs "^11.0.0"
+  
+  ts-loader@3.2.0:
+    version "3.2.0"
+    resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.2.0.tgz#23211922179b81f7448754b7fdfca45b8374a15a"
+    dependencies:
+      chalk "^2.3.0"
+      enhanced-resolve "^3.0.0"
+      loader-utils "^1.0.2"
+      semver "^5.0.1"
+  
+  ts-loader@^3.5.0:
+    version "3.5.0"
+    resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.5.0.tgz#151d004dcddb4cf8e381a3bf9d6b74c2d957a9c0"
+    dependencies:
+      chalk "^2.3.0"
+      enhanced-resolve "^3.0.0"
+      loader-utils "^1.0.2"
+      micromatch "^3.1.4"
+      semver "^5.0.1"
+  
+  ts-node@~3.2.0:
+    version "3.2.2"
+    resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.2.2.tgz#bbd28e38af4aaa3e96076c466e1b220197c1a3ce"
+    dependencies:
+      arrify "^1.0.0"
+      chalk "^2.0.0"
+      diff "^3.1.0"
+      make-error "^1.1.1"
+      minimist "^1.2.0"
+      mkdirp "^0.5.1"
+      source-map-support "^0.4.0"
+      tsconfig "^6.0.0"
+      v8flags "^3.0.0"
+      yn "^2.0.0"
+  
+  tsconfig@^6.0.0:
+    version "6.0.0"
+    resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
+    dependencies:
+      strip-bom "^3.0.0"
+      strip-json-comments "^2.0.0"
+  
+  tsickle@^0.26.0:
+    version "0.26.0"
+    resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.26.0.tgz#40b30a2dd6abcb33b182e37596674bd1cfe4039c"
+    dependencies:
+      minimist "^1.2.0"
+      mkdirp "^0.5.1"
+      source-map "^0.5.6"
+      source-map-support "^0.4.2"
+  
+  tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1:
+    version "1.8.1"
+    resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.1.tgz#6946af2d1d651a7b1863b531d6e5afa41aa44eac"
+  
+  tslint@~5.9.1:
+    version "5.9.1"
+    resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
+    dependencies:
+      babel-code-frame "^6.22.0"
+      builtin-modules "^1.1.1"
+      chalk "^2.3.0"
+      commander "^2.12.1"
+      diff "^3.2.0"
+      glob "^7.1.1"
+      js-yaml "^3.7.0"
+      minimatch "^3.0.4"
+      resolve "^1.3.2"
+      semver "^5.3.0"
+      tslib "^1.8.0"
+      tsutils "^2.12.1"
+  
+  tsscmp@~1.0.0:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97"
+  
+  tsutils@^2.12.1:
+    version "2.18.0"
+    resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.18.0.tgz#f97385709d348169002c12f6f5fd42c1df13b250"
+    dependencies:
+      tslib "^1.8.1"
+  
+  tty-browserify@0.0.0, tty-browserify@~0.0.0:
+    version "0.0.0"
+    resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+  
+  tunnel-agent@^0.6.0:
+    version "0.6.0"
+    resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+    dependencies:
+      safe-buffer "^5.0.1"
+  
+  tunnel-agent@~0.4.1:
+    version "0.4.3"
+    resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+  
+  tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+    version "0.14.5"
+    resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+  
+  type-check@~0.3.2:
+    version "0.3.2"
+    resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+    dependencies:
+      prelude-ls "~1.1.2"
+  
+  type-is@~1.6.15:
+    version "1.6.15"
+    resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+    dependencies:
+      media-typer "0.3.0"
+      mime-types "~2.1.15"
+  
+  typedarray@^0.0.6, typedarray@~0.0.5:
+    version "0.0.6"
+    resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+  
+  typescript@~2.5.3:
+    version "2.5.3"
+    resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d"
+  
+  typescript@~2.6.2:
+    version "2.6.2"
+    resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4"
+  
+  ua-parser-js@^0.7.9:
+    version "0.7.17"
+    resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+  
+  uglify-es@^3.3.4:
+    version "3.3.7"
+    resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.7.tgz#d1249af668666aba7cb1163e277455be9eb393cf"
+    dependencies:
+      commander "~2.13.0"
+      source-map "~0.6.1"
+  
+  uglify-js@3.3.x:
+    version "3.3.7"
+    resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.7.tgz#28463e7c7451f89061d2b235e30925bf5625e14d"
+    dependencies:
+      commander "~2.13.0"
+      source-map "~0.6.1"
+  
+  uglify-js@^2.6, uglify-js@^2.8.29:
+    version "2.8.29"
+    resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+    dependencies:
+      source-map "~0.5.1"
+      yargs "~3.10.0"
+    optionalDependencies:
+      uglify-to-browserify "~1.0.0"
+  
+  uglify-to-browserify@~1.0.0:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+  
+  uglifyjs-webpack-plugin@^0.4.6:
+    version "0.4.6"
+    resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+    dependencies:
+      source-map "^0.5.6"
+      uglify-js "^2.8.29"
+      webpack-sources "^1.0.1"
+  
+  uglifyjs-webpack-plugin@^1.1.8:
+    version "1.2.3"
+    resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.3.tgz#bf23197b37a8fc953fecfbcbab66e506f9a0ae72"
+    dependencies:
+      cacache "^10.0.4"
+      find-cache-dir "^1.0.0"
+      schema-utils "^0.4.5"
+      serialize-javascript "^1.4.0"
+      source-map "^0.6.1"
+      uglify-es "^3.3.4"
+      webpack-sources "^1.1.0"
+      worker-farm "^1.5.2"
+  
+  uglifyjs-webpack-plugin@^1.2.0:
+    version "1.2.2"
+    resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz#e7516d4367afdb715c3847841eb46f94c45ca2b9"
+    dependencies:
+      cacache "^10.0.1"
+      find-cache-dir "^1.0.0"
+      schema-utils "^0.4.2"
+      serialize-javascript "^1.4.0"
+      source-map "^0.6.1"
+      uglify-es "^3.3.4"
+      webpack-sources "^1.1.0"
+      worker-farm "^1.5.2"
+  
+  uid-number@^0.0.6:
+    version "0.0.6"
+    resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+  
+  ultron@1.0.x:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
+  
+  ultron@~1.1.0:
+    version "1.1.1"
+    resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+  
+  umd@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e"
+  
+  underscore@~1.7.0:
+    version "1.7.0"
+    resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
+  
+  union-value@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+    dependencies:
+      arr-union "^3.1.0"
+      get-value "^2.0.6"
+      is-extendable "^0.1.1"
+      set-value "^0.4.3"
+  
+  uniq@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+  
+  uniqid@^4.0.0:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
+    dependencies:
+      macaddress "^0.2.8"
+  
+  uniqs@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+  
+  unique-filename@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
+    dependencies:
+      unique-slug "^2.0.0"
+  
+  unique-slug@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab"
+    dependencies:
+      imurmurhash "^0.1.4"
+  
+  unique-string@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+    dependencies:
+      crypto-random-string "^1.0.0"
+  
+  universalify@^0.1.0:
+    version "0.1.1"
+    resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
+  
+  unpipe@1.0.0, unpipe@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+  
+  unset-value@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+    dependencies:
+      has-value "^0.3.1"
+      isobject "^3.0.0"
+  
+  upath@^1.0.0:
+    version "1.0.4"
+    resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d"
+  
+  upper-case@^1.1.1:
+    version "1.1.3"
+    resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+  
+  urix@^0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+  
+  url-loader@^0.6.2:
+    version "0.6.2"
+    resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7"
+    dependencies:
+      loader-utils "^1.0.2"
+      mime "^1.4.1"
+      schema-utils "^0.3.0"
+  
+  url-parse@1.0.x:
+    version "1.0.5"
+    resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
+    dependencies:
+      querystringify "0.0.x"
+      requires-port "1.0.x"
+  
+  url-parse@^1.1.8:
+    version "1.2.0"
+    resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+    dependencies:
+      querystringify "~1.0.0"
+      requires-port "~1.0.0"
+  
+  url@0.11.0, url@^0.11.0, url@~0.11.0:
+    version "0.11.0"
+    resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+    dependencies:
+      punycode "1.3.2"
+      querystring "0.2.0"
+  
+  use@^2.0.0:
+    version "2.0.2"
+    resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
+    dependencies:
+      define-property "^0.2.5"
+      isobject "^3.0.0"
+      lazy-cache "^2.0.2"
+  
+  useragent@^2.1.12:
+    version "2.2.1"
+    resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e"
+    dependencies:
+      lru-cache "2.2.x"
+      tmp "0.0.x"
+  
+  util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+  
+  util.promisify@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+    dependencies:
+      define-properties "^1.1.2"
+      object.getownpropertydescriptors "^2.0.3"
+  
+  util@0.10.3, util@^0.10.3, util@~0.10.1:
+    version "0.10.3"
+    resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+    dependencies:
+      inherits "2.0.1"
+  
+  utila@~0.3:
+    version "0.3.3"
+    resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
+  
+  utila@~0.4:
+    version "0.4.0"
+    resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+  
+  utils-merge@1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+  
+  uuid@^3.0.0, uuid@^3.0.1, uuid@^3.2.1:
+    version "3.2.1"
+    resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+  
+  uuid@^3.1.0:
+    version "3.1.0"
+    resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+  
+  uws@~0.14.4:
+    version "0.14.5"
+    resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc"
+  
+  v8flags@^3.0.0:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
+    dependencies:
+      homedir-polyfill "^1.0.1"
+  
+  validate-npm-package-license@^3.0.1:
+    version "3.0.1"
+    resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+    dependencies:
+      spdx-correct "~1.0.0"
+      spdx-expression-parse "~1.0.0"
+  
+  validator@^9.1.2:
+    version "9.4.0"
+    resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.0.tgz#c503ef88f7e6b8fb7688599267b309482d81ae60"
+  
+  vary@~1.1.2:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+  
+  velocity-animate@^1.4.0:
+    version "1.5.1"
+    resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.1.tgz#606837047bab8fbfb59a636d1d82ecc3f7bd71a6"
+  
+  velocity-react@^1.3.1:
+    version "1.3.3"
+    resolved "https://registry.yarnpkg.com/velocity-react/-/velocity-react-1.3.3.tgz#d6d47276cfc8be2a75623879b20140ac58c1b82b"
+    dependencies:
+      lodash "^3.10.1"
+      prop-types "^15.5.8"
+      react-transition-group "^1.1.2"
+      velocity-animate "^1.4.0"
+  
+  vendors@^1.0.0:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+  
+  verror@1.10.0:
+    version "1.10.0"
+    resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+    dependencies:
+      assert-plus "^1.0.0"
+      core-util-is "1.0.2"
+      extsprintf "^1.2.0"
+  
+  vlq@^0.2.1:
+    version "0.2.3"
+    resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+  
+  vm-browserify@0.0.4, vm-browserify@~0.0.1:
+    version "0.0.4"
+    resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+    dependencies:
+      indexof "0.0.1"
+  
+  void-elements@^2.0.0:
+    version "2.0.1"
+    resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+  
+  w3c-hr-time@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
+    dependencies:
+      browser-process-hrtime "^0.1.2"
+  
+  wait-sync@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/wait-sync/-/wait-sync-1.0.1.tgz#c98038819ecf7b4eb20d5b576cdb99b3a864d555"
+    dependencies:
+      deasync "^0.1.8"
+  
+  walker@~1.0.5:
+    version "1.0.7"
+    resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+    dependencies:
+      makeerror "1.0.x"
+  
+  wallaby-webpack@^3.9.5:
+    version "3.9.5"
+    resolved "https://registry.yarnpkg.com/wallaby-webpack/-/wallaby-webpack-3.9.5.tgz#b67eaec3a1fd13921ced7087c712b5314a57363f"
+    dependencies:
+      graceful-fs "^4.1.3"
+      lodash "^3.5.0"
+      minimatch "3.0.3"
+  
+  warning@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
+    dependencies:
+      loose-envify "^1.0.0"
+  
+  watch@~0.18.0:
+    version "0.18.0"
+    resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
+    dependencies:
+      exec-sh "^0.2.0"
+      minimist "^1.2.0"
+  
+  watchpack@^1.4.0:
+    version "1.4.0"
+    resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
+    dependencies:
+      async "^2.1.2"
+      chokidar "^1.7.0"
+      graceful-fs "^4.1.2"
+  
+  wbuf@^1.1.0, wbuf@^1.7.2:
+    version "1.7.2"
+    resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+    dependencies:
+      minimalistic-assert "^1.0.0"
+  
+  webdriver-js-extender@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515"
+    dependencies:
+      "@types/selenium-webdriver" "^2.53.35"
+      selenium-webdriver "^2.53.2"
+  
+  webdriver-manager@^12.0.6:
+    version "12.0.6"
+    resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.6.tgz#3df1a481977010b4cbf8c9d85c7a577828c0e70b"
+    dependencies:
+      adm-zip "^0.4.7"
+      chalk "^1.1.1"
+      del "^2.2.0"
+      glob "^7.0.3"
+      ini "^1.3.4"
+      minimist "^1.2.0"
+      q "^1.4.1"
+      request "^2.78.0"
+      rimraf "^2.5.2"
+      semver "^5.3.0"
+      xml2js "^0.4.17"
+  
+  webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:
+    version "4.0.2"
+    resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+  
+  webpack-core@^0.6.8:
+    version "0.6.9"
+    resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
+    dependencies:
+      source-list-map "~0.1.7"
+      source-map "~0.4.1"
+  
+  webpack-dev-middleware@1.12.2, webpack-dev-middleware@^1.12.2, webpack-dev-middleware@~1.12.0:
+    version "1.12.2"
+    resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+    dependencies:
+      memory-fs "~0.4.1"
+      mime "^1.5.0"
+      path-is-absolute "^1.0.0"
+      range-parser "^1.0.3"
+      time-stamp "^2.0.0"
+  
+  webpack-dev-server@~2.11.0:
+    version "2.11.2"
+    resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f"
+    dependencies:
+      ansi-html "0.0.7"
+      array-includes "^3.0.3"
+      bonjour "^3.5.0"
+      chokidar "^2.0.0"
+      compression "^1.5.2"
+      connect-history-api-fallback "^1.3.0"
+      debug "^3.1.0"
+      del "^3.0.0"
+      express "^4.16.2"
+      html-entities "^1.2.0"
+      http-proxy-middleware "~0.17.4"
+      import-local "^1.0.0"
+      internal-ip "1.2.0"
+      ip "^1.1.5"
+      killable "^1.0.0"
+      loglevel "^1.4.1"
+      opn "^5.1.0"
+      portfinder "^1.0.9"
+      selfsigned "^1.9.1"
+      serve-index "^1.7.2"
+      sockjs "0.3.19"
+      sockjs-client "1.1.4"
+      spdy "^3.4.1"
+      strip-ansi "^3.0.0"
+      supports-color "^5.1.0"
+      webpack-dev-middleware "1.12.2"
+      yargs "6.6.0"
+  
+  webpack-hot-middleware@^2.21.0:
+    version "2.21.2"
+    resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.2.tgz#2e2aa65563b8b32546b67e53b5a9667dcd80f327"
+    dependencies:
+      ansi-html "0.0.7"
+      html-entities "^1.2.0"
+      querystring "^0.2.0"
+      strip-ansi "^3.0.0"
+  
+  webpack-merge@^4.1.0:
+    version "4.1.1"
+    resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555"
+    dependencies:
+      lodash "^4.17.4"
+  
+  webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0:
+    version "1.1.0"
+    resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
+    dependencies:
+      source-list-map "^2.0.0"
+      source-map "~0.6.1"
+  
+  webpack-subresource-integrity@^1.0.1:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.0.3.tgz#c0606d40090b070cde428bec8df3603216e472eb"
+    dependencies:
+      webpack-core "^0.6.8"
+  
+  webpack@3.6.0:
+    version "3.6.0"
+    resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.6.0.tgz#a89a929fbee205d35a4fa2cc487be9cbec8898bc"
+    dependencies:
+      acorn "^5.0.0"
+      acorn-dynamic-import "^2.0.0"
+      ajv "^5.1.5"
+      ajv-keywords "^2.0.0"
+      async "^2.1.2"
+      enhanced-resolve "^3.4.0"
+      escope "^3.6.0"
+      interpret "^1.0.0"
+      json-loader "^0.5.4"
+      json5 "^0.5.1"
+      loader-runner "^2.3.0"
+      loader-utils "^1.1.0"
+      memory-fs "~0.4.1"
+      mkdirp "~0.5.0"
+      node-libs-browser "^2.0.0"
+      source-map "^0.5.3"
+      supports-color "^4.2.1"
+      tapable "^0.2.7"
+      uglifyjs-webpack-plugin "^0.4.6"
+      watchpack "^1.4.0"
+      webpack-sources "^1.0.1"
+      yargs "^8.0.2"
+  
+  webpack@^3.11.0, webpack@~3.11.0:
+    version "3.11.0"
+    resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894"
+    dependencies:
+      acorn "^5.0.0"
+      acorn-dynamic-import "^2.0.0"
+      ajv "^6.1.0"
+      ajv-keywords "^3.1.0"
+      async "^2.1.2"
+      enhanced-resolve "^3.4.0"
+      escope "^3.6.0"
+      interpret "^1.0.0"
+      json-loader "^0.5.4"
+      json5 "^0.5.1"
+      loader-runner "^2.3.0"
+      loader-utils "^1.1.0"
+      memory-fs "~0.4.1"
+      mkdirp "~0.5.0"
+      node-libs-browser "^2.0.0"
+      source-map "^0.5.3"
+      supports-color "^4.2.1"
+      tapable "^0.2.7"
+      uglifyjs-webpack-plugin "^0.4.6"
+      watchpack "^1.4.0"
+      webpack-sources "^1.0.1"
+      yargs "^8.0.2"
+  
+  websocket-driver@>=0.5.1:
+    version "0.7.0"
+    resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
+    dependencies:
+      http-parser-js ">=0.4.0"
+      websocket-extensions ">=0.1.1"
+  
+  websocket-extensions@>=0.1.1:
+    version "0.1.3"
+    resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
+  
+  whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
+    version "1.0.3"
+    resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3"
+    dependencies:
+      iconv-lite "0.4.19"
+  
+  whatwg-fetch@>=0.10.0:
+    version "2.0.3"
+    resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+  
+  whatwg-url@^6.4.0:
+    version "6.4.0"
+    resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08"
+    dependencies:
+      lodash.sortby "^4.7.0"
+      tr46 "^1.0.0"
+      webidl-conversions "^4.0.1"
+  
+  when@^3.7.7:
+    version "3.7.8"
+    resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82"
+  
+  when@~3.6.x:
+    version "3.6.4"
+    resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e"
+  
+  whet.extend@~0.9.9:
+    version "0.9.9"
+    resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+  
+  which-module@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+  
+  which-module@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+  
+  which@1, which@^1.2.1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
+    version "1.3.0"
+    resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+    dependencies:
+      isexe "^2.0.0"
+  
+  wide-align@^1.1.0:
+    version "1.1.2"
+    resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+    dependencies:
+      string-width "^1.0.2"
+  
+  window-size@0.1.0:
+    version "0.1.0"
+    resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+  
+  wordwrap@0.0.2:
+    version "0.0.2"
+    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+  
+  wordwrap@~0.0.2:
+    version "0.0.3"
+    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+  
+  wordwrap@~1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+  
+  worker-farm@^1.5.2:
+    version "1.5.2"
+    resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
+    dependencies:
+      errno "^0.1.4"
+      xtend "^4.0.1"
+  
+  wrap-ansi@^2.0.0:
+    version "2.1.0"
+    resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+    dependencies:
+      string-width "^1.0.1"
+      strip-ansi "^3.0.1"
+  
+  wrappy@1:
+    version "1.0.2"
+    resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+  
+  write-file-atomic@^2.0.0, write-file-atomic@^2.1.0:
+    version "2.3.0"
+    resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
+    dependencies:
+      graceful-fs "^4.1.11"
+      imurmurhash "^0.1.4"
+      signal-exit "^3.0.2"
+  
+  ws@^1.0.1:
+    version "1.1.5"
+    resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"
+    dependencies:
+      options ">=0.0.5"
+      ultron "1.0.x"
+  
+  ws@^4.0.0:
+    version "4.1.0"
+    resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
+    dependencies:
+      async-limiter "~1.0.0"
+      safe-buffer "~5.1.0"
+  
+  ws@~3.3.1:
+    version "3.3.3"
+    resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
+    dependencies:
+      async-limiter "~1.0.0"
+      safe-buffer "~5.1.0"
+      ultron "~1.1.0"
+  
+  xdg-basedir@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+  
+  xml-char-classes@^1.0.0:
+    version "1.0.0"
+    resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+  
+  xml-name-validator@^3.0.0:
+    version "3.0.0"
+    resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+  
+  xml2js@0.4.4:
+    version "0.4.4"
+    resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d"
+    dependencies:
+      sax "0.6.x"
+      xmlbuilder ">=1.0.0"
+  
+  xml2js@^0.4.17:
+    version "0.4.19"
+    resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+    dependencies:
+      sax ">=0.6.0"
+      xmlbuilder "~9.0.1"
+  
+  xml@^1.0.1:
+    version "1.0.1"
+    resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
+  
+  xmlbuilder@>=1.0.0, xmlbuilder@~9.0.1:
+    version "9.0.4"
+    resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f"
+  
+  xmlhttprequest-ssl@~1.5.4:
+    version "1.5.5"
+    resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
+  
+  xregexp@2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
+  
+  xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+    version "4.0.1"
+    resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+  
+  xtend@~2.1.1:
+    version "2.1.2"
+    resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+    dependencies:
+      object-keys "~0.4.0"
+  
+  xxhashjs@^0.2.1:
+    version "0.2.1"
+    resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.1.tgz#9bbe9be896142976dfa34c061b2d068c43d30de0"
+    dependencies:
+      cuint latest
+  
+  y18n@^3.2.1:
+    version "3.2.1"
+    resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+  
+  y18n@^4.0.0:
+    version "4.0.0"
+    resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+  
+  yallist@^2.1.2:
+    version "2.1.2"
+    resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+  
+  yargs-parser@^4.2.0:
+    version "4.2.1"
+    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+    dependencies:
+      camelcase "^3.0.0"
+  
+  yargs-parser@^5.0.0:
+    version "5.0.0"
+    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
+    dependencies:
+      camelcase "^3.0.0"
+  
+  yargs-parser@^7.0.0:
+    version "7.0.0"
+    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+    dependencies:
+      camelcase "^4.1.0"
+  
+  yargs-parser@^8.1.0:
+    version "8.1.0"
+    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
+    dependencies:
+      camelcase "^4.1.0"
+  
+  yargs-parser@^9.0.2:
+    version "9.0.2"
+    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
+    dependencies:
+      camelcase "^4.1.0"
+  
+  yargs@6.6.0:
+    version "6.6.0"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+    dependencies:
+      camelcase "^3.0.0"
+      cliui "^3.2.0"
+      decamelize "^1.1.1"
+      get-caller-file "^1.0.1"
+      os-locale "^1.4.0"
+      read-pkg-up "^1.0.1"
+      require-directory "^2.1.1"
+      require-main-filename "^1.0.1"
+      set-blocking "^2.0.0"
+      string-width "^1.0.2"
+      which-module "^1.0.0"
+      y18n "^3.2.1"
+      yargs-parser "^4.2.0"
+  
+  yargs@^10.0.3:
+    version "10.1.2"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
+    dependencies:
+      cliui "^4.0.0"
+      decamelize "^1.1.1"
+      find-up "^2.1.0"
+      get-caller-file "^1.0.1"
+      os-locale "^2.0.0"
+      require-directory "^2.1.1"
+      require-main-filename "^1.0.1"
+      set-blocking "^2.0.0"
+      string-width "^2.0.0"
+      which-module "^2.0.0"
+      y18n "^3.2.1"
+      yargs-parser "^8.1.0"
+  
+  yargs@^11.0.0:
+    version "11.0.0"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"
+    dependencies:
+      cliui "^4.0.0"
+      decamelize "^1.1.1"
+      find-up "^2.1.0"
+      get-caller-file "^1.0.1"
+      os-locale "^2.0.0"
+      require-directory "^2.1.1"
+      require-main-filename "^1.0.1"
+      set-blocking "^2.0.0"
+      string-width "^2.0.0"
+      which-module "^2.0.0"
+      y18n "^3.2.1"
+      yargs-parser "^9.0.2"
+  
+  yargs@^7.0.0:
+    version "7.1.0"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
+    dependencies:
+      camelcase "^3.0.0"
+      cliui "^3.2.0"
+      decamelize "^1.1.1"
+      get-caller-file "^1.0.1"
+      os-locale "^1.4.0"
+      read-pkg-up "^1.0.1"
+      require-directory "^2.1.1"
+      require-main-filename "^1.0.1"
+      set-blocking "^2.0.0"
+      string-width "^1.0.2"
+      which-module "^1.0.0"
+      y18n "^3.2.1"
+      yargs-parser "^5.0.0"
+  
+  yargs@^8.0.2:
+    version "8.0.2"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+    dependencies:
+      camelcase "^4.1.0"
+      cliui "^3.2.0"
+      decamelize "^1.1.1"
+      get-caller-file "^1.0.1"
+      os-locale "^2.0.0"
+      read-pkg-up "^2.0.0"
+      require-directory "^2.1.1"
+      require-main-filename "^1.0.1"
+      set-blocking "^2.0.0"
+      string-width "^2.0.0"
+      which-module "^2.0.0"
+      y18n "^3.2.1"
+      yargs-parser "^7.0.0"
+  
+  yargs@~3.10.0:
+    version "3.10.0"
+    resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+    dependencies:
+      camelcase "^1.0.2"
+      cliui "^2.1.0"
+      decamelize "^1.0.0"
+      window-size "0.1.0"
+  
+  yauzl@2.4.1:
+    version "2.4.1"
+    resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
+    dependencies:
+      fd-slicer "~1.0.1"
+  
+  yauzl@2.8.0:
+    version "2.8.0"
+    resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
+    dependencies:
+      buffer-crc32 "~0.2.3"
+      fd-slicer "~1.0.1"
+  
+  yeast@0.1.2:
+    version "0.1.2"
+    resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+  
+  yn@^2.0.0:
+    version "2.0.0"
+    resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+  
+  zone.js@^0.8.19, zone.js@^0.8.20:
+    version "0.8.20"
+    resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.20.tgz#a218c48db09464b19ff6fc8f0d4bb5b1046e185d"
+
+Trace: 
+  Error: connect ETIMEDOUT 104.16.62.173:443
+      at Object._errnoException (util.js:1021:11)
+      at _exceptionWithHostPort (util.js:1043:20)
+      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1175:14)
diff --git a/public/yarn.lock b/public/yarn.lock
new file mode 100644
index 0000000..df0e3b2
--- /dev/null
+++ b/public/yarn.lock
@@ -0,0 +1,11886 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@angular-devkit/build-optimizer@0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.3.2.tgz#77d4d1e4fcd09575f0200e2d6d21c1a3f995096f"
+  dependencies:
+    loader-utils "^1.1.0"
+    source-map "^0.5.6"
+    typescript "~2.6.2"
+    webpack-sources "^1.0.1"
+
+"@angular-devkit/core@0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.3.2.tgz#b6fd6aa2e4f4ac3c39478198ba91a53d4c0f88d5"
+  dependencies:
+    ajv "~5.5.1"
+    chokidar "^1.7.0"
+    rxjs "^5.5.6"
+    source-map "^0.5.6"
+
+"@angular-devkit/schematics@0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.3.2.tgz#09a2268fad61f4f956f42db87913b8748c512a78"
+  dependencies:
+    "@ngtools/json-schema" "^1.1.0"
+    rxjs "^5.5.6"
+
+"@angular/animations@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.2.0.tgz#a3ce02c01b074f0de7c2c23c1f08b4a00f0bec5f"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/cdk@^5.1.1":
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-5.1.1.tgz#a278b44ec02145a4691aa466dde06a1ae8c0fe88"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/cli@^1.7.3":
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.7.3.tgz#ac917b69240bb1b340421e9f985135890e0d53b4"
+  dependencies:
+    "@angular-devkit/build-optimizer" "0.3.2"
+    "@angular-devkit/core" "0.3.2"
+    "@angular-devkit/schematics" "0.3.2"
+    "@ngtools/json-schema" "1.2.0"
+    "@ngtools/webpack" "1.10.2"
+    "@schematics/angular" "0.3.2"
+    "@schematics/package-update" "0.3.2"
+    ajv "^6.1.1"
+    autoprefixer "^7.2.3"
+    cache-loader "^1.2.0"
+    chalk "~2.2.0"
+    circular-dependency-plugin "^4.2.1"
+    clean-css "^4.1.11"
+    common-tags "^1.3.1"
+    copy-webpack-plugin "~4.4.1"
+    core-object "^3.1.0"
+    denodeify "^1.2.1"
+    ember-cli-string-utils "^1.0.0"
+    extract-text-webpack-plugin "^3.0.2"
+    file-loader "^1.1.5"
+    fs-extra "^4.0.0"
+    glob "^7.0.3"
+    html-webpack-plugin "^2.29.0"
+    istanbul-instrumenter-loader "^3.0.0"
+    karma-source-map-support "^1.2.0"
+    less "^2.7.2"
+    less-loader "^4.0.5"
+    license-webpack-plugin "^1.0.0"
+    loader-utils "1.1.0"
+    lodash "^4.11.1"
+    memory-fs "^0.4.1"
+    minimatch "^3.0.4"
+    node-modules-path "^1.0.0"
+    nopt "^4.0.1"
+    opn "~5.1.0"
+    portfinder "~1.0.12"
+    postcss "^6.0.16"
+    postcss-import "^11.0.0"
+    postcss-loader "^2.0.10"
+    postcss-url "^7.1.2"
+    raw-loader "^0.5.1"
+    resolve "^1.1.7"
+    rxjs "^5.5.6"
+    sass-loader "^6.0.6"
+    semver "^5.1.0"
+    silent-error "^1.0.0"
+    source-map-support "^0.4.1"
+    style-loader "^0.19.1"
+    stylus "^0.54.5"
+    stylus-loader "^3.0.1"
+    uglifyjs-webpack-plugin "^1.1.8"
+    url-loader "^0.6.2"
+    webpack "~3.11.0"
+    webpack-dev-middleware "~1.12.0"
+    webpack-dev-server "~2.11.0"
+    webpack-merge "^4.1.0"
+    webpack-sources "^1.0.0"
+    webpack-subresource-integrity "^1.0.1"
+  optionalDependencies:
+    node-sass "^4.7.2"
+
+"@angular/common@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.2.0.tgz#d184fb90763da1d1bab1f6c4f41dd80c79e47506"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/compiler-cli@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.0.tgz#336b6d0127c69f25637cbcd82a4b76de6f3a2cce"
+  dependencies:
+    chokidar "^1.4.2"
+    minimist "^1.2.0"
+    reflect-metadata "^0.1.2"
+    tsickle "^0.26.0"
+
+"@angular/compiler@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.0.tgz#3798795b97e60b47fdc0a150e062dedb4ac39467"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/core@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.0.tgz#f91bf83de3e0defd621adcc007c25d7cd5a85af1"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/forms@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.2.0.tgz#b5fb6b9ba97334bca0e3202d7fee6b9162cbc824"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/http@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.2.0.tgz#ebffff97e6c7baa3609a2d68e982bf990b1c72dc"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/language-service@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.2.0.tgz#c8fab0ca8cbd79dafc96fad844ae69e9038b69ad"
+
+"@angular/material@5.1.1":
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/@angular/material/-/material-5.1.1.tgz#fafbd6bd98f2521ac5e3e2b2f720214386e3f31d"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/platform-browser-dynamic@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.0.tgz#6d3e074363606b559c3319d2433d1c08ccaefbad"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/platform-browser@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.2.0.tgz#89cbc8abf54171ecf3dd9a40970b4982eecc9f73"
+  dependencies:
+    tslib "^1.7.1"
+
+"@angular/router@^5.1.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.2.0.tgz#0a43f1c6add592c9cb0b9846fc157fc5b23ee73d"
+  dependencies:
+    tslib "^1.7.1"
+
+"@babel/code-frame@^7.0.0-beta.35":
+  version "7.0.0-beta.40"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6"
+  dependencies:
+    "@babel/highlight" "7.0.0-beta.40"
+
+"@babel/highlight@7.0.0-beta.40":
+  version "7.0.0-beta.40"
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255"
+  dependencies:
+    chalk "^2.0.0"
+    esutils "^2.0.2"
+    js-tokens "^3.0.0"
+
+"@bahmutov/add-typescript-to-cypress@^2.0.0":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@bahmutov/add-typescript-to-cypress/-/add-typescript-to-cypress-2.0.0.tgz#5458b630d1d9d309b10941df8757bb59a5db2abf"
+  dependencies:
+    "@cypress/webpack-preprocessor" "1.1.3"
+    am-i-a-dependency "1.1.2"
+    chalk "2.3.0"
+    debug "3.1.0"
+    shelljs "0.8.0"
+    terminal-banner "1.1.0"
+    ts-loader "3.2.0"
+
+"@cypress/listr-verbose-renderer@0.4.1":
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
+  dependencies:
+    chalk "^1.1.3"
+    cli-cursor "^1.0.2"
+    date-fns "^1.27.2"
+    figures "^1.7.0"
+
+"@cypress/webpack-preprocessor@1.1.3":
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-1.1.3.tgz#ee216893714c6e89a171ff4a6ffa03893c308c78"
+  dependencies:
+    babel-core "6.26.0"
+    babel-loader "7.1.2"
+    babel-preset-env "1.6.0"
+    babel-preset-react "6.24.1"
+    bluebird "3.5.0"
+    debug "3.1.0"
+    lodash.clonedeep "4.5.0"
+    webpack "3.6.0"
+
+"@cypress/xvfb@1.1.3":
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.1.3.tgz#6294a7d1feb751f12302248f2089fc534c4acb7f"
+  dependencies:
+    lodash.once "^4.1.1"
+
+"@ng-select/ng-select@^0.26.2":
+  version "0.26.2"
+  resolved "https://registry.yarnpkg.com/@ng-select/ng-select/-/ng-select-0.26.2.tgz#4e3bbf3743294b7435868af48b1f4dd593ca4c58"
+  dependencies:
+    tslib "^1.7.1"
+
+"@ngtools/json-schema@1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.2.0.tgz#06e5ecd29e9a37d260a447dd873ea2becd228c4f"
+
+"@ngtools/json-schema@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
+
+"@ngtools/webpack@1.10.2":
+  version "1.10.2"
+  resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.10.2.tgz#373705fd19992b36e996203480b1d412e942c8d6"
+  dependencies:
+    chalk "~2.2.0"
+    enhanced-resolve "^3.1.0"
+    loader-utils "^1.0.2"
+    magic-string "^0.22.3"
+    semver "^5.3.0"
+    source-map "^0.5.6"
+    tree-kill "^1.0.0"
+    webpack-sources "^1.1.0"
+
+"@schematics/angular@0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.3.2.tgz#be209a032a3e4577992d94fbaa14bd4bfde485e2"
+  dependencies:
+    typescript "~2.6.2"
+
+"@schematics/package-update@0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@schematics/package-update/-/package-update-0.3.2.tgz#c5a299ceba8b9e56f3e1f804f86f07664ec6e01c"
+  dependencies:
+    rxjs "^5.5.6"
+    semver "^5.3.0"
+    semver-intersect "^1.1.2"
+
+"@storybook/addon-actions@3.4.0-alpha.9", "@storybook/addon-actions@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.4.0-alpha.9.tgz#1016751ed00aa043a0b228a8e7e9b370712f4a61"
+  dependencies:
+    "@storybook/components" "^3.4.0-alpha.9"
+    deep-equal "^1.0.1"
+    glamorous "^4.11.6"
+    global "^4.3.2"
+    make-error "^1.3.4"
+    prop-types "^15.6.0"
+    react-inspector "^2.2.2"
+    uuid "^3.2.1"
+
+"@storybook/addon-knobs@3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-3.4.0-alpha.9.tgz#7e316eb6055718033b240fc3bae20c7f9533f0e8"
+  dependencies:
+    "@storybook/components" "^3.4.0-alpha.9"
+    babel-runtime "^6.26.0"
+    deep-equal "^1.0.1"
+    global "^4.3.2"
+    insert-css "^2.0.0"
+    lodash.debounce "^4.0.8"
+    moment "^2.20.1"
+    prop-types "^15.6.0"
+    react-color "^2.11.4"
+    react-datetime "^2.14.0"
+    react-textarea-autosize "^5.2.1"
+    util-deprecate "^1.0.2"
+
+"@storybook/addon-links@3.4.0-alpha.9", "@storybook/addon-links@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.4.0-alpha.9.tgz#cfa0c571cbb2d6da614fe25269e014d88dceaae5"
+  dependencies:
+    "@storybook/components" "^3.4.0-alpha.9"
+    global "^4.3.2"
+    prop-types "^15.5.10"
+
+"@storybook/addon-notes@3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-notes/-/addon-notes-3.4.0-alpha.9.tgz#767bdd8ea044ea29b4215286bfa9c09d3ed1aa57"
+  dependencies:
+    babel-runtime "^6.26.0"
+    marked "^0.3.16"
+    prop-types "^15.6.0"
+    util-deprecate "^1.0.2"
+  optionalDependencies:
+    "@types/react" "^16.0.20"
+
+"@storybook/addon-options@3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addon-options/-/addon-options-3.4.0-alpha.9.tgz#453a642442c3770eb77be11593f8b925e62841ec"
+
+"@storybook/addons@3.4.0-alpha.9", "@storybook/addons@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.4.0-alpha.9.tgz#7701a8a42e6016ae07430e4576b5277cef489f43"
+
+"@storybook/angular@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/angular/-/angular-3.4.0-alpha.9.tgz#40305a4bf13873a383c9c6c123864f0f8b27cac5"
+  dependencies:
+    "@storybook/addon-actions" "^3.4.0-alpha.9"
+    "@storybook/addon-links" "^3.4.0-alpha.9"
+    "@storybook/addons" "^3.4.0-alpha.9"
+    "@storybook/channel-postmessage" "^3.4.0-alpha.9"
+    "@storybook/core" "^3.4.0-alpha.9"
+    "@storybook/node-logger" "^3.4.0-alpha.9"
+    "@storybook/ui" "^3.4.0-alpha.9"
+    airbnb-js-shims "^1.4.1"
+    angular2-template-loader "^0.6.2"
+    autoprefixer "^7.2.6"
+    babel-core "^6.26.0"
+    babel-loader "^7.0.0"
+    babel-plugin-macros "^2.1.0"
+    babel-plugin-react-docgen "^1.8.2"
+    babel-preset-env "^1.6.0"
+    babel-preset-react "^6.24.1"
+    babel-preset-react-app "^3.1.1"
+    babel-preset-stage-0 "^6.24.1"
+    babel-runtime "^6.23.0"
+    case-sensitive-paths-webpack-plugin "^2.0.0"
+    common-tags "^1.7.2"
+    configstore "^3.1.0"
+    core-js "^2.4.1"
+    cross-env "^5.1.1"
+    css-loader "^0.28.9"
+    dotenv-webpack "^1.5.4"
+    express "^4.15.3"
+    file-loader "^1.1.8"
+    find-cache-dir "^1.0.0"
+    global "^4.3.2"
+    html-loader "^0.5.5"
+    html-webpack-plugin "^2.30.1"
+    json-loader "^0.5.4"
+    json-stringify-safe "^5.0.1"
+    json5 "^0.5.1"
+    lodash.pick "^4.4.0"
+    markdown-loader "^2.0.2"
+    node-sass "^4.7.2"
+    postcss-flexbugs-fixes "^3.3.0"
+    postcss-loader "^2.1.0"
+    prop-types "^15.5.10"
+    qs "^6.5.1"
+    raw-loader "^0.5.1"
+    react "^16.0.0"
+    react-dev-utils "^5.0.0"
+    react-dom "^16.0.0"
+    react-modal "^3.3.1"
+    redux "^3.6.0"
+    request "^2.81.0"
+    rxjs "^5.4.2"
+    sass-loader "^6.0.6"
+    style-loader "^0.20.2"
+    ts-loader "^3.5.0"
+    uglifyjs-webpack-plugin "^1.2.0"
+    url-loader "^0.6.2"
+    util-deprecate "^1.0.2"
+    webpack "^3.11.0"
+    zone.js "^0.8.20"
+
+"@storybook/channel-postmessage@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.4.0-alpha.9.tgz#effa7f240b2d4e41b21d5a4c82b8a3cbbd43a1b2"
+  dependencies:
+    "@storybook/channels" "^3.4.0-alpha.9"
+    global "^4.3.2"
+    json-stringify-safe "^5.0.1"
+
+"@storybook/channels@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.4.0-alpha.9.tgz#953eeb38c657be6eb2b6ee7b1d7637e038fc5ddf"
+
+"@storybook/client-logger@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-3.4.0-alpha.9.tgz#10704a010ec2643937d098202c894f3c392ebfbe"
+
+"@storybook/components@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.4.0-alpha.9.tgz#dc313e9f788780c6eca16c69e30186021466fd20"
+  dependencies:
+    glamor "^2.20.40"
+    glamorous "^4.11.6"
+    prop-types "^15.6.0"
+
+"@storybook/core@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/core/-/core-3.4.0-alpha.9.tgz#b80f640b1d482cd4fd49a47cd3ad9e3e9e8e89a3"
+  dependencies:
+    "@storybook/addons" "^3.4.0-alpha.9"
+    "@storybook/channel-postmessage" "^3.4.0-alpha.9"
+    "@storybook/client-logger" "^3.4.0-alpha.9"
+    "@storybook/node-logger" "^3.4.0-alpha.9"
+    "@storybook/ui" "^3.4.0-alpha.9"
+    autoprefixer "^7.2.6"
+    babel-runtime "^6.26.0"
+    chalk "^2.3.1"
+    commander "^2.14.1"
+    css-loader "^0.28.9"
+    dotenv "^5.0.0"
+    events "^1.1.1"
+    express "^4.16.2"
+    file-loader "^1.1.8"
+    global "^4.3.2"
+    json-loader "^0.5.7"
+    postcss-flexbugs-fixes "^3.2.0"
+    postcss-loader "^2.1.0"
+    prop-types "^15.5.10"
+    qs "^6.5.1"
+    react "^16.0.0"
+    react-dom "^16.0.0"
+    serve-favicon "^2.4.5"
+    shelljs "^0.8.1"
+    style-loader "^0.20.2"
+    url-loader "^0.6.2"
+    webpack "^3.11.0"
+    webpack-dev-middleware "^1.12.2"
+    webpack-hot-middleware "^2.21.0"
+
+"@storybook/mantra-core@^1.7.2":
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/@storybook/mantra-core/-/mantra-core-1.7.2.tgz#e10c7faca29769e97131e0e0308ef7cfb655b70c"
+  dependencies:
+    "@storybook/react-komposer" "^2.0.1"
+    "@storybook/react-simple-di" "^1.2.1"
+    babel-runtime "6.x.x"
+
+"@storybook/node-logger@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-3.4.0-alpha.9.tgz#edb5813f51a9c5c8487988b3e7582aa4d841ad25"
+  dependencies:
+    chalk "^2.3.1"
+    npmlog "^4.1.2"
+
+"@storybook/podda@^1.2.3":
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/@storybook/podda/-/podda-1.2.3.tgz#53c4a1a3f8c7bbd5755dff5c34576fd1af9d38ba"
+  dependencies:
+    babel-runtime "^6.11.6"
+    immutable "^3.8.1"
+
+"@storybook/react-komposer@^2.0.1", "@storybook/react-komposer@^2.0.3":
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/@storybook/react-komposer/-/react-komposer-2.0.3.tgz#f9e12a9586b2ce95c24c137eabb8b71527ddb369"
+  dependencies:
+    "@storybook/react-stubber" "^1.0.0"
+    babel-runtime "^6.11.6"
+    hoist-non-react-statics "^1.2.0"
+    lodash.pick "^4.4.0"
+    shallowequal "^0.2.2"
+
+"@storybook/react-simple-di@^1.2.1":
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/@storybook/react-simple-di/-/react-simple-di-1.3.0.tgz#13116d89a2f42898716a7f8c4095b47415526371"
+  dependencies:
+    babel-runtime "6.x.x"
+    create-react-class "^15.6.2"
+    hoist-non-react-statics "1.x.x"
+    prop-types "^15.6.0"
+
+"@storybook/react-stubber@^1.0.0":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/@storybook/react-stubber/-/react-stubber-1.0.1.tgz#8c312c2658b9eeafce470e1c39e4193f0b5bf9b1"
+  dependencies:
+    babel-runtime "^6.5.0"
+
+"@storybook/ui@^3.4.0-alpha.9":
+  version "3.4.0-alpha.9"
+  resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.4.0-alpha.9.tgz#0d507003c95eb7e3db5d6725c98bc9c9db445728"
+  dependencies:
+    "@storybook/components" "^3.4.0-alpha.9"
+    "@storybook/mantra-core" "^1.7.2"
+    "@storybook/podda" "^1.2.3"
+    "@storybook/react-komposer" "^2.0.3"
+    babel-runtime "^6.26.0"
+    deep-equal "^1.0.1"
+    events "^1.1.1"
+    fuse.js "^3.2.0"
+    global "^4.3.2"
+    json-stringify-safe "^5.0.1"
+    keycode "^2.1.9"
+    lodash.debounce "^4.0.8"
+    lodash.pick "^4.4.0"
+    lodash.sortby "^4.7.0"
+    prop-types "^15.6.0"
+    qs "^6.5.1"
+    react-fuzzy "^0.5.2"
+    react-icons "^2.2.7"
+    react-inspector "^2.2.2"
+    react-modal "^3.3.1"
+    react-split-pane "^0.1.77"
+    react-treebeard "^2.1.0"
+    redux "^3.7.2"
+
+"@types/blob-util@1.3.3":
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a"
+
+"@types/bluebird@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6"
+
+"@types/chai-jquery@1.1.35":
+  version "1.1.35"
+  resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.35.tgz#9a8f0a39ec0851b2768a8f8c764158c2a2568d04"
+  dependencies:
+    "@types/chai" "*"
+    "@types/jquery" "*"
+
+"@types/chai@*":
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.2.tgz#f1af664769cfb50af805431c407425ed619daa21"
+
+"@types/chai@4.0.8":
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.8.tgz#d27600e9ba2f371e08695d90a0fe0408d89c7be7"
+
+"@types/jasmine@*", "@types/jasmine@~2.8.3":
+  version "2.8.4"
+  resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.4.tgz#5528fb5e53f1b27594f81f18debb7eab8dc532cb"
+
+"@types/jasminewd2@~2.0.2":
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95"
+  dependencies:
+    "@types/jasmine" "*"
+
+"@types/jest@^22.1.3", "@types/jest@^22.2.0":
+  version "22.2.0"
+  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.0.tgz#55ce83139f7ad1b48b414c3927746614c6963c0f"
+
+"@types/jquery@*":
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.0.tgz#6316ac20a1a13c5d521a2dc661befc7184f73f5b"
+
+"@types/jquery@3.2.16":
+  version "3.2.16"
+  resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.2.16.tgz#04419c404a3194350e7d3f339a90e72c88db3111"
+
+"@types/lodash@4.14.87":
+  version "4.14.87"
+  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b"
+
+"@types/minimatch@3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550"
+
+"@types/mocha@2.2.44":
+  version "2.2.44"
+  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e"
+
+"@types/node@^6.0.46":
+  version "6.0.96"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.96.tgz#7bf0bf40d6ce51e93762cc47d010c8cc5ebb2179"
+
+"@types/node@^8.0.24":
+  version "8.9.5"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.5.tgz#162b864bc70be077e6db212b322754917929e976"
+
+"@types/node@^9.4.6":
+  version "9.4.6"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e"
+
+"@types/q@^0.0.32":
+  version "0.0.32"
+  resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
+
+"@types/react@^16.0.20":
+  version "16.0.40"
+  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.40.tgz#caabc2296886f40b67f6fc80f0f3464476461df9"
+
+"@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39":
+  version "2.53.43"
+  resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz#2de3d718819bc20165754c4a59afb7e9833f6707"
+
+"@types/sinon-chai@2.7.29":
+  version "2.7.29"
+  resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-2.7.29.tgz#4db01497e2dd1908b2bd30d1782f456353f5f723"
+  dependencies:
+    "@types/chai" "*"
+    "@types/sinon" "*"
+
+"@types/sinon@*":
+  version "4.1.3"
+  resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.1.3.tgz#2ee25e0e302f31e78a945650a60029e08878eaf8"
+
+"@types/sinon@4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.0.0.tgz#9a93ffa4ee1329e85166278a5ed99f81dc4c8362"
+
+JSONStream@^1.0.3:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea"
+  dependencies:
+    jsonparse "^1.2.0"
+    through ">=2.2.7 <3"
+
+abab@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
+
+abbrev@1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+
+accepts@1.3.3:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
+  dependencies:
+    mime-types "~2.1.11"
+    negotiator "0.6.1"
+
+accepts@~1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
+  dependencies:
+    mime-types "~2.1.16"
+    negotiator "0.6.1"
+
+acorn-dynamic-import@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+  dependencies:
+    acorn "^4.0.3"
+
+acorn-globals@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
+  dependencies:
+    acorn "^5.0.0"
+
+acorn@^4.0.3:
+  version "4.0.13"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+
+acorn@^5.0.0, acorn@^5.2.1:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
+
+acorn@^5.3.0:
+  version "5.5.3"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
+
+address@1.0.3, address@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
+
+addressparser@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746"
+
+adm-zip@0.4.4:
+  version "0.4.4"
+  resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736"
+
+adm-zip@^0.4.7:
+  version "0.4.7"
+  resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1"
+
+after@0.8.2:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+
+agent-base@2:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7"
+  dependencies:
+    extend "~3.0.0"
+    semver "~5.0.1"
+
+airbnb-js-shims@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.4.1.tgz#cc3e8eb8d35877f9d0fdc6583e26b0ee75b98ad0"
+  dependencies:
+    array-includes "^3.0.3"
+    array.prototype.flatmap "^1.2.0"
+    array.prototype.flatten "^1.2.0"
+    es5-shim "^4.5.10"
+    es6-shim "^0.35.3"
+    function.prototype.name "^1.1.0"
+    object.entries "^1.0.4"
+    object.getownpropertydescriptors "^2.0.3"
+    object.values "^1.0.4"
+    promise.prototype.finally "^3.1.0"
+    string.prototype.padend "^3.0.0"
+    string.prototype.padstart "^3.0.0"
+
+ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+
+ajv-keywords@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
+
+ajv@^4.9.1:
+  version "4.11.8"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
+  dependencies:
+    co "^4.6.0"
+    json-stable-stringify "^1.0.1"
+
+ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@~5.5.1:
+  version "5.5.2"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+  dependencies:
+    co "^4.6.0"
+    fast-deep-equal "^1.0.0"
+    fast-json-stable-stringify "^2.0.0"
+    json-schema-traverse "^0.3.0"
+
+ajv@^6.1.0, ajv@^6.1.1:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671"
+  dependencies:
+    fast-deep-equal "^1.0.0"
+    fast-json-stable-stringify "^2.0.0"
+    json-schema-traverse "^0.3.0"
+
+align-text@^0.1.1, align-text@^0.1.3:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+  dependencies:
+    kind-of "^3.0.2"
+    longest "^1.0.1"
+    repeat-string "^1.5.2"
+
+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+
+am-i-a-dependency@1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/am-i-a-dependency/-/am-i-a-dependency-1.1.2.tgz#f9d3422304d6f642f821e4c407565035f6167f1f"
+
+amdefine@>=0.0.4:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+
+angular-tree-component@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.0.1.tgz#fc8d0e72d8c34b87131a3ba2bd32ad20945689ac"
+  dependencies:
+    lodash "4.17.4"
+    mobx ">=3"
+    mobx-angular ">=1"
+
+angular2-template-loader@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz#c0d44e90fff0fac95e8b23f043acda7fd1c51d7c"
+  dependencies:
+    loader-utils "^0.2.15"
+
+ansi-escapes@^1.0.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+
+ansi-escapes@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+
+ansi-html@0.0.7:
+  version "0.0.7"
+  resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+
+ansi-regex@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-regex@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+
+ansi-styles@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+ansi-styles@^3.1.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+  dependencies:
+    color-convert "^1.9.0"
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+  dependencies:
+    color-convert "^1.9.0"
+
+any-observable@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242"
+
+anymatch@^1.3.0:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+  dependencies:
+    micromatch "^2.1.5"
+    normalize-path "^2.0.0"
+
+anymatch@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+  dependencies:
+    micromatch "^3.1.4"
+    normalize-path "^2.1.1"
+
+app-root-path@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
+
+append-transform@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+  dependencies:
+    default-require-extensions "^1.0.0"
+
+aproba@^1.0.3, aproba@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+
+are-we-there-yet@~1.1.2:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+  dependencies:
+    delegates "^1.0.0"
+    readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+  dependencies:
+    sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+  dependencies:
+    arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+
+arr-union@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
+array-equal@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+
+array-filter@~0.0.0:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+
+array-find-index@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+
+array-find@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8"
+
+array-flatten@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+
+array-flatten@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
+
+array-includes@^3.0.3:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.7.0"
+
+array-map@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+
+array-reduce@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+
+array-slice@^0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
+
+array-union@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+  dependencies:
+    array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
+array-unique@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+array-unique@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
+array.prototype.flatmap@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz#3103cd4826ef90019c9b0a4839b2535fa6faf4e9"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.10.0"
+    function-bind "^1.1.1"
+
+array.prototype.flatten@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz#a77ae1b64524ce373b137fade324d12040d3c680"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.10.0"
+    function-bind "^1.1.1"
+
+arraybuffer.slice@~0.0.7:
+  version "0.0.7"
+  resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
+
+arrify@^1.0.0, arrify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+
+asap@~2.0.3:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+
+asn1.js@^4.0.0:
+  version "4.9.2"
+  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
+  dependencies:
+    bn.js "^4.0.0"
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
+assert-plus@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+
+assert@^1.1.1, assert@^1.4.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+  dependencies:
+    util "0.10.3"
+
+assign-symbols@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
+ast-types@0.10.1, ast-types@0.x.x:
+  version "0.10.1"
+  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd"
+
+ast-types@0.9.6:
+  version "0.9.6"
+  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
+
+astral-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+
+astw@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917"
+  dependencies:
+    acorn "^4.0.3"
+
+async-each@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async-foreach@^0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+
+async-limiter@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+
+async@2.1.4:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
+  dependencies:
+    lodash "^4.14.0"
+
+async@^1.4.0, async@^1.5.2:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@^2.1.2, async@^2.1.4, async@^2.4.1:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+  dependencies:
+    lodash "^4.14.0"
+
+async@~2.1.2:
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
+  dependencies:
+    lodash "^4.14.0"
+
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
+atob@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+
+autoprefixer@^6.3.1:
+  version "6.7.7"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+  dependencies:
+    browserslist "^1.7.6"
+    caniuse-db "^1.0.30000634"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    postcss "^5.2.16"
+    postcss-value-parser "^3.2.3"
+
+autoprefixer@^7.2.3:
+  version "7.2.5"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.5.tgz#04ccbd0c6a61131b6d13f53d371926092952d192"
+  dependencies:
+    browserslist "^2.11.1"
+    caniuse-lite "^1.0.30000791"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    postcss "^6.0.16"
+    postcss-value-parser "^3.2.3"
+
+autoprefixer@^7.2.6:
+  version "7.2.6"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc"
+  dependencies:
+    browserslist "^2.11.3"
+    caniuse-lite "^1.0.30000805"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    postcss "^6.0.17"
+    postcss-value-parser "^3.2.3"
+
+aws-sign2@~0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+
+aws-sign2@~0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+
+aws4@^1.2.1, aws4@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+
+axios@^0.15.3:
+  version "0.15.3"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053"
+  dependencies:
+    follow-redirects "1.0.0"
+
+babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+  dependencies:
+    chalk "^1.1.3"
+    esutils "^2.0.2"
+    js-tokens "^3.0.2"
+
+babel-core@6.26.0, babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    babel-generator "^6.26.0"
+    babel-helpers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-register "^6.26.0"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    convert-source-map "^1.5.0"
+    debug "^2.6.8"
+    json5 "^0.5.1"
+    lodash "^4.17.4"
+    minimatch "^3.0.4"
+    path-is-absolute "^1.0.1"
+    private "^0.1.7"
+    slash "^1.0.0"
+    source-map "^0.5.6"
+
+babel-generator@^6.18.0, babel-generator@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
+  dependencies:
+    babel-messages "^6.23.0"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    detect-indent "^4.0.0"
+    jsesc "^1.3.0"
+    lodash "^4.17.4"
+    source-map "^0.5.6"
+    trim-right "^1.0.1"
+
+babel-helper-bindify-decorators@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+  dependencies:
+    babel-helper-explode-assignable-expression "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-builder-react-jsx@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    esutils "^2.0.2"
+
+babel-helper-call-delegate@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-define-map@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-explode-class@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
+  dependencies:
+    babel-helper-bindify-decorators "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+  dependencies:
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-get-function-arity@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-replace-supers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+  dependencies:
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-jest@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.1.tgz#ff53ebca45957347f27ff4666a31499fbb4c4ddd"
+  dependencies:
+    babel-plugin-istanbul "^4.1.5"
+    babel-preset-jest "^22.4.1"
+
+babel-loader@7.1.2:
+  version "7.1.2"
+  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
+  dependencies:
+    find-cache-dir "^1.0.0"
+    loader-utils "^1.0.2"
+    mkdirp "^0.5.1"
+
+babel-loader@^7.0.0:
+  version "7.1.3"
+  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.3.tgz#ff5b440da716e9153abb946251a9ab7670037b16"
+  dependencies:
+    find-cache-dir "^1.0.0"
+    loader-utils "^1.0.2"
+    mkdirp "^0.5.1"
+
+babel-messages@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-dynamic-import-node@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a"
+  dependencies:
+    babel-plugin-syntax-dynamic-import "^6.18.0"
+    babel-template "^6.26.0"
+    babel-types "^6.26.0"
+
+babel-plugin-istanbul@^4.1.4, babel-plugin-istanbul@^4.1.5:
+  version "4.1.5"
+  resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
+  dependencies:
+    find-up "^2.1.0"
+    istanbul-lib-instrument "^1.7.5"
+    test-exclude "^4.1.1"
+
+babel-plugin-jest-hoist@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz#d712fe5da8b6965f3191dacddbefdbdf4fb66d63"
+
+babel-plugin-macros@^2.1.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.2.0.tgz#31fc16748d6480697a517f692dc4421cb7bff0cc"
+  dependencies:
+    cosmiconfig "^4.0.0"
+
+babel-plugin-react-docgen@^1.8.2:
+  version "1.8.3"
+  resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.8.3.tgz#bdb0fe41f72eaa9444fe7872866d2f372afd72bb"
+  dependencies:
+    babel-types "^6.24.1"
+    lodash "^4.17.0"
+    react-docgen "^2.20.0"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-async-generators@^6.5.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
+
+babel-plugin-syntax-class-constructor-call@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
+
+babel-plugin-syntax-class-properties@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
+
+babel-plugin-syntax-decorators@^6.13.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
+
+babel-plugin-syntax-do-expressions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
+
+babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-export-extensions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
+
+babel-plugin-syntax-flow@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+
+babel-plugin-syntax-function-bind@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
+
+babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+
+babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-generator-functions@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
+  dependencies:
+    babel-helper-remap-async-to-generator "^6.24.1"
+    babel-plugin-syntax-async-generators "^6.5.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+  dependencies:
+    babel-helper-remap-async-to-generator "^6.24.1"
+    babel-plugin-syntax-async-functions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-class-constructor-call@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
+  dependencies:
+    babel-plugin-syntax-class-constructor-call "^6.18.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-properties@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-plugin-syntax-class-properties "^6.8.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-decorators@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
+  dependencies:
+    babel-helper-explode-class "^6.24.1"
+    babel-plugin-syntax-decorators "^6.13.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-do-expressions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
+  dependencies:
+    babel-plugin-syntax-do-expressions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.23.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    lodash "^4.17.4"
+
+babel-plugin-transform-es2015-classes@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+  dependencies:
+    babel-helper-define-map "^6.24.1"
+    babel-helper-function-name "^6.24.1"
+    babel-helper-optimise-call-expression "^6.24.1"
+    babel-helper-replace-supers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@6.23.0, babel-plugin-transform-es2015-destructuring@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+  dependencies:
+    babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+  dependencies:
+    babel-plugin-transform-strict-mode "^6.24.1"
+    babel-runtime "^6.26.0"
+    babel-template "^6.26.0"
+    babel-types "^6.26.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+  dependencies:
+    babel-plugin-transform-es2015-modules-amd "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+  dependencies:
+    babel-helper-replace-supers "^6.24.1"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.23.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+  dependencies:
+    babel-helper-call-delegate "^6.24.1"
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+  dependencies:
+    babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+    babel-plugin-syntax-exponentiation-operator "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-export-extensions@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
+  dependencies:
+    babel-plugin-syntax-export-extensions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-flow-strip-types@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
+  dependencies:
+    babel-plugin-syntax-flow "^6.18.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-function-bind@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
+  dependencies:
+    babel-plugin-syntax-function-bind "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-object-rest-spread@6.26.0, babel-plugin-transform-object-rest-spread@^6.22.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
+  dependencies:
+    babel-plugin-syntax-object-rest-spread "^6.8.0"
+    babel-runtime "^6.26.0"
+
+babel-plugin-transform-react-constant-elements@6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-display-name@^6.23.0:
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
+  dependencies:
+    babel-plugin-syntax-jsx "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
+  dependencies:
+    babel-plugin-syntax-jsx "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
+  dependencies:
+    babel-helper-builder-react-jsx "^6.24.1"
+    babel-plugin-syntax-jsx "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
+  dependencies:
+    regenerator-transform "^0.10.0"
+
+babel-plugin-transform-runtime@6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-preset-env@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4"
+  dependencies:
+    babel-plugin-check-es2015-constants "^6.22.0"
+    babel-plugin-syntax-trailing-function-commas "^6.22.0"
+    babel-plugin-transform-async-to-generator "^6.22.0"
+    babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoping "^6.23.0"
+    babel-plugin-transform-es2015-classes "^6.23.0"
+    babel-plugin-transform-es2015-computed-properties "^6.22.0"
+    babel-plugin-transform-es2015-destructuring "^6.23.0"
+    babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+    babel-plugin-transform-es2015-for-of "^6.23.0"
+    babel-plugin-transform-es2015-function-name "^6.22.0"
+    babel-plugin-transform-es2015-literals "^6.22.0"
+    babel-plugin-transform-es2015-modules-amd "^6.22.0"
+    babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-umd "^6.23.0"
+    babel-plugin-transform-es2015-object-super "^6.22.0"
+    babel-plugin-transform-es2015-parameters "^6.23.0"
+    babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+    babel-plugin-transform-es2015-spread "^6.22.0"
+    babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+    babel-plugin-transform-es2015-template-literals "^6.22.0"
+    babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+    babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+    babel-plugin-transform-exponentiation-operator "^6.22.0"
+    babel-plugin-transform-regenerator "^6.22.0"
+    browserslist "^2.1.2"
+    invariant "^2.2.2"
+    semver "^5.3.0"
+
+babel-preset-env@1.6.1, babel-preset-env@^1.6.0:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+  dependencies:
+    babel-plugin-check-es2015-constants "^6.22.0"
+    babel-plugin-syntax-trailing-function-commas "^6.22.0"
+    babel-plugin-transform-async-to-generator "^6.22.0"
+    babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+    babel-plugin-transform-es2015-block-scoping "^6.23.0"
+    babel-plugin-transform-es2015-classes "^6.23.0"
+    babel-plugin-transform-es2015-computed-properties "^6.22.0"
+    babel-plugin-transform-es2015-destructuring "^6.23.0"
+    babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+    babel-plugin-transform-es2015-for-of "^6.23.0"
+    babel-plugin-transform-es2015-function-name "^6.22.0"
+    babel-plugin-transform-es2015-literals "^6.22.0"
+    babel-plugin-transform-es2015-modules-amd "^6.22.0"
+    babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+    babel-plugin-transform-es2015-modules-umd "^6.23.0"
+    babel-plugin-transform-es2015-object-super "^6.22.0"
+    babel-plugin-transform-es2015-parameters "^6.23.0"
+    babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+    babel-plugin-transform-es2015-spread "^6.22.0"
+    babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+    babel-plugin-transform-es2015-template-literals "^6.22.0"
+    babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+    babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+    babel-plugin-transform-exponentiation-operator "^6.22.0"
+    babel-plugin-transform-regenerator "^6.22.0"
+    browserslist "^2.1.2"
+    invariant "^2.2.2"
+    semver "^5.3.0"
+
+babel-preset-flow@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
+  dependencies:
+    babel-plugin-transform-flow-strip-types "^6.22.0"
+
+babel-preset-jest@^22.4.0, babel-preset-jest@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a"
+  dependencies:
+    babel-plugin-jest-hoist "^22.4.1"
+    babel-plugin-syntax-object-rest-spread "^6.13.0"
+
+babel-preset-react-app@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz#d3f06a79742f0e89d7afcb72e282d9809c850920"
+  dependencies:
+    babel-plugin-dynamic-import-node "1.1.0"
+    babel-plugin-syntax-dynamic-import "6.18.0"
+    babel-plugin-transform-class-properties "6.24.1"
+    babel-plugin-transform-es2015-destructuring "6.23.0"
+    babel-plugin-transform-object-rest-spread "6.26.0"
+    babel-plugin-transform-react-constant-elements "6.23.0"
+    babel-plugin-transform-react-jsx "6.24.1"
+    babel-plugin-transform-react-jsx-self "6.22.0"
+    babel-plugin-transform-react-jsx-source "6.22.0"
+    babel-plugin-transform-regenerator "6.26.0"
+    babel-plugin-transform-runtime "6.23.0"
+    babel-preset-env "1.6.1"
+    babel-preset-react "6.24.1"
+
+babel-preset-react@6.24.1, babel-preset-react@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
+  dependencies:
+    babel-plugin-syntax-jsx "^6.3.13"
+    babel-plugin-transform-react-display-name "^6.23.0"
+    babel-plugin-transform-react-jsx "^6.24.1"
+    babel-plugin-transform-react-jsx-self "^6.22.0"
+    babel-plugin-transform-react-jsx-source "^6.22.0"
+    babel-preset-flow "^6.23.0"
+
+babel-preset-stage-0@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
+  dependencies:
+    babel-plugin-transform-do-expressions "^6.22.0"
+    babel-plugin-transform-function-bind "^6.22.0"
+    babel-preset-stage-1 "^6.24.1"
+
+babel-preset-stage-1@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
+  dependencies:
+    babel-plugin-transform-class-constructor-call "^6.24.1"
+    babel-plugin-transform-export-extensions "^6.22.0"
+    babel-preset-stage-2 "^6.24.1"
+
+babel-preset-stage-2@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
+  dependencies:
+    babel-plugin-syntax-dynamic-import "^6.18.0"
+    babel-plugin-transform-class-properties "^6.24.1"
+    babel-plugin-transform-decorators "^6.24.1"
+    babel-preset-stage-3 "^6.24.1"
+
+babel-preset-stage-3@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
+  dependencies:
+    babel-plugin-syntax-trailing-function-commas "^6.22.0"
+    babel-plugin-transform-async-generator-functions "^6.24.1"
+    babel-plugin-transform-async-to-generator "^6.24.1"
+    babel-plugin-transform-exponentiation-operator "^6.24.1"
+    babel-plugin-transform-object-rest-spread "^6.22.0"
+
+babel-register@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
+  dependencies:
+    babel-core "^6.26.0"
+    babel-runtime "^6.26.0"
+    core-js "^2.5.0"
+    home-or-tmp "^2.0.0"
+    lodash "^4.17.4"
+    mkdirp "^0.5.1"
+    source-map-support "^0.4.15"
+
+babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.5.0, babel-runtime@^6.9.2:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+  dependencies:
+    core-js "^2.4.0"
+    regenerator-runtime "^0.11.0"
+
+babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+  dependencies:
+    babel-runtime "^6.26.0"
+    babel-traverse "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    lodash "^4.17.4"
+
+babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.26.0"
+    babel-types "^6.26.0"
+    babylon "^6.18.0"
+    debug "^2.6.8"
+    globals "^9.18.0"
+    invariant "^2.2.2"
+    lodash "^4.17.4"
+
+babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
+  version "6.26.0"
+  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+  dependencies:
+    babel-runtime "^6.26.0"
+    esutils "^2.0.2"
+    lodash "^4.17.4"
+    to-fast-properties "^1.0.3"
+
+babylon@^6.18.0:
+  version "6.18.0"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+
+babylon@~5.8.3:
+  version "5.8.38"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd"
+
+backo2@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+
+balanced-match@^0.4.2:
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+balanced-match@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+
+base-64@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
+
+base64-arraybuffer@0.1.5:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
+
+base64-js@^1.0.2:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+
+base64id@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
+
+base@^0.11.1:
+  version "0.11.2"
+  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+  dependencies:
+    cache-base "^1.0.1"
+    class-utils "^0.3.5"
+    component-emitter "^1.2.1"
+    define-property "^1.0.0"
+    isobject "^3.0.1"
+    mixin-deep "^1.2.0"
+    pascalcase "^0.1.1"
+
+batch@0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+
+bcrypt-pbkdf@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+  dependencies:
+    tweetnacl "^0.14.3"
+
+better-assert@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
+  dependencies:
+    callsite "1.0.0"
+
+big.js@^3.1.3:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+
+binary-extensions@^1.0.0:
+  version "1.11.0"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+
+bindings@~1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
+
+bl@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
+  dependencies:
+    readable-stream "~2.0.5"
+
+blob@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
+
+block-stream@*:
+  version "0.0.9"
+  resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+  dependencies:
+    inherits "~2.0.0"
+
+blocking-proxy@0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b"
+  dependencies:
+    minimist "^1.2.0"
+
+bluebird@3.5.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
+
+bluebird@^3.3.0, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+  version "4.11.8"
+  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+
+body-parser@1.18.2, body-parser@^1.16.1:
+  version "1.18.2"
+  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
+  dependencies:
+    bytes "3.0.0"
+    content-type "~1.0.4"
+    debug "2.6.9"
+    depd "~1.1.1"
+    http-errors "~1.6.2"
+    iconv-lite "0.4.19"
+    on-finished "~2.3.0"
+    qs "6.5.1"
+    raw-body "2.3.2"
+    type-is "~1.6.15"
+
+bonjour@^3.5.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+  dependencies:
+    array-flatten "^2.1.0"
+    deep-equal "^1.0.1"
+    dns-equal "^1.0.0"
+    dns-txt "^2.0.2"
+    multicast-dns "^6.0.1"
+    multicast-dns-service-types "^1.1.0"
+
+boolbase@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+
+boom@2.x.x:
+  version "2.10.1"
+  resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+  dependencies:
+    hoek "2.x.x"
+
+boom@4.x.x:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
+  dependencies:
+    hoek "4.x.x"
+
+boom@5.x.x:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
+  dependencies:
+    hoek "4.x.x"
+
+bowser@^1.0.0, bowser@^1.7.3:
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.2.tgz#d66fc868ca5f4ba895bee1363c343fe7b37d3394"
+
+brace-expansion@^1.0.0, brace-expansion@^1.1.7:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+  dependencies:
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
+
+braces@^0.1.2:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
+  dependencies:
+    expand-range "^0.1.0"
+
+braces@^1.8.2:
+  version "1.8.5"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+  dependencies:
+    expand-range "^1.8.1"
+    preserve "^0.2.0"
+    repeat-element "^1.1.2"
+
+braces@^2.3.0, braces@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb"
+  dependencies:
+    arr-flatten "^1.1.0"
+    array-unique "^0.3.2"
+    define-property "^1.0.0"
+    extend-shallow "^2.0.1"
+    fill-range "^4.0.0"
+    isobject "^3.0.1"
+    kind-of "^6.0.2"
+    repeat-element "^1.1.2"
+    snapdragon "^0.8.1"
+    snapdragon-node "^2.0.1"
+    split-string "^3.0.2"
+    to-regex "^3.0.1"
+
+brcast@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd"
+
+brorand@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+
+browser-pack@^6.0.1:
+  version "6.0.3"
+  resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.3.tgz#91ca96518583ef580ab063a309de62e407767a39"
+  dependencies:
+    JSONStream "^1.0.3"
+    combine-source-map "~0.8.0"
+    defined "^1.0.0"
+    safe-buffer "^5.1.1"
+    through2 "^2.0.0"
+    umd "^3.0.0"
+
+browser-process-hrtime@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
+
+browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0:
+  version "1.11.2"
+  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+  dependencies:
+    resolve "1.1.7"
+
+browser-stdout@1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+  dependencies:
+    buffer-xor "^1.0.3"
+    cipher-base "^1.0.0"
+    create-hash "^1.1.0"
+    evp_bytestokey "^1.0.3"
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+  dependencies:
+    browserify-aes "^1.0.4"
+    browserify-des "^1.0.0"
+    evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+  dependencies:
+    cipher-base "^1.0.1"
+    des.js "^1.0.0"
+    inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+  dependencies:
+    bn.js "^4.1.0"
+    randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+  dependencies:
+    bn.js "^4.1.1"
+    browserify-rsa "^4.0.0"
+    create-hash "^1.1.0"
+    create-hmac "^1.1.2"
+    elliptic "^6.0.0"
+    inherits "^2.0.1"
+    parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.2.0, browserify-zlib@~0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+  dependencies:
+    pako "~1.0.5"
+
+browserify@^14.5.0:
+  version "14.5.0"
+  resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5"
+  dependencies:
+    JSONStream "^1.0.3"
+    assert "^1.4.0"
+    browser-pack "^6.0.1"
+    browser-resolve "^1.11.0"
+    browserify-zlib "~0.2.0"
+    buffer "^5.0.2"
+    cached-path-relative "^1.0.0"
+    concat-stream "~1.5.1"
+    console-browserify "^1.1.0"
+    constants-browserify "~1.0.0"
+    crypto-browserify "^3.0.0"
+    defined "^1.0.0"
+    deps-sort "^2.0.0"
+    domain-browser "~1.1.0"
+    duplexer2 "~0.1.2"
+    events "~1.1.0"
+    glob "^7.1.0"
+    has "^1.0.0"
+    htmlescape "^1.1.0"
+    https-browserify "^1.0.0"
+    inherits "~2.0.1"
+    insert-module-globals "^7.0.0"
+    labeled-stream-splicer "^2.0.0"
+    module-deps "^4.0.8"
+    os-browserify "~0.3.0"
+    parents "^1.0.1"
+    path-browserify "~0.0.0"
+    process "~0.11.0"
+    punycode "^1.3.2"
+    querystring-es3 "~0.2.0"
+    read-only-stream "^2.0.0"
+    readable-stream "^2.0.2"
+    resolve "^1.1.4"
+    shasum "^1.0.0"
+    shell-quote "^1.6.1"
+    stream-browserify "^2.0.0"
+    stream-http "^2.0.0"
+    string_decoder "~1.0.0"
+    subarg "^1.0.0"
+    syntax-error "^1.1.1"
+    through2 "^2.0.0"
+    timers-browserify "^1.0.1"
+    tty-browserify "~0.0.0"
+    url "~0.11.0"
+    util "~0.10.1"
+    vm-browserify "~0.0.1"
+    xtend "^4.0.0"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+  version "1.7.7"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+  dependencies:
+    caniuse-db "^1.0.30000639"
+    electron-to-chromium "^1.2.7"
+
+browserslist@^2.1.2, browserslist@^2.11.1, browserslist@^2.11.3:
+  version "2.11.3"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+  dependencies:
+    caniuse-lite "^1.0.30000792"
+    electron-to-chromium "^1.3.30"
+
+bser@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
+  dependencies:
+    node-int64 "^0.4.0"
+
+buffer-crc32@~0.2.3:
+  version "0.2.13"
+  resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+
+buffer-indexof@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+
+buffer-xor@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
+buffer@^4.3.0:
+  version "4.9.1"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+    isarray "^1.0.0"
+
+buffer@^5.0.2:
+  version "5.0.8"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24"
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+
+buildmail@4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72"
+  dependencies:
+    addressparser "1.0.1"
+    libbase64 "0.1.0"
+    libmime "3.0.0"
+    libqp "1.1.0"
+    nodemailer-fetch "1.6.0"
+    nodemailer-shared "1.1.0"
+    punycode "1.4.1"
+
+builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+builtin-status-codes@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+
+bytes@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+
+cacache@^10.0.1:
+  version "10.0.2"
+  resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8"
+  dependencies:
+    bluebird "^3.5.0"
+    chownr "^1.0.1"
+    glob "^7.1.2"
+    graceful-fs "^4.1.11"
+    lru-cache "^4.1.1"
+    mississippi "^1.3.0"
+    mkdirp "^0.5.1"
+    move-concurrently "^1.0.1"
+    promise-inflight "^1.0.1"
+    rimraf "^2.6.1"
+    ssri "^5.0.0"
+    unique-filename "^1.1.0"
+    y18n "^3.2.1"
+
+cacache@^10.0.4:
+  version "10.0.4"
+  resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+  dependencies:
+    bluebird "^3.5.1"
+    chownr "^1.0.1"
+    glob "^7.1.2"
+    graceful-fs "^4.1.11"
+    lru-cache "^4.1.1"
+    mississippi "^2.0.0"
+    mkdirp "^0.5.1"
+    move-concurrently "^1.0.1"
+    promise-inflight "^1.0.1"
+    rimraf "^2.6.2"
+    ssri "^5.2.4"
+    unique-filename "^1.1.0"
+    y18n "^4.0.0"
+
+cache-base@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+  dependencies:
+    collection-visit "^1.0.0"
+    component-emitter "^1.2.1"
+    get-value "^2.0.6"
+    has-value "^1.0.0"
+    isobject "^3.0.1"
+    set-value "^2.0.0"
+    to-object-path "^0.3.0"
+    union-value "^1.0.0"
+    unset-value "^1.0.0"
+
+cache-loader@^1.2.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5"
+  dependencies:
+    loader-utils "^1.1.0"
+    mkdirp "^0.5.1"
+    neo-async "^2.5.0"
+    schema-utils "^0.4.2"
+
+cached-path-relative@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
+
+callsite@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+
+callsites@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+
+camel-case@3.0.x:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+  dependencies:
+    no-case "^2.2.0"
+    upper-case "^1.1.1"
+
+camelcase-keys@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+  dependencies:
+    camelcase "^2.0.0"
+    map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+
+camelcase@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+
+camelcase@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+
+camelcase@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+
+caniuse-api@^1.5.2:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+  dependencies:
+    browserslist "^1.3.6"
+    caniuse-db "^1.0.30000529"
+    lodash.memoize "^4.1.2"
+    lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+  version "1.0.30000792"
+  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000792.tgz#a7dac6dc9f5181b675fd69e5cb06fefb523157f8"
+
+caniuse-lite@^1.0.30000791, caniuse-lite@^1.0.30000792:
+  version "1.0.30000792"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332"
+
+caniuse-lite@^1.0.30000805:
+  version "1.0.30000813"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz#7b25e27fdfb8d133f3c932b01f77452140fcc6c9"
+
+case-sensitive-paths-webpack-plugin@^2.0.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909"
+
+caseless@~0.11.0:
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+
+caseless@~0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+
+center-align@^0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+  dependencies:
+    align-text "^0.1.3"
+    lazy-cache "^1.0.3"
+
+chain-function@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
+
+chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+  dependencies:
+    ansi-styles "^2.2.1"
+    escape-string-regexp "^1.0.2"
+    has-ansi "^2.0.0"
+    strip-ansi "^3.0.0"
+    supports-color "^2.0.0"
+
+chalk@2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
+  dependencies:
+    ansi-styles "^3.1.0"
+    escape-string-regexp "^1.0.5"
+    supports-color "^4.0.0"
+
+chalk@2.3.0, chalk@^2.0.0, chalk@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+  dependencies:
+    ansi-styles "^3.1.0"
+    escape-string-regexp "^1.0.5"
+    supports-color "^4.0.0"
+
+chalk@^2.0.1, chalk@^2.3.1:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
+  dependencies:
+    ansi-styles "^3.2.1"
+    escape-string-regexp "^1.0.5"
+    supports-color "^5.3.0"
+
+chalk@~2.2.0:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb"
+  dependencies:
+    ansi-styles "^3.1.0"
+    escape-string-regexp "^1.0.5"
+    supports-color "^4.0.0"
+
+chardet@^0.4.0:
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+
+check-more-types@2.24.0:
+  version "2.24.0"
+  resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
+
+chokidar@^1.4.1, chokidar@^1.4.2, chokidar@^1.6.0, chokidar@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+  dependencies:
+    anymatch "^1.3.0"
+    async-each "^1.0.0"
+    glob-parent "^2.0.0"
+    inherits "^2.0.1"
+    is-binary-path "^1.0.0"
+    is-glob "^2.0.0"
+    path-is-absolute "^1.0.0"
+    readdirp "^2.0.0"
+  optionalDependencies:
+    fsevents "^1.0.0"
+
+chokidar@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7"
+  dependencies:
+    anymatch "^2.0.0"
+    async-each "^1.0.0"
+    braces "^2.3.0"
+    glob-parent "^3.1.0"
+    inherits "^2.0.1"
+    is-binary-path "^1.0.0"
+    is-glob "^4.0.0"
+    normalize-path "^2.1.1"
+    path-is-absolute "^1.0.0"
+    readdirp "^2.0.0"
+    upath "^1.0.0"
+  optionalDependencies:
+    fsevents "^1.0.0"
+
+chownr@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+
+ci-info@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+circular-dependency-plugin@^4.2.1:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-4.4.0.tgz#f8a1a746a3f6c8e57f4dae9b54d991cd2a582f5d"
+
+circular-json@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.4.0.tgz#c448ea998b7fe31ecf472ec29c6b608e2e2a62fd"
+
+clap@^1.0.9:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+  dependencies:
+    chalk "^1.1.3"
+
+class-utils@^0.3.5:
+  version "0.3.6"
+  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+  dependencies:
+    arr-union "^3.1.0"
+    define-property "^0.2.5"
+    isobject "^3.0.0"
+    static-extend "^0.1.1"
+
+classnames@^2.2.5:
+  version "2.2.5"
+  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+
+clean-css@4.1.x:
+  version "4.1.9"
+  resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
+  dependencies:
+    source-map "0.5.x"
+
+clean-css@^4.1.11:
+  version "4.1.11"
+  resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a"
+  dependencies:
+    source-map "0.5.x"
+
+cli-cursor@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+  dependencies:
+    restore-cursor "^1.0.1"
+
+cli-cursor@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+  dependencies:
+    restore-cursor "^2.0.0"
+
+cli-spinners@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
+
+cli-truncate@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+  dependencies:
+    slice-ansi "0.0.4"
+    string-width "^1.0.1"
+
+cli-width@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+
+cliui@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+  dependencies:
+    center-align "^0.1.1"
+    right-align "^0.1.1"
+    wordwrap "0.0.2"
+
+cliui@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+  dependencies:
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+    wrap-ansi "^2.0.0"
+
+cliui@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc"
+  dependencies:
+    string-width "^2.1.1"
+    strip-ansi "^4.0.0"
+    wrap-ansi "^2.0.0"
+
+clone-deep@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
+  dependencies:
+    for-own "^1.0.0"
+    is-plain-object "^2.0.4"
+    kind-of "^6.0.0"
+    shallow-clone "^1.0.0"
+
+clone@2.1.1, clone@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
+
+clone@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+
+co@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
+co@~3.0.6:
+  version "3.0.6"
+  resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda"
+
+coa@~1.0.1:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+  dependencies:
+    q "^1.1.2"
+
+code-point-at@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+
+codelyzer@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.0.2.tgz#d5e2390b97d95e73a7b1e6f0cf03e16cbf35b06f"
+  dependencies:
+    app-root-path "^2.0.1"
+    css-selector-tokenizer "^0.7.0"
+    cssauron "^1.4.0"
+    semver-dsl "^1.0.1"
+    source-map "^0.5.6"
+    sprintf-js "^1.0.3"
+
+collection-visit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+  dependencies:
+    map-visit "^1.0.0"
+    object-visit "^1.0.0"
+
+color-convert@^1.3.0, color-convert@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+  dependencies:
+    color-name "^1.1.1"
+
+color-name@^1.0.0, color-name@^1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+
+color-string@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+  dependencies:
+    color-name "^1.0.0"
+
+color@^0.11.0:
+  version "0.11.4"
+  resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+  dependencies:
+    clone "^1.0.2"
+    color-convert "^1.3.0"
+    color-string "^0.3.0"
+
+colormin@^1.0.5:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+  dependencies:
+    color "^0.11.0"
+    css-color-names "0.0.4"
+    has "^1.0.1"
+
+colors@1.1.2, colors@^1.1.0, colors@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
+combine-lists@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
+  dependencies:
+    lodash "^4.5.0"
+
+combine-source-map@~0.7.1:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
+  dependencies:
+    convert-source-map "~1.1.0"
+    inline-source-map "~0.6.0"
+    lodash.memoize "~3.0.3"
+    source-map "~0.5.3"
+
+combine-source-map@~0.8.0:
+  version "0.8.0"
+  resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
+  dependencies:
+    convert-source-map "~1.1.0"
+    inline-source-map "~0.6.0"
+    lodash.memoize "~3.0.3"
+    source-map "~0.5.3"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+  dependencies:
+    delayed-stream "~1.0.0"
+
+commander@2.11.0:
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
+
+commander@2.12.x:
+  version "2.12.2"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+
+commander@2.14.x, commander@^2.14.1:
+  version "2.14.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
+
+commander@2.9.0:
+  version "2.9.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+  dependencies:
+    graceful-readlink ">= 1.0.0"
+
+commander@^2.12.1, commander@^2.9.0, commander@~2.13.0:
+  version "2.13.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+
+common-tags@1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0"
+  dependencies:
+    babel-runtime "^6.18.0"
+
+common-tags@^1.3.1, common-tags@^1.7.2:
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771"
+  dependencies:
+    babel-runtime "^6.26.0"
+
+commondir@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+
+component-bind@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
+
+component-emitter@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe"
+
+component-emitter@1.2.1, component-emitter@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
+component-inherit@0.0.3:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+
+compressible@~2.0.11:
+  version "2.0.12"
+  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
+  dependencies:
+    mime-db ">= 1.30.0 < 2"
+
+compression@^1.5.2:
+  version "1.7.1"
+  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
+  dependencies:
+    accepts "~1.3.4"
+    bytes "3.0.0"
+    compressible "~2.0.11"
+    debug "2.6.9"
+    on-headers "~1.0.1"
+    safe-buffer "5.1.1"
+    vary "~1.1.2"
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+concat-stream@1.6.0, concat-stream@^1.5.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+  dependencies:
+    inherits "^2.0.3"
+    readable-stream "^2.2.2"
+    typedarray "^0.0.6"
+
+concat-stream@~1.5.0, concat-stream@~1.5.1:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
+  dependencies:
+    inherits "~2.0.1"
+    readable-stream "~2.0.0"
+    typedarray "~0.0.5"
+
+configstore@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
+  dependencies:
+    dot-prop "^4.1.0"
+    graceful-fs "^4.1.2"
+    make-dir "^1.0.0"
+    unique-string "^1.0.0"
+    write-file-atomic "^2.0.0"
+    xdg-basedir "^3.0.0"
+
+connect-history-api-fallback@^1.3.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
+
+connect@^3.6.0:
+  version "3.6.5"
+  resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da"
+  dependencies:
+    debug "2.6.9"
+    finalhandler "1.0.6"
+    parseurl "~1.3.2"
+    utils-merge "1.0.1"
+
+console-browserify@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+  dependencies:
+    date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+constants-browserify@^1.0.0, constants-browserify@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+
+content-disposition@0.5.2:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+
+content-type-parser@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
+
+content-type@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+
+convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
+
+convert-source-map@~1.1.0:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
+
+cookie-signature@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+
+cookie@0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+
+copy-concurrently@^1.0.0:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+  dependencies:
+    aproba "^1.1.1"
+    fs-write-stream-atomic "^1.0.8"
+    iferr "^0.1.5"
+    mkdirp "^0.5.1"
+    rimraf "^2.5.4"
+    run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
+copy-webpack-plugin@~4.4.1:
+  version "4.4.3"
+  resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.4.3.tgz#65d56fb9e1936b39e129f9aa2aec097ce1fd44be"
+  dependencies:
+    cacache "^10.0.1"
+    find-cache-dir "^1.0.0"
+    globby "^7.1.1"
+    is-glob "^4.0.0"
+    loader-utils "^1.1.0"
+    minimatch "^3.0.4"
+    p-limit "^1.0.0"
+    serialize-javascript "^1.4.0"
+
+core-js@^1.0.0:
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+
+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
+
+core-object@^3.1.0:
+  version "3.1.5"
+  resolved "https://registry.yarnpkg.com/core-object/-/core-object-3.1.5.tgz#fa627b87502adc98045e44678e9a8ec3b9c0d2a9"
+  dependencies:
+    chalk "^2.0.0"
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
+  dependencies:
+    is-directory "^0.3.1"
+    js-yaml "^3.4.3"
+    minimist "^1.2.0"
+    object-assign "^4.1.0"
+    os-homedir "^1.0.1"
+    parse-json "^2.2.0"
+    require-from-string "^1.1.0"
+
+cosmiconfig@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
+  dependencies:
+    is-directory "^0.3.1"
+    js-yaml "^3.9.0"
+    parse-json "^4.0.0"
+    require-from-string "^2.0.1"
+
+cpx@^1.5.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f"
+  dependencies:
+    babel-runtime "^6.9.2"
+    chokidar "^1.6.0"
+    duplexer "^0.1.1"
+    glob "^7.0.5"
+    glob2base "^0.0.12"
+    minimatch "^3.0.2"
+    mkdirp "^0.5.1"
+    resolve "^1.1.7"
+    safe-buffer "^5.0.1"
+    shell-quote "^1.6.1"
+    subarg "^1.0.0"
+
+create-ecdh@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+  dependencies:
+    bn.js "^4.1.0"
+    elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+  dependencies:
+    cipher-base "^1.0.1"
+    inherits "^2.0.1"
+    ripemd160 "^2.0.0"
+    sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+  dependencies:
+    cipher-base "^1.0.3"
+    create-hash "^1.1.0"
+    inherits "^2.0.1"
+    ripemd160 "^2.0.0"
+    safe-buffer "^5.0.1"
+    sha.js "^2.4.8"
+
+create-react-class@^15.5.2, create-react-class@^15.6.2:
+  version "15.6.3"
+  resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
+  dependencies:
+    fbjs "^0.8.9"
+    loose-envify "^1.3.1"
+    object-assign "^4.1.1"
+
+cross-env@^5.1.1:
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.3.tgz#f8ae18faac87692b0a8b4d2f7000d4ec3a85dfd7"
+  dependencies:
+    cross-spawn "^5.1.0"
+    is-windows "^1.0.0"
+
+cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+  dependencies:
+    lru-cache "^4.0.1"
+    shebang-command "^1.2.0"
+    which "^1.2.9"
+
+cross-spawn@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
+  dependencies:
+    lru-cache "^4.0.1"
+    which "^1.2.9"
+
+cryptiles@2.x.x:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+  dependencies:
+    boom "2.x.x"
+
+cryptiles@3.x.x:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
+  dependencies:
+    boom "5.x.x"
+
+crypto-browserify@^3.0.0, crypto-browserify@^3.11.0:
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+  dependencies:
+    browserify-cipher "^1.0.0"
+    browserify-sign "^4.0.0"
+    create-ecdh "^4.0.0"
+    create-hash "^1.1.0"
+    create-hmac "^1.1.0"
+    diffie-hellman "^5.0.0"
+    inherits "^2.0.1"
+    pbkdf2 "^3.0.3"
+    public-encrypt "^4.0.0"
+    randombytes "^2.0.0"
+    randomfill "^1.0.3"
+
+crypto-random-string@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+
+css-color-names@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+
+css-in-js-utils@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz#5af1dd70f4b06b331f48d22a3d86e0786c0b9435"
+  dependencies:
+    hyphenate-style-name "^1.0.2"
+
+css-loader@^0.28.9:
+  version "0.28.10"
+  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.10.tgz#40282e79230f7bcb4e483efa631d670b735ebf42"
+  dependencies:
+    babel-code-frame "^6.26.0"
+    css-selector-tokenizer "^0.7.0"
+    cssnano "^3.10.0"
+    icss-utils "^2.1.0"
+    loader-utils "^1.0.2"
+    lodash.camelcase "^4.3.0"
+    object-assign "^4.1.1"
+    postcss "^5.0.6"
+    postcss-modules-extract-imports "^1.2.0"
+    postcss-modules-local-by-default "^1.2.0"
+    postcss-modules-scope "^1.1.0"
+    postcss-modules-values "^1.3.0"
+    postcss-value-parser "^3.3.0"
+    source-list-map "^2.0.0"
+
+css-parse@1.7.x:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
+
+css-select@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+  dependencies:
+    boolbase "~1.0.0"
+    css-what "2.1"
+    domutils "1.5.1"
+    nth-check "~1.0.1"
+
+css-selector-tokenizer@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+  dependencies:
+    cssesc "^0.1.0"
+    fastparse "^1.1.1"
+    regexpu-core "^1.0.0"
+
+css-what@2.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+
+cssauron@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8"
+  dependencies:
+    through X.X.X
+
+cssesc@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+
+cssnano@^3.10.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+  dependencies:
+    autoprefixer "^6.3.1"
+    decamelize "^1.1.2"
+    defined "^1.0.0"
+    has "^1.0.1"
+    object-assign "^4.0.1"
+    postcss "^5.0.14"
+    postcss-calc "^5.2.0"
+    postcss-colormin "^2.1.8"
+    postcss-convert-values "^2.3.4"
+    postcss-discard-comments "^2.0.4"
+    postcss-discard-duplicates "^2.0.1"
+    postcss-discard-empty "^2.0.1"
+    postcss-discard-overridden "^0.1.1"
+    postcss-discard-unused "^2.2.1"
+    postcss-filter-plugins "^2.0.0"
+    postcss-merge-idents "^2.1.5"
+    postcss-merge-longhand "^2.0.1"
+    postcss-merge-rules "^2.0.3"
+    postcss-minify-font-values "^1.0.2"
+    postcss-minify-gradients "^1.0.1"
+    postcss-minify-params "^1.0.4"
+    postcss-minify-selectors "^2.0.4"
+    postcss-normalize-charset "^1.1.0"
+    postcss-normalize-url "^3.0.7"
+    postcss-ordered-values "^2.1.0"
+    postcss-reduce-idents "^2.2.2"
+    postcss-reduce-initial "^1.0.0"
+    postcss-reduce-transforms "^1.0.3"
+    postcss-svgo "^2.1.1"
+    postcss-unique-selectors "^2.0.2"
+    postcss-value-parser "^3.2.3"
+    postcss-zindex "^2.0.1"
+
+csso@~2.3.1:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+  dependencies:
+    clap "^1.0.9"
+    source-map "^0.5.3"
+
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+
+"cssstyle@>= 0.2.37 < 0.3.0":
+  version "0.2.37"
+  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+  dependencies:
+    cssom "0.3.x"
+
+cuint@latest:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
+
+currently-unhandled@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+  dependencies:
+    array-find-index "^1.0.1"
+
+custom-event@~1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
+
+cyclist@~0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+
+cypress@1.4.2:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/cypress/-/cypress-1.4.2.tgz#d957d631617aa87e64a7eae71502f2e175076638"
+  dependencies:
+    "@cypress/listr-verbose-renderer" "0.4.1"
+    "@cypress/xvfb" "1.1.3"
+    "@types/blob-util" "1.3.3"
+    "@types/bluebird" "3.5.18"
+    "@types/chai" "4.0.8"
+    "@types/chai-jquery" "1.1.35"
+    "@types/jquery" "3.2.16"
+    "@types/lodash" "4.14.87"
+    "@types/minimatch" "3.0.1"
+    "@types/mocha" "2.2.44"
+    "@types/sinon" "4.0.0"
+    "@types/sinon-chai" "2.7.29"
+    bluebird "3.5.0"
+    chalk "2.1.0"
+    check-more-types "2.24.0"
+    commander "2.11.0"
+    common-tags "1.4.0"
+    debug "3.1.0"
+    extract-zip "1.6.6"
+    fs-extra "4.0.1"
+    getos "2.8.4"
+    glob "7.1.2"
+    is-ci "1.0.10"
+    is-installed-globally "0.1.0"
+    lazy-ass "1.6.0"
+    listr "0.12.0"
+    lodash "4.17.4"
+    minimist "1.2.0"
+    progress "1.1.8"
+    ramda "0.24.1"
+    request "2.81.0"
+    request-progress "0.3.1"
+    supports-color "5.1.0"
+    tmp "0.0.31"
+    url "0.11.0"
+    yauzl "2.8.0"
+
+d@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+  dependencies:
+    es5-ext "^0.10.9"
+
+dashdash@^1.12.0:
+  version "1.14.1"
+  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+  dependencies:
+    assert-plus "^1.0.0"
+
+data-uri-to-buffer@1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835"
+
+date-fns@^1.27.2:
+  version "1.29.0"
+  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
+
+date-format@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8"
+
+date-now@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+
+dateformat@^3.0.2:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
+
+deasync@^0.1.8:
+  version "0.1.12"
+  resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.12.tgz#0159492a4133ab301d6c778cf01e74e63b10e549"
+  dependencies:
+    bindings "~1.2.1"
+    nan "^2.0.7"
+
+debug@*, debug@3.1.0, debug@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+  dependencies:
+    ms "2.0.0"
+
+debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9:
+  version "2.6.9"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+  dependencies:
+    ms "2.0.0"
+
+debug@2.6.8:
+  version "2.6.8"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
+  dependencies:
+    ms "2.0.0"
+
+debug@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+  dependencies:
+    ms "0.7.1"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+decode-uri-component@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
+dedent@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+
+deep-equal@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+
+deep-extend@~0.4.0:
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+
+deep-is@~0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
+default-require-extensions@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+  dependencies:
+    strip-bom "^2.0.0"
+
+define-properties@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+  dependencies:
+    foreach "^2.0.5"
+    object-keys "^1.0.8"
+
+define-property@^0.2.5:
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+  dependencies:
+    is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+  dependencies:
+    is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+  dependencies:
+    is-descriptor "^1.0.2"
+    isobject "^3.0.1"
+
+defined@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
+degenerator@~1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095"
+  dependencies:
+    ast-types "0.x.x"
+    escodegen "1.x.x"
+    esprima "3.x.x"
+
+del@^2.2.0:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+  dependencies:
+    globby "^5.0.0"
+    is-path-cwd "^1.0.0"
+    is-path-in-cwd "^1.0.0"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+    rimraf "^2.2.8"
+
+del@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+  dependencies:
+    globby "^6.1.0"
+    is-path-cwd "^1.0.0"
+    is-path-in-cwd "^1.0.0"
+    p-map "^1.1.1"
+    pify "^3.0.0"
+    rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
+delegates@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+denodeify@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
+
+depd@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+
+depd@~1.1.1:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
+deps-sort@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
+  dependencies:
+    JSONStream "^1.0.3"
+    shasum "^1.0.0"
+    subarg "^1.0.0"
+    through2 "^2.0.0"
+
+des.js@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+  dependencies:
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+detect-indent@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+  dependencies:
+    repeating "^2.0.0"
+
+detect-libc@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+
+detect-newline@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+
+detect-node@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+
+detect-port-alt@1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.5.tgz#a1aa8fc805a4a5df9b905b7ddc7eed036bcce889"
+  dependencies:
+    address "^1.0.1"
+    debug "^2.6.0"
+
+detective@^4.0.0:
+  version "4.7.1"
+  resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
+  dependencies:
+    acorn "^5.2.1"
+    defined "^1.0.0"
+
+di@^0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
+
+diff@3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+
+diff@3.3.1:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
+
+diff@^3.1.0, diff@^3.2.0, diff@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+
+diffie-hellman@^5.0.0:
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+  dependencies:
+    bn.js "^4.1.0"
+    miller-rabin "^4.0.0"
+    randombytes "^2.0.0"
+
+dir-glob@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+  dependencies:
+    arrify "^1.0.1"
+    path-type "^3.0.0"
+
+dns-equal@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+
+dns-packet@^1.0.1:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
+  dependencies:
+    ip "^1.1.0"
+    safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+  dependencies:
+    buffer-indexof "^1.0.0"
+
+doctrine@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+  dependencies:
+    esutils "^2.0.2"
+
+dom-converter@~0.1:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
+  dependencies:
+    utila "~0.3"
+
+dom-helpers@^3.2.0:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
+
+dom-serialize@^2.2.0:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
+  dependencies:
+    custom-event "~1.0.0"
+    ent "~2.2.0"
+    extend "^3.0.0"
+    void-elements "^2.0.0"
+
+dom-serializer@0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+  dependencies:
+    domelementtype "~1.1.1"
+    entities "~1.1.1"
+
+dom-walk@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
+
+domain-browser@^1.1.1, domain-browser@~1.1.0:
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+
+domelementtype@1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+
+domelementtype@~1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+
+domexception@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
+  dependencies:
+    webidl-conversions "^4.0.2"
+
+domhandler@2.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
+  dependencies:
+    domelementtype "1"
+
+domutils@1.1:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
+  dependencies:
+    domelementtype "1"
+
+domutils@1.5.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+  dependencies:
+    dom-serializer "0"
+    domelementtype "1"
+
+dot-prop@^4.1.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+  dependencies:
+    is-obj "^1.0.0"
+
+dotenv-webpack@^1.5.4:
+  version "1.5.5"
+  resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.5.5.tgz#3441094f04d304b6119e6b72524e62fb3252f5f2"
+  dependencies:
+    dotenv "^5.0.1"
+
+dotenv@^5.0.0, dotenv@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+
+double-ended-queue@^2.1.0-0:
+  version "2.1.0-0"
+  resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
+
+duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+  dependencies:
+    readable-stream "^2.0.2"
+
+duplexer@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+
+duplexify@^3.4.2, duplexify@^3.5.3:
+  version "3.5.3"
+  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e"
+  dependencies:
+    end-of-stream "^1.0.0"
+    inherits "^2.0.1"
+    readable-stream "^2.0.0"
+    stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+  dependencies:
+    jsbn "~0.1.0"
+
+ee-first@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+
+ejs@^2.5.7:
+  version "2.5.7"
+  resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
+
+electron-download@^3.0.1:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz#2cfd54d6966c019c4d49ad65fbe65cc9cdef68c8"
+  dependencies:
+    debug "^2.2.0"
+    fs-extra "^0.30.0"
+    home-path "^1.0.1"
+    minimist "^1.2.0"
+    nugget "^2.0.0"
+    path-exists "^2.1.0"
+    rc "^1.1.2"
+    semver "^5.3.0"
+    sumchecker "^1.2.0"
+
+electron-releases@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/electron-releases/-/electron-releases-2.1.0.tgz#c5614bf811f176ce3c836e368a0625782341fd4e"
+
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
+  version "1.3.30"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz#9666f532a64586651fc56a72513692e820d06a80"
+  dependencies:
+    electron-releases "^2.1.0"
+
+electron@^1.8.3:
+  version "1.8.3"
+  resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.3.tgz#001416ea3a25ce594e317cb5531bc41eadd22f7f"
+  dependencies:
+    "@types/node" "^8.0.24"
+    electron-download "^3.0.1"
+    extract-zip "^1.0.3"
+
+elegant-spinner@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+
+elliptic@^6.0.0:
+  version "6.4.0"
+  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+  dependencies:
+    bn.js "^4.4.0"
+    brorand "^1.0.1"
+    hash.js "^1.0.0"
+    hmac-drbg "^1.0.0"
+    inherits "^2.0.1"
+    minimalistic-assert "^1.0.0"
+    minimalistic-crypto-utils "^1.0.0"
+
+ember-cli-string-utils@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1"
+
+emojis-list@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+
+encodeurl@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+
+encoding@^0.1.11:
+  version "0.1.12"
+  resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
+  dependencies:
+    iconv-lite "~0.4.13"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+  dependencies:
+    once "^1.4.0"
+
+engine.io-client@~3.1.0:
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1"
+  dependencies:
+    component-emitter "1.2.1"
+    component-inherit "0.0.3"
+    debug "~2.6.9"
+    engine.io-parser "~2.1.1"
+    has-cors "1.1.0"
+    indexof "0.0.1"
+    parseqs "0.0.5"
+    parseuri "0.0.5"
+    ws "~3.3.1"
+    xmlhttprequest-ssl "~1.5.4"
+    yeast "0.1.2"
+
+engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196"
+  dependencies:
+    after "0.8.2"
+    arraybuffer.slice "~0.0.7"
+    base64-arraybuffer "0.1.5"
+    blob "0.0.4"
+    has-binary2 "~1.0.2"
+
+engine.io@~3.1.0:
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e"
+  dependencies:
+    accepts "1.3.3"
+    base64id "1.0.0"
+    cookie "0.3.1"
+    debug "~2.6.9"
+    engine.io-parser "~2.1.0"
+    ws "~3.3.1"
+  optionalDependencies:
+    uws "~0.14.4"
+
+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0, enhanced-resolve@^3.4.0:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+  dependencies:
+    graceful-fs "^4.1.2"
+    memory-fs "^0.4.0"
+    object-assign "^4.0.1"
+    tapable "^0.2.7"
+
+ent@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
+
+entities@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+
+errno@^0.1.1, errno@^0.1.3, errno@^0.1.4:
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026"
+  dependencies:
+    prr "~1.0.1"
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+  dependencies:
+    is-arrayish "^0.2.1"
+
+es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+  dependencies:
+    es-to-primitive "^1.1.1"
+    function-bind "^1.1.1"
+    has "^1.0.1"
+    is-callable "^1.1.3"
+    is-regex "^1.0.4"
+
+es-to-primitive@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+  dependencies:
+    is-callable "^1.1.1"
+    is-date-object "^1.0.1"
+    is-symbol "^1.0.1"
+
+es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+  version "0.10.37"
+  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3"
+  dependencies:
+    es6-iterator "~2.0.1"
+    es6-symbol "~3.1.1"
+
+es5-shim@^4.5.10:
+  version "4.5.10"
+  resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.10.tgz#b7e17ef4df2a145b821f1497b50c25cf94026205"
+
+es6-iterator@^2.0.1, es6-iterator@~2.0.1:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+  dependencies:
+    d "1"
+    es5-ext "^0.10.35"
+    es6-symbol "^3.1.1"
+
+es6-map@^0.1.3:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+    es6-iterator "~2.0.1"
+    es6-set "~0.1.5"
+    es6-symbol "~3.1.1"
+    event-emitter "~0.3.5"
+
+es6-promise@^4.0.5:
+  version "4.2.4"
+  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
+
+es6-set@~0.1.5:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+    es6-iterator "~2.0.1"
+    es6-symbol "3.1.1"
+    event-emitter "~0.3.5"
+
+es6-shim@^0.35.3:
+  version "0.35.3"
+  resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26"
+
+es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+
+es6-templates@^0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
+  dependencies:
+    recast "~0.11.12"
+    through "~2.3.6"
+
+es6-weak-map@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+  dependencies:
+    d "1"
+    es5-ext "^0.10.14"
+    es6-iterator "^2.0.1"
+    es6-symbol "^3.1.1"
+
+escape-html@~1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+escodegen@1.x.x:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
+  dependencies:
+    esprima "^3.1.3"
+    estraverse "^4.2.0"
+    esutils "^2.0.2"
+    optionator "^0.8.1"
+  optionalDependencies:
+    source-map "~0.5.6"
+
+escodegen@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
+  dependencies:
+    esprima "^3.1.3"
+    estraverse "^4.2.0"
+    esutils "^2.0.2"
+    optionator "^0.8.1"
+  optionalDependencies:
+    source-map "~0.6.1"
+
+escope@^3.6.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+  dependencies:
+    es6-map "^0.1.3"
+    es6-weak-map "^2.0.1"
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
+esprima@3.x.x, esprima@^3.1.3, esprima@~3.1.0:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+
+esprima@^2.6.0:
+  version "2.7.3"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+
+esprima@^4.0.0, esprima@~4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+
+esrecurse@^4.1.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+  dependencies:
+    estraverse "^4.1.0"
+    object-assign "^4.0.1"
+
+estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+
+esutils@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+etag@~1.8.1:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+
+event-emitter@~0.3.5:
+  version "0.3.5"
+  resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+
+eventemitter3@1.x.x:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+
+events@^1.0.0, events@^1.1.1, events@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+
+eventsource@0.1.6:
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+  dependencies:
+    original ">=0.0.5"
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+  dependencies:
+    md5.js "^1.3.4"
+    safe-buffer "^5.1.1"
+
+exec-sh@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
+  dependencies:
+    merge "^1.1.3"
+
+execa@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+  dependencies:
+    cross-spawn "^5.0.1"
+    get-stream "^3.0.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+execa@^0.8.0:
+  version "0.8.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
+  dependencies:
+    cross-spawn "^5.0.1"
+    get-stream "^3.0.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+execa@^0.9.0:
+  version "0.9.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01"
+  dependencies:
+    cross-spawn "^5.0.1"
+    get-stream "^3.0.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+exenv@^1.2.0, exenv@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+
+exit-hook@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+
+exit@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+
+expand-braces@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
+  dependencies:
+    array-slice "^0.2.3"
+    array-unique "^0.2.1"
+    braces "^0.1.2"
+
+expand-brackets@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+  dependencies:
+    is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+  dependencies:
+    debug "^2.3.3"
+    define-property "^0.2.5"
+    extend-shallow "^2.0.1"
+    posix-character-classes "^0.1.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+expand-range@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
+  dependencies:
+    is-number "^0.1.1"
+    repeat-string "^0.2.2"
+
+expand-range@^1.8.1:
+  version "1.8.2"
+  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+  dependencies:
+    fill-range "^2.1.0"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+  dependencies:
+    homedir-polyfill "^1.0.1"
+
+expect@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.0.tgz#371edf1ae15b83b5bf5ec34b42f1584660a36c16"
+  dependencies:
+    ansi-styles "^3.2.0"
+    jest-diff "^22.4.0"
+    jest-get-type "^22.1.0"
+    jest-matcher-utils "^22.4.0"
+    jest-message-util "^22.4.0"
+    jest-regex-util "^22.1.0"
+
+expect@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674"
+  dependencies:
+    ansi-styles "^3.2.0"
+    jest-diff "^22.4.3"
+    jest-get-type "^22.4.3"
+    jest-matcher-utils "^22.4.3"
+    jest-message-util "^22.4.3"
+    jest-regex-util "^22.4.3"
+
+express@^4.15.3, express@^4.16.2:
+  version "4.16.2"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+  dependencies:
+    accepts "~1.3.4"
+    array-flatten "1.1.1"
+    body-parser "1.18.2"
+    content-disposition "0.5.2"
+    content-type "~1.0.4"
+    cookie "0.3.1"
+    cookie-signature "1.0.6"
+    debug "2.6.9"
+    depd "~1.1.1"
+    encodeurl "~1.0.1"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    finalhandler "1.1.0"
+    fresh "0.5.2"
+    merge-descriptors "1.0.1"
+    methods "~1.1.2"
+    on-finished "~2.3.0"
+    parseurl "~1.3.2"
+    path-to-regexp "0.1.7"
+    proxy-addr "~2.0.2"
+    qs "6.5.1"
+    range-parser "~1.2.0"
+    safe-buffer "5.1.1"
+    send "0.16.1"
+    serve-static "1.13.1"
+    setprototypeof "1.1.0"
+    statuses "~1.3.1"
+    type-is "~1.6.15"
+    utils-merge "1.0.1"
+    vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+  dependencies:
+    is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+  dependencies:
+    assign-symbols "^1.0.0"
+    is-extendable "^1.0.1"
+
+extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
+
+external-editor@^2.0.4:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
+  dependencies:
+    chardet "^0.4.0"
+    iconv-lite "^0.4.17"
+    tmp "^0.0.33"
+
+extglob@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+  dependencies:
+    is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+  dependencies:
+    array-unique "^0.3.2"
+    define-property "^1.0.0"
+    expand-brackets "^2.1.4"
+    extend-shallow "^2.0.1"
+    fragment-cache "^0.2.1"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+extract-text-webpack-plugin@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+  dependencies:
+    async "^2.4.1"
+    loader-utils "^1.1.0"
+    schema-utils "^0.3.0"
+    webpack-sources "^1.0.1"
+
+extract-zip@1.6.6, extract-zip@^1.0.3:
+  version "1.6.6"
+  resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c"
+  dependencies:
+    concat-stream "1.6.0"
+    debug "2.6.9"
+    mkdirp "0.5.0"
+    yauzl "2.4.1"
+
+extsprintf@1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+
+extsprintf@^1.2.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+
+fast-deep-equal@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+
+fast-json-stable-stringify@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+
+fast-levenshtein@~2.0.4:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
+fast-memoize@^2.2.7:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.3.0.tgz#d7f81dc864489f582e30538923c423d85887af32"
+
+fastparse@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+
+faye-websocket@^0.10.0:
+  version "0.10.0"
+  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+  dependencies:
+    websocket-driver ">=0.5.1"
+
+faye-websocket@~0.11.0:
+  version "0.11.1"
+  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
+  dependencies:
+    websocket-driver ">=0.5.1"
+
+fb-watchman@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
+  dependencies:
+    bser "^2.0.0"
+
+fbjs@^0.8.12, fbjs@^0.8.16, fbjs@^0.8.9:
+  version "0.8.16"
+  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+  dependencies:
+    core-js "^1.0.0"
+    isomorphic-fetch "^2.1.1"
+    loose-envify "^1.0.0"
+    object-assign "^4.1.0"
+    promise "^7.1.1"
+    setimmediate "^1.0.5"
+    ua-parser-js "^0.7.9"
+
+fd-slicer@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+  dependencies:
+    pend "~1.2.0"
+
+feather-icons@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/feather-icons/-/feather-icons-4.5.0.tgz#5c0a38fe4633e88a14cc8d7aa822e2591828027d"
+  dependencies:
+    classnames "^2.2.5"
+
+figures@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+  dependencies:
+    escape-string-regexp "^1.0.5"
+    object-assign "^4.1.0"
+
+figures@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+  dependencies:
+    escape-string-regexp "^1.0.5"
+
+file-loader@^1.1.5:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"
+  dependencies:
+    loader-utils "^1.0.2"
+    schema-utils "^0.3.0"
+
+file-loader@^1.1.8:
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
+  dependencies:
+    loader-utils "^1.0.2"
+    schema-utils "^0.4.5"
+
+file-uri-to-path@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+
+filename-regex@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+
+fileset@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+  dependencies:
+    glob "^7.0.3"
+    minimatch "^3.0.3"
+
+filesize@3.5.11:
+  version "3.5.11"
+  resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+
+fill-range@^2.1.0:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+  dependencies:
+    is-number "^2.1.0"
+    isobject "^2.0.0"
+    randomatic "^1.1.3"
+    repeat-element "^1.1.2"
+    repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+  dependencies:
+    extend-shallow "^2.0.1"
+    is-number "^3.0.0"
+    repeat-string "^1.6.1"
+    to-regex-range "^2.1.0"
+
+finalhandler@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
+  dependencies:
+    debug "2.6.9"
+    encodeurl "~1.0.1"
+    escape-html "~1.0.3"
+    on-finished "~2.3.0"
+    parseurl "~1.3.2"
+    statuses "~1.3.1"
+    unpipe "~1.0.0"
+
+finalhandler@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+  dependencies:
+    debug "2.6.9"
+    encodeurl "~1.0.1"
+    escape-html "~1.0.3"
+    on-finished "~2.3.0"
+    parseurl "~1.3.2"
+    statuses "~1.3.1"
+    unpipe "~1.0.0"
+
+find-cache-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
+  dependencies:
+    commondir "^1.0.1"
+    make-dir "^1.0.0"
+    pkg-dir "^2.0.0"
+
+find-index@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
+
+find-parent-dir@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
+
+find-up@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+  dependencies:
+    path-exists "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+  dependencies:
+    locate-path "^2.0.0"
+
+flatten@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+
+flush-write-stream@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417"
+  dependencies:
+    inherits "^2.0.1"
+    readable-stream "^2.0.4"
+
+follow-redirects@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37"
+  dependencies:
+    debug "^2.2.0"
+
+font-awesome@^4.7.0:
+  version "4.7.0"
+  resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+
+for-in@^0.1.3:
+  version "0.1.8"
+  resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+
+for-in@^1.0.1, for-in@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
+for-own@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+  dependencies:
+    for-in "^1.0.1"
+
+for-own@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
+  dependencies:
+    for-in "^1.0.1"
+
+foreach@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+
+forever-agent@~0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
+form-data@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25"
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.11"
+
+form-data@~2.1.1:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.12"
+
+form-data@~2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.12"
+
+forwarded@~0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+
+fragment-cache@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+  dependencies:
+    map-cache "^0.2.2"
+
+fresh@0.5.2:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+
+from2@^2.1.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+  dependencies:
+    inherits "^2.0.1"
+    readable-stream "^2.0.0"
+
+fs-access@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
+  dependencies:
+    null-check "^1.0.0"
+
+fs-extra@4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880"
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^3.0.0"
+    universalify "^0.1.0"
+
+fs-extra@4.0.3, fs-extra@^4.0.0, fs-extra@^4.0.2:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^4.0.0"
+    universalify "^0.1.0"
+
+fs-extra@^0.30.0:
+  version "0.30.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^2.1.0"
+    klaw "^1.0.0"
+    path-is-absolute "^1.0.0"
+    rimraf "^2.2.8"
+
+fs-write-stream-atomic@^1.0.8:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+  dependencies:
+    graceful-fs "^4.1.2"
+    iferr "^0.1.5"
+    imurmurhash "^0.1.4"
+    readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+fsevents@^1.0.0, fsevents@^1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
+  dependencies:
+    nan "^2.3.0"
+    node-pre-gyp "^0.6.39"
+
+fstream-ignore@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+  dependencies:
+    fstream "^1.0.0"
+    inherits "2"
+    minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
+  dependencies:
+    graceful-fs "^4.1.2"
+    inherits "~2.0.0"
+    mkdirp ">=0.5 0"
+    rimraf "2"
+
+fsu@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/fsu/-/fsu-1.0.4.tgz#586a8fbd8d19acdf330cecbcf17d641e9c370ba0"
+
+ftp@~0.3.10:
+  version "0.3.10"
+  resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d"
+  dependencies:
+    readable-stream "1.1.x"
+    xregexp "2.0.0"
+
+function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+
+function.prototype.name@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
+  dependencies:
+    define-properties "^1.1.2"
+    function-bind "^1.1.1"
+    is-callable "^1.1.3"
+
+fuse.js@^3.0.1, fuse.js@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.0.tgz#f0448e8069855bf2a3e683cdc1d320e7e2a07ef4"
+
+gauge@~2.7.3:
+  version "2.7.4"
+  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+  dependencies:
+    aproba "^1.0.3"
+    console-control-strings "^1.0.0"
+    has-unicode "^2.0.0"
+    object-assign "^4.1.0"
+    signal-exit "^3.0.0"
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+    wide-align "^1.1.0"
+
+gaze@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+  dependencies:
+    globule "^1.0.0"
+
+generate-function@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+  dependencies:
+    is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+
+get-own-enumerable-property-symbols@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b"
+
+get-params@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe"
+
+get-stdin@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+
+get-stream@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+
+get-uri@2:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.1.tgz#dbdcacacd8c608a38316869368117697a1631c59"
+  dependencies:
+    data-uri-to-buffer "1"
+    debug "2"
+    extend "3"
+    file-uri-to-path "1"
+    ftp "~0.3.10"
+    readable-stream "2"
+
+get-value@^2.0.3, get-value@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
+getos@2.8.4:
+  version "2.8.4"
+  resolved "https://registry.yarnpkg.com/getos/-/getos-2.8.4.tgz#7b8603d3619c28e38cb0fe7a4f63c3acb80d5163"
+  dependencies:
+    async "2.1.4"
+
+getpass@^0.1.1:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+  dependencies:
+    assert-plus "^1.0.0"
+
+glamor@^2.20.40:
+  version "2.20.40"
+  resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05"
+  dependencies:
+    fbjs "^0.8.12"
+    inline-style-prefixer "^3.0.6"
+    object-assign "^4.1.1"
+    prop-types "^15.5.10"
+    through "^2.3.8"
+
+glamorous@^4.11.6:
+  version "4.12.0"
+  resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.12.0.tgz#47b864326ca37e1f1ea6d523b3d23402f6657af1"
+  dependencies:
+    brcast "^3.0.0"
+    fast-memoize "^2.2.7"
+    html-tag-names "^1.1.1"
+    is-function "^1.0.1"
+    is-plain-object "^2.0.4"
+    react-html-attributes "^1.3.0"
+    svg-tag-names "^1.1.0"
+
+glob-base@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+  dependencies:
+    glob-parent "^2.0.0"
+    is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+  dependencies:
+    is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+  dependencies:
+    is-glob "^3.1.0"
+    path-dirname "^1.0.0"
+
+glob2base@^0.0.12:
+  version "0.0.12"
+  resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
+  dependencies:
+    find-index "^0.1.1"
+
+glob@7.0.x:
+  version "7.0.6"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.2"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+glob@7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.2"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
+  version "7.1.2"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+glob@^6.0.4:
+  version "6.0.4"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+  dependencies:
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "2 || 3"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+  dependencies:
+    ini "^1.3.4"
+
+global-modules@1.0.0, global-modules@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+  dependencies:
+    global-prefix "^1.0.1"
+    is-windows "^1.0.1"
+    resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+  dependencies:
+    expand-tilde "^2.0.2"
+    homedir-polyfill "^1.0.1"
+    ini "^1.3.4"
+    is-windows "^1.0.1"
+    which "^1.2.14"
+
+global@^4.3.2:
+  version "4.3.2"
+  resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
+  dependencies:
+    min-document "^2.19.0"
+    process "~0.5.1"
+
+globals@^9.18.0:
+  version "9.18.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+
+globby@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+  dependencies:
+    array-union "^1.0.1"
+    arrify "^1.0.0"
+    glob "^7.0.3"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+globby@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+  dependencies:
+    array-union "^1.0.1"
+    glob "^7.0.3"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+globby@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
+  dependencies:
+    array-union "^1.0.1"
+    dir-glob "^2.0.0"
+    glob "^7.1.2"
+    ignore "^3.3.5"
+    pify "^3.0.0"
+    slash "^1.0.0"
+
+globule@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+  dependencies:
+    glob "~7.1.1"
+    lodash "~4.17.4"
+    minimatch "~3.0.2"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+  version "4.1.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+
+"graceful-readlink@>= 1.0.0":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+
+growl@1.10.3:
+  version "1.10.3"
+  resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
+
+growl@1.9.2:
+  version "1.9.2"
+  resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
+
+growly@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+
+gzip-size@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+  dependencies:
+    duplexer "^0.1.1"
+
+handle-thing@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+
+handlebars@^4.0.3:
+  version "4.0.11"
+  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
+  dependencies:
+    async "^1.4.0"
+    optimist "^0.6.1"
+    source-map "^0.4.4"
+  optionalDependencies:
+    uglify-js "^2.6"
+
+har-schema@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+
+har-schema@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+
+har-validator@~2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+  dependencies:
+    chalk "^1.1.1"
+    commander "^2.9.0"
+    is-my-json-valid "^2.12.4"
+    pinkie-promise "^2.0.0"
+
+har-validator@~4.2.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
+  dependencies:
+    ajv "^4.9.1"
+    har-schema "^1.0.5"
+
+har-validator@~5.0.3:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
+  dependencies:
+    ajv "^5.1.0"
+    har-schema "^2.0.0"
+
+has-ansi@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+has-binary2@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98"
+  dependencies:
+    isarray "2.0.1"
+
+has-cors@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+
+has-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+
+has-flag@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+
+has-flag@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
+has-unicode@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+
+has-value@^0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+  dependencies:
+    get-value "^2.0.3"
+    has-values "^0.1.4"
+    isobject "^2.0.0"
+
+has-value@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+  dependencies:
+    get-value "^2.0.6"
+    has-values "^1.0.0"
+    isobject "^3.0.0"
+
+has-values@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+  dependencies:
+    is-number "^3.0.0"
+    kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+  dependencies:
+    function-bind "^1.0.2"
+
+hash-base@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+  dependencies:
+    inherits "^2.0.1"
+
+hash-base@^3.0.0:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+  dependencies:
+    inherits "^2.0.3"
+    minimalistic-assert "^1.0.0"
+
+hawk@3.1.3, hawk@~3.1.3:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+  dependencies:
+    boom "2.x.x"
+    cryptiles "2.x.x"
+    hoek "2.x.x"
+    sntp "1.x.x"
+
+hawk@~6.0.2:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
+  dependencies:
+    boom "4.x.x"
+    cryptiles "3.x.x"
+    hoek "4.x.x"
+    sntp "2.x.x"
+
+he@1.1.1, he@1.1.x:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+
+hipchat-notifier@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e"
+  dependencies:
+    lodash "^4.0.0"
+    request "^2.0.0"
+
+hmac-drbg@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+  dependencies:
+    hash.js "^1.0.3"
+    minimalistic-assert "^1.0.0"
+    minimalistic-crypto-utils "^1.0.1"
+
+hoek@2.x.x:
+  version "2.16.3"
+  resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+
+hoek@4.x.x:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
+
+hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
+
+home-or-tmp@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+  dependencies:
+    os-homedir "^1.0.0"
+    os-tmpdir "^1.0.1"
+
+home-path@^1.0.1:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f"
+
+homedir-polyfill@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+  dependencies:
+    parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+
+hpack.js@^2.1.6:
+  version "2.1.6"
+  resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+  dependencies:
+    inherits "^2.0.1"
+    obuf "^1.0.0"
+    readable-stream "^2.0.1"
+    wbuf "^1.1.0"
+
+html-comment-regex@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+
+html-element-attributes@^1.0.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/html-element-attributes/-/html-element-attributes-1.3.0.tgz#f06ebdfce22de979db82020265cac541fb17d4fc"
+
+html-encoding-sniffer@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
+  dependencies:
+    whatwg-encoding "^1.0.1"
+
+html-entities@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+
+html-loader@^0.5.5:
+  version "0.5.5"
+  resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
+  dependencies:
+    es6-templates "^0.2.3"
+    fastparse "^1.1.1"
+    html-minifier "^3.5.8"
+    loader-utils "^1.1.0"
+    object-assign "^4.1.1"
+
+html-minifier@^3.2.3:
+  version "3.5.8"
+  resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700"
+  dependencies:
+    camel-case "3.0.x"
+    clean-css "4.1.x"
+    commander "2.12.x"
+    he "1.1.x"
+    ncname "1.0.x"
+    param-case "2.1.x"
+    relateurl "0.2.x"
+    uglify-js "3.3.x"
+
+html-minifier@^3.5.8:
+  version "3.5.10"
+  resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.10.tgz#8522c772c388db81aa5c26f62033302d906ea1c7"
+  dependencies:
+    camel-case "3.0.x"
+    clean-css "4.1.x"
+    commander "2.14.x"
+    he "1.1.x"
+    ncname "1.0.x"
+    param-case "2.1.x"
+    relateurl "0.2.x"
+    uglify-js "3.3.x"
+
+html-tag-names@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.2.tgz#f65168964c5a9c82675efda882875dcb2a875c22"
+
+html-webpack-plugin@^2.29.0, html-webpack-plugin@^2.30.1:
+  version "2.30.1"
+  resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5"
+  dependencies:
+    bluebird "^3.4.7"
+    html-minifier "^3.2.3"
+    loader-utils "^0.2.16"
+    lodash "^4.17.3"
+    pretty-error "^2.0.2"
+    toposort "^1.0.0"
+
+htmlescape@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
+
+htmlparser2@~3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
+  dependencies:
+    domelementtype "1"
+    domhandler "2.1"
+    domutils "1.1"
+    readable-stream "1.0"
+
+http-deceiver@^1.2.7:
+  version "1.2.7"
+  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+
+http-errors@1.6.2, http-errors@~1.6.2:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+  dependencies:
+    depd "1.1.1"
+    inherits "2.0.3"
+    setprototypeof "1.0.3"
+    statuses ">= 1.3.1 < 2"
+
+http-parser-js@>=0.4.0:
+  version "0.4.9"
+  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1"
+
+http-proxy-agent@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a"
+  dependencies:
+    agent-base "2"
+    debug "2"
+    extend "3"
+
+http-proxy-middleware@~0.17.4:
+  version "0.17.4"
+  resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+  dependencies:
+    http-proxy "^1.16.2"
+    is-glob "^3.1.0"
+    lodash "^4.17.2"
+    micromatch "^2.3.11"
+
+http-proxy@^1.13.0, http-proxy@^1.16.2:
+  version "1.16.2"
+  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+  dependencies:
+    eventemitter3 "1.x.x"
+    requires-port "1.x.x"
+
+http-signature@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+  dependencies:
+    assert-plus "^0.2.0"
+    jsprim "^1.2.2"
+    sshpk "^1.7.0"
+
+http-signature@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+  dependencies:
+    assert-plus "^1.0.0"
+    jsprim "^1.2.2"
+    sshpk "^1.7.0"
+
+httpntlm@1.6.1:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2"
+  dependencies:
+    httpreq ">=0.4.22"
+    underscore "~1.7.0"
+
+httpreq@>=0.4.22:
+  version "0.4.24"
+  resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f"
+
+https-browserify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+
+https-proxy-agent@1, https-proxy-agent@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6"
+  dependencies:
+    agent-base "2"
+    debug "2"
+    extend "3"
+
+husky@^0.14.3:
+  version "0.14.3"
+  resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
+  dependencies:
+    is-ci "^1.0.10"
+    normalize-path "^1.0.0"
+    strip-indent "^2.0.0"
+
+hyphenate-style-name@^1.0.1, hyphenate-style-name@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
+
+iconv-lite@0.4.15:
+  version "0.4.15"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
+
+iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+
+icss-replace-symbols@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+
+icss-utils@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
+  dependencies:
+    postcss "^6.0.1"
+
+ieee754@^1.1.4:
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+
+iferr@^0.1.5:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+
+ignore@^3.3.5, ignore@^3.3.7:
+  version "3.3.7"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+
+image-size@~0.5.0:
+  version "0.5.5"
+  resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+
+immutable@^3.8.1:
+  version "3.8.2"
+  resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
+
+import-local@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
+  dependencies:
+    pkg-dir "^2.0.0"
+    resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+
+in-publish@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
+
+indent-string@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+  dependencies:
+    repeating "^2.0.0"
+
+indent-string@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+
+indexes-of@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+
+indexof@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+
+inflection@~1.10.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.10.0.tgz#5bffcb1197ad3e81050f8e17e21668087ee9eb2f"
+
+inflection@~1.3.0:
+  version "1.3.8"
+  resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e"
+
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+  dependencies:
+    once "^1.3.0"
+    wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+inherits@2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+
+ini@^1.3.4, ini@~1.3.0:
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+
+inline-source-map@~0.6.0:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
+  dependencies:
+    source-map "~0.5.3"
+
+inline-style-prefixer@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7"
+  dependencies:
+    bowser "^1.0.0"
+    hyphenate-style-name "^1.0.1"
+
+inline-style-prefixer@^3.0.6:
+  version "3.0.8"
+  resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534"
+  dependencies:
+    bowser "^1.7.3"
+    css-in-js-utils "^2.0.0"
+
+inquirer@3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
+  dependencies:
+    ansi-escapes "^3.0.0"
+    chalk "^2.0.0"
+    cli-cursor "^2.1.0"
+    cli-width "^2.0.0"
+    external-editor "^2.0.4"
+    figures "^2.0.0"
+    lodash "^4.3.0"
+    mute-stream "0.0.7"
+    run-async "^2.2.0"
+    rx-lite "^4.0.8"
+    rx-lite-aggregates "^4.0.8"
+    string-width "^2.1.0"
+    strip-ansi "^4.0.0"
+    through "^2.3.6"
+
+insert-css@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4"
+
+insert-module-globals@^7.0.0:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
+  dependencies:
+    JSONStream "^1.0.3"
+    combine-source-map "~0.7.1"
+    concat-stream "~1.5.1"
+    is-buffer "^1.1.0"
+    lexical-scope "^1.2.0"
+    process "~0.11.0"
+    through2 "^2.0.0"
+    xtend "^4.0.0"
+
+internal-ip@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
+  dependencies:
+    meow "^3.3.0"
+
+interpret@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
+
+invariant@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+  dependencies:
+    loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+
+ip@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/ip/-/ip-1.0.1.tgz#c7e356cdea225ae71b36d70f2e71a92ba4e42590"
+
+ip@^1.1.0, ip@^1.1.2, ip@^1.1.4, ip@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+
+ipaddr.js@1.5.2:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+
+is-absolute-url@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+
+is-accessor-descriptor@^0.1.6:
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+  dependencies:
+    kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+  dependencies:
+    kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
+is-binary-path@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+  dependencies:
+    binary-extensions "^1.0.0"
+
+is-buffer@^1.1.0, is-buffer@^1.1.5:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+
+is-builtin-module@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+  dependencies:
+    builtin-modules "^1.0.0"
+
+is-callable@^1.1.1, is-callable@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
+is-ci@1.0.10:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+  dependencies:
+    ci-info "^1.0.0"
+
+is-ci@^1.0.10:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
+  dependencies:
+    ci-info "^1.0.0"
+
+is-data-descriptor@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+  dependencies:
+    kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+  dependencies:
+    kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+
+is-descriptor@^0.1.0:
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+  dependencies:
+    is-accessor-descriptor "^0.1.6"
+    is-data-descriptor "^0.1.4"
+    kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+  dependencies:
+    is-accessor-descriptor "^1.0.0"
+    is-data-descriptor "^1.0.0"
+    kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+
+is-dom@^1.0.9:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.0.9.tgz#483832d52972073de12b9fe3f60320870da8370d"
+
+is-dotfile@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+
+is-equal-shallow@^0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+  dependencies:
+    is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extendable@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+  dependencies:
+    is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+
+is-finite@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+  dependencies:
+    number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+  dependencies:
+    number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+
+is-function@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
+
+is-generator-fn@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+  dependencies:
+    is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+  dependencies:
+    is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
+  dependencies:
+    is-extglob "^2.1.1"
+
+is-installed-globally@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+  dependencies:
+    global-dirs "^0.1.0"
+    is-path-inside "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+  version "2.17.1"
+  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471"
+  dependencies:
+    generate-function "^2.0.0"
+    generate-object-property "^1.1.0"
+    jsonpointer "^4.0.0"
+    xtend "^4.0.0"
+
+is-number@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
+
+is-number@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+  dependencies:
+    kind-of "^3.0.2"
+
+is-number@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+  dependencies:
+    kind-of "^3.0.2"
+
+is-number@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
+is-obj@^1.0.0, is-obj@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
+is-observable@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2"
+  dependencies:
+    symbol-observable "^0.2.2"
+
+is-odd@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
+  dependencies:
+    is-number "^4.0.0"
+
+is-path-cwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+  dependencies:
+    is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+  dependencies:
+    path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+  dependencies:
+    isobject "^3.0.1"
+
+is-posix-bracket@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+is-promise@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+
+is-property@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
+is-regex@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+  dependencies:
+    has "^1.0.1"
+
+is-regexp@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+
+is-root@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5"
+
+is-stream@^1.0.1, is-stream@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
+is-svg@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+  dependencies:
+    html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
+is-typedarray@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
+is-utf8@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+
+is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+
+is-wsl@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+
+isarray@0.0.1, isarray@~0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isarray@2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
+
+isbinaryfile@^3.0.0:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621"
+
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+
+isobject@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+  dependencies:
+    isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+
+isomorphic-fetch@^2.1.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+  dependencies:
+    node-fetch "^1.0.1"
+    whatwg-fetch ">=0.10.0"
+
+isstream@~0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
+istanbul-api@^1.1.14:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"
+  dependencies:
+    async "^2.1.4"
+    fileset "^2.0.2"
+    istanbul-lib-coverage "^1.1.1"
+    istanbul-lib-hook "^1.1.0"
+    istanbul-lib-instrument "^1.9.1"
+    istanbul-lib-report "^1.1.2"
+    istanbul-lib-source-maps "^1.2.2"
+    istanbul-reports "^1.1.3"
+    js-yaml "^3.7.0"
+    mkdirp "^0.5.1"
+    once "^1.4.0"
+
+istanbul-instrumenter-loader@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.0.tgz#9f553923b22360bac95e617aaba01add1f7db0b2"
+  dependencies:
+    convert-source-map "^1.5.0"
+    istanbul-lib-instrument "^1.7.3"
+    loader-utils "^1.1.0"
+    schema-utils "^0.3.0"
+
+istanbul-lib-coverage@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
+
+istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
+
+istanbul-lib-hook@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
+  dependencies:
+    append-transform "^0.4.0"
+
+istanbul-lib-instrument@^1.7.3, istanbul-lib-instrument@^1.9.1:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
+  dependencies:
+    babel-generator "^6.18.0"
+    babel-template "^6.16.0"
+    babel-traverse "^6.18.0"
+    babel-types "^6.18.0"
+    babylon "^6.18.0"
+    istanbul-lib-coverage "^1.1.1"
+    semver "^5.3.0"
+
+istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0:
+  version "1.10.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
+  dependencies:
+    babel-generator "^6.18.0"
+    babel-template "^6.16.0"
+    babel-traverse "^6.18.0"
+    babel-types "^6.18.0"
+    babylon "^6.18.0"
+    istanbul-lib-coverage "^1.2.0"
+    semver "^5.3.0"
+
+istanbul-lib-report@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
+  dependencies:
+    istanbul-lib-coverage "^1.1.1"
+    mkdirp "^0.5.1"
+    path-parse "^1.0.5"
+    supports-color "^3.1.2"
+
+istanbul-lib-source-maps@^1.2.1:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
+  dependencies:
+    debug "^3.1.0"
+    istanbul-lib-coverage "^1.1.2"
+    mkdirp "^0.5.1"
+    rimraf "^2.6.1"
+    source-map "^0.5.3"
+
+istanbul-lib-source-maps@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
+  dependencies:
+    debug "^3.1.0"
+    istanbul-lib-coverage "^1.1.1"
+    mkdirp "^0.5.1"
+    rimraf "^2.6.1"
+    source-map "^0.5.3"
+
+istanbul-reports@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
+  dependencies:
+    handlebars "^4.0.3"
+
+jasmine-core@~2.8.0:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
+
+jasmine-spec-reporter@~4.2.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22"
+  dependencies:
+    colors "1.1.2"
+
+jasmine@^2.5.3:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e"
+  dependencies:
+    exit "^0.1.2"
+    glob "^7.0.6"
+    jasmine-core "~2.8.0"
+
+jasminewd2@^2.1.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e"
+
+jest-changed-files@^22.2.0:
+  version "22.2.0"
+  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.2.0.tgz#517610c4a8ca0925bdc88b0ca53bd678aa8d019e"
+  dependencies:
+    throat "^4.0.0"
+
+jest-cli@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.2.tgz#e6546dc651e13d164481aa3e76e53ac4f4edab06"
+  dependencies:
+    ansi-escapes "^3.0.0"
+    chalk "^2.0.1"
+    exit "^0.1.2"
+    glob "^7.1.2"
+    graceful-fs "^4.1.11"
+    import-local "^1.0.0"
+    is-ci "^1.0.10"
+    istanbul-api "^1.1.14"
+    istanbul-lib-coverage "^1.1.1"
+    istanbul-lib-instrument "^1.8.0"
+    istanbul-lib-source-maps "^1.2.1"
+    jest-changed-files "^22.2.0"
+    jest-config "^22.4.2"
+    jest-environment-jsdom "^22.4.1"
+    jest-get-type "^22.1.0"
+    jest-haste-map "^22.4.2"
+    jest-message-util "^22.4.0"
+    jest-regex-util "^22.1.0"
+    jest-resolve-dependencies "^22.1.0"
+    jest-runner "^22.4.2"
+    jest-runtime "^22.4.2"
+    jest-snapshot "^22.4.0"
+    jest-util "^22.4.1"
+    jest-validate "^22.4.2"
+    jest-worker "^22.2.2"
+    micromatch "^2.3.11"
+    node-notifier "^5.2.1"
+    realpath-native "^1.0.0"
+    rimraf "^2.5.4"
+    slash "^1.0.0"
+    string-length "^2.0.0"
+    strip-ansi "^4.0.0"
+    which "^1.2.12"
+    yargs "^10.0.3"
+
+jest-config@^22.4.0, jest-config@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.2.tgz#580ba5819bf81a5e48f4fd470e8b81834f45c855"
+  dependencies:
+    chalk "^2.0.1"
+    glob "^7.1.1"
+    jest-environment-jsdom "^22.4.1"
+    jest-environment-node "^22.4.1"
+    jest-get-type "^22.1.0"
+    jest-jasmine2 "^22.4.2"
+    jest-regex-util "^22.1.0"
+    jest-resolve "^22.4.2"
+    jest-util "^22.4.1"
+    jest-validate "^22.4.2"
+    pretty-format "^22.4.0"
+
+jest-config@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403"
+  dependencies:
+    chalk "^2.0.1"
+    glob "^7.1.1"
+    jest-environment-jsdom "^22.4.3"
+    jest-environment-node "^22.4.3"
+    jest-get-type "^22.4.3"
+    jest-jasmine2 "^22.4.3"
+    jest-regex-util "^22.4.3"
+    jest-resolve "^22.4.3"
+    jest-util "^22.4.3"
+    jest-validate "^22.4.3"
+    pretty-format "^22.4.3"
+
+jest-diff@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.0.tgz#384c2b78519ca44ca126382df53f134289232525"
+  dependencies:
+    chalk "^2.0.1"
+    diff "^3.2.0"
+    jest-get-type "^22.1.0"
+    pretty-format "^22.4.0"
+
+jest-diff@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030"
+  dependencies:
+    chalk "^2.0.1"
+    diff "^3.2.0"
+    jest-get-type "^22.4.3"
+    pretty-format "^22.4.3"
+
+jest-docblock@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8"
+  dependencies:
+    detect-newline "^2.1.0"
+
+jest-environment-jsdom@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.1.tgz#754f408872441740100d3917e5ec40c74de6447f"
+  dependencies:
+    jest-mock "^22.2.0"
+    jest-util "^22.4.1"
+    jsdom "^11.5.1"
+
+jest-environment-jsdom@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e"
+  dependencies:
+    jest-mock "^22.4.3"
+    jest-util "^22.4.3"
+    jsdom "^11.5.1"
+
+jest-environment-node@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.1.tgz#418850eb654596b8d6e36c2021cbedbc23df8e16"
+  dependencies:
+    jest-mock "^22.2.0"
+    jest-util "^22.4.1"
+
+jest-environment-node@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129"
+  dependencies:
+    jest-mock "^22.4.3"
+    jest-util "^22.4.3"
+
+jest-get-type@^22.1.0:
+  version "22.1.0"
+  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9"
+
+jest-get-type@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
+
+jest-haste-map@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4"
+  dependencies:
+    fb-watchman "^2.0.0"
+    graceful-fs "^4.1.11"
+    jest-docblock "^22.4.0"
+    jest-serializer "^22.4.0"
+    jest-worker "^22.2.2"
+    micromatch "^2.3.11"
+    sane "^2.0.0"
+
+jest-jasmine2@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.2.tgz#dfd3d259579ed6f52510d8f1ab692808f0d40691"
+  dependencies:
+    chalk "^2.0.1"
+    co "^4.6.0"
+    expect "^22.4.0"
+    graceful-fs "^4.1.11"
+    is-generator-fn "^1.0.0"
+    jest-diff "^22.4.0"
+    jest-matcher-utils "^22.4.0"
+    jest-message-util "^22.4.0"
+    jest-snapshot "^22.4.0"
+    jest-util "^22.4.1"
+    source-map-support "^0.5.0"
+
+jest-jasmine2@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965"
+  dependencies:
+    chalk "^2.0.1"
+    co "^4.6.0"
+    expect "^22.4.3"
+    graceful-fs "^4.1.11"
+    is-generator-fn "^1.0.0"
+    jest-diff "^22.4.3"
+    jest-matcher-utils "^22.4.3"
+    jest-message-util "^22.4.3"
+    jest-snapshot "^22.4.3"
+    jest-util "^22.4.3"
+    source-map-support "^0.5.0"
+
+jest-leak-detector@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.0.tgz#64da77f05b001c96d2062226e079f89989c4aa2f"
+  dependencies:
+    pretty-format "^22.4.0"
+
+jest-matcher-utils@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz#d55f5faf2270462736bdf7c7485ee931c9d4b6a1"
+  dependencies:
+    chalk "^2.0.1"
+    jest-get-type "^22.1.0"
+    pretty-format "^22.4.0"
+
+jest-matcher-utils@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff"
+  dependencies:
+    chalk "^2.0.1"
+    jest-get-type "^22.4.3"
+    pretty-format "^22.4.3"
+
+jest-message-util@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.0.tgz#e3d861df16d2fee60cb2bc8feac2188a42579642"
+  dependencies:
+    "@babel/code-frame" "^7.0.0-beta.35"
+    chalk "^2.0.1"
+    micromatch "^2.3.11"
+    slash "^1.0.0"
+    stack-utils "^1.0.1"
+
+jest-message-util@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7"
+  dependencies:
+    "@babel/code-frame" "^7.0.0-beta.35"
+    chalk "^2.0.1"
+    micromatch "^2.3.11"
+    slash "^1.0.0"
+    stack-utils "^1.0.1"
+
+jest-mock@^22.2.0:
+  version "22.2.0"
+  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7"
+
+jest-mock@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7"
+
+jest-preset-angular@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-5.2.1.tgz#b93611145bf2ef373c1ffe80d8870af0e91f7b64"
+  dependencies:
+    "@types/jest" "^22.1.3"
+    jest-zone-patch "^0.0.8"
+    ts-jest "^22.4.1"
+
+jest-regex-util@^22.1.0:
+  version "22.1.0"
+  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53"
+
+jest-regex-util@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af"
+
+jest-resolve-dependencies@^22.1.0:
+  version "22.1.0"
+  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31"
+  dependencies:
+    jest-regex-util "^22.1.0"
+
+jest-resolve@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.2.tgz#25d88aa4147462c9c1c6a1ba16250d3794c24d00"
+  dependencies:
+    browser-resolve "^1.11.2"
+    chalk "^2.0.1"
+
+jest-resolve@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea"
+  dependencies:
+    browser-resolve "^1.11.2"
+    chalk "^2.0.1"
+
+jest-runner@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.2.tgz#19390ea9d99f768973e16f95a1efa351c0017e87"
+  dependencies:
+    exit "^0.1.2"
+    jest-config "^22.4.2"
+    jest-docblock "^22.4.0"
+    jest-haste-map "^22.4.2"
+    jest-jasmine2 "^22.4.2"
+    jest-leak-detector "^22.4.0"
+    jest-message-util "^22.4.0"
+    jest-runtime "^22.4.2"
+    jest-util "^22.4.1"
+    jest-worker "^22.2.2"
+    throat "^4.0.0"
+
+jest-runtime@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.2.tgz#0de0444f65ce15ee4f2e0055133fc7c17b9168f3"
+  dependencies:
+    babel-core "^6.0.0"
+    babel-jest "^22.4.1"
+    babel-plugin-istanbul "^4.1.5"
+    chalk "^2.0.1"
+    convert-source-map "^1.4.0"
+    exit "^0.1.2"
+    graceful-fs "^4.1.11"
+    jest-config "^22.4.2"
+    jest-haste-map "^22.4.2"
+    jest-regex-util "^22.1.0"
+    jest-resolve "^22.4.2"
+    jest-util "^22.4.1"
+    jest-validate "^22.4.2"
+    json-stable-stringify "^1.0.1"
+    micromatch "^2.3.11"
+    realpath-native "^1.0.0"
+    slash "^1.0.0"
+    strip-bom "3.0.0"
+    write-file-atomic "^2.1.0"
+    yargs "^10.0.3"
+
+jest-serializer@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566"
+
+jest-snapshot@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.0.tgz#03d3ce63f8fa7352388afc6a3c8b5ccc3a180ed7"
+  dependencies:
+    chalk "^2.0.1"
+    jest-diff "^22.4.0"
+    jest-matcher-utils "^22.4.0"
+    mkdirp "^0.5.1"
+    natural-compare "^1.4.0"
+    pretty-format "^22.4.0"
+
+jest-snapshot@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2"
+  dependencies:
+    chalk "^2.0.1"
+    jest-diff "^22.4.3"
+    jest-matcher-utils "^22.4.3"
+    mkdirp "^0.5.1"
+    natural-compare "^1.4.0"
+    pretty-format "^22.4.3"
+
+jest-sonar-reporter@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/jest-sonar-reporter/-/jest-sonar-reporter-1.3.0.tgz#dd05b57a40d19cc8c8b1e5598acf632dbaafbb85"
+  dependencies:
+    xml "^1.0.1"
+
+jest-util@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.1.tgz#dd17c3bdb067f8e90591563ec0c42bf847dc249f"
+  dependencies:
+    callsites "^2.0.0"
+    chalk "^2.0.1"
+    graceful-fs "^4.1.11"
+    is-ci "^1.0.10"
+    jest-message-util "^22.4.0"
+    mkdirp "^0.5.1"
+    source-map "^0.6.0"
+
+jest-util@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac"
+  dependencies:
+    callsites "^2.0.0"
+    chalk "^2.0.1"
+    graceful-fs "^4.1.11"
+    is-ci "^1.0.10"
+    jest-message-util "^22.4.3"
+    mkdirp "^0.5.1"
+    source-map "^0.6.0"
+
+jest-validate@^22.4.0, jest-validate@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30"
+  dependencies:
+    chalk "^2.0.1"
+    jest-config "^22.4.3"
+    jest-get-type "^22.4.3"
+    leven "^2.1.0"
+    pretty-format "^22.4.3"
+
+jest-validate@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.2.tgz#e789a4e056173bf97fe797a2df2d52105c57d4f4"
+  dependencies:
+    chalk "^2.0.1"
+    jest-config "^22.4.2"
+    jest-get-type "^22.1.0"
+    leven "^2.1.0"
+    pretty-format "^22.4.0"
+
+jest-worker@^22.2.2:
+  version "22.2.2"
+  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390"
+  dependencies:
+    merge-stream "^1.0.1"
+
+jest-zone-patch@^0.0.8:
+  version "0.0.8"
+  resolved "https://registry.yarnpkg.com/jest-zone-patch/-/jest-zone-patch-0.0.8.tgz#90fa3b5b60e95ad3e624dd2c3eb59bb1dcabd371"
+
+jest@^22.4.2:
+  version "22.4.2"
+  resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.2.tgz#34012834a49bf1bdd3bc783850ab44e4499afc20"
+  dependencies:
+    import-local "^1.0.0"
+    jest-cli "^22.4.2"
+
+js-base64@^2.1.8, js-base64@^2.1.9:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa"
+
+js-tokens@^3.0.0, js-tokens@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+
+js-yaml@^3.4.3, js-yaml@^3.7.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+js-yaml@^3.9.0:
+  version "3.11.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+js-yaml@~3.7.0:
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^2.6.0"
+
+jsan@^3.1.3, jsan@^3.1.5, jsan@^3.1.9:
+  version "3.1.9"
+  resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.9.tgz#2705676c1058f0a7d9ac266ad036a5769cfa7c96"
+
+jsbn@~0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+
+jsdom@^11.5.1:
+  version "11.6.2"
+  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.2.tgz#25d1ef332d48adf77fc5221fe2619967923f16bb"
+  dependencies:
+    abab "^1.0.4"
+    acorn "^5.3.0"
+    acorn-globals "^4.1.0"
+    array-equal "^1.0.0"
+    browser-process-hrtime "^0.1.2"
+    content-type-parser "^1.0.2"
+    cssom ">= 0.3.2 < 0.4.0"
+    cssstyle ">= 0.2.37 < 0.3.0"
+    domexception "^1.0.0"
+    escodegen "^1.9.0"
+    html-encoding-sniffer "^1.0.2"
+    left-pad "^1.2.0"
+    nwmatcher "^1.4.3"
+    parse5 "4.0.0"
+    pn "^1.1.0"
+    request "^2.83.0"
+    request-promise-native "^1.0.5"
+    sax "^1.2.4"
+    symbol-tree "^3.2.2"
+    tough-cookie "^2.3.3"
+    w3c-hr-time "^1.0.1"
+    webidl-conversions "^4.0.2"
+    whatwg-encoding "^1.0.3"
+    whatwg-url "^6.4.0"
+    ws "^4.0.0"
+    xml-name-validator "^3.0.0"
+
+jsesc@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+
+jsesc@~0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
+json-loader@^0.5.4, json-loader@^0.5.7:
+  version "0.5.7"
+  resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+
+json-parse-better-errors@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
+
+json-schema-traverse@^0.3.0:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+
+json-schema@0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
+json-stable-stringify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+  dependencies:
+    jsonify "~0.0.0"
+
+json-stable-stringify@~0.0.0:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
+  dependencies:
+    jsonify "~0.0.0"
+
+json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
+json3@3.3.2, json3@^3.3.2:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+
+json5@^0.5.0, json5@^0.5.1:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+
+jsonfile@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+jsonfile@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+jsonfile@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+
+jsonparse@^1.2.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+
+jsonpointer@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+
+jsprim@^1.2.2:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+  dependencies:
+    assert-plus "1.0.0"
+    extsprintf "1.3.0"
+    json-schema "0.2.3"
+    verror "1.10.0"
+
+karma-chrome-launcher@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
+  dependencies:
+    fs-access "^1.0.0"
+    which "^1.2.1"
+
+karma-cli@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960"
+  dependencies:
+    resolve "^1.1.6"
+
+karma-coverage-istanbul-reporter@^1.2.1:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.3.tgz#daf26051d5a0daa5838a4ce81aa4a41724bdf36b"
+  dependencies:
+    istanbul-api "^1.1.14"
+    minimatch "^3.0.4"
+
+karma-jasmine-html-reporter@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c"
+  dependencies:
+    karma-jasmine "^1.0.2"
+
+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529"
+
+karma-source-map-support@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz#1bf81e7bb4b089627ab352ec4179e117c406a540"
+  dependencies:
+    source-map-support "^0.4.1"
+
+karma@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58"
+  dependencies:
+    bluebird "^3.3.0"
+    body-parser "^1.16.1"
+    browserify "^14.5.0"
+    chokidar "^1.4.1"
+    colors "^1.1.0"
+    combine-lists "^1.0.0"
+    connect "^3.6.0"
+    core-js "^2.2.0"
+    di "^0.0.1"
+    dom-serialize "^2.2.0"
+    expand-braces "^0.1.1"
+    glob "^7.1.1"
+    graceful-fs "^4.1.2"
+    http-proxy "^1.13.0"
+    isbinaryfile "^3.0.0"
+    lodash "^4.17.4"
+    log4js "^2.3.9"
+    mime "^1.3.4"
+    minimatch "^3.0.2"
+    optimist "^0.6.1"
+    qjobs "^1.1.4"
+    range-parser "^1.2.0"
+    rimraf "^2.6.0"
+    safe-buffer "^5.0.1"
+    socket.io "2.0.4"
+    source-map "^0.6.1"
+    tmp "0.0.33"
+    useragent "^2.1.12"
+
+keycode@^2.1.9:
+  version "2.1.9"
+  resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
+
+killable@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
+klaw@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+  optionalDependencies:
+    graceful-fs "^4.1.9"
+
+labeled-stream-splicer@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
+  dependencies:
+    inherits "^2.0.1"
+    isarray "~0.0.1"
+    stream-splicer "^2.0.0"
+
+lazy-ass@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
+
+lazy-cache@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+
+lazy-cache@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
+  dependencies:
+    set-getter "^0.1.0"
+
+lcid@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+  dependencies:
+    invert-kv "^1.0.0"
+
+left-pad@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee"
+
+less-loader@^4.0.5:
+  version "4.0.5"
+  resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd"
+  dependencies:
+    clone "^2.1.1"
+    loader-utils "^1.1.0"
+    pify "^2.3.0"
+
+less@^2.7.2:
+  version "2.7.3"
+  resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b"
+  optionalDependencies:
+    errno "^0.1.1"
+    graceful-fs "^4.1.2"
+    image-size "~0.5.0"
+    mime "^1.2.11"
+    mkdirp "^0.5.0"
+    promise "^7.1.1"
+    request "2.81.0"
+    source-map "^0.5.3"
+
+leven@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+
+levn@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+  dependencies:
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+
+lexical-scope@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
+  dependencies:
+    astw "^2.0.0"
+
+libbase64@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6"
+
+libmime@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6"
+  dependencies:
+    iconv-lite "0.4.15"
+    libbase64 "0.1.0"
+    libqp "1.1.0"
+
+libqp@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8"
+
+license-webpack-plugin@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz#76b2cedccc78f139fd7877e576f756cfc141b8c2"
+  dependencies:
+    ejs "^2.5.7"
+
+linked-list@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf"
+
+lint-staged@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.0.0.tgz#57926c63201e7bd38ca0576d74391efa699b4a9d"
+  dependencies:
+    app-root-path "^2.0.1"
+    chalk "^2.3.1"
+    commander "^2.14.1"
+    cosmiconfig "^4.0.0"
+    debug "^3.1.0"
+    dedent "^0.7.0"
+    execa "^0.9.0"
+    find-parent-dir "^0.3.0"
+    is-glob "^4.0.0"
+    jest-validate "^22.4.0"
+    listr "^0.13.0"
+    lodash "^4.17.5"
+    log-symbols "^2.2.0"
+    micromatch "^3.1.8"
+    npm-which "^3.0.1"
+    p-map "^1.1.1"
+    path-is-inside "^1.0.2"
+    pify "^3.0.0"
+    please-upgrade-node "^3.0.1"
+    staged-git-files "1.1.0"
+    stringify-object "^3.2.2"
+
+listr-silent-renderer@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+
+listr-update-renderer@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
+  dependencies:
+    chalk "^1.1.3"
+    cli-truncate "^0.2.1"
+    elegant-spinner "^1.0.1"
+    figures "^1.7.0"
+    indent-string "^3.0.0"
+    log-symbols "^1.0.2"
+    log-update "^1.0.2"
+    strip-ansi "^3.0.1"
+
+listr-update-renderer@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7"
+  dependencies:
+    chalk "^1.1.3"
+    cli-truncate "^0.2.1"
+    elegant-spinner "^1.0.1"
+    figures "^1.7.0"
+    indent-string "^3.0.0"
+    log-symbols "^1.0.2"
+    log-update "^1.0.2"
+    strip-ansi "^3.0.1"
+
+listr-verbose-renderer@^0.4.0:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35"
+  dependencies:
+    chalk "^1.1.3"
+    cli-cursor "^1.0.2"
+    date-fns "^1.27.2"
+    figures "^1.7.0"
+
+listr@0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
+  dependencies:
+    chalk "^1.1.3"
+    cli-truncate "^0.2.1"
+    figures "^1.7.0"
+    indent-string "^2.1.0"
+    is-promise "^2.1.0"
+    is-stream "^1.1.0"
+    listr-silent-renderer "^1.1.1"
+    listr-update-renderer "^0.2.0"
+    listr-verbose-renderer "^0.4.0"
+    log-symbols "^1.0.2"
+    log-update "^1.0.2"
+    ora "^0.2.3"
+    p-map "^1.1.1"
+    rxjs "^5.0.0-beta.11"
+    stream-to-observable "^0.1.0"
+    strip-ansi "^3.0.1"
+
+listr@^0.13.0:
+  version "0.13.0"
+  resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d"
+  dependencies:
+    chalk "^1.1.3"
+    cli-truncate "^0.2.1"
+    figures "^1.7.0"
+    indent-string "^2.1.0"
+    is-observable "^0.2.0"
+    is-promise "^2.1.0"
+    is-stream "^1.1.0"
+    listr-silent-renderer "^1.1.1"
+    listr-update-renderer "^0.4.0"
+    listr-verbose-renderer "^0.4.0"
+    log-symbols "^1.0.2"
+    log-update "^1.0.2"
+    ora "^0.2.3"
+    p-map "^1.1.1"
+    rxjs "^5.4.2"
+    stream-to-observable "^0.2.0"
+    strip-ansi "^3.0.1"
+
+load-json-file@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+  dependencies:
+    graceful-fs "^4.1.2"
+    parse-json "^2.2.0"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+    strip-bom "^2.0.0"
+
+load-json-file@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+  dependencies:
+    graceful-fs "^4.1.2"
+    parse-json "^2.2.0"
+    pify "^2.0.0"
+    strip-bom "^3.0.0"
+
+loader-runner@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
+
+loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+  dependencies:
+    big.js "^3.1.3"
+    emojis-list "^2.0.0"
+    json5 "^0.5.0"
+
+loader-utils@^0.2.15, loader-utils@^0.2.16:
+  version "0.2.17"
+  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+  dependencies:
+    big.js "^3.1.3"
+    emojis-list "^2.0.0"
+    json5 "^0.5.0"
+    object-assign "^4.0.1"
+
+locate-path@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+  dependencies:
+    p-locate "^2.0.0"
+    path-exists "^3.0.0"
+
+lodash-es@^4.2.1:
+  version "4.17.5"
+  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.5.tgz#9fc6e737b1c4d151d8f9cae2247305d552ce748f"
+
+lodash._baseassign@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
+  dependencies:
+    lodash._basecopy "^3.0.0"
+    lodash.keys "^3.0.0"
+
+lodash._basecopy@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+
+lodash._basecreate@^3.0.0:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
+
+lodash._getnative@^3.0.0:
+  version "3.9.1"
+  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+
+lodash._isiterateecall@^3.0.0:
+  version "3.0.9"
+  resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+
+lodash.assign@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
+
+lodash.camelcase@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+
+lodash.clonedeep@4.5.0, lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+
+lodash.create@3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
+  dependencies:
+    lodash._baseassign "^3.0.0"
+    lodash._basecreate "^3.0.0"
+    lodash._isiterateecall "^3.0.0"
+
+lodash.debounce@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+
+lodash.isarguments@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+
+lodash.isarray@^3.0.0:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+
+lodash.isfunction@^3.0.8:
+  version "3.0.9"
+  resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051"
+
+lodash.keys@^3.0.0, lodash.keys@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+  dependencies:
+    lodash._getnative "^3.0.0"
+    lodash.isarguments "^3.0.0"
+    lodash.isarray "^3.0.0"
+
+lodash.memoize@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+
+lodash.memoize@~3.0.3:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
+
+lodash.mergewith@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
+
+lodash.once@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+
+lodash.pick@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+
+lodash.sortby@^4.7.0:
+  version "4.7.0"
+  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+
+lodash.tail@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+
+lodash.uniq@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+
+lodash@4.17.4, lodash@^4.0.0, lodash@^4.11.1, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.4:
+  version "4.17.4"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+
+lodash@^3.10.1, lodash@^3.5.0:
+  version "3.10.1"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
+
+lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.0, lodash@^4.17.5, lodash@^4.2.1:
+  version "4.17.5"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
+
+log-symbols@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+  dependencies:
+    chalk "^1.0.0"
+
+log-symbols@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+  dependencies:
+    chalk "^2.0.1"
+
+log-update@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
+  dependencies:
+    ansi-escapes "^1.0.0"
+    cli-cursor "^1.0.2"
+
+log4js@^2.3.9:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.4.1.tgz#b0c4e88133e0e3056afdc6f91f7f377576158778"
+  dependencies:
+    circular-json "^0.4.0"
+    date-format "^1.2.0"
+    debug "^3.1.0"
+    semver "^5.3.0"
+    streamroller "^0.7.0"
+  optionalDependencies:
+    axios "^0.15.3"
+    hipchat-notifier "^1.1.0"
+    loggly "^1.1.0"
+    mailgun-js "^0.7.0"
+    nodemailer "^2.5.0"
+    redis "^2.7.1"
+    slack-node "~0.2.0"
+
+loggly@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee"
+  dependencies:
+    json-stringify-safe "5.0.x"
+    request "2.75.x"
+    timespan "2.3.x"
+
+loglevel@^1.4.1:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
+
+longest@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+  dependencies:
+    js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+  dependencies:
+    currently-unhandled "^0.4.1"
+    signal-exit "^3.0.0"
+
+lower-case@^1.1.1:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+
+lru-cache@2.2.x:
+  version "2.2.4"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
+
+lru-cache@^4.0.1, lru-cache@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
+lru-cache@~2.6.5:
+  version "2.6.5"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5"
+
+macaddress@^0.2.8:
+  version "0.2.8"
+  resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+
+magic-string@^0.22.3:
+  version "0.22.4"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff"
+  dependencies:
+    vlq "^0.2.1"
+
+mailcomposer@4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4"
+  dependencies:
+    buildmail "4.0.1"
+    libmime "3.0.0"
+
+mailgun-js@^0.7.0:
+  version "0.7.15"
+  resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.7.15.tgz#ee366a20dac64c3c15c03d6c1b3e0ed795252abb"
+  dependencies:
+    async "~2.1.2"
+    debug "~2.2.0"
+    form-data "~2.1.1"
+    inflection "~1.10.0"
+    is-stream "^1.1.0"
+    path-proxy "~1.0.0"
+    proxy-agent "~2.0.0"
+    q "~1.4.0"
+    tsscmp "~1.0.0"
+
+make-dir@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
+  dependencies:
+    pify "^3.0.0"
+
+make-error@^1.1.1:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4"
+
+make-error@^1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535"
+
+makeerror@1.0.x:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+  dependencies:
+    tmpl "1.0.x"
+
+map-cache@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+
+map-visit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+  dependencies:
+    object-visit "^1.0.0"
+
+markdown-loader@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-2.0.2.tgz#1cdcf11307658cd611046d7db34c2fe80542af7c"
+  dependencies:
+    loader-utils "^1.1.0"
+    marked "^0.3.9"
+
+marked@^0.3.16, marked@^0.3.9:
+  version "0.3.17"
+  resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.17.tgz#607f06668b3c6b1246b28f13da76116ac1aa2d2b"
+
+material-colors@^1.2.1:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.5.tgz#5292593e6754cb1bcc2b98030e4e0d6a3afc9ea1"
+
+material-design-icons@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/material-design-icons/-/material-design-icons-3.0.1.tgz#9a71c48747218ebca51e51a66da682038cdcb7bf"
+
+math-expression-evaluator@^1.2.14:
+  version "1.2.17"
+  resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
+
+md5.js@^1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+  dependencies:
+    hash-base "^3.0.0"
+    inherits "^2.0.1"
+
+media-typer@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+
+mem@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+  dependencies:
+    mimic-fn "^1.0.0"
+
+memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+  dependencies:
+    errno "^0.1.3"
+    readable-stream "^2.0.1"
+
+meow@^3.1.0, meow@^3.3.0, meow@^3.7.0:
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+  dependencies:
+    camelcase-keys "^2.0.0"
+    decamelize "^1.1.2"
+    loud-rejection "^1.0.0"
+    map-obj "^1.0.1"
+    minimist "^1.1.3"
+    normalize-package-data "^2.3.4"
+    object-assign "^4.0.1"
+    read-pkg-up "^1.0.1"
+    redent "^1.0.0"
+    trim-newlines "^1.0.0"
+
+merge-descriptors@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
+merge-stream@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
+  dependencies:
+    readable-stream "^2.0.1"
+
+merge@^1.1.3:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+
+methods@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+micromatch@^2.1.5, micromatch@^2.3.11:
+  version "2.3.11"
+  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+  dependencies:
+    arr-diff "^2.0.0"
+    array-unique "^0.2.1"
+    braces "^1.8.2"
+    expand-brackets "^0.1.4"
+    extglob "^0.3.1"
+    filename-regex "^2.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.1"
+    kind-of "^3.0.2"
+    normalize-path "^2.0.1"
+    object.omit "^2.0.0"
+    parse-glob "^3.0.4"
+    regex-cache "^0.4.2"
+
+micromatch@^3.1.4, micromatch@^3.1.8:
+  version "3.1.9"
+  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89"
+  dependencies:
+    arr-diff "^4.0.0"
+    array-unique "^0.3.2"
+    braces "^2.3.1"
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    extglob "^2.0.4"
+    fragment-cache "^0.2.1"
+    kind-of "^6.0.2"
+    nanomatch "^1.2.9"
+    object.pick "^1.3.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+miller-rabin@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+  dependencies:
+    bn.js "^4.0.0"
+    brorand "^1.0.1"
+
+"mime-db@>= 1.30.0 < 2":
+  version "1.32.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
+
+mime-db@~1.30.0:
+  version "1.30.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+
+mime-db@~1.33.0:
+  version "1.33.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+
+mime-types@^2.1.11, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17:
+  version "2.1.17"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
+  dependencies:
+    mime-db "~1.30.0"
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+  version "2.1.18"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+  dependencies:
+    mime-db "~1.33.0"
+
+mime@1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+
+mime@^1.2.11, mime@^1.3.4, mime@^1.4.1, mime@^1.5.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+
+mimic-fn@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+
+min-document@^2.19.0:
+  version "2.19.0"
+  resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+  dependencies:
+    dom-walk "^0.1.0"
+
+minimalistic-assert@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+  dependencies:
+    brace-expansion "^1.1.7"
+
+minimatch@3.0.3:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+  dependencies:
+    brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+
+minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+
+minimist@~0.0.1:
+  version "0.0.10"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+
+mississippi@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5"
+  dependencies:
+    concat-stream "^1.5.0"
+    duplexify "^3.4.2"
+    end-of-stream "^1.1.0"
+    flush-write-stream "^1.0.0"
+    from2 "^2.1.0"
+    parallel-transform "^1.1.0"
+    pump "^1.0.0"
+    pumpify "^1.3.3"
+    stream-each "^1.1.0"
+    through2 "^2.0.0"
+
+mississippi@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+  dependencies:
+    concat-stream "^1.5.0"
+    duplexify "^3.4.2"
+    end-of-stream "^1.1.0"
+    flush-write-stream "^1.0.0"
+    from2 "^2.1.0"
+    parallel-transform "^1.1.0"
+    pump "^2.0.1"
+    pumpify "^1.3.3"
+    stream-each "^1.1.0"
+    through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+  dependencies:
+    for-in "^1.0.2"
+    is-extendable "^1.0.1"
+
+mixin-object@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+  dependencies:
+    for-in "^0.1.3"
+    is-extendable "^0.1.1"
+
+mkdirp@0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
+  dependencies:
+    minimist "0.0.8"
+
+mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+  dependencies:
+    minimist "0.0.8"
+
+mobx-angular@>=1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.1.1.tgz#d5e36539acb200186dd5a1170806b4776b9a8b88"
+
+mobx-angular@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-3.0.1.tgz#881379acea563c0767550d1f7801ab3434449bb1"
+
+mobx-devtools-mst@^0.9.14:
+  version "0.9.14"
+  resolved "https://registry.yarnpkg.com/mobx-devtools-mst/-/mobx-devtools-mst-0.9.14.tgz#e203ebf686331f9ff016336599b81b1796d10339"
+
+mobx-remotedev@^0.2.8:
+  version "0.2.8"
+  resolved "https://registry.yarnpkg.com/mobx-remotedev/-/mobx-remotedev-0.2.8.tgz#6146abcd65a9ce41f09e872ed038fc3892f99c48"
+  dependencies:
+    jsan "^3.1.9"
+    remotedev "^0.2.7"
+    remotedev-utils "^0.1.4"
+
+mobx@>=3:
+  version "3.5.1"
+  resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.5.1.tgz#8e682ec535cf44e04005b9e37e2df66acc975a42"
+
+mobx@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.1.0.tgz#e4a9679cdafbe215b20e32ef93a7031845b3f1af"
+
+mocha-rp-reporter@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/mocha-rp-reporter/-/mocha-rp-reporter-1.0.12.tgz#408d2660d3f3e58f9762f6005e92bd1f9839b30e"
+  dependencies:
+    mocha "^3.2.0"
+    sync-rest-client "^1.0.3"
+
+mocha@^3.2.0:
+  version "3.5.3"
+  resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
+  dependencies:
+    browser-stdout "1.3.0"
+    commander "2.9.0"
+    debug "2.6.8"
+    diff "3.2.0"
+    escape-string-regexp "1.0.5"
+    glob "7.1.1"
+    growl "1.9.2"
+    he "1.1.1"
+    json3 "3.3.2"
+    lodash.create "3.1.1"
+    mkdirp "0.5.1"
+    supports-color "3.1.2"
+
+mocha@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.0.tgz#cccac988b0bc5477119cba0e43de7af6d6ad8f4e"
+  dependencies:
+    browser-stdout "1.3.0"
+    commander "2.11.0"
+    debug "3.1.0"
+    diff "3.3.1"
+    escape-string-regexp "1.0.5"
+    glob "7.1.2"
+    growl "1.10.3"
+    he "1.1.1"
+    mkdirp "0.5.1"
+    supports-color "4.4.0"
+
+mochawesome-report-generator@^3.0.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/mochawesome-report-generator/-/mochawesome-report-generator-3.1.1.tgz#4008aef2cd57c2af9ff2905ed6480d5804d86965"
+  dependencies:
+    chalk "^2.3.0"
+    dateformat "^3.0.2"
+    fs-extra "^4.0.2"
+    fsu "^1.0.2"
+    lodash.isfunction "^3.0.8"
+    opener "^1.4.2"
+    prop-types "^15.5.8"
+    react "^16.0.0"
+    react-dom "^16.0.0"
+    tcomb "^3.2.17"
+    tcomb-validation "^3.3.0"
+    validator "^9.1.2"
+    yargs "^10.0.3"
+
+mochawesome@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/mochawesome/-/mochawesome-3.0.2.tgz#6884a8bb85c1d5033fe1d2e278ee309f433e750d"
+  dependencies:
+    babel-runtime "^6.20.0"
+    chalk "^2.3.0"
+    diff "^3.4.0"
+    json-stringify-safe "^5.0.1"
+    lodash "^4.17.3"
+    mochawesome-report-generator "^3.0.1"
+    strip-ansi "^4.0.0"
+    uuid "^3.0.1"
+
+module-deps@^4.0.8:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd"
+  dependencies:
+    JSONStream "^1.0.3"
+    browser-resolve "^1.7.0"
+    cached-path-relative "^1.0.0"
+    concat-stream "~1.5.0"
+    defined "^1.0.0"
+    detective "^4.0.0"
+    duplexer2 "^0.1.2"
+    inherits "^2.0.1"
+    parents "^1.0.0"
+    readable-stream "^2.0.2"
+    resolve "^1.1.3"
+    stream-combiner2 "^1.1.1"
+    subarg "^1.0.0"
+    through2 "^2.0.0"
+    xtend "^4.0.0"
+
+moment@^2.20.1:
+  version "2.21.0"
+  resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a"
+
+move-concurrently@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+  dependencies:
+    aproba "^1.1.1"
+    copy-concurrently "^1.0.0"
+    fs-write-stream-atomic "^1.0.8"
+    mkdirp "^0.5.1"
+    rimraf "^2.5.4"
+    run-queue "^1.0.3"
+
+mri@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a"
+
+ms@0.7.1:
+  version "0.7.1"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+
+ms@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+
+multicast-dns-service-types@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+
+multicast-dns@^6.0.1:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.1.tgz#c5035defa9219d30640558a49298067352098060"
+  dependencies:
+    dns-packet "^1.0.1"
+    thunky "^0.1.0"
+
+mute-stream@0.0.7:
+  version "0.0.7"
+  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+
+nan@^2.0.7:
+  version "2.9.2"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866"
+
+nan@^2.3.0, nan@^2.3.2:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+
+nanomatch@^1.2.9:
+  version "1.2.9"
+  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
+  dependencies:
+    arr-diff "^4.0.0"
+    array-unique "^0.3.2"
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    fragment-cache "^0.2.1"
+    is-odd "^2.0.0"
+    is-windows "^1.0.2"
+    kind-of "^6.0.2"
+    object.pick "^1.3.0"
+    regex-not "^1.0.0"
+    snapdragon "^0.8.1"
+    to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+
+ncname@1.0.x:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
+  dependencies:
+    xml-char-classes "^1.0.0"
+
+negotiator@0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+
+neo-async@^2.5.0:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f"
+
+netmask@~1.0.4:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35"
+
+ngx-toastr@^8.2.1:
+  version "8.2.1"
+  resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.2.1.tgz#86cffec666a9dadde5f8a37f2a8fe2ab527b3dde"
+  dependencies:
+    tslib "^1.7.1"
+
+no-case@^2.2.0:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+  dependencies:
+    lower-case "^1.1.1"
+
+node-dir@^0.1.10:
+  version "0.1.17"
+  resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
+  dependencies:
+    minimatch "^3.0.2"
+
+node-fetch@^1.0.1:
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+  dependencies:
+    encoding "^0.1.11"
+    is-stream "^1.0.1"
+
+node-forge@0.6.33:
+  version "0.6.33"
+  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
+
+node-gyp@^3.3.1:
+  version "3.6.2"
+  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+  dependencies:
+    fstream "^1.0.0"
+    glob "^7.0.3"
+    graceful-fs "^4.1.2"
+    minimatch "^3.0.2"
+    mkdirp "^0.5.0"
+    nopt "2 || 3"
+    npmlog "0 || 1 || 2 || 3 || 4"
+    osenv "0"
+    request "2"
+    rimraf "2"
+    semver "~5.3.0"
+    tar "^2.0.0"
+    which "1"
+
+node-int64@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+
+node-libs-browser@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
+  dependencies:
+    assert "^1.1.1"
+    browserify-zlib "^0.2.0"
+    buffer "^4.3.0"
+    console-browserify "^1.1.0"
+    constants-browserify "^1.0.0"
+    crypto-browserify "^3.11.0"
+    domain-browser "^1.1.1"
+    events "^1.0.0"
+    https-browserify "^1.0.0"
+    os-browserify "^0.3.0"
+    path-browserify "0.0.0"
+    process "^0.11.10"
+    punycode "^1.2.4"
+    querystring-es3 "^0.2.0"
+    readable-stream "^2.3.3"
+    stream-browserify "^2.0.1"
+    stream-http "^2.7.2"
+    string_decoder "^1.0.0"
+    timers-browserify "^2.0.4"
+    tty-browserify "0.0.0"
+    url "^0.11.0"
+    util "^0.10.3"
+    vm-browserify "0.0.4"
+
+node-modules-path@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/node-modules-path/-/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8"
+
+node-notifier@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea"
+  dependencies:
+    growly "^1.3.0"
+    semver "^5.4.1"
+    shellwords "^0.1.1"
+    which "^1.3.0"
+
+node-pre-gyp@^0.6.39:
+  version "0.6.39"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
+  dependencies:
+    detect-libc "^1.0.2"
+    hawk "3.1.3"
+    mkdirp "^0.5.1"
+    nopt "^4.0.1"
+    npmlog "^4.0.2"
+    rc "^1.1.7"
+    request "2.81.0"
+    rimraf "^2.6.1"
+    semver "^5.3.0"
+    tar "^2.2.1"
+    tar-pack "^3.4.0"
+
+node-sass@^4.7.2:
+  version "4.7.2"
+  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
+  dependencies:
+    async-foreach "^0.1.3"
+    chalk "^1.1.1"
+    cross-spawn "^3.0.0"
+    gaze "^1.0.0"
+    get-stdin "^4.0.1"
+    glob "^7.0.3"
+    in-publish "^2.0.0"
+    lodash.assign "^4.2.0"
+    lodash.clonedeep "^4.3.2"
+    lodash.mergewith "^4.6.0"
+    meow "^3.7.0"
+    mkdirp "^0.5.1"
+    nan "^2.3.2"
+    node-gyp "^3.3.1"
+    npmlog "^4.0.0"
+    request "~2.79.0"
+    sass-graph "^2.2.4"
+    stdout-stream "^1.4.0"
+    "true-case-path" "^1.0.2"
+
+node-uuid@~1.4.7:
+  version "1.4.8"
+  resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
+
+nodemailer-direct-transport@3.3.2:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86"
+  dependencies:
+    nodemailer-shared "1.1.0"
+    smtp-connection "2.12.0"
+
+nodemailer-fetch@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4"
+
+nodemailer-shared@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0"
+  dependencies:
+    nodemailer-fetch "1.6.0"
+
+nodemailer-smtp-pool@2.8.2:
+  version "2.8.2"
+  resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72"
+  dependencies:
+    nodemailer-shared "1.1.0"
+    nodemailer-wellknown "0.1.10"
+    smtp-connection "2.12.0"
+
+nodemailer-smtp-transport@2.7.2:
+  version "2.7.2"
+  resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77"
+  dependencies:
+    nodemailer-shared "1.1.0"
+    nodemailer-wellknown "0.1.10"
+    smtp-connection "2.12.0"
+
+nodemailer-wellknown@0.1.10:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5"
+
+nodemailer@^2.5.0:
+  version "2.7.2"
+  resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9"
+  dependencies:
+    libmime "3.0.0"
+    mailcomposer "4.0.1"
+    nodemailer-direct-transport "3.3.2"
+    nodemailer-shared "1.1.0"
+    nodemailer-smtp-pool "2.8.2"
+    nodemailer-smtp-transport "2.7.2"
+    socks "1.1.9"
+
+"nopt@2 || 3":
+  version "3.0.6"
+  resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+  dependencies:
+    abbrev "1"
+
+nopt@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+  dependencies:
+    abbrev "1"
+    osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
+  dependencies:
+    hosted-git-info "^2.1.4"
+    is-builtin-module "^1.0.0"
+    semver "2 || 3 || 4 || 5"
+    validate-npm-package-license "^3.0.1"
+
+normalize-path@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
+
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+  dependencies:
+    remove-trailing-separator "^1.0.1"
+
+normalize-range@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+
+normalize-url@^1.4.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+  dependencies:
+    object-assign "^4.0.1"
+    prepend-http "^1.0.0"
+    query-string "^4.1.0"
+    sort-keys "^1.0.0"
+
+npm-path@^2.0.2:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
+  dependencies:
+    which "^1.2.10"
+
+npm-run-path@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+  dependencies:
+    path-key "^2.0.0"
+
+npm-which@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
+  dependencies:
+    commander "^2.9.0"
+    npm-path "^2.0.2"
+    which "^1.2.10"
+
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+  dependencies:
+    are-we-there-yet "~1.1.2"
+    console-control-strings "~1.1.0"
+    gauge "~2.7.3"
+    set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+  dependencies:
+    boolbase "~1.0.0"
+
+nugget@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
+  dependencies:
+    debug "^2.1.3"
+    minimist "^1.1.0"
+    pretty-bytes "^1.0.2"
+    progress-stream "^1.1.0"
+    request "^2.45.0"
+    single-line-log "^1.1.2"
+    throttleit "0.0.2"
+
+null-check@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
+
+num2fraction@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+
+number-is-nan@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+
+nwmatcher@^1.4.3:
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
+
+oauth-sign@~0.8.1, oauth-sign@~0.8.2:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+
+object-assign@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+
+object-component@0.0.3:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
+
+object-copy@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+  dependencies:
+    copy-descriptor "^0.1.0"
+    define-property "^0.2.5"
+    kind-of "^3.0.3"
+
+object-keys@^1.0.8:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+
+object-keys@~0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+
+object-visit@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+  dependencies:
+    isobject "^3.0.0"
+
+object.entries@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.6.1"
+    function-bind "^1.1.0"
+    has "^1.0.1"
+
+object.getownpropertydescriptors@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.5.1"
+
+object.omit@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+  dependencies:
+    for-own "^0.1.4"
+    is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+  dependencies:
+    isobject "^3.0.1"
+
+object.values@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.6.1"
+    function-bind "^1.1.0"
+    has "^1.0.1"
+
+obuf@^1.0.0, obuf@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+
+on-finished@~2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+  dependencies:
+    ee-first "1.1.1"
+
+on-headers@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
+
+once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+  dependencies:
+    wrappy "1"
+
+onetime@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+
+onetime@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+  dependencies:
+    mimic-fn "^1.0.0"
+
+opener@^1.4.2:
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
+
+opn@5.2.0, opn@^5.1.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+  dependencies:
+    is-wsl "^1.1.0"
+
+opn@~5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
+  dependencies:
+    is-wsl "^1.1.0"
+
+optimist@^0.6.1, optimist@~0.6.0:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+  dependencies:
+    minimist "~0.0.1"
+    wordwrap "~0.0.2"
+
+optionator@^0.8.1:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+  dependencies:
+    deep-is "~0.1.3"
+    fast-levenshtein "~2.0.4"
+    levn "~0.3.0"
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+    wordwrap "~1.0.0"
+
+options@>=0.0.5:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
+
+ora@^0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
+  dependencies:
+    chalk "^1.1.1"
+    cli-cursor "^1.0.2"
+    cli-spinners "^0.1.2"
+    object-assign "^4.0.1"
+
+original@>=0.0.5:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+  dependencies:
+    url-parse "1.0.x"
+
+os-browserify@^0.3.0, os-browserify@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+
+os-homedir@^1.0.0, os-homedir@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+
+os-locale@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+  dependencies:
+    lcid "^1.0.0"
+
+os-locale@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
+  dependencies:
+    execa "^0.7.0"
+    lcid "^1.0.0"
+    mem "^1.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+
+osenv@0, osenv@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+  dependencies:
+    os-homedir "^1.0.0"
+    os-tmpdir "^1.0.0"
+
+p-finally@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
+p-limit@^1.0.0, p-limit@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+  dependencies:
+    p-try "^1.0.0"
+
+p-locate@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+  dependencies:
+    p-limit "^1.1.0"
+
+p-map@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+
+p-try@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+
+pac-proxy-agent@1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz#34a385dfdf61d2f0ecace08858c745d3e791fd4d"
+  dependencies:
+    agent-base "2"
+    debug "2"
+    extend "3"
+    get-uri "2"
+    http-proxy-agent "1"
+    https-proxy-agent "1"
+    pac-resolver "~2.0.0"
+    raw-body "2"
+    socks-proxy-agent "2"
+
+pac-resolver@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-2.0.0.tgz#99b88d2f193fbdeefc1c9a529c1f3260ab5277cd"
+  dependencies:
+    co "~3.0.6"
+    degenerator "~1.0.2"
+    ip "1.0.1"
+    netmask "~1.0.4"
+    thunkify "~2.1.1"
+
+pako@~1.0.5:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+
+papaparse@^4.3.6:
+  version "4.3.6"
+  resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-4.3.6.tgz#9566eda0ecab13afcb740a62381c699f486cb145"
+
+parallel-transform@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+  dependencies:
+    cyclist "~0.2.2"
+    inherits "^2.0.3"
+    readable-stream "^2.1.5"
+
+param-case@2.1.x:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+  dependencies:
+    no-case "^2.2.0"
+
+parents@^1.0.0, parents@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
+  dependencies:
+    path-platform "~0.11.15"
+
+parse-asn1@^5.0.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+  dependencies:
+    asn1.js "^4.0.0"
+    browserify-aes "^1.0.0"
+    create-hash "^1.1.0"
+    evp_bytestokey "^1.0.0"
+    pbkdf2 "^3.0.3"
+
+parse-glob@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+  dependencies:
+    glob-base "^0.3.0"
+    is-dotfile "^1.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+  dependencies:
+    error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+  dependencies:
+    error-ex "^1.3.1"
+    json-parse-better-errors "^1.0.1"
+
+parse-passwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+
+parse5@4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
+
+parseqs@0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
+  dependencies:
+    better-assert "~1.0.0"
+
+parseuri@0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
+  dependencies:
+    better-assert "~1.0.0"
+
+parseurl@~1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+
+pascalcase@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
+path-browserify@0.0.0, path-browserify@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+
+path-dirname@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+
+path-exists@^2.0.0, path-exists@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+  dependencies:
+    pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+
+path-key@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
+path-parse@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+
+path-platform@~0.11.15:
+  version "0.11.15"
+  resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+
+path-proxy@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e"
+  dependencies:
+    inflection "~1.3.0"
+
+path-to-regexp@0.1.7:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+
+path-type@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+  dependencies:
+    graceful-fs "^4.1.2"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+  dependencies:
+    pify "^2.0.0"
+
+path-type@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+  dependencies:
+    pify "^3.0.0"
+
+pbkdf2@^3.0.3:
+  version "3.0.14"
+  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+  dependencies:
+    create-hash "^1.1.2"
+    create-hmac "^1.1.4"
+    ripemd160 "^2.0.1"
+    safe-buffer "^5.0.1"
+    sha.js "^2.4.8"
+
+pend@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+
+performance-now@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+
+performance-now@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+
+pify@^2.0.0, pify@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pify@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+
+pinkie-promise@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+  dependencies:
+    pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+pkg-dir@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+  dependencies:
+    find-up "^2.1.0"
+
+please-upgrade-node@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.0.1.tgz#0a681f2c18915e5433a5ca2cd94e0b8206a782db"
+
+pn@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
+
+portfinder@^1.0.9, portfinder@~1.0.12:
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+  dependencies:
+    async "^1.5.2"
+    debug "^2.2.0"
+    mkdirp "0.5.x"
+
+posix-character-classes@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
+postcss-calc@^5.2.0:
+  version "5.3.1"
+  resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+  dependencies:
+    postcss "^5.0.2"
+    postcss-message-helpers "^2.0.0"
+    reduce-css-calc "^1.2.6"
+
+postcss-colormin@^2.1.8:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+  dependencies:
+    colormin "^1.0.5"
+    postcss "^5.0.13"
+    postcss-value-parser "^3.2.3"
+
+postcss-convert-values@^2.3.4:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+  dependencies:
+    postcss "^5.0.11"
+    postcss-value-parser "^3.1.2"
+
+postcss-discard-comments@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+  dependencies:
+    postcss "^5.0.14"
+
+postcss-discard-duplicates@^2.0.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+  dependencies:
+    postcss "^5.0.4"
+
+postcss-discard-empty@^2.0.1:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+  dependencies:
+    postcss "^5.0.14"
+
+postcss-discard-overridden@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+  dependencies:
+    postcss "^5.0.16"
+
+postcss-discard-unused@^2.2.1:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+  dependencies:
+    postcss "^5.0.14"
+    uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+  dependencies:
+    postcss "^5.0.4"
+    uniqid "^4.0.0"
+
+postcss-flexbugs-fixes@^3.2.0, postcss-flexbugs-fixes@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.0.tgz#e00849b536063749da50a0d410ba5d9ee65e27b8"
+  dependencies:
+    postcss "^6.0.1"
+
+postcss-import@^11.0.0:
+  version "11.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.0.0.tgz#a962e2df82d3bc5a6da6a386841747204f41ef5b"
+  dependencies:
+    postcss "^6.0.1"
+    postcss-value-parser "^3.2.3"
+    read-cache "^1.0.0"
+    resolve "^1.1.7"
+
+postcss-load-config@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+  dependencies:
+    cosmiconfig "^2.1.0"
+    object-assign "^4.1.0"
+    postcss-load-options "^1.2.0"
+    postcss-load-plugins "^2.3.0"
+
+postcss-load-options@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
+  dependencies:
+    cosmiconfig "^2.1.0"
+    object-assign "^4.1.0"
+
+postcss-load-plugins@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
+  dependencies:
+    cosmiconfig "^2.1.1"
+    object-assign "^4.1.0"
+
+postcss-loader@^2.0.10:
+  version "2.0.10"
+  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674"
+  dependencies:
+    loader-utils "^1.1.0"
+    postcss "^6.0.0"
+    postcss-load-config "^1.2.0"
+    schema-utils "^0.3.0"
+
+postcss-loader@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.1.tgz#208935af3b1d65e1abb1a870a912dd12e7b36895"
+  dependencies:
+    loader-utils "^1.1.0"
+    postcss "^6.0.0"
+    postcss-load-config "^1.2.0"
+    schema-utils "^0.4.0"
+
+postcss-merge-idents@^2.1.5:
+  version "2.1.7"
+  resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+  dependencies:
+    has "^1.0.1"
+    postcss "^5.0.10"
+    postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+  dependencies:
+    postcss "^5.0.4"
+
+postcss-merge-rules@^2.0.3:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+  dependencies:
+    browserslist "^1.5.2"
+    caniuse-api "^1.5.2"
+    postcss "^5.0.4"
+    postcss-selector-parser "^2.2.2"
+    vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+
+postcss-minify-font-values@^1.0.2:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+  dependencies:
+    object-assign "^4.0.1"
+    postcss "^5.0.4"
+    postcss-value-parser "^3.0.2"
+
+postcss-minify-gradients@^1.0.1:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+  dependencies:
+    postcss "^5.0.12"
+    postcss-value-parser "^3.3.0"
+
+postcss-minify-params@^1.0.4:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+  dependencies:
+    alphanum-sort "^1.0.1"
+    postcss "^5.0.2"
+    postcss-value-parser "^3.0.2"
+    uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+  dependencies:
+    alphanum-sort "^1.0.2"
+    has "^1.0.1"
+    postcss "^5.0.14"
+    postcss-selector-parser "^2.0.0"
+
+postcss-modules-extract-imports@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
+  dependencies:
+    postcss "^6.0.1"
+
+postcss-modules-local-by-default@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+  dependencies:
+    css-selector-tokenizer "^0.7.0"
+    postcss "^6.0.1"
+
+postcss-modules-scope@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+  dependencies:
+    css-selector-tokenizer "^0.7.0"
+    postcss "^6.0.1"
+
+postcss-modules-values@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+  dependencies:
+    icss-replace-symbols "^1.1.0"
+    postcss "^6.0.1"
+
+postcss-normalize-charset@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+  dependencies:
+    postcss "^5.0.5"
+
+postcss-normalize-url@^3.0.7:
+  version "3.0.8"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+  dependencies:
+    is-absolute-url "^2.0.0"
+    normalize-url "^1.4.0"
+    postcss "^5.0.14"
+    postcss-value-parser "^3.2.3"
+
+postcss-ordered-values@^2.1.0:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+  dependencies:
+    postcss "^5.0.4"
+    postcss-value-parser "^3.0.1"
+
+postcss-reduce-idents@^2.2.2:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+  dependencies:
+    postcss "^5.0.4"
+    postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+  dependencies:
+    postcss "^5.0.4"
+
+postcss-reduce-transforms@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+  dependencies:
+    has "^1.0.1"
+    postcss "^5.0.8"
+    postcss-value-parser "^3.0.1"
+
+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+  dependencies:
+    flatten "^1.0.2"
+    indexes-of "^1.0.1"
+    uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+  version "2.1.6"
+  resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+  dependencies:
+    is-svg "^2.0.0"
+    postcss "^5.0.14"
+    postcss-value-parser "^3.2.3"
+    svgo "^0.7.0"
+
+postcss-unique-selectors@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+  dependencies:
+    alphanum-sort "^1.0.1"
+    postcss "^5.0.4"
+    uniqs "^2.0.0"
+
+postcss-url@^7.1.2:
+  version "7.3.0"
+  resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.0.tgz#cf2f45e06743cf43cfea25309f81cbc003dc783f"
+  dependencies:
+    mime "^1.4.1"
+    minimatch "^3.0.4"
+    mkdirp "^0.5.0"
+    postcss "^6.0.1"
+    xxhashjs "^0.2.1"
+
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+
+postcss-zindex@^2.0.1:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+  dependencies:
+    has "^1.0.1"
+    postcss "^5.0.4"
+    uniqs "^2.0.0"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
+  version "5.2.18"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+  dependencies:
+    chalk "^1.1.3"
+    js-base64 "^2.1.9"
+    source-map "^0.5.6"
+    supports-color "^3.2.3"
+
+postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.16:
+  version "6.0.16"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146"
+  dependencies:
+    chalk "^2.3.0"
+    source-map "^0.6.1"
+    supports-color "^5.1.0"
+
+postcss@^6.0.17:
+  version "6.0.19"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555"
+  dependencies:
+    chalk "^2.3.1"
+    source-map "^0.6.1"
+    supports-color "^5.2.0"
+
+prelude-ls@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
+prepend-http@^1.0.0:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+
+preserve@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+prettier@^1.11.1:
+  version "1.11.1"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75"
+
+pretty-bytes@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
+  dependencies:
+    get-stdin "^4.0.1"
+    meow "^3.1.0"
+
+pretty-checkbox@3.0.3:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/pretty-checkbox/-/pretty-checkbox-3.0.3.tgz#d49c8013a8fc08ee0c2d6ebde453464bfdbc428e"
+
+pretty-error@^2.0.2:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
+  dependencies:
+    renderkid "^2.0.1"
+    utila "~0.4"
+
+pretty-format@^22.4.0:
+  version "22.4.0"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.0.tgz#237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94"
+  dependencies:
+    ansi-regex "^3.0.0"
+    ansi-styles "^3.2.0"
+
+pretty-format@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f"
+  dependencies:
+    ansi-regex "^3.0.0"
+    ansi-styles "^3.2.0"
+
+pretty-quick@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.4.1.tgz#9d41f778d2d4d940ec603d1293a0998e84c4722c"
+  dependencies:
+    chalk "^2.3.0"
+    execa "^0.8.0"
+    find-up "^2.1.0"
+    ignore "^3.3.7"
+    mri "^1.1.0"
+
+primeng@^5.0.2:
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/primeng/-/primeng-5.0.2.tgz#05c4a4502efd4c3bc5d506aa01ae8eb30f9764db"
+
+private@^0.1.6, private@^0.1.7, private@~0.1.5:
+  version "0.1.8"
+  resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+
+process-nextick-args@~1.0.6:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+
+process-nextick-args@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+
+process@^0.11.10, process@~0.11.0:
+  version "0.11.10"
+  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+
+process@~0.5.1:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
+
+progress-stream@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
+  dependencies:
+    speedometer "~0.1.2"
+    through2 "~0.2.3"
+
+progress@1.1.8:
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+
+promise-inflight@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+
+promise.prototype.finally@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz#66f161b1643636e50e7cf201dc1b84a857f3864e"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.9.0"
+    function-bind "^1.1.1"
+
+promise@^7.1.1:
+  version "7.3.1"
+  resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
+  dependencies:
+    asap "~2.0.3"
+
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.9:
+  version "15.6.1"
+  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.3.1"
+    object-assign "^4.1.1"
+
+prop-types@^15.5.8, prop-types@^15.6.0:
+  version "15.6.0"
+  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.3.1"
+    object-assign "^4.1.1"
+
+protractor@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.1.2.tgz#9b221741709a4c62d5cd53c6aadd54a71137e95f"
+  dependencies:
+    "@types/node" "^6.0.46"
+    "@types/q" "^0.0.32"
+    "@types/selenium-webdriver" "~2.53.39"
+    blocking-proxy "0.0.5"
+    chalk "^1.1.3"
+    glob "^7.0.3"
+    jasmine "^2.5.3"
+    jasminewd2 "^2.1.0"
+    optimist "~0.6.0"
+    q "1.4.1"
+    saucelabs "~1.3.0"
+    selenium-webdriver "3.0.1"
+    source-map-support "~0.4.0"
+    webdriver-js-extender "^1.0.0"
+    webdriver-manager "^12.0.6"
+
+proxy-addr@~2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
+  dependencies:
+    forwarded "~0.1.2"
+    ipaddr.js "1.5.2"
+
+proxy-agent@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499"
+  dependencies:
+    agent-base "2"
+    debug "2"
+    extend "3"
+    http-proxy-agent "1"
+    https-proxy-agent "1"
+    lru-cache "~2.6.5"
+    pac-proxy-agent "1"
+    socks-proxy-agent "2"
+
+prr@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+
+pseudomap@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+
+public-encrypt@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+  dependencies:
+    bn.js "^4.1.0"
+    browserify-rsa "^4.0.0"
+    create-hash "^1.1.0"
+    parse-asn1 "^5.0.0"
+    randombytes "^2.0.1"
+
+pump@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
+pump@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.0.tgz#7946da1c8d622b098e2ceb2d3476582470829c9d"
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
+pump@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
+pumpify@^1.3.3:
+  version "1.3.6"
+  resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.6.tgz#00d40e5ded0a3bf1e0788b1c0cf426a42882ab64"
+  dependencies:
+    duplexify "^3.5.3"
+    inherits "^2.0.3"
+    pump "^2.0.0"
+
+punycode@1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+
+punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+
+punycode@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+
+q@1.4.1, q@~1.4.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
+
+q@^1.1.2, q@^1.4.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+
+qjobs@^1.1.4:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73"
+
+qs@6.5.1, qs@^6.5.1, qs@~6.5.1:
+  version "6.5.1"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+
+qs@~6.2.0:
+  version "6.2.3"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe"
+
+qs@~6.3.0:
+  version "6.3.2"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+
+qs@~6.4.0:
+  version "6.4.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+
+query-string@^4.1.0:
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+  dependencies:
+    object-assign "^4.1.0"
+    strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0, querystring-es3@~0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+
+querystring@0.2.0, querystring@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+
+querystringify@0.0.x:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
+
+querystringify@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+
+radium@^0.19.0:
+  version "0.19.6"
+  resolved "https://registry.yarnpkg.com/radium/-/radium-0.19.6.tgz#b86721d08dbd303b061a4ae2ebb06cc6e335ae72"
+  dependencies:
+    array-find "^1.0.0"
+    exenv "^1.2.1"
+    inline-style-prefixer "^2.0.5"
+    prop-types "^15.5.8"
+
+ramda@0.24.1:
+  version "0.24.1"
+  resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857"
+
+ramda@^0.25.0:
+  version "0.25.0"
+  resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9"
+
+randomatic@^1.1.3:
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+  dependencies:
+    is-number "^3.0.0"
+    kind-of "^4.0.0"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
+  dependencies:
+    safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62"
+  dependencies:
+    randombytes "^2.0.5"
+    safe-buffer "^5.1.0"
+
+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+
+raw-body@2, raw-body@2.3.2:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
+  dependencies:
+    bytes "3.0.0"
+    http-errors "1.6.2"
+    iconv-lite "0.4.19"
+    unpipe "1.0.0"
+
+raw-loader@^0.5.1:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
+
+rc@^1.1.2:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd"
+  dependencies:
+    deep-extend "~0.4.0"
+    ini "~1.3.0"
+    minimist "^1.2.0"
+    strip-json-comments "~2.0.1"
+
+rc@^1.1.7:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.3.tgz#51575a900f8dd68381c710b4712c2154c3e2035b"
+  dependencies:
+    deep-extend "~0.4.0"
+    ini "~1.3.0"
+    minimist "^1.2.0"
+    strip-json-comments "~2.0.1"
+
+react-color@^2.11.4:
+  version "2.14.0"
+  resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.14.0.tgz#5828a11c034aa0939befbd888a066ee37d8c3cc2"
+  dependencies:
+    lodash "^4.0.1"
+    material-colors "^1.2.1"
+    prop-types "^15.5.10"
+    reactcss "^1.2.0"
+    tinycolor2 "^1.4.1"
+
+react-datetime@^2.14.0:
+  version "2.14.0"
+  resolved "https://registry.yarnpkg.com/react-datetime/-/react-datetime-2.14.0.tgz#c7859c5b765275d7980f1cca27c03a727ff9ccef"
+  dependencies:
+    create-react-class "^15.5.2"
+    object-assign "^3.0.0"
+    prop-types "^15.5.7"
+    react-onclickoutside "^6.5.0"
+
+react-dev-utils@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.0.tgz#425ac7c9c40c2603bc4f7ab8836c1406e96bb473"
+  dependencies:
+    address "1.0.3"
+    babel-code-frame "6.26.0"
+    chalk "1.1.3"
+    cross-spawn "5.1.0"
+    detect-port-alt "1.1.5"
+    escape-string-regexp "1.0.5"
+    filesize "3.5.11"
+    global-modules "1.0.0"
+    gzip-size "3.0.0"
+    inquirer "3.3.0"
+    is-root "1.0.0"
+    opn "5.2.0"
+    react-error-overlay "^4.0.0"
+    recursive-readdir "2.2.1"
+    shell-quote "1.6.1"
+    sockjs-client "1.1.4"
+    strip-ansi "3.0.1"
+    text-table "0.2.0"
+
+react-docgen@^2.20.0:
+  version "2.20.1"
+  resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-2.20.1.tgz#29c3a1216066f513958abb1a43678860bbd51c7f"
+  dependencies:
+    async "^2.1.4"
+    babel-runtime "^6.9.2"
+    babylon "~5.8.3"
+    commander "^2.9.0"
+    doctrine "^2.0.0"
+    node-dir "^0.1.10"
+    recast "^0.12.6"
+
+react-dom@^16.0.0:
+  version "16.2.0"
+  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.1.0"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
+
+react-error-overlay@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4"
+
+react-fuzzy@^0.5.2:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/react-fuzzy/-/react-fuzzy-0.5.2.tgz#fc13bf6f0b785e5fefe908724efebec4935eaefe"
+  dependencies:
+    babel-runtime "^6.23.0"
+    classnames "^2.2.5"
+    fuse.js "^3.0.1"
+    prop-types "^15.5.9"
+
+react-html-attributes@^1.3.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.1.tgz#97b5ec710da68833598c8be6f89ac436216840a5"
+  dependencies:
+    html-element-attributes "^1.0.0"
+
+react-icon-base@2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/react-icon-base/-/react-icon-base-2.1.0.tgz#a196e33fdf1e7aaa1fda3aefbb68bdad9e82a79d"
+
+react-icons@^2.2.7:
+  version "2.2.7"
+  resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-2.2.7.tgz#d7860826b258557510dac10680abea5ca23cf650"
+  dependencies:
+    react-icon-base "2.1.0"
+
+react-inspector@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.2.2.tgz#c04f5248fa92ab6c23e37960e725fb7f48c34d05"
+  dependencies:
+    babel-runtime "^6.26.0"
+    is-dom "^1.0.9"
+
+react-modal@^3.3.1:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.3.1.tgz#7355db196482da0c7fa1cbecccf2bdd9bc366b14"
+  dependencies:
+    exenv "^1.2.0"
+    prop-types "^15.5.10"
+    warning "^3.0.0"
+
+react-onclickoutside@^6.5.0:
+  version "6.7.1"
+  resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93"
+
+react-split-pane@^0.1.77:
+  version "0.1.77"
+  resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.77.tgz#f0c8cd18d076bbac900248dcf6dbcec02d5340db"
+  dependencies:
+    inline-style-prefixer "^3.0.6"
+    prop-types "^15.5.10"
+    react-style-proptype "^3.0.0"
+
+react-style-proptype@^3.0.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/react-style-proptype/-/react-style-proptype-3.2.0.tgz#be5de15358b890d83aecfaf6634cc033aa2b1483"
+  dependencies:
+    prop-types "^15.5.4"
+
+react-textarea-autosize@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz#2b78f9067180f41b08ac59f78f1581abadd61e54"
+  dependencies:
+    prop-types "^15.6.0"
+
+react-transition-group@^1.1.2:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6"
+  dependencies:
+    chain-function "^1.0.0"
+    dom-helpers "^3.2.0"
+    loose-envify "^1.3.1"
+    prop-types "^15.5.6"
+    warning "^3.0.0"
+
+react-treebeard@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/react-treebeard/-/react-treebeard-2.1.0.tgz#fbd5cf51089b6f09a9b18350ab3bddf736e57800"
+  dependencies:
+    babel-runtime "^6.23.0"
+    deep-equal "^1.0.1"
+    prop-types "^15.5.8"
+    radium "^0.19.0"
+    shallowequal "^0.2.2"
+    velocity-react "^1.3.1"
+
+react@^16.0.0:
+  version "16.2.0"
+  resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"
+  dependencies:
+    fbjs "^0.8.16"
+    loose-envify "^1.1.0"
+    object-assign "^4.1.1"
+    prop-types "^15.6.0"
+
+reactcss@^1.2.0:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd"
+  dependencies:
+    lodash "^4.0.1"
+
+read-cache@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+  dependencies:
+    pify "^2.3.0"
+
+read-only-stream@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+  dependencies:
+    readable-stream "^2.0.2"
+
+read-pkg-up@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+  dependencies:
+    find-up "^1.0.0"
+    read-pkg "^1.0.0"
+
+read-pkg-up@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+  dependencies:
+    find-up "^2.0.0"
+    read-pkg "^2.0.0"
+
+read-pkg@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+  dependencies:
+    load-json-file "^1.0.0"
+    normalize-package-data "^2.3.2"
+    path-type "^1.0.0"
+
+read-pkg@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+  dependencies:
+    load-json-file "^2.0.0"
+    normalize-package-data "^2.3.2"
+    path-type "^2.0.0"
+
+"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.3"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    safe-buffer "~5.1.1"
+    string_decoder "~1.0.3"
+    util-deprecate "~1.0.1"
+
+readable-stream@1.0:
+  version "1.0.34"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "0.0.1"
+    string_decoder "~0.10.x"
+
+readable-stream@1.1.x, readable-stream@~1.1.9:
+  version "1.1.14"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "0.0.1"
+    string_decoder "~0.10.x"
+
+readable-stream@^2.2.2:
+  version "2.3.4"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.3"
+    isarray "~1.0.0"
+    process-nextick-args "~2.0.0"
+    safe-buffer "~5.1.1"
+    string_decoder "~1.0.3"
+    util-deprecate "~1.0.1"
+
+readable-stream@~2.0.0, readable-stream@~2.0.5:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    string_decoder "~0.10.x"
+    util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+  dependencies:
+    graceful-fs "^4.1.2"
+    minimatch "^3.0.2"
+    readable-stream "^2.0.2"
+    set-immediate-shim "^1.0.1"
+
+realpath-native@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0"
+  dependencies:
+    util.promisify "^1.0.0"
+
+recast@^0.12.6:
+  version "0.12.9"
+  resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1"
+  dependencies:
+    ast-types "0.10.1"
+    core-js "^2.4.1"
+    esprima "~4.0.0"
+    private "~0.1.5"
+    source-map "~0.6.1"
+
+recast@~0.11.12:
+  version "0.11.23"
+  resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
+  dependencies:
+    ast-types "0.9.6"
+    esprima "~3.1.0"
+    private "~0.1.5"
+    source-map "~0.5.0"
+
+rechoir@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+  dependencies:
+    resolve "^1.1.6"
+
+recursive-readdir@2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99"
+  dependencies:
+    minimatch "3.0.3"
+
+redent@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+  dependencies:
+    indent-string "^2.1.0"
+    strip-indent "^1.0.1"
+
+redis-commands@^1.2.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b"
+
+redis-parser@^2.6.0:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
+
+redis@^2.7.1:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
+  dependencies:
+    double-ended-queue "^2.1.0-0"
+    redis-commands "^1.2.0"
+    redis-parser "^2.6.0"
+
+reduce-css-calc@^1.2.6:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+  dependencies:
+    balanced-match "^0.4.2"
+    math-expression-evaluator "^1.2.14"
+    reduce-function-call "^1.0.1"
+
+reduce-function-call@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
+  dependencies:
+    balanced-match "^0.4.2"
+
+redux@^3.6.0, redux@^3.7.2:
+  version "3.7.2"
+  resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
+  dependencies:
+    lodash "^4.2.1"
+    lodash-es "^4.2.1"
+    loose-envify "^1.1.0"
+    symbol-observable "^1.0.3"
+
+reflect-metadata@^0.1.2:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a"
+
+regenerate@^1.2.1:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+
+regenerator-runtime@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+
+regenerator-transform@^0.10.0:
+  version "0.10.1"
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
+  dependencies:
+    babel-runtime "^6.18.0"
+    babel-types "^6.19.0"
+    private "^0.1.6"
+
+regex-cache@^0.4.2:
+  version "0.4.4"
+  resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+  dependencies:
+    is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+  dependencies:
+    extend-shallow "^3.0.2"
+    safe-regex "^1.1.0"
+
+regexpu-core@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+  dependencies:
+    regenerate "^1.2.1"
+    regjsgen "^0.2.0"
+    regjsparser "^0.1.4"
+
+regexpu-core@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+  dependencies:
+    regenerate "^1.2.1"
+    regjsgen "^0.2.0"
+    regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+
+regjsparser@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+  dependencies:
+    jsesc "~0.5.0"
+
+relateurl@0.2.x:
+  version "0.2.7"
+  resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+
+remotedev-serialize@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.1.tgz#0f598000b7dd7515d67f9b51a61d211e18ce9554"
+  dependencies:
+    jsan "^3.1.9"
+
+remotedev-utils@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/remotedev-utils/-/remotedev-utils-0.1.4.tgz#643700819a943678073c75eb185e81d96620b348"
+  dependencies:
+    get-params "^0.1.2"
+    jsan "^3.1.5"
+    lodash "^4.0.0"
+    remotedev-serialize "^0.1.0"
+    shortid "^2.2.6"
+
+remotedev@^0.2.7:
+  version "0.2.7"
+  resolved "https://registry.yarnpkg.com/remotedev/-/remotedev-0.2.7.tgz#85ef370b52eb5721bd3e869d681dc7027d527ee3"
+  dependencies:
+    jsan "^3.1.3"
+    querystring "^0.2.0"
+    rn-host-detect "^1.0.1"
+    socketcluster-client "^5.0.0"
+
+remove-trailing-separator@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+
+renderkid@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319"
+  dependencies:
+    css-select "^1.1.0"
+    dom-converter "~0.1"
+    htmlparser2 "~3.3.0"
+    strip-ansi "^3.0.0"
+    utila "~0.3"
+
+repeat-element@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+
+repeat-string@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
+
+repeat-string@^1.5.2, repeat-string@^1.6.1:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
+repeating@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+  dependencies:
+    is-finite "^1.0.0"
+
+request-progress@0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz#0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a"
+  dependencies:
+    throttleit "~0.0.2"
+
+request-promise-core@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
+  dependencies:
+    lodash "^4.13.1"
+
+request-promise-native@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
+  dependencies:
+    request-promise-core "1.1.1"
+    stealthy-require "^1.1.0"
+    tough-cookie ">=2.3.3"
+
+request@2, request@^2.0.0, request@^2.45.0, request@^2.74.0, request@^2.75.0, request@^2.78.0, request@^2.81.0, request@^2.83.0:
+  version "2.83.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
+  dependencies:
+    aws-sign2 "~0.7.0"
+    aws4 "^1.6.0"
+    caseless "~0.12.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.1"
+    forever-agent "~0.6.1"
+    form-data "~2.3.1"
+    har-validator "~5.0.3"
+    hawk "~6.0.2"
+    http-signature "~1.2.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.17"
+    oauth-sign "~0.8.2"
+    performance-now "^2.1.0"
+    qs "~6.5.1"
+    safe-buffer "^5.1.1"
+    stringstream "~0.0.5"
+    tough-cookie "~2.3.3"
+    tunnel-agent "^0.6.0"
+    uuid "^3.1.0"
+
+request@2.75.x:
+  version "2.75.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    bl "~1.1.2"
+    caseless "~0.11.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.0.0"
+    har-validator "~2.0.6"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    node-uuid "~1.4.7"
+    oauth-sign "~0.8.1"
+    qs "~6.2.0"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "~0.4.1"
+
+request@2.81.0:
+  version "2.81.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    caseless "~0.12.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.1.1"
+    har-validator "~4.2.1"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    oauth-sign "~0.8.1"
+    performance-now "^0.2.0"
+    qs "~6.4.0"
+    safe-buffer "^5.0.1"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "^0.6.0"
+    uuid "^3.0.0"
+
+request@~2.79.0:
+  version "2.79.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    caseless "~0.11.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.1.1"
+    har-validator "~2.0.6"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    oauth-sign "~0.8.1"
+    qs "~6.3.0"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "~0.4.1"
+    uuid "^3.0.0"
+
+requestretry@^1.2.2:
+  version "1.12.2"
+  resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.12.2.tgz#13ce38a4ce4e809f3c9ec6d4ca3b7b9ba4acf26c"
+  dependencies:
+    extend "^3.0.0"
+    lodash "^4.15.0"
+    request "^2.74.0"
+    when "^3.7.7"
+
+require-directory@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
+require-from-string@^1.1.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
+
+require-from-string@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff"
+
+require-main-filename@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+
+requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+
+resolve-cwd@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+  dependencies:
+    resolve-from "^3.0.0"
+
+resolve-dir@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+  dependencies:
+    expand-tilde "^2.0.0"
+    global-modules "^1.0.0"
+
+resolve-from@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+
+resolve-url@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
+resolve@1.1.7:
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+
+resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+  dependencies:
+    path-parse "^1.0.5"
+
+restore-cursor@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+  dependencies:
+    exit-hook "^1.0.0"
+    onetime "^1.0.0"
+
+restore-cursor@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+  dependencies:
+    onetime "^2.0.0"
+    signal-exit "^3.0.2"
+
+ret@~0.1.10:
+  version "0.1.15"
+  resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+
+right-align@^0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+  dependencies:
+    align-text "^0.1.1"
+
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2:
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+  dependencies:
+    glob "^7.0.5"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+  dependencies:
+    hash-base "^2.0.0"
+    inherits "^2.0.1"
+
+rn-host-detect@^1.0.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.3.tgz#242d76e2fa485c48d751416e65b7cce596969e91"
+
+run-async@^2.2.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+  dependencies:
+    is-promise "^2.1.0"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+  dependencies:
+    aproba "^1.1.1"
+
+rx-lite-aggregates@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
+  dependencies:
+    rx-lite "*"
+
+rx-lite@*, rx-lite@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
+
+rxjs@^5.0.0-beta.11, rxjs@^5.4.2, rxjs@^5.5.6:
+  version "5.5.6"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
+  dependencies:
+    symbol-observable "1.0.1"
+
+safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+
+safe-buffer@~5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
+
+safe-regex@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+  dependencies:
+    ret "~0.1.10"
+
+sane@^2.0.0:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/sane/-/sane-2.4.1.tgz#29f991208cf28636720efdc584293e7fd66663a5"
+  dependencies:
+    anymatch "^1.3.0"
+    exec-sh "^0.2.0"
+    fb-watchman "^2.0.0"
+    minimatch "^3.0.2"
+    minimist "^1.1.1"
+    walker "~1.0.5"
+    watch "~0.18.0"
+  optionalDependencies:
+    fsevents "^1.1.1"
+
+sass-graph@^2.2.4:
+  version "2.2.4"
+  resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
+  dependencies:
+    glob "^7.0.0"
+    lodash "^4.0.0"
+    scss-tokenizer "^0.2.3"
+    yargs "^7.0.0"
+
+sass-loader@^6.0.6:
+  version "6.0.7"
+  resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.7.tgz#dd2fdb3e7eeff4a53f35ba6ac408715488353d00"
+  dependencies:
+    clone-deep "^2.0.1"
+    loader-utils "^1.0.1"
+    lodash.tail "^4.1.1"
+    neo-async "^2.5.0"
+    pify "^3.0.0"
+
+saucelabs@~1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee"
+  dependencies:
+    https-proxy-agent "^1.0.0"
+
+sax@0.5.x:
+  version "0.5.8"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
+
+sax@0.6.x:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9"
+
+sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+
+sc-channel@~1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.0.6.tgz#b38bd47a993e78290fbc53467867f6b2a0a08639"
+  dependencies:
+    sc-emitter "1.x.x"
+
+sc-emitter@1.x.x, sc-emitter@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/sc-emitter/-/sc-emitter-1.1.0.tgz#ef119d4222f4c64f887b486964ef11116cdd0e75"
+  dependencies:
+    component-emitter "1.2.0"
+
+sc-errors@~1.3.0:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.3.3.tgz#c00bc4c766a970cc8d5937d08cd58e931d7dae05"
+
+sc-formatter@~3.0.0:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.2.tgz#9abdb14e71873ce7157714d3002477bbdb33c4e6"
+
+schema-utils@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+  dependencies:
+    ajv "^5.0.0"
+
+schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.5:
+  version "0.4.5"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
+  dependencies:
+    ajv "^6.1.0"
+    ajv-keywords "^3.1.0"
+
+schema-utils@^0.4.2:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e"
+  dependencies:
+    ajv "^5.0.0"
+    ajv-keywords "^2.1.0"
+
+scss-tokenizer@^0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
+  dependencies:
+    js-base64 "^2.1.8"
+    source-map "^0.4.2"
+
+select-hose@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+
+selenium-webdriver@3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7"
+  dependencies:
+    adm-zip "^0.4.7"
+    rimraf "^2.5.4"
+    tmp "0.0.30"
+    xml2js "^0.4.17"
+
+selenium-webdriver@^2.53.2:
+  version "2.53.3"
+  resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085"
+  dependencies:
+    adm-zip "0.4.4"
+    rimraf "^2.2.8"
+    tmp "0.0.24"
+    ws "^1.0.1"
+    xml2js "0.4.4"
+
+selfsigned@^1.9.1:
+  version "1.10.1"
+  resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52"
+  dependencies:
+    node-forge "0.6.33"
+
+semver-dsl@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0"
+  dependencies:
+    semver "^5.3.0"
+
+semver-intersect@^1.1.2:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.3.1.tgz#8fa84a9e1028bd239e4530d1a3e181e698d884ba"
+  dependencies:
+    semver "^5.0.0"
+
+"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0:
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+
+semver@^5.0.0, semver@^5.0.1, semver@^5.4.1:
+  version "5.5.0"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+
+semver@~5.0.1:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a"
+
+semver@~5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
+send@0.16.1:
+  version "0.16.1"
+  resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+  dependencies:
+    debug "2.6.9"
+    depd "~1.1.1"
+    destroy "~1.0.4"
+    encodeurl "~1.0.1"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    fresh "0.5.2"
+    http-errors "~1.6.2"
+    mime "1.4.1"
+    ms "2.0.0"
+    on-finished "~2.3.0"
+    range-parser "~1.2.0"
+    statuses "~1.3.1"
+
+serialize-javascript@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005"
+
+serve-favicon@^2.4.5:
+  version "2.4.5"
+  resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436"
+  dependencies:
+    etag "~1.8.1"
+    fresh "0.5.2"
+    ms "2.0.0"
+    parseurl "~1.3.2"
+    safe-buffer "5.1.1"
+
+serve-index@^1.7.2:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+  dependencies:
+    accepts "~1.3.4"
+    batch "0.6.1"
+    debug "2.6.9"
+    escape-html "~1.0.3"
+    http-errors "~1.6.2"
+    mime-types "~2.1.17"
+    parseurl "~1.3.2"
+
+serve-static@1.13.1:
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+  dependencies:
+    encodeurl "~1.0.1"
+    escape-html "~1.0.3"
+    parseurl "~1.3.2"
+    send "0.16.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
+set-getter@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
+  dependencies:
+    to-object-path "^0.3.0"
+
+set-immediate-shim@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+
+set-value@^0.4.3:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+  dependencies:
+    extend-shallow "^2.0.1"
+    is-extendable "^0.1.1"
+    is-plain-object "^2.0.1"
+    to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+  dependencies:
+    extend-shallow "^2.0.1"
+    is-extendable "^0.1.1"
+    is-plain-object "^2.0.3"
+    split-string "^3.0.1"
+
+setimmediate@^1.0.4, setimmediate@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+
+setprototypeof@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+
+setprototypeof@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+
+sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
+  version "2.4.9"
+  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d"
+  dependencies:
+    inherits "^2.0.1"
+    safe-buffer "^5.0.1"
+
+shallow-clone@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
+  dependencies:
+    is-extendable "^0.1.1"
+    kind-of "^5.0.0"
+    mixin-object "^2.0.1"
+
+shallowequal@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e"
+  dependencies:
+    lodash.keys "^3.1.2"
+
+shasum@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
+  dependencies:
+    json-stable-stringify "~0.0.0"
+    sha.js "~2.4.4"
+
+shebang-command@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+  dependencies:
+    shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+
+shell-quote@1.6.1, shell-quote@^1.6.1:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+  dependencies:
+    array-filter "~0.0.0"
+    array-map "~0.0.0"
+    array-reduce "~0.0.0"
+    jsonify "~0.0.0"
+
+shelljs@0.8.0:
+  version "0.8.0"
+  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.0.tgz#12f561c52ec5d0d3315af15616c011a18ff80d59"
+  dependencies:
+    glob "^7.0.0"
+    interpret "^1.0.0"
+    rechoir "^0.6.2"
+
+shelljs@^0.8.1:
+  version "0.8.1"
+  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1"
+  dependencies:
+    glob "^7.0.0"
+    interpret "^1.0.0"
+    rechoir "^0.6.2"
+
+shellwords@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+
+shortid@^2.2.6:
+  version "2.2.8"
+  resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.8.tgz#033b117d6a2e975804f6f0969dbe7d3d0b355131"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+
+silent-error@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9"
+  dependencies:
+    debug "^2.2.0"
+
+single-line-log@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
+  dependencies:
+    string-width "^1.0.1"
+
+slack-node@~0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30"
+  dependencies:
+    requestretry "^1.2.2"
+
+slash@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+
+slice-ansi@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+
+smart-buffer@^1.0.13, smart-buffer@^1.0.4:
+  version "1.1.15"
+  resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16"
+
+smtp-connection@2.12.0:
+  version "2.12.0"
+  resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1"
+  dependencies:
+    httpntlm "1.6.1"
+    nodemailer-shared "1.1.0"
+
+snapdragon-node@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+  dependencies:
+    define-property "^1.0.0"
+    isobject "^3.0.0"
+    snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+  dependencies:
+    kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+  version "0.8.1"
+  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
+  dependencies:
+    base "^0.11.1"
+    debug "^2.2.0"
+    define-property "^0.2.5"
+    extend-shallow "^2.0.1"
+    map-cache "^0.2.2"
+    source-map "^0.5.6"
+    source-map-resolve "^0.5.0"
+    use "^2.0.0"
+
+sntp@1.x.x:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+  dependencies:
+    hoek "2.x.x"
+
+sntp@2.x.x:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
+  dependencies:
+    hoek "4.x.x"
+
+socket.io-adapter@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
+
+socket.io-client@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e"
+  dependencies:
+    backo2 "1.0.2"
+    base64-arraybuffer "0.1.5"
+    component-bind "1.0.0"
+    component-emitter "1.2.1"
+    debug "~2.6.4"
+    engine.io-client "~3.1.0"
+    has-cors "1.1.0"
+    indexof "0.0.1"
+    object-component "0.0.3"
+    parseqs "0.0.5"
+    parseuri "0.0.5"
+    socket.io-parser "~3.1.1"
+    to-array "0.1.4"
+
+socket.io-parser@~3.1.1:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2"
+  dependencies:
+    component-emitter "1.2.1"
+    debug "~2.6.4"
+    has-binary2 "~1.0.2"
+    isarray "2.0.1"
+
+socket.io@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014"
+  dependencies:
+    debug "~2.6.6"
+    engine.io "~3.1.0"
+    socket.io-adapter "~1.1.0"
+    socket.io-client "2.0.4"
+    socket.io-parser "~3.1.1"
+
+socketcluster-client@^5.0.0:
+  version "5.5.2"
+  resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-5.5.2.tgz#9d4369e0e722ff7e55e5422c2d44f5afe1aff128"
+  dependencies:
+    base-64 "0.1.0"
+    clone "2.1.1"
+    linked-list "0.1.0"
+    querystring "0.2.0"
+    sc-channel "~1.0.6"
+    sc-emitter "~1.1.0"
+    sc-errors "~1.3.0"
+    sc-formatter "~3.0.0"
+    ws "3.0.0"
+
+sockjs-client@1.1.4:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
+  dependencies:
+    debug "^2.6.6"
+    eventsource "0.1.6"
+    faye-websocket "~0.11.0"
+    inherits "^2.0.1"
+    json3 "^3.3.2"
+    url-parse "^1.1.8"
+
+sockjs@0.3.19:
+  version "0.3.19"
+  resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
+  dependencies:
+    faye-websocket "^0.10.0"
+    uuid "^3.0.1"
+
+socks-proxy-agent@2:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz#86ebb07193258637870e13b7bd99f26c663df3d3"
+  dependencies:
+    agent-base "2"
+    extend "3"
+    socks "~1.1.5"
+
+socks@1.1.9:
+  version "1.1.9"
+  resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691"
+  dependencies:
+    ip "^1.1.2"
+    smart-buffer "^1.0.4"
+
+socks@~1.1.5:
+  version "1.1.10"
+  resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a"
+  dependencies:
+    ip "^1.1.4"
+    smart-buffer "^1.0.13"
+
+sort-keys@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+  dependencies:
+    is-plain-obj "^1.0.0"
+
+source-list-map@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
+
+source-list-map@~0.1.7:
+  version "0.1.8"
+  resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
+
+source-map-resolve@^0.5.0:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+  dependencies:
+    atob "^2.0.0"
+    decode-uri-component "^0.2.0"
+    resolve-url "^0.2.1"
+    source-map-url "^0.4.0"
+    urix "^0.1.0"
+
+source-map-support@^0.4.0, source-map-support@^0.4.1, source-map-support@^0.4.15, source-map-support@^0.4.2, source-map-support@~0.4.0:
+  version "0.4.18"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+  dependencies:
+    source-map "^0.5.6"
+
+source-map-support@^0.5.0:
+  version "0.5.3"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76"
+  dependencies:
+    source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+
+source-map@0.1.x:
+  version "0.1.43"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
+  dependencies:
+    amdefine ">=0.0.4"
+
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6:
+  version "0.5.7"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
+source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1:
+  version "0.4.4"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+  dependencies:
+    amdefine ">=0.0.4"
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+
+spdx-correct@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+  dependencies:
+    spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+
+spdx-license-ids@^1.0.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+
+spdy-transport@^2.0.18:
+  version "2.0.20"
+  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+  dependencies:
+    debug "^2.6.8"
+    detect-node "^2.0.3"
+    hpack.js "^2.1.6"
+    obuf "^1.1.1"
+    readable-stream "^2.2.9"
+    safe-buffer "^5.0.1"
+    wbuf "^1.7.2"
+
+spdy@^3.4.1:
+  version "3.4.7"
+  resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
+  dependencies:
+    debug "^2.6.8"
+    handle-thing "^1.2.5"
+    http-deceiver "^1.2.7"
+    safe-buffer "^5.0.1"
+    select-hose "^2.0.0"
+    spdy-transport "^2.0.18"
+
+speedometer@~0.1.2:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
+
+split-string@^3.0.1, split-string@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+  dependencies:
+    extend-shallow "^3.0.0"
+
+sprintf-js@^1.0.3:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c"
+
+sprintf-js@~1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
+sshpk@^1.7.0:
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+  dependencies:
+    asn1 "~0.2.3"
+    assert-plus "^1.0.0"
+    dashdash "^1.12.0"
+    getpass "^0.1.1"
+  optionalDependencies:
+    bcrypt-pbkdf "^1.0.0"
+    ecc-jsbn "~0.1.1"
+    jsbn "~0.1.0"
+    tweetnacl "~0.14.0"
+
+ssri@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.0.0.tgz#13c19390b606c821f2a10d02b351c1729b94d8cf"
+  dependencies:
+    safe-buffer "^5.1.0"
+
+ssri@^5.2.4:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+  dependencies:
+    safe-buffer "^5.1.1"
+
+stack-utils@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
+
+staged-git-files@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.0.tgz#1a9bb131c1885601023c7aaddd3d54c22142c526"
+
+static-extend@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+  dependencies:
+    define-property "^0.2.5"
+    object-copy "^0.1.0"
+
+"statuses@>= 1.3.1 < 2":
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
+
+statuses@~1.3.1:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
+
+stdout-stream@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
+  dependencies:
+    readable-stream "^2.0.1"
+
+stealthy-require@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+
+stream-browserify@^2.0.0, stream-browserify@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+  dependencies:
+    inherits "~2.0.1"
+    readable-stream "^2.0.2"
+
+stream-combiner2@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+  dependencies:
+    duplexer2 "~0.1.0"
+    readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+  dependencies:
+    end-of-stream "^1.1.0"
+    stream-shift "^1.0.0"
+
+stream-http@^2.0.0, stream-http@^2.7.2:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10"
+  dependencies:
+    builtin-status-codes "^3.0.0"
+    inherits "^2.0.1"
+    readable-stream "^2.3.3"
+    to-arraybuffer "^1.0.0"
+    xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+
+stream-splicer@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
+  dependencies:
+    inherits "^2.0.1"
+    readable-stream "^2.0.2"
+
+stream-to-observable@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
+
+stream-to-observable@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10"
+  dependencies:
+    any-observable "^0.2.0"
+
+streamroller@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
+  dependencies:
+    date-format "^1.2.0"
+    debug "^3.1.0"
+    mkdirp "^0.5.1"
+    readable-stream "^2.3.0"
+
+strict-uri-encode@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+
+string-length@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
+  dependencies:
+    astral-regex "^1.0.0"
+    strip-ansi "^4.0.0"
+
+string-width@^1.0.1, string-width@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+  dependencies:
+    code-point-at "^1.0.0"
+    is-fullwidth-code-point "^1.0.0"
+    strip-ansi "^3.0.0"
+
+string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+  dependencies:
+    is-fullwidth-code-point "^2.0.0"
+    strip-ansi "^4.0.0"
+
+string.prototype.padend@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.4.3"
+    function-bind "^1.0.2"
+
+string.prototype.padstart@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz#5bcfad39f4649bb2d031292e19bcf0b510d4b242"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.4.3"
+    function-bind "^1.0.2"
+
+string_decoder@^1.0.0, string_decoder@~1.0.0, string_decoder@~1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+  dependencies:
+    safe-buffer "~5.1.0"
+
+string_decoder@~0.10.x:
+  version "0.10.31"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
+stringify-object@^3.2.2:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd"
+  dependencies:
+    get-own-enumerable-property-symbols "^2.0.1"
+    is-obj "^1.0.1"
+    is-regexp "^1.0.0"
+
+stringstream@~0.0.4, stringstream@~0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+
+strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+  dependencies:
+    ansi-regex "^3.0.0"
+
+strip-bom@3.0.0, strip-bom@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
+strip-bom@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+  dependencies:
+    is-utf8 "^0.2.0"
+
+strip-eof@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
+strip-indent@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+  dependencies:
+    get-stdin "^4.0.1"
+
+strip-indent@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+
+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
+style-loader@^0.19.1:
+  version "0.19.1"
+  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
+  dependencies:
+    loader-utils "^1.0.2"
+    schema-utils "^0.3.0"
+
+style-loader@^0.20.2:
+  version "0.20.2"
+  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.2.tgz#851b373c187890331776e9cde359eea9c95ecd00"
+  dependencies:
+    loader-utils "^1.1.0"
+    schema-utils "^0.4.3"
+
+stylus-loader@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.1.tgz#77f4b34fd030d25b2617bcf5513db5b0730c4089"
+  dependencies:
+    loader-utils "^1.0.2"
+    lodash.clonedeep "^4.5.0"
+    when "~3.6.x"
+
+stylus@^0.54.5:
+  version "0.54.5"
+  resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
+  dependencies:
+    css-parse "1.7.x"
+    debug "*"
+    glob "7.0.x"
+    mkdirp "0.5.x"
+    sax "0.5.x"
+    source-map "0.1.x"
+
+subarg@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+  dependencies:
+    minimist "^1.1.0"
+
+sumchecker@^1.2.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d"
+  dependencies:
+    debug "^2.2.0"
+    es6-promise "^4.0.5"
+
+supports-color@3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+  dependencies:
+    has-flag "^1.0.0"
+
+supports-color@4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
+  dependencies:
+    has-flag "^2.0.0"
+
+supports-color@5.1.0, supports-color@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
+  dependencies:
+    has-flag "^2.0.0"
+
+supports-color@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+supports-color@^3.1.2, supports-color@^3.2.3:
+  version "3.2.3"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+  dependencies:
+    has-flag "^1.0.0"
+
+supports-color@^4.0.0, supports-color@^4.2.1:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+  dependencies:
+    has-flag "^2.0.0"
+
+supports-color@^5.2.0, supports-color@^5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
+  dependencies:
+    has-flag "^3.0.0"
+
+svg-tag-names@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/svg-tag-names/-/svg-tag-names-1.1.1.tgz#9641b29ef71025ee094c7043f7cdde7d99fbd50a"
+
+svgo@^0.7.0:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+  dependencies:
+    coa "~1.0.1"
+    colors "~1.1.2"
+    csso "~2.3.1"
+    js-yaml "~3.7.0"
+    mkdirp "~0.5.1"
+    sax "~1.2.1"
+    whet.extend "~0.9.9"
+
+symbol-observable@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
+
+symbol-observable@^0.2.2:
+  version "0.2.4"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40"
+
+symbol-observable@^1.0.3:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+
+symbol-tree@^3.2.2:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+
+sync-rest-client@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/sync-rest-client/-/sync-rest-client-1.0.3.tgz#a36273679a9c22a18733bdafd91d659f90d46dcf"
+  dependencies:
+    deasync "^0.1.8"
+    request "^2.75.0"
+    wait-sync "^1.0.1"
+
+syntax-error@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1"
+  dependencies:
+    acorn "^4.0.3"
+
+tapable@^0.2.7:
+  version "0.2.8"
+  resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
+
+tar-pack@^3.4.0:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
+  dependencies:
+    debug "^2.2.0"
+    fstream "^1.0.10"
+    fstream-ignore "^1.0.5"
+    once "^1.3.3"
+    readable-stream "^2.1.4"
+    rimraf "^2.5.1"
+    tar "^2.2.1"
+    uid-number "^0.0.6"
+
+tar@^2.0.0, tar@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+  dependencies:
+    block-stream "*"
+    fstream "^1.0.2"
+    inherits "2"
+
+tcomb-validation@^3.3.0:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/tcomb-validation/-/tcomb-validation-3.4.1.tgz#a7696ec176ce56a081d9e019f8b732a5a8894b65"
+  dependencies:
+    tcomb "^3.0.0"
+
+tcomb@^3.0.0, tcomb@^3.2.17:
+  version "3.2.24"
+  resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.24.tgz#7f427053cc393b5997c4c3d859ca20411180887b"
+
+terminal-banner@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/terminal-banner/-/terminal-banner-1.1.0.tgz#ef81ce7d9d7e541a81d09eb2c0257c3d5463c3ea"
+
+test-exclude@^4.1.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
+  dependencies:
+    arrify "^1.0.1"
+    micromatch "^3.1.8"
+    object-assign "^4.1.0"
+    read-pkg-up "^1.0.1"
+    require-main-filename "^1.0.1"
+
+text-table@0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+
+throat@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
+
+throttleit@0.0.2, throttleit@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
+
+through2@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+  dependencies:
+    readable-stream "^2.1.5"
+    xtend "~4.0.1"
+
+through2@~0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
+  dependencies:
+    readable-stream "~1.1.9"
+    xtend "~2.1.1"
+
+"through@>=2.2.7 <3", through@X.X.X, through@^2.3.6, through@^2.3.8, through@~2.3.6:
+  version "2.3.8"
+  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+
+thunkify@~2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d"
+
+thunky@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
+
+time-stamp@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+
+timers-browserify@^1.0.1:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+  dependencies:
+    process "~0.11.0"
+
+timers-browserify@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
+  dependencies:
+    setimmediate "^1.0.4"
+
+timespan@2.3.x:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929"
+
+tinycolor2@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
+
+tmp@0.0.24:
+  version "0.0.24"
+  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"
+
+tmp@0.0.30:
+  version "0.0.30"
+  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
+  dependencies:
+    os-tmpdir "~1.0.1"
+
+tmp@0.0.31:
+  version "0.0.31"
+  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
+  dependencies:
+    os-tmpdir "~1.0.1"
+
+tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33:
+  version "0.0.33"
+  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+  dependencies:
+    os-tmpdir "~1.0.2"
+
+tmpl@1.0.x:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+
+to-array@0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+
+to-arraybuffer@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+
+to-fast-properties@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+
+to-object-path@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+  dependencies:
+    kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+  dependencies:
+    is-number "^3.0.0"
+    repeat-string "^1.6.1"
+
+to-regex@^3.0.1:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+  dependencies:
+    define-property "^2.0.2"
+    extend-shallow "^3.0.2"
+    regex-not "^1.0.2"
+    safe-regex "^1.1.0"
+
+toposort@^1.0.0:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec"
+
+tough-cookie@>=2.3.3, tough-cookie@^2.3.3:
+  version "2.3.4"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
+  dependencies:
+    punycode "^1.4.1"
+
+tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
+  dependencies:
+    punycode "^1.4.1"
+
+tr46@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+  dependencies:
+    punycode "^2.1.0"
+
+tree-kill@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
+
+trim-newlines@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+
+trim-right@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+
+"true-case-path@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62"
+  dependencies:
+    glob "^6.0.4"
+
+ts-jest@^22.4.1:
+  version "22.4.1"
+  resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.1.tgz#69defb2042d689cff9b4244365ef638ecd35f706"
+  dependencies:
+    babel-core "^6.24.1"
+    babel-plugin-istanbul "^4.1.4"
+    babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+    babel-preset-jest "^22.4.0"
+    cpx "^1.5.0"
+    fs-extra "4.0.3"
+    jest-config "^22.4.0"
+    pkg-dir "^2.0.0"
+    yargs "^11.0.0"
+
+ts-loader@3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.2.0.tgz#23211922179b81f7448754b7fdfca45b8374a15a"
+  dependencies:
+    chalk "^2.3.0"
+    enhanced-resolve "^3.0.0"
+    loader-utils "^1.0.2"
+    semver "^5.0.1"
+
+ts-loader@^3.5.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.5.0.tgz#151d004dcddb4cf8e381a3bf9d6b74c2d957a9c0"
+  dependencies:
+    chalk "^2.3.0"
+    enhanced-resolve "^3.0.0"
+    loader-utils "^1.0.2"
+    micromatch "^3.1.4"
+    semver "^5.0.1"
+
+ts-node@~3.2.0:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.2.2.tgz#bbd28e38af4aaa3e96076c466e1b220197c1a3ce"
+  dependencies:
+    arrify "^1.0.0"
+    chalk "^2.0.0"
+    diff "^3.1.0"
+    make-error "^1.1.1"
+    minimist "^1.2.0"
+    mkdirp "^0.5.1"
+    source-map-support "^0.4.0"
+    tsconfig "^6.0.0"
+    v8flags "^3.0.0"
+    yn "^2.0.0"
+
+tsconfig@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
+  dependencies:
+    strip-bom "^3.0.0"
+    strip-json-comments "^2.0.0"
+
+tsickle@^0.26.0:
+  version "0.26.0"
+  resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.26.0.tgz#40b30a2dd6abcb33b182e37596674bd1cfe4039c"
+  dependencies:
+    minimist "^1.2.0"
+    mkdirp "^0.5.1"
+    source-map "^0.5.6"
+    source-map-support "^0.4.2"
+
+tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.1.tgz#6946af2d1d651a7b1863b531d6e5afa41aa44eac"
+
+tslint-config-prettier@^1.10.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.10.0.tgz#5063c413d43de4f6988c73727f65ecfc239054ec"
+
+tslint@~5.9.1:
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
+  dependencies:
+    babel-code-frame "^6.22.0"
+    builtin-modules "^1.1.1"
+    chalk "^2.3.0"
+    commander "^2.12.1"
+    diff "^3.2.0"
+    glob "^7.1.1"
+    js-yaml "^3.7.0"
+    minimatch "^3.0.4"
+    resolve "^1.3.2"
+    semver "^5.3.0"
+    tslib "^1.8.0"
+    tsutils "^2.12.1"
+
+tsscmp@~1.0.0:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97"
+
+tsutils@^2.12.1:
+  version "2.18.0"
+  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.18.0.tgz#f97385709d348169002c12f6f5fd42c1df13b250"
+  dependencies:
+    tslib "^1.8.1"
+
+tty-browserify@0.0.0, tty-browserify@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+
+tunnel-agent@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+  dependencies:
+    safe-buffer "^5.0.1"
+
+tunnel-agent@~0.4.1:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+  version "0.14.5"
+  resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+
+type-check@~0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+  dependencies:
+    prelude-ls "~1.1.2"
+
+type-is@~1.6.15:
+  version "1.6.15"
+  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+  dependencies:
+    media-typer "0.3.0"
+    mime-types "~2.1.15"
+
+typedarray@^0.0.6, typedarray@~0.0.5:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+
+typescript@~2.5.3:
+  version "2.5.3"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d"
+
+typescript@~2.6.2:
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4"
+
+ua-parser-js@^0.7.9:
+  version "0.7.17"
+  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+
+uglify-es@^3.3.4:
+  version "3.3.7"
+  resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.7.tgz#d1249af668666aba7cb1163e277455be9eb393cf"
+  dependencies:
+    commander "~2.13.0"
+    source-map "~0.6.1"
+
+uglify-js@3.3.x:
+  version "3.3.7"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.7.tgz#28463e7c7451f89061d2b235e30925bf5625e14d"
+  dependencies:
+    commander "~2.13.0"
+    source-map "~0.6.1"
+
+uglify-js@^2.6, uglify-js@^2.8.29:
+  version "2.8.29"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+  dependencies:
+    source-map "~0.5.1"
+    yargs "~3.10.0"
+  optionalDependencies:
+    uglify-to-browserify "~1.0.0"
+
+uglify-to-browserify@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+
+uglifyjs-webpack-plugin@^0.4.6:
+  version "0.4.6"
+  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+  dependencies:
+    source-map "^0.5.6"
+    uglify-js "^2.8.29"
+    webpack-sources "^1.0.1"
+
+uglifyjs-webpack-plugin@^1.1.8:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.3.tgz#bf23197b37a8fc953fecfbcbab66e506f9a0ae72"
+  dependencies:
+    cacache "^10.0.4"
+    find-cache-dir "^1.0.0"
+    schema-utils "^0.4.5"
+    serialize-javascript "^1.4.0"
+    source-map "^0.6.1"
+    uglify-es "^3.3.4"
+    webpack-sources "^1.1.0"
+    worker-farm "^1.5.2"
+
+uglifyjs-webpack-plugin@^1.2.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz#e7516d4367afdb715c3847841eb46f94c45ca2b9"
+  dependencies:
+    cacache "^10.0.1"
+    find-cache-dir "^1.0.0"
+    schema-utils "^0.4.2"
+    serialize-javascript "^1.4.0"
+    source-map "^0.6.1"
+    uglify-es "^3.3.4"
+    webpack-sources "^1.1.0"
+    worker-farm "^1.5.2"
+
+uid-number@^0.0.6:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+
+ultron@1.0.x:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
+
+ultron@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+
+umd@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e"
+
+underscore@~1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
+
+union-value@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+  dependencies:
+    arr-union "^3.1.0"
+    get-value "^2.0.6"
+    is-extendable "^0.1.1"
+    set-value "^0.4.3"
+
+uniq@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+
+uniqid@^4.0.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
+  dependencies:
+    macaddress "^0.2.8"
+
+uniqs@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+
+unique-filename@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
+  dependencies:
+    unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab"
+  dependencies:
+    imurmurhash "^0.1.4"
+
+unique-string@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+  dependencies:
+    crypto-random-string "^1.0.0"
+
+universalify@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
+
+unpipe@1.0.0, unpipe@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+
+unset-value@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+  dependencies:
+    has-value "^0.3.1"
+    isobject "^3.0.0"
+
+upath@^1.0.0:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d"
+
+upper-case@^1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+
+urix@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
+url-loader@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7"
+  dependencies:
+    loader-utils "^1.0.2"
+    mime "^1.4.1"
+    schema-utils "^0.3.0"
+
+url-parse@1.0.x:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
+  dependencies:
+    querystringify "0.0.x"
+    requires-port "1.0.x"
+
+url-parse@^1.1.8:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+  dependencies:
+    querystringify "~1.0.0"
+    requires-port "~1.0.0"
+
+url@0.11.0, url@^0.11.0, url@~0.11.0:
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+  dependencies:
+    punycode "1.3.2"
+    querystring "0.2.0"
+
+use@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
+  dependencies:
+    define-property "^0.2.5"
+    isobject "^3.0.0"
+    lazy-cache "^2.0.2"
+
+useragent@^2.1.12:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e"
+  dependencies:
+    lru-cache "2.2.x"
+    tmp "0.0.x"
+
+util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+
+util.promisify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+  dependencies:
+    define-properties "^1.1.2"
+    object.getownpropertydescriptors "^2.0.3"
+
+util@0.10.3, util@^0.10.3, util@~0.10.1:
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+  dependencies:
+    inherits "2.0.1"
+
+utila@~0.3:
+  version "0.3.3"
+  resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
+
+utila@~0.4:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+
+utils-merge@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+
+uuid@^3.0.0, uuid@^3.0.1, uuid@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+
+uuid@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+
+uws@~0.14.4:
+  version "0.14.5"
+  resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc"
+
+v8flags@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
+  dependencies:
+    homedir-polyfill "^1.0.1"
+
+validate-npm-package-license@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+  dependencies:
+    spdx-correct "~1.0.0"
+    spdx-expression-parse "~1.0.0"
+
+validator@^9.1.2:
+  version "9.4.0"
+  resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.0.tgz#c503ef88f7e6b8fb7688599267b309482d81ae60"
+
+vary@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+
+velocity-animate@^1.4.0:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.1.tgz#606837047bab8fbfb59a636d1d82ecc3f7bd71a6"
+
+velocity-react@^1.3.1:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/velocity-react/-/velocity-react-1.3.3.tgz#d6d47276cfc8be2a75623879b20140ac58c1b82b"
+  dependencies:
+    lodash "^3.10.1"
+    prop-types "^15.5.8"
+    react-transition-group "^1.1.2"
+    velocity-animate "^1.4.0"
+
+vendors@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+
+verror@1.10.0:
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+  dependencies:
+    assert-plus "^1.0.0"
+    core-util-is "1.0.2"
+    extsprintf "^1.2.0"
+
+vlq@^0.2.1:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+
+vm-browserify@0.0.4, vm-browserify@~0.0.1:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+  dependencies:
+    indexof "0.0.1"
+
+void-elements@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+
+w3c-hr-time@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
+  dependencies:
+    browser-process-hrtime "^0.1.2"
+
+wait-sync@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/wait-sync/-/wait-sync-1.0.1.tgz#c98038819ecf7b4eb20d5b576cdb99b3a864d555"
+  dependencies:
+    deasync "^0.1.8"
+
+walker@~1.0.5:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+  dependencies:
+    makeerror "1.0.x"
+
+wallaby-webpack@^3.9.5:
+  version "3.9.5"
+  resolved "https://registry.yarnpkg.com/wallaby-webpack/-/wallaby-webpack-3.9.5.tgz#b67eaec3a1fd13921ced7087c712b5314a57363f"
+  dependencies:
+    graceful-fs "^4.1.3"
+    lodash "^3.5.0"
+    minimatch "3.0.3"
+
+warning@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
+  dependencies:
+    loose-envify "^1.0.0"
+
+watch@~0.18.0:
+  version "0.18.0"
+  resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
+  dependencies:
+    exec-sh "^0.2.0"
+    minimist "^1.2.0"
+
+watchpack@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
+  dependencies:
+    async "^2.1.2"
+    chokidar "^1.7.0"
+    graceful-fs "^4.1.2"
+
+wbuf@^1.1.0, wbuf@^1.7.2:
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+  dependencies:
+    minimalistic-assert "^1.0.0"
+
+webdriver-js-extender@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515"
+  dependencies:
+    "@types/selenium-webdriver" "^2.53.35"
+    selenium-webdriver "^2.53.2"
+
+webdriver-manager@^12.0.6:
+  version "12.0.6"
+  resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.6.tgz#3df1a481977010b4cbf8c9d85c7a577828c0e70b"
+  dependencies:
+    adm-zip "^0.4.7"
+    chalk "^1.1.1"
+    del "^2.2.0"
+    glob "^7.0.3"
+    ini "^1.3.4"
+    minimist "^1.2.0"
+    q "^1.4.1"
+    request "^2.78.0"
+    rimraf "^2.5.2"
+    semver "^5.3.0"
+    xml2js "^0.4.17"
+
+webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+
+webpack-core@^0.6.8:
+  version "0.6.9"
+  resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
+  dependencies:
+    source-list-map "~0.1.7"
+    source-map "~0.4.1"
+
+webpack-dev-middleware@1.12.2, webpack-dev-middleware@^1.12.2, webpack-dev-middleware@~1.12.0:
+  version "1.12.2"
+  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+  dependencies:
+    memory-fs "~0.4.1"
+    mime "^1.5.0"
+    path-is-absolute "^1.0.0"
+    range-parser "^1.0.3"
+    time-stamp "^2.0.0"
+
+webpack-dev-server@~2.11.0:
+  version "2.11.2"
+  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f"
+  dependencies:
+    ansi-html "0.0.7"
+    array-includes "^3.0.3"
+    bonjour "^3.5.0"
+    chokidar "^2.0.0"
+    compression "^1.5.2"
+    connect-history-api-fallback "^1.3.0"
+    debug "^3.1.0"
+    del "^3.0.0"
+    express "^4.16.2"
+    html-entities "^1.2.0"
+    http-proxy-middleware "~0.17.4"
+    import-local "^1.0.0"
+    internal-ip "1.2.0"
+    ip "^1.1.5"
+    killable "^1.0.0"
+    loglevel "^1.4.1"
+    opn "^5.1.0"
+    portfinder "^1.0.9"
+    selfsigned "^1.9.1"
+    serve-index "^1.7.2"
+    sockjs "0.3.19"
+    sockjs-client "1.1.4"
+    spdy "^3.4.1"
+    strip-ansi "^3.0.0"
+    supports-color "^5.1.0"
+    webpack-dev-middleware "1.12.2"
+    yargs "6.6.0"
+
+webpack-hot-middleware@^2.21.0:
+  version "2.21.2"
+  resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.2.tgz#2e2aa65563b8b32546b67e53b5a9667dcd80f327"
+  dependencies:
+    ansi-html "0.0.7"
+    html-entities "^1.2.0"
+    querystring "^0.2.0"
+    strip-ansi "^3.0.0"
+
+webpack-merge@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555"
+  dependencies:
+    lodash "^4.17.4"
+
+webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
+  dependencies:
+    source-list-map "^2.0.0"
+    source-map "~0.6.1"
+
+webpack-subresource-integrity@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.0.3.tgz#c0606d40090b070cde428bec8df3603216e472eb"
+  dependencies:
+    webpack-core "^0.6.8"
+
+webpack@3.6.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.6.0.tgz#a89a929fbee205d35a4fa2cc487be9cbec8898bc"
+  dependencies:
+    acorn "^5.0.0"
+    acorn-dynamic-import "^2.0.0"
+    ajv "^5.1.5"
+    ajv-keywords "^2.0.0"
+    async "^2.1.2"
+    enhanced-resolve "^3.4.0"
+    escope "^3.6.0"
+    interpret "^1.0.0"
+    json-loader "^0.5.4"
+    json5 "^0.5.1"
+    loader-runner "^2.3.0"
+    loader-utils "^1.1.0"
+    memory-fs "~0.4.1"
+    mkdirp "~0.5.0"
+    node-libs-browser "^2.0.0"
+    source-map "^0.5.3"
+    supports-color "^4.2.1"
+    tapable "^0.2.7"
+    uglifyjs-webpack-plugin "^0.4.6"
+    watchpack "^1.4.0"
+    webpack-sources "^1.0.1"
+    yargs "^8.0.2"
+
+webpack@^3.11.0, webpack@~3.11.0:
+  version "3.11.0"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894"
+  dependencies:
+    acorn "^5.0.0"
+    acorn-dynamic-import "^2.0.0"
+    ajv "^6.1.0"
+    ajv-keywords "^3.1.0"
+    async "^2.1.2"
+    enhanced-resolve "^3.4.0"
+    escope "^3.6.0"
+    interpret "^1.0.0"
+    json-loader "^0.5.4"
+    json5 "^0.5.1"
+    loader-runner "^2.3.0"
+    loader-utils "^1.1.0"
+    memory-fs "~0.4.1"
+    mkdirp "~0.5.0"
+    node-libs-browser "^2.0.0"
+    source-map "^0.5.3"
+    supports-color "^4.2.1"
+    tapable "^0.2.7"
+    uglifyjs-webpack-plugin "^0.4.6"
+    watchpack "^1.4.0"
+    webpack-sources "^1.0.1"
+    yargs "^8.0.2"
+
+websocket-driver@>=0.5.1:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
+  dependencies:
+    http-parser-js ">=0.4.0"
+    websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
+
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3"
+  dependencies:
+    iconv-lite "0.4.19"
+
+whatwg-fetch@>=0.10.0:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+
+whatwg-url@^6.4.0:
+  version "6.4.0"
+  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08"
+  dependencies:
+    lodash.sortby "^4.7.0"
+    tr46 "^1.0.0"
+    webidl-conversions "^4.0.1"
+
+when@^3.7.7:
+  version "3.7.8"
+  resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82"
+
+when@~3.6.x:
+  version "3.6.4"
+  resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e"
+
+whet.extend@~0.9.9:
+  version "0.9.9"
+  resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+
+which-module@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+
+which-module@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+
+which@1, which@^1.2.1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+  dependencies:
+    isexe "^2.0.0"
+
+wide-align@^1.1.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+  dependencies:
+    string-width "^1.0.2"
+
+window-size@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+
+wordwrap@0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
+wordwrap@~0.0.2:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+
+wordwrap@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+
+worker-farm@^1.5.2:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
+  dependencies:
+    errno "^0.1.4"
+    xtend "^4.0.1"
+
+wrap-ansi@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+  dependencies:
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+
+wrappy@1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
+write-file-atomic@^2.0.0, write-file-atomic@^2.1.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
+  dependencies:
+    graceful-fs "^4.1.11"
+    imurmurhash "^0.1.4"
+    signal-exit "^3.0.2"
+
+ws@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-3.0.0.tgz#98ddb00056c8390cb751e7788788497f99103b6c"
+  dependencies:
+    safe-buffer "~5.0.1"
+    ultron "~1.1.0"
+
+ws@^1.0.1:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"
+  dependencies:
+    options ">=0.0.5"
+    ultron "1.0.x"
+
+ws@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
+  dependencies:
+    async-limiter "~1.0.0"
+    safe-buffer "~5.1.0"
+
+ws@~3.3.1:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
+  dependencies:
+    async-limiter "~1.0.0"
+    safe-buffer "~5.1.0"
+    ultron "~1.1.0"
+
+xdg-basedir@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+
+xml-char-classes@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+
+xml-name-validator@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+
+xml2js@0.4.4:
+  version "0.4.4"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d"
+  dependencies:
+    sax "0.6.x"
+    xmlbuilder ">=1.0.0"
+
+xml2js@^0.4.17:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "~9.0.1"
+
+xml@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
+
+xmlbuilder@>=1.0.0, xmlbuilder@~9.0.1:
+  version "9.0.4"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f"
+
+xmlhttprequest-ssl@~1.5.4:
+  version "1.5.5"
+  resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
+
+xregexp@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+xtend@~2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+  dependencies:
+    object-keys "~0.4.0"
+
+xxhashjs@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.1.tgz#9bbe9be896142976dfa34c061b2d068c43d30de0"
+  dependencies:
+    cuint latest
+
+y18n@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+
+y18n@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+
+yallist@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+
+yargs-parser@^4.2.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+  dependencies:
+    camelcase "^3.0.0"
+
+yargs-parser@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
+  dependencies:
+    camelcase "^3.0.0"
+
+yargs-parser@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+  dependencies:
+    camelcase "^4.1.0"
+
+yargs-parser@^8.1.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
+  dependencies:
+    camelcase "^4.1.0"
+
+yargs-parser@^9.0.2:
+  version "9.0.2"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
+  dependencies:
+    camelcase "^4.1.0"
+
+yargs@6.6.0:
+  version "6.6.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+  dependencies:
+    camelcase "^3.0.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^1.4.0"
+    read-pkg-up "^1.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^1.0.2"
+    which-module "^1.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^4.2.0"
+
+yargs@^10.0.3:
+  version "10.1.2"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
+  dependencies:
+    cliui "^4.0.0"
+    decamelize "^1.1.1"
+    find-up "^2.1.0"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^8.1.0"
+
+yargs@^11.0.0:
+  version "11.0.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"
+  dependencies:
+    cliui "^4.0.0"
+    decamelize "^1.1.1"
+    find-up "^2.1.0"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^9.0.2"
+
+yargs@^7.0.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
+  dependencies:
+    camelcase "^3.0.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^1.4.0"
+    read-pkg-up "^1.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^1.0.2"
+    which-module "^1.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^5.0.0"
+
+yargs@^8.0.2:
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+  dependencies:
+    camelcase "^4.1.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    read-pkg-up "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^7.0.0"
+
+yargs@~3.10.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+  dependencies:
+    camelcase "^1.0.2"
+    cliui "^2.1.0"
+    decamelize "^1.0.0"
+    window-size "0.1.0"
+
+yauzl@2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
+  dependencies:
+    fd-slicer "~1.0.1"
+
+yauzl@2.8.0:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
+  dependencies:
+    buffer-crc32 "~0.2.3"
+    fd-slicer "~1.0.1"
+
+yeast@0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+
+yn@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+
+zone.js@^0.8.19, zone.js@^0.8.20:
+  version "0.8.20"
+  resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.20.tgz#a218c48db09464b19ff6fc8f0d4bb5b1046e185d"
diff --git a/src/main/java/org/onap/sdc/dcae/FeApp.java b/src/main/java/org/onap/sdc/dcae/FeApp.java
new file mode 100644
index 0000000..01d757c
--- /dev/null
+++ b/src/main/java/org/onap/sdc/dcae/FeApp.java
@@ -0,0 +1,73 @@
+package org.onap.sdc.dcae;
+
+import org.onap.sdc.dcae.controller.proxy.DcaeProxy;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.*;
+
+import javax.servlet.ServletContext;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+
+@Configuration
+@ComponentScan()
+@EnableAutoConfiguration
+@PropertySource("file:${jetty.base}/config/dcae-fe/application.properties")
+public class FeApp extends SpringBootServletInitializer implements CommandLineRunner{
+
+	private static final String SPECIFICATION_VERSION = "Specification-Version";
+	@Autowired
+	ServletContext servletContext;
+
+	private static final String MANIFEST_FILE_NAME = "/META-INF/MANIFEST.MF";
+	private static String dcaeVersion;
+
+    @Value("${beUrl}")
+	private String beUrl;
+
+    public static void main(String[] args) {
+        SpringApplication.run(FeApp.class, args);
+    }
+
+	public void run(String... arg0) throws Exception {
+		InputStream inputStream = servletContext.getResourceAsStream(MANIFEST_FILE_NAME);
+
+		System.out.println("Server is starting..reading DCAE version...");
+
+		String version = null;
+		try {
+			Manifest mf = new Manifest(inputStream);
+			Attributes atts = mf.getMainAttributes();
+			version = atts.getValue(SPECIFICATION_VERSION);
+			if (version == null || version.isEmpty()) {
+				System.err.println("failed to read DCAE version from MANIFEST.");
+			} else {
+				System.out.println("DCAE version from MANIFEST is "+ version);
+				dcaeVersion = version;
+			}
+
+		} catch (IOException e) {
+			System.err.println("failed to read DCAE version from MANIFEST: "+ e.getMessage());
+		}
+	}
+
+	public static String getDcaeVersion() {
+		return dcaeVersion;
+	}
+
+
+    @Bean
+    public ServletRegistrationBean dcaeProxyBean() {
+        ServletRegistrationBean bean = new ServletRegistrationBean(new DcaeProxy(beUrl), "/dcaeProxy/*");
+        bean.setLoadOnStartup(1);
+        return bean;
+    }
+}
diff --git a/src/main/java/org/onap/sdc/dcae/controller/health/HealthController.java b/src/main/java/org/onap/sdc/dcae/controller/health/HealthController.java
new file mode 100644
index 0000000..1ddec2d
--- /dev/null
+++ b/src/main/java/org/onap/sdc/dcae/controller/health/HealthController.java
@@ -0,0 +1,72 @@
+package org.onap.sdc.dcae.controller.health;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.onap.sdc.dcae.FeApp;
+import org.onap.sdc.dcae.composition.restmodels.health.ComponentsInfo;
+import org.onap.sdc.dcae.composition.restmodels.health.HealthResponse;
+import org.onap.sdc.dcae.composition.util.DcaeFeConstants;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.google.gson.Gson;
+
+
+/**
+ *
+ * @author lezer
+ * Example:
+ * {
+	"healthCheckComponent": "DCAE Designer",
+	"healthCheckStatus": "UP",
+	"description": "OK",
+	"componentsInfo": [{
+		"healthCheckComponent": "FE",
+		"healthCheckStatus": "UP",
+		"description": "OK"
+	}]
+}
+ *
+ */
+@RestController
+@EnableAutoConfiguration
+@CrossOrigin
+public class HealthController {
+	Gson gson = new Gson();
+
+	@RequestMapping(value = "/healthCheck", method = RequestMethod.GET)
+	public ResponseEntity<String> healthCheck() {
+		try{
+			HealthResponse healthResponse = new HealthResponse();
+			healthResponse.setHealthCheckComponent(DcaeFeConstants.Health.APP_NAME);
+			healthResponse.setHealthCheckStatus(DcaeFeConstants.Health.UP);
+			healthResponse.setSdcVersion(FeApp.getDcaeVersion());
+			healthResponse.setDescription(DcaeFeConstants.Health.OK);
+
+			List<ComponentsInfo> componentsInfoList = new ArrayList<ComponentsInfo>();
+			ComponentsInfo componentsInfo = new ComponentsInfo();
+			componentsInfo.setHealthCheckComponent(DcaeFeConstants.Health.FE);
+			componentsInfo.setHealthCheckStatus(DcaeFeConstants.Health.UP);
+			componentsInfo.setVersion(FeApp.getDcaeVersion());
+			componentsInfo.setDescription(DcaeFeConstants.Health.OK);
+			componentsInfoList.add(componentsInfo);
+
+			healthResponse.setComponentsInfo(componentsInfoList);
+			String json = gson.toJson(healthResponse, HealthResponse.class);
+			System.out.println("Health Check response: "+json);
+
+			return new ResponseEntity<String>(json, HttpStatus.OK);
+		}
+		catch(Exception e){
+			System.err.println("Error occured while performing HealthCheck: "+e.getLocalizedMessage());
+			return new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+		}
+	}
+
+}
diff --git a/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java b/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java
new file mode 100644
index 0000000..94279f2
--- /dev/null
+++ b/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java
@@ -0,0 +1,152 @@
+package org.onap.sdc.dcae.controller.proxy;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.api.Response;
+import org.eclipse.jetty.proxy.ProxyServlet;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.util.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.concurrent.TimeUnit;
+
+
+public class DcaeProxy extends ProxyServlet {
+
+    private static Logger log = LoggerFactory.getLogger(DcaeProxy.class);
+    private static Cache<String, MdcData> mdcDataCache = CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build();
+
+
+    //TODO proper configuration class
+    private String beHostUrl;
+
+    public DcaeProxy(String beHostUrl){
+        this.beHostUrl = beHostUrl;
+    }
+
+    @Override
+    protected HttpClient newHttpClient() {
+        SslContextFactory factory = new SslContextFactory(true);
+        return new HttpClient(factory);
+    }
+
+    @Override
+    protected String rewriteTarget(HttpServletRequest request) {
+        try{
+            logRequest(request);
+        }catch (Exception e){
+            log.error("Unexpected FE request logging error :", e);
+        }
+        String uri = request.getRequestURI();
+        uri = uri.replace("/dcaeProxy", "");
+        String query = request.getQueryString();
+        StringBuilder url = new StringBuilder();
+        url.append(beHostUrl).append(uri);
+        if(null != query)
+            url.append("?").append(query);
+        String urlString = url.toString();
+        log.info("Proxy outgoing request={}", urlString);
+        return urlString;
+    }
+
+    @Override
+    protected void onProxyResponseSuccess(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Response serverResponse) {
+        try{
+            logResponse(clientRequest, serverResponse);
+        }catch (Exception e){
+            log.error("Unexpected FE response logging error :", e);
+        }
+        super.onProxyResponseSuccess(clientRequest, proxyResponse, serverResponse);
+    }
+
+
+    private void logRequest(HttpServletRequest httpRequest) {
+        MDC.clear();
+        Long transactionStartTime = System.currentTimeMillis();
+        String requestId = httpRequest.getHeader("X-ECOMP-RequestID");
+        String serviceInstanceID = httpRequest.getHeader("X-ECOMP-ServiceID");
+        if (!StringUtils.isEmpty(requestId)) {
+            String userId = httpRequest.getHeader("USER_ID");
+            String remoteAddr = httpRequest.getRemoteAddr();
+            String localAddr = httpRequest.getLocalAddr();
+            mdcDataCache.put(requestId, new MdcData(serviceInstanceID, userId, remoteAddr, localAddr, transactionStartTime));
+            updateMdc(requestId, serviceInstanceID, userId, remoteAddr, localAddr, null);
+        }
+        inHttpRequest(httpRequest);
+    }
+
+    private void logResponse(HttpServletRequest request, Response proxyResponse) {
+        String requestId = request.getHeader("X-ECOMP-RequestID");
+        if (requestId != null) {
+            MdcData mdcData = mdcDataCache.getIfPresent(requestId);
+            if (mdcData != null) {
+                Long transactionStartTime = mdcData.getTransactionStartTime();
+                String transactionRoundTime = Long.toString(System.currentTimeMillis() - transactionStartTime);
+                updateMdc(requestId, mdcData.getServiceInstanceID(), mdcData.getUserId(), mdcData.getRemoteAddr(), mdcData.getLocalAddr(), transactionRoundTime);
+            }
+        }
+        outHttpResponse(proxyResponse);
+        MDC.clear();
+    }
+
+    private class MdcData {
+        private String serviceInstanceID;
+        private String userId;
+        private String remoteAddr;
+        private String localAddr;
+        private Long transactionStartTime;
+
+        MdcData(String serviceInstanceID, String userId, String remoteAddr, String localAddr, Long transactionStartTime) {
+            this.serviceInstanceID = serviceInstanceID;
+            this.userId = userId;
+            this.remoteAddr = remoteAddr;
+            this.localAddr = localAddr;
+            this.transactionStartTime = transactionStartTime;
+        }
+
+        Long getTransactionStartTime() {
+            return transactionStartTime;
+        }
+
+        public String getUserId() {
+            return userId;
+        }
+
+        String getRemoteAddr() {
+            return remoteAddr;
+        }
+
+        String getLocalAddr() {
+            return localAddr;
+        }
+
+        String getServiceInstanceID() {
+            return serviceInstanceID;
+        }
+    }
+
+    private void updateMdc(String uuid, String serviceInstanceID, String userId, String remoteAddr, String localAddr, String transactionStartTime) {
+        MDC.put("uuid", uuid);
+        MDC.put("serviceInstanceID", serviceInstanceID);
+        MDC.put("userId", userId);
+        MDC.put("remoteAddr", remoteAddr);
+        MDC.put("localAddr", localAddr);
+        MDC.put("timer", transactionStartTime);
+    }
+
+    // Extracted for purpose of clear method name, for logback %M parameter
+    private void inHttpRequest(HttpServletRequest httpRequest) {
+        log.info("{} {} {}", httpRequest.getMethod(), httpRequest.getRequestURI(), httpRequest.getProtocol());
+    }
+
+    // Extracted for purpose of clear method name, for logback %M parameter
+    private void outHttpResponse(Response proxyResponse) {
+        log.info("SC=\"{}\"", proxyResponse.getStatus());
+    }
+
+}
diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1902117
--- /dev/null
+++ b/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Implementation-Title: dcae-fe
+Implementation-Version: APPLICATION_VERSION
+Implementation-Vendor-Id: com.att.tlv.sdc.dcae
+Build-Jdk: 1.7.0_45
+Created-By: Apache Maven 3.2.1
+Archiver-Version: Plexus Archiver
+Specification-Version: 1707.0.0-SNAPSHOT
diff --git a/src/main/webapp/WEB-INF/config/dcae-fe/application.properties b/src/main/webapp/WEB-INF/config/dcae-fe/application.properties
new file mode 100644
index 0000000..a018abb
--- /dev/null
+++ b/src/main/webapp/WEB-INF/config/dcae-fe/application.properties
@@ -0,0 +1,3 @@
+server.port=8181
+server.context-path=/dcae
+beUrl=https://zldcrdm2sdc2abe01.3f1a87.rdm2.tci.att.com:8443
diff --git a/src/main/webapp/WEB-INF/jetty-web.xml b/src/main/webapp/WEB-INF/jetty-web.xml
new file mode 100644
index 0000000..67a135a
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jetty-web.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC
+        "-//Mort Bay Consulting//DTD Configure//EN"
+        "http://www.eclipse.org/jetty/configure_9_0.dtd">
+<Configure class="org.eclipse.jetty.webapp.WebAppContext">
+    <Set name="contextPath">/dcae</Set>
+</Configure>
diff --git a/src/main/webapp/WEB-INF/rewrite.config b/src/main/webapp/WEB-INF/rewrite.config
new file mode 100644
index 0000000..90893bb
--- /dev/null
+++ b/src/main/webapp/WEB-INF/rewrite.config
@@ -0,0 +1,2 @@
+RewriteRule	^.*\..*$	-			[L]
+RewriteRule	^.*$		/index.html	[L]
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8ba3dc1
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+         version="3.0">
+
+    <display-name>DCAE_FE</display-name>
+
+
+</web-app>
diff --git a/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java b/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java
new file mode 100644
index 0000000..94cb2c0
--- /dev/null
+++ b/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java
@@ -0,0 +1,29 @@
+package org.onap.sdc.dcae.controller.proxy;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.servlet.http.HttpServletRequest;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+
+//TODO headers and cookies test (API)
+public class DcaeProxyTest {
+
+    private static final String BEHOST = "https://host.xxx.yyy:8443";
+    private DcaeProxy proxy = new DcaeProxy(BEHOST);
+    private final static HttpServletRequest servletRequest = Mockito.mock(HttpServletRequest.class);
+
+
+    @Test
+    public void testRewriteUrlWithQueryParams(){
+        String requestUrl = "/dcae/dcaeProxy/someBeApi?%20x=1&y=2";
+        String expectedUrl = BEHOST + "/dcae/someBeApi?%20x=1&y=2";
+        when(servletRequest.getRequestURI()).thenReturn(requestUrl);
+        String target = proxy.rewriteTarget(servletRequest);
+        assertTrue(target.equals(expectedUrl));
+    }
+
+}