SECCIÓN 2 - Descripción general

Esta parte del libro te enseña cómo aprovechar el paquete de R plotly para crear una variedad de gráficos interactivos. Hay dos formas principales de crear un objeto plotly: ya sea transformando un objeto ggplot2 (a través de ggplotly()) en un objeto plotly, o inicializando directamente un objeto plotly con plot_ly()/plot_geo()/plot_mapbox(). Ambos enfoques tienen fortalezas y debilidades algo complementarias, por lo que puede valer la pena aprender ambos enfoques. Además, ambos enfoques son una implementación de la Gramática de Gráficos y ambos están alimentados por la biblioteca de gráficos de JavaScript plotly.js, por lo que muchos de los mismos conceptos y herramientas que aprendes para una interfaz se pueden reutilizar en la otra.

Los capítulos posteriores dentro de esta parte de ‘Creación de vistas’ se adentran en ejemplos específicos y casos de uso, pero este capítulo introductorio describe algunos conceptos generales relacionados con plotly en general. También proporciona definiciones para la terminología utilizada a lo largo del libro e introduce algunos conceptos útiles para comprender la infraestructura detrás de cualquier objeto plotly. La mayoría de estos detalles no son necesarios necesariamente para comenzar con plotly, pero inevitablemente te ayudarán a resolver problemas, escribir un mejor código y hacer cosas más avanzadas con plotly.

#2.1 Introducción a plot_ly()

Cualquier gráfico hecho con el paquete de R plotly está impulsado por la biblioteca de JavaScript plotly.js. La función plot_ly() proporciona una interfaz ‘directa’ a plotly.js con algunas abstracciones adicionales para ayudar a reducir la escritura. Estas abstracciones, inspiradas en la Gramática de Gráficos y ggplot2, hacen que sea mucho más rápido iterar de un gráfico a otro, facilitando descubrir características interesantes en los datos (Wilkinson 2005; Wickham 2009). Para demostrarlo, usaremos plot_ly() para explorar el conjunto de datos de diamantes de ggplot2 y aprender un poco sobre cómo funcionan plotly y plotly.js en el camino.

# load the plotly R package
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# load the diamonds dataset from the ggplot2 package
data(diamonds, package = "ggplot2")
diamonds
## # A tibble: 53,940 × 10
##    carat cut       color clarity depth table price     x     y     z
##    <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
##  1  0.23 Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
##  2  0.21 Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
##  3  0.23 Good      E     VS1      56.9    65   327  4.05  4.07  2.31
##  4  0.29 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
##  5  0.31 Good      J     SI2      63.3    58   335  4.34  4.35  2.75
##  6  0.24 Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
##  7  0.24 Very Good I     VVS1     62.3    57   336  3.95  3.98  2.47
##  8  0.26 Very Good H     SI1      61.9    55   337  4.07  4.11  2.53
##  9  0.22 Fair      E     VS2      65.1    61   337  3.87  3.78  2.49
## 10  0.23 Very Good H     VS1      59.4    61   338  4     4.05  2.39
## # ℹ 53,930 more rows
#> # A tibble: 53,940 x 10
#>   carat cut   color clarity depth table price     x
#>   <dbl> <ord> <ord> <ord>   <dbl> <dbl> <int> <dbl>
#> 1 0.23  Ideal E     SI2      61.5    55   326  3.95
#> 2 0.21  Prem… E     SI1      59.8    61   326  3.89
#> 3 0.23  Good  E     VS1      56.9    65   327  4.05
#> 4 0.290 Prem… I     VS2      62.4    58   334  4.2 
#> 5 0.31  Good  J     SI2      63.3    58   335  4.34
#> 6 0.24  Very… J     VVS2     62.8    57   336  3.94
#> # … with 5.393e+04 more rows, and 2 more variables:
#> #   y <dbl>, z <dbl>

Si asignamos nombres de variables (por ejemplo, corte, claridad, etc.) a propiedades visuales (por ejemplo, x, y, color, etc.) dentro de plot_ly(), como se hace en la Figura 2.1, intentará encontrar una representación geométrica sensata de esa información para nosotros. Pronto cubriremos cómo especificar estas representaciones geométricas (así como otras codificaciones visuales) para crear diferentes tipos de gráficos.

# create three visualizations of the diamonds dataset
plot_ly(diamonds, x = ~cut)
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
plot_ly(diamonds, x = ~cut, y = ~clarity)
## No trace type specified:
##   Based on info supplied, a 'histogram2d' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram2d
plot_ly(diamonds, x = ~cut, color = ~clarity, colors = "Accent")
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram

FIGURA 2.1: Tres ejemplos de visualizar datos categóricos con plot_ly(): (arriba) mapear corte a x produce un gráfico de barras, (en medio) mapear corte y claridad a x e y produce un mapa de calor, y (abajo) mapear corte y claridad a x y color produce un gráfico de barras esquivado.

La función plot_ly() tiene numerosos argumentos que son únicos para el paquete R (por ejemplo, color, stroke, span, symbol, linetype, etc.) y facilitan codificar variables de datos (por ejemplo, claridad de diamantes) como propiedades visuales (por ejemplo, color). Por defecto, estos argumentos asignan valores de una variable de datos a un rango visual definido por la forma en plural del argumento. Por ejemplo, en el panel inferior de la Figura 2.1, color se utiliza para asignar cada nivel de claridad de diamante a un color diferente, luego colors se utiliza para especificar el rango de colores (que, en este caso, es la paleta de colores “Accent” del paquete RColorBrewer, pero también se pueden proporcionar códigos de color personalizados o una función de paleta de colores como colorRamp()). La Figura 2.2 proporciona un diagrama visual de cómo funciona este mapeo en particular, pero el mismo tipo de idea se puede aplicar a otras propiedades visuales como tamaño, forma, tipo de línea, etc.

FIGURA 2.2: Mapeo de valores de datos a un rango visual de colores.

Dado que estos argumentos asignan valores de datos a un rango visual por defecto, obtendrás resultados inesperados si intentas especificar el rango visual directamente, como en la parte superior de la Figura 2.3. Si deseas especificar el rango visual directamente, utiliza la función I() para declarar que este valor se tome “AsIs”, como se muestra en la parte inferior de la Figura 2.3. A lo largo de este libro, verás muchos ejemplos que aprovechan estos argumentos, especialmente en el Capítulo 3. Otra buena fuente para aprender más sobre estos argumentos (especialmente sus valores por defecto) es la página de documentación de R disponible al ingresar help(plot_ly) en tu consola de R.

# doesn't produce black bars
plot_ly(diamonds, x = ~cut, color = "black")
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
# produces red bars with black outline
plot_ly(
  diamonds, 
  x = ~cut, 
  color = I("red"), 
  stroke = I("black"), 
  span = I(2)
)
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram

FIGURA 2.3: Utilizando I() para suministrar propiedades visuales directamente en lugar de mapear valores a un rango visual. En la parte superior de esta figura, el valor ‘black’ se está asignando a un rango visual abarcado por colores (que, para datos discretos, por defecto es ‘Set2’).

El paquete plotly adopta un enfoque puramente funcional para una gramática de gráficos en capas (Wickham 2010). La parte puramente funcional significa que (casi) cada función anticipa un objeto plotly como entrada en su primer argumento y devuelve una versión modificada de ese objeto plotly. Además, esa modificación está completamente determinada por los valores de entrada a la función (es decir, no se basa en ningún efecto secundario, a diferencia, por ejemplo, de los gráficos base de R). Como ejemplo rápido, la función layout() anticipa un objeto plotly en su primer argumento y sus otros argumentos agregan y/o modifican varios componentes de diseño de ese objeto (por ejemplo, el título):

layout(
  plot_ly(diamonds, x = ~cut),
  title = "My beatiful histogram"
)
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram

Para gráficos más complejos que modifican un gráfico de plotly muchas veces, el código escrito de esta manera puede volverse engorroso de leer. En particular, tenemos que buscar la parte más interna de la expresión de R y luego trabajar hacia afuera hacia el resultado final. El operador %>% del paquete magrittr nos permite reorganizar este código para que podamos leer la secuencia de modificaciones de izquierda a derecha en lugar de de adentro hacia afuera (Bache y Wickham 2014). El operador %>% permite esto colocando el objeto en el lado izquierdo del %>% en el primer argumento de la función del lado derecho.

diamonds %>%
  plot_ly(x = ~cut) %>%
  layout(title = "My beatiful histogram")
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram

Además de layout() para agregar/modificar parte(s) del diseño del gráfico, también existen una familia de funciones add_*() (por ejemplo, add_histogram(), add_lines(), etc.) que definen cómo renderizar los datos en objetos geométricos. Tomando prestada la terminología de la gramática de gráficos en capas, estas funciones agregan una capa gráfica a un gráfico. Una capa puede considerarse como un grupo de elementos gráficos que pueden describirse suficientemente utilizando solo 5 componentes: datos, mapeos estéticos (por ejemplo, asignar claridad a color), una representación geométrica (por ejemplo, rectángulos, círculos, etc.), transformaciones estadísticas (por ejemplo, suma, media, etc.) y ajustes posicionales (por ejemplo, esquivar, apilar, etc.). Si estás prestando atención, notarás que en los ejemplos hasta ahora, ¡no hemos especificado una capa! La capa se ha agregado automáticamente para nosotros por plot_ly(). Para ser explícitos sobre lo que genera plot_ly(diamonds, x = ~cut), deberíamos agregar una capa add_histogram():

diamonds %>%
  plot_ly() %>% 
  add_histogram(x = ~cut)

Como aprenderás más en el Capítulo 5, plotly tiene tanto add_histogram() como add_bars(). La diferencia es que add_histogram() realiza estadísticas (es decir, un algoritmo de agrupación) dinámicamente en el navegador web, mientras que add_bars() requiere que las alturas de las barras estén predefinidas. Esto significa que, para replicar el último ejemplo con add_bars(), el número de observaciones debe calcularse de antemano.

diamonds %>%
  dplyr::count(cut) %>%
  plot_ly() %>% 
  add_bars(x = ~cut, y = ~n)

Existen numerosas otras funciones add_*() que calculan estadísticas en el navegador (por ejemplo, add_histogram2d(), add_contour(), add_boxplot(), etc.), pero la mayoría de las otras funciones no se consideran estadísticas. Hacer esta distinción puede no parecer útil ahora, pero tienen sus propios respectivos compromisos en cuanto a velocidad e interactividad. En general, las capas no estadísticas serán más rápidas y más receptivas en tiempo de ejecución (ya que requieren menos trabajo computacional), mientras que las capas estadísticas permiten más flexibilidad cuando se trata de interactividad del lado del cliente, como se cubre en el Capítulo 16. Prácticamente hablando, la diferencia en el rendimiento a menudo es insignificante: el cuello de botella más común ocurre al intentar renderizar muchos elementos gráficos a la vez (por ejemplo, un diagrama de dispersión con un millón de puntos). En esos escenarios, es probable que desees renderizar tu gráfico en Canvas en lugar de SVG (el valor predeterminado) a través de toWebGL() - para obtener más información sobre cómo mejorar el rendimiento, consulta el Capítulo 24.

En muchos escenarios, puede ser útil combinar múltiples capas gráficas en un solo gráfico. En este caso, es útil saber algunas cosas sobre plot_ly():

Los argumentos especificados en plot_ly() son globales, lo que significa que cualquier función add_*() descendiente hereda estos argumentos (a menos que inherit = FALSE).

Los verbos de manipulación de datos del paquete dplyr pueden ser utilizados para transformar los datos subyacentes de un objeto plotly.

Utilizando estas dos propiedades de plot_ly(), la Figura 2.4 demuestra cómo podríamos aprovechar estas propiedades de plot_ly() para hacer lo siguiente:

Asignar globalmente cut a x. Agregar una capa de histograma (hereda el x de plot_ly()). Utilizar verbos dplyr para modificar los datos subyacentes del objeto plotly. Aquí simplemente contamos el número de diamantes en cada categoría de corte. Agregar una capa de texto utilizando los recuentos resumidos. Observa que el mapeo x global, así como los otros mapeos locales a esta capa de texto (texto e y), reflejan valores de datos del paso 3.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
diamonds %>%
  plot_ly(x = ~cut) %>% 
  add_histogram() %>%
  group_by(cut) %>%
  summarise(n = n()) %>%
  add_text(
    text = ~scales::comma(n), y = ~n, 
    textposition = "top middle", 
    cliponaxis = FALSE
  )

FIGURA 2.4: Utilizando add_histogram(), add_text() y verbos de dplyr para componer un gráfico que aprovecha una forma cruda de los datos (por ejemplo, histograma) así como una versión resumida (por ejemplo, etiquetas de texto).

Antes de usar múltiples add_*() en un solo gráfico, asegúrate de que realmente deseas mostrar esas capas de información en el mismo conjunto de ejes. Si tiene sentido mostrar la información en los mismos ejes, considera hacer múltiples objetos plotly y combinarlos en un diseño similar a una cuadrícula usando subplot(), como se describe en el Capítulo 13. Además, al utilizar verbos de dplyr para modificar los datos subyacentes del objeto plotly, puedes usar la función plotly_data() para obtener los datos en cualquier momento, lo cual es principalmente útil para fines de depuración (es decir, inspeccionar los datos de una capa gráfica particular).

diamonds %>%
  plot_ly(x = ~cut) %>% 
  add_histogram() %>%
  group_by(cut) %>%
  summarise(n = n()) %>% 
  plotly_data()
## # A tibble: 5 × 2
##   cut           n
##   <ord>     <int>
## 1 Fair       1610
## 2 Good       4906
## 3 Very Good 12082
## 4 Premium   13791
## 5 Ideal     21551
#> # A tibble: 5 x 2
#>   cut           n
#>   <ord>     <int>
#> 1 Fair       1610
#> 2 Good       4906
#> 3 Very Good 12082
#> 4 Premium   13791
#> 5 Ideal     21551

Esta introducción a plot_ly() se ha centrado principalmente en conceptos únicos del paquete R plotly que son generalmente útiles para crear la mayoría de los tipos de visualizaciones de datos. La siguiente sección describe cómo plotly genera figuras de plotly.js y cómo inspeccionar la estructura de datos subyacente que plotly.js utiliza para renderizar el gráfico. Esta información no solo es útil para la depuración, sino que también es una buena manera de aprender cómo trabajar directamente con plotly.js, lo cual puede ser necesario para mejorar el rendimiento en aplicaciones shiny (Capítulo 17.3.1) y/o para agregar comportamientos personalizados con JavaScript (Capítulo 18).

#2.2 Introducción a plotly.js

Para recrear los gráficos en la Figura 2.1 utilizando plotly.js directamente, se requeriría significativamente más código y conocimiento de plotly.js. Dicho esto, aprender cómo plotly genera la figura subyacente de plotly.js es una introducción útil a plotly.js en sí mismo, y el conocimiento de plotly.js se vuelve útil cuando necesitas un control más flexible sobre plotly. Como ilustra la Figura 2.5, cuando imprimes cualquier objeto plotly, se aplica la función plotly_build() a ese objeto, y eso genera una lista R que sigue una sintaxis que plotly.js entiende. Esta sintaxis es una especificación de JavaScript Object Notation (JSON) que plotly.js utiliza para representar, serializar y renderizar gráficos web. Mucha de la documentación que encontrarás en línea sobre plotly (por ejemplo, la referencia de figuras en línea) implícitamente se refiere a esta especificación JSON, por lo que puede ser útil saber cómo “trabajar hacia atrás” desde esa documentación (es decir, traducir JSON a código R). Si deseas aprender detalles sobre la asignación entre R y JSON, el Capítulo 19 proporciona una introducción dirigida a programadores R, y Ooms (2014) ofrece una visión cohesiva del paquete jsonlite, que es lo que plotly utiliza para mapear entre R y JSON.

FIGURA 2.5: Un diagrama de lo que sucede cuando imprimes un gráfico de plotly.

Con fines ilustrativos, la Figura 2.5 muestra cómo este flujo de trabajo se aplica a un gráfico de barras simple (con valores suministrados directamente en lugar de una referencia de nombre de columna de datos como en la Figura 2.1), pero el mismo concepto se aplica a cualquier gráfico creado mediante plotly. Como sugiere el diagrama, tanto las funciones plotly_build() como plotly_json() se pueden utilizar para inspeccionar la estructura de datos subyacente tanto en el lado de R como en el de JSON. Por ejemplo, la Figura 2.6 muestra la parte de datos del JSON creado para el último gráfico en la Figura 2.6.

library(listviewer)
## Warning: package 'listviewer' was built under R version 4.3.3
p <- plot_ly(diamonds, x = ~cut, color = ~clarity, colors = "Accent")
plotly_json(p)
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## {
##   "visdat": {
##     "4460278de42": ["function () ", "plotlyVisDat"]
##   },
##   "cur_data": "4460278de42",
##   "attrs": {
##     "4460278de42": {
##       "x": {},
##       "color": {},
##       "colors": "Accent",
##       "alpha_stroke": 1,
##       "sizes": [10, 100],
##       "spans": [1, 20]
##     }
##   },
##   "layout": {
##     "margin": {
##       "b": 40,
##       "l": 60,
##       "t": 25,
##       "r": 10
##     },
##     "xaxis": {
##       "domain": [0, 1],
##       "automargin": true,
##       "title": "cut",
##       "type": "category",
##       "categoryorder": "array",
##       "categoryarray": ["Fair", "Good", "Very Good", "Premium", "Ideal"]
##     },
##     "yaxis": {
##       "domain": [0, 1],
##       "automargin": true
##     },
##     "hovermode": "closest",
##     "showlegend": true
##   },
##   "source": "A",
##   "config": {
##     "modeBarButtonsToAdd": ["hoverclosest", "hovercompare"],
##     "showSendToCloud": false
##   },
##   "data": [
##     {
##       "x": ["Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium"],
##       "type": "histogram",
##       "name": "IF",
##       "marker": {
##         "color": "rgba(102,102,102,1)",
##         "line": {
##           "color": "rgba(102,102,102,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(102,102,102,1)"
##       },
##       "error_y": {
##         "color": "rgba(102,102,102,1)"
##       },
##       "error_x": {
##         "color": "rgba(102,102,102,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Fair", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Premium", "Very Good", "Fair", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Fair", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Good", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Fair", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal"],
##       "type": "histogram",
##       "name": "VVS1",
##       "marker": {
##         "color": "rgba(191,91,23,1)",
##         "line": {
##           "color": "rgba(191,91,23,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(191,91,23,1)"
##       },
##       "error_y": {
##         "color": "rgba(191,91,23,1)"
##       },
##       "error_x": {
##         "color": "rgba(191,91,23,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Fair", "Fair", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Very Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Good", "Ideal", "Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Ideal", "Fair", "Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Good", "Fair", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Fair", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Fair", "Very Good", "Good", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Premium", "Very Good", "Fair", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal"],
##       "type": "histogram",
##       "name": "VVS2",
##       "marker": {
##         "color": "rgba(240,2,127,1)",
##         "line": {
##           "color": "rgba(240,2,127,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(240,2,127,1)"
##       },
##       "error_y": {
##         "color": "rgba(240,2,127,1)"
##       },
##       "error_x": {
##         "color": "rgba(240,2,127,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Fair", "Fair", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Fair", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Fair", "Fair", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Good", "Fair", "Ideal", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Fair", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Good", "Good", "Premium", "Good", "Fair", "Good", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Fair", "Premium", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Fair", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Fair", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Good", "Premium", "Fair", "Ideal", "Fair", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Fair", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Good", "Ideal", "Very Good", "Premium", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Fair", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Premium", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Fair", "Fair", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Good", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Good", "Fair", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Very Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Fair", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Good", "Fair", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Fair", "Fair", "Very Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Good", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Good", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Good", "Good", "Good", "Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Good", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Good", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Premium", "Ideal", "Premium", "Fair", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Fair", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Fair", "Fair", "Fair", "Fair", "Fair", "Fair", "Very Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Fair", "Fair", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Good", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Fair", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal"],
##       "type": "histogram",
##       "name": "VS1",
##       "marker": {
##         "color": "rgba(56,108,176,1)",
##         "line": {
##           "color": "rgba(56,108,176,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(56,108,176,1)"
##       },
##       "error_y": {
##         "color": "rgba(56,108,176,1)"
##       },
##       "error_x": {
##         "color": "rgba(56,108,176,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Premium", "Fair", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Very Good", "Good", "Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Fair", "Good", "Very Good", "Premium", "Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Good", "Ideal", "Premium", "Good", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Good", "Fair", "Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Good", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Fair", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Fair", "Very Good", "Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Fair", "Fair", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Good", "Fair", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Fair", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Fair", "Very Good", "Good", "Very Good", "Good", "Good", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Premium", "Very Good", "Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Good", "Premium", "Good", "Premium", "Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Good", "Good", "Premium", "Very Good", "Fair", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Fair", "Good", "Good", "Good", "Fair", "Very Good", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Fair", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Good", "Good", "Very Good", "Fair", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Fair", "Very Good", "Good", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Fair", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Fair", "Premium", "Premium", "Premium", "Very Good", "Fair", "Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Premium", "Fair", "Fair", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Good", "Very Good", "Good", "Good", "Fair", "Fair", "Good", "Good", "Good", "Premium", "Good", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Good", "Fair", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Ideal", "Good", "Good", "Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Good", "Ideal", "Fair", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Fair", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Fair", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Fair", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Fair", "Fair", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Good", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Fair", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Fair", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Good", "Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Good", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Good", "Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Fair", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Fair", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Very Good", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Fair", "Good", "Good", "Ideal", "Good", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Ideal", "Fair", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Good", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Fair", "Good", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Fair", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Fair", "Ideal", "Premium", "Fair", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Fair", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Good", "Good", "Premium", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Fair", "Very Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Very Good", "Fair", "Ideal", "Fair", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Good", "Good", "Premium", "Ideal", "Good", "Fair", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Fair", "Very Good", "Good", "Premium", "Fair", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Good", "Very Good", "Fair", "Fair", "Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Very Good", "Fair", "Good", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Good", "Good", "Very Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good"],
##       "type": "histogram",
##       "name": "VS2",
##       "marker": {
##         "color": "rgba(255,255,153,1)",
##         "line": {
##           "color": "rgba(255,255,153,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(255,255,153,1)"
##       },
##       "error_y": {
##         "color": "rgba(255,255,153,1)"
##       },
##       "error_x": {
##         "color": "rgba(255,255,153,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Premium", "Very Good", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Premium", "Ideal", "Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Good", "Fair", "Fair", "Ideal", "Good", "Good", "Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Fair", "Fair", "Premium", "Good", "Fair", "Fair", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Fair", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Fair", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Fair", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Fair", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Fair", "Ideal", "Fair", "Very Good", "Good", "Fair", "Fair", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Fair", "Fair", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Fair", "Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Good", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Fair", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Fair", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Very Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Very Good", "Fair", "Good", "Very Good", "Premium", "Fair", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Good", "Good", "Good", "Very Good", "Premium", "Fair", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Good", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Fair", "Premium", "Premium", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Good", "Good", "Premium", "Good", "Very Good", "Good", "Good", "Very Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Fair", "Fair", "Good", "Good", "Good", "Good", "Fair", "Good", "Good", "Very Good", "Very Good", "Good", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Good", "Very Good", "Good", "Fair", "Fair", "Good", "Premium", "Ideal", "Good", "Good", "Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Good", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Fair", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Good", "Very Good", "Good", "Premium", "Premium", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Fair", "Good", "Premium", "Very Good", "Good", "Good", "Premium", "Fair", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Fair", "Fair", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Good", "Ideal", "Good", "Very Good", "Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Very Good", "Fair", "Fair", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Fair", "Very Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Good", "Good", "Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Fair", "Very Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Very Good", "Fair", "Fair", "Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Fair", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Fair", "Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Premium", "Premium", "Very Good", "Fair", "Very Good", "Premium", "Good", "Good", "Good", "Premium", "Very Good", "Fair", "Premium", "Good", "Very Good", "Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Good", "Good", "Fair", "Premium", "Premium", "Good", "Very Good", "Ideal", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Very Good", "Fair", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Fair", "Fair", "Ideal", "Good", "Very Good", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Good", "Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Good", "Fair", "Premium", "Good", "Good", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Good", "Fair", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Good", "Fair", "Fair", "Fair", "Premium", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Fair", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Good", "Fair", "Fair", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Fair", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Good", "Good", "Premium", "Premium", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Good", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Premium", "Good", "Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Fair", "Premium", "Good", "Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Very Good", "Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Good", "Fair", "Good", "Premium", "Fair", "Good", "Premium", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Premium", "Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Very Good", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Premium", "Very Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Good", "Ideal", "Good", "Premium", "Good", "Good", "Fair", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Good", "Very Good", "Good", "Premium", "Good", "Good", "Good", "Good", "Good", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Good", "Ideal", "Ideal", "Good", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Fair", "Fair", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Fair", "Fair", "Premium", "Fair", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Fair", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Fair", "Fair", "Fair", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Good", "Good", "Fair", "Fair", "Good", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Good", "Ideal", "Good", "Premium", "Good", "Fair", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Good", "Good", "Premium", "Very Good", "Good", "Premium", "Good", "Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Good", "Very Good", "Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Good", "Ideal", "Good", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Good", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Good", "Good", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Fair", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Good", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Good", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Good", "Ideal", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Fair", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Fair", "Premium", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Fair", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Good", "Ideal", "Premium", "Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Good", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Fair", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Fair", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Premium", "Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Premium", "Good", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Good", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Good", "Premium", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Good", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Good", "Very Good", "Fair", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Good", "Very Good", "Ideal", "Good", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Good", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Fair", "Fair", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Fair", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Good", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Fair", "Premium", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Fair", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Good", "Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Good", "Good", "Good", "Good", "Very Good", "Good", "Premium", "Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Good", "Good", "Good", "Very Good", "Good", "Very Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Good", "Good", "Ideal", "Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Good", "Premium", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Good", "Good", "Good", "Very Good", "Good", "Good", "Good", "Good", "Good", "Good", "Premium", "Good", "Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Fair", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Fair", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Fair", "Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Very Good", "Premium", "Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Fair", "Good", "Premium", "Fair", "Very Good", "Premium", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Premium", "Fair", "Good", "Fair", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Fair", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Very Good", "Good", "Very Good", "Fair", "Premium", "Good", "Premium", "Premium", "Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Good", "Very Good", "Good", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Fair", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Premium", "Very Good", "Premium", "Good", "Good", "Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Very Good", "Ideal", "Good", "Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Premium", "Good", "Very Good", "Premium", "Good", "Good", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Fair", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Good", "Premium", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Fair", "Very Good", "Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Fair", "Fair", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Fair", "Fair", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Good", "Very Good", "Good", "Good", "Ideal", "Good", "Good", "Ideal", "Premium", "Fair", "Premium", "Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Fair", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Good", "Good", "Fair", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Good", "Good", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Good", "Ideal", "Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Fair", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Ideal", "Ideal", "Good", "Fair", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Fair", "Premium", "Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Good", "Fair", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Fair", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Fair", "Premium", "Good", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Good", "Fair", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Fair", "Good", "Good", "Good", "Good", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Fair", "Premium", "Fair", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Fair", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Good", "Very Good", "Very Good", "Very Good", "Fair", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Fair", "Ideal", "Good", "Very Good", "Good", "Good", "Very Good", "Fair", "Good", "Good", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Fair", "Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Fair", "Good", "Good", "Fair", "Ideal", "Very Good", "Premium", "Premium", "Good", "Good", "Ideal", "Good", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Good", "Ideal", "Good", "Good", "Good", "Fair", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Good", "Fair", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Good", "Premium", "Good", "Very Good", "Fair", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Fair", "Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Good", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Good", "Ideal", "Fair", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Fair", "Fair", "Premium", "Fair", "Premium", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Good", "Ideal", "Good", "Good", "Very Good", "Good", "Fair", "Fair", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Fair", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Fair", "Very Good", "Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Good", "Good", "Premium", "Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Fair", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Good", "Fair", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Ideal", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good"],
##       "type": "histogram",
##       "name": "SI1",
##       "marker": {
##         "color": "rgba(253,192,134,1)",
##         "line": {
##           "color": "rgba(253,192,134,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(253,192,134,1)"
##       },
##       "error_y": {
##         "color": "rgba(253,192,134,1)"
##       },
##       "error_x": {
##         "color": "rgba(253,192,134,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Ideal", "Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Fair", "Ideal", "Premium", "Fair", "Good", "Very Good", "Fair", "Ideal", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Premium", "Fair", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Fair", "Very Good", "Fair", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Fair", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Fair", "Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Fair", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Fair", "Good", "Fair", "Premium", "Very Good", "Fair", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Fair", "Ideal", "Fair", "Very Good", "Premium", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Good", "Good", "Fair", "Premium", "Very Good", "Ideal", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Fair", "Very Good", "Very Good", "Good", "Good", "Very Good", "Good", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Fair", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Fair", "Fair", "Premium", "Very Good", "Fair", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Premium", "Good", "Very Good", "Good", "Good", "Very Good", "Good", "Ideal", "Good", "Good", "Good", "Fair", "Premium", "Fair", "Fair", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Good", "Fair", "Fair", "Fair", "Premium", "Very Good", "Good", "Good", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Good", "Fair", "Premium", "Very Good", "Very Good", "Good", "Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Fair", "Fair", "Very Good", "Fair", "Ideal", "Fair", "Premium", "Ideal", "Fair", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Good", "Very Good", "Ideal", "Good", "Fair", "Good", "Ideal", "Fair", "Ideal", "Ideal", "Good", "Premium", "Fair", "Fair", "Fair", "Fair", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Premium", "Fair", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Ideal", "Premium", "Good", "Very Good", "Good", "Premium", "Fair", "Very Good", "Ideal", "Good", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Fair", "Fair", "Ideal", "Premium", "Good", "Good", "Good", "Good", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Fair", "Good", "Good", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Premium", "Good", "Good", "Very Good", "Good", "Ideal", "Fair", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Good", "Good", "Good", "Good", "Good", "Very Good", "Fair", "Premium", "Premium", "Premium", "Good", "Fair", "Good", "Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Good", "Good", "Fair", "Premium", "Very Good", "Good", "Very Good", "Good", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Good", "Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Good", "Good", "Very Good", "Premium", "Good", "Premium", "Good", "Premium", "Fair", "Very Good", "Good", "Fair", "Premium", "Fair", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Ideal", "Fair", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Good", "Fair", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Good", "Fair", "Ideal", "Good", "Very Good", "Good", "Good", "Fair", "Fair", "Good", "Fair", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Good", "Good", "Good", "Good", "Fair", "Good", "Fair", "Fair", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Premium", "Good", "Good", "Good", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Very Good", "Fair", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Good", "Fair", "Fair", "Good", "Very Good", "Premium", "Fair", "Good", "Premium", "Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Fair", "Premium", "Good", "Premium", "Good", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Premium", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Good", "Premium", "Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Premium", "Premium", "Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Premium", "Good", "Fair", "Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Fair", "Good", "Premium", "Ideal", "Fair", "Very Good", "Fair", "Very Good", "Fair", "Premium", "Fair", "Good", "Good", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Fair", "Fair", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Fair", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Fair", "Fair", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Fair", "Very Good", "Fair", "Premium", "Good", "Fair", "Good", "Premium", "Good", "Good", "Very Good", "Good", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Fair", "Premium", "Premium", "Very Good", "Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Good", "Good", "Premium", "Fair", "Premium", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Good", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Fair", "Premium", "Premium", "Good", "Very Good", "Good", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Good", "Good", "Very Good", "Premium", "Very Good", "Good", "Premium", "Good", "Fair", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Good", "Good", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Fair", "Good", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Good", "Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Fair", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Very Good", "Good", "Fair", "Premium", "Good", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Premium", "Premium", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Fair", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Fair", "Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Fair", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Good", "Good", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Fair", "Ideal", "Good", "Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Good", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Premium", "Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Good", "Very Good", "Good", "Fair", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Good", "Fair", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Premium", "Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Fair", "Premium", "Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Fair", "Ideal", "Good", "Fair", "Good", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Good", "Ideal", "Good", "Very Good", "Good", "Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Very Good", "Premium", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Good", "Fair", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Good", "Ideal", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Fair", "Fair", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Good", "Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Fair", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Good", "Premium", "Fair", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Very Good", "Good", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Fair", "Fair", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Good", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Fair", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Fair", "Very Good", "Ideal", "Premium", "Premium", "Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Fair", "Good", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Good", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Ideal", "Good", "Fair", "Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Good", "Good", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Fair", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Fair", "Premium", "Good", "Premium", "Good", "Very Good", "Very Good", "Good", "Good", "Premium", "Fair", "Premium", "Very Good", "Very Good", "Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Good", "Premium", "Good", "Ideal", "Premium", "Fair", "Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Good", "Good", "Good", "Ideal", "Very Good", "Good", "Good", "Good", "Good", "Good", "Good", "Good", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Fair", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Good", "Ideal", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Fair", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Good", "Ideal", "Fair", "Good", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Premium", "Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Good", "Ideal", "Very Good", "Ideal", "Fair", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Good", "Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Fair", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Good", "Very Good", "Fair", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Ideal", "Fair", "Good", "Very Good", "Fair", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Premium", "Fair", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Fair", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Good", "Fair", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Ideal", "Good", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Premium", "Good", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Very Good", "Premium", "Premium", "Fair", "Premium", "Fair", "Premium", "Ideal", "Premium", "Premium", "Fair", "Fair", "Premium", "Premium", "Good", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Very Good", "Good", "Fair", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Good", "Good", "Premium", "Very Good", "Ideal", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Fair", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Premium", "Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Premium", "Good", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Fair", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Fair", "Premium", "Premium", "Premium", "Fair", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Fair", "Premium", "Fair", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Premium", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Fair", "Premium", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Fair", "Very Good", "Fair", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Good", "Fair", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Good", "Good", "Ideal", "Premium", "Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Good", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Very Good", "Fair", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Fair", "Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Fair", "Fair", "Good", "Good", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Good", "Premium", "Very Good", "Good", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Good", "Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Fair", "Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Good", "Ideal", "Very Good", "Good", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Fair", "Premium", "Good", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Fair", "Good", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Good", "Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Good", "Fair", "Very Good", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Good", "Good", "Ideal", "Premium", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Fair", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Premium", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Premium", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Fair", "Premium", "Fair", "Premium", "Fair", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Good", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Fair", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Good", "Premium", "Good", "Good", "Good", "Good", "Fair", "Ideal", "Very Good", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Fair", "Fair", "Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Good", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Good", "Good", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Premium", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Premium", "Ideal", "Premium", "Good", "Good", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Ideal", "Good", "Fair", "Ideal", "Good", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Fair", "Ideal", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Good", "Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Ideal", "Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Good", "Good", "Premium", "Very Good", "Fair", "Very Good", "Fair", "Very Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Premium", "Premium", "Good", "Premium", "Very Good", "Ideal", "Good", "Good", "Premium", "Premium", "Fair", "Ideal", "Fair", "Fair", "Premium", "Fair", "Good", "Very Good", "Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Fair", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Good", "Very Good", "Fair", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Good", "Good", "Premium", "Very Good", "Very Good", "Good", "Very Good", "Fair", "Premium", "Very Good", "Good", "Good", "Very Good", "Very Good", "Very Good", "Fair", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Very Good", "Good", "Premium", "Premium", "Fair", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Ideal", "Good", "Good", "Premium", "Very Good", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Premium", "Good", "Premium", "Premium", "Good", "Good", "Good", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Fair", "Very Good", "Very Good", "Good", "Ideal", "Ideal", "Very Good", "Very Good", "Good", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Good", "Ideal", "Good", "Fair", "Ideal", "Good", "Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Good", "Ideal", "Premium", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Very Good", "Fair", "Ideal", "Very Good", "Fair", "Very Good", "Premium", "Fair", "Fair", "Premium", "Fair", "Very Good", "Premium", "Good", "Very Good", "Very Good", "Fair", "Good", "Good", "Premium", "Very Good", "Fair", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Ideal", "Good", "Good", "Premium", "Ideal", "Fair", "Good", "Very Good", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Premium", "Very Good", "Fair", "Ideal", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Very Good", "Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Fair", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Premium", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Good", "Premium", "Fair", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Premium", "Good", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Good", "Very Good", "Fair", "Fair", "Good", "Ideal", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Fair", "Premium", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Good", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Fair", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Premium", "Ideal", "Premium", "Good", "Premium", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Fair", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Fair", "Fair", "Ideal", "Fair", "Fair", "Premium", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Very Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Ideal", "Good", "Good", "Good", "Ideal", "Very Good", "Premium", "Very Good", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Fair", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Good", "Fair", "Very Good", "Ideal", "Very Good", "Premium", "Good", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Ideal", "Good", "Very Good", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Premium", "Premium", "Premium", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Good", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Fair", "Fair", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Good", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Good", "Good", "Very Good", "Fair", "Good", "Very Good", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Fair", "Premium", "Premium", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Good", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Good", "Very Good", "Very Good", "Premium", "Very Good", "Premium", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Good", "Fair", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Good", "Ideal", "Premium", "Ideal", "Premium", "Very Good", "Very Good", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Ideal", "Good", "Good", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Good", "Ideal", "Good", "Ideal", "Good", "Good", "Very Good", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Good", "Ideal", "Fair", "Premium", "Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Ideal", "Good", "Good", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Premium", "Good", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Ideal", "Premium", "Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Good", "Premium", "Premium", "Very Good", "Ideal", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Very Good", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Fair", "Ideal", "Ideal", "Premium", "Premium", "Good", "Very Good", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Fair", "Premium", "Fair", "Fair", "Fair", "Premium", "Fair", "Good", "Fair", "Fair", "Good", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Premium", "Fair", "Good", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Ideal", "Ideal", "Premium", "Good", "Very Good", "Premium", "Premium", "Fair", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Good", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Fair", "Good", "Good", "Very Good", "Good", "Ideal", "Very Good", "Ideal", "Very Good", "Very Good", "Very Good", "Very Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Good", "Ideal", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Fair", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Good", "Good", "Ideal", "Ideal", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Premium", "Fair", "Premium", "Good", "Very Good", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Very Good", "Good", "Ideal", "Good", "Very Good", "Very Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Very Good", "Very Good", "Premium", "Fair", "Premium", "Good", "Ideal", "Very Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Very Good", "Premium", "Fair", "Fair", "Premium", "Ideal", "Ideal", "Very Good", "Ideal", "Premium", "Premium", "Ideal"],
##       "type": "histogram",
##       "name": "SI2",
##       "marker": {
##         "color": "rgba(190,174,212,1)",
##         "line": {
##           "color": "rgba(190,174,212,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(190,174,212,1)"
##       },
##       "error_y": {
##         "color": "rgba(190,174,212,1)"
##       },
##       "error_x": {
##         "color": "rgba(190,174,212,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     },
##     {
##       "x": ["Premium", "Very Good", "Premium", "Fair", "Ideal", "Premium", "Fair", "Fair", "Very Good", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Good", "Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Fair", "Very Good", "Ideal", "Ideal", "Premium", "Fair", "Very Good", "Good", "Fair", "Premium", "Fair", "Premium", "Very Good", "Premium", "Fair", "Very Good", "Fair", "Fair", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Good", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Premium", "Good", "Good", "Good", "Good", "Premium", "Good", "Premium", "Ideal", "Premium", "Very Good", "Good", "Premium", "Premium", "Very Good", "Ideal", "Ideal", "Ideal", "Premium", "Fair", "Good", "Premium", "Very Good", "Premium", "Good", "Very Good", "Premium", "Very Good", "Ideal", "Very Good", "Good", "Premium", "Premium", "Ideal", "Very Good", "Very Good", "Premium", "Very Good", "Ideal", "Ideal", "Premium", "Premium", "Good", "Ideal", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Good", "Good", "Ideal", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Premium", "Good", "Good", "Fair", "Ideal", "Ideal", "Very Good", "Very Good", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Premium", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Ideal", "Ideal", "Fair", "Very Good", "Good", "Premium", "Ideal", "Premium", "Good", "Ideal", "Ideal", "Premium", "Fair", "Fair", "Ideal", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Fair", "Premium", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Premium", "Ideal", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Very Good", "Premium", "Ideal", "Very Good", "Ideal", "Premium", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Good", "Premium", "Premium", "Ideal", "Premium", "Premium", "Premium", "Good", "Ideal", "Premium", "Very Good", "Good", "Premium", "Ideal", "Ideal", "Ideal", "Fair", "Premium", "Good", "Fair", "Ideal", "Fair", "Good", "Ideal", "Ideal", "Fair", "Premium", "Fair", "Fair", "Good", "Premium", "Good", "Fair", "Ideal", "Premium", "Fair", "Premium", "Ideal", "Premium", "Good", "Premium", "Ideal", "Ideal", "Very Good", "Good", "Ideal", "Fair", "Fair", "Very Good", "Fair", "Fair", "Fair", "Ideal", "Ideal", "Good", "Fair", "Fair", "Fair", "Fair", "Good", "Premium", "Good", "Premium", "Fair", "Premium", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Fair", "Very Good", "Ideal", "Premium", "Ideal", "Very Good", "Premium", "Fair", "Premium", "Fair", "Good", "Fair", "Good", "Premium", "Ideal", "Fair", "Fair", "Ideal", "Fair", "Ideal", "Good", "Fair", "Fair", "Fair", "Good", "Fair", "Very Good", "Ideal", "Fair", "Fair", "Fair", "Fair", "Good", "Very Good", "Fair", "Good", "Fair", "Premium", "Very Good", "Good", "Good", "Fair", "Very Good", "Fair", "Fair", "Good", "Very Good", "Premium", "Very Good", "Good", "Good", "Ideal", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Ideal", "Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Fair", "Premium", "Fair", "Premium", "Fair", "Fair", "Premium", "Good", "Fair", "Premium", "Ideal", "Fair", "Premium", "Good", "Ideal", "Premium", "Fair", "Very Good", "Good", "Fair", "Premium", "Fair", "Very Good", "Fair", "Fair", "Ideal", "Fair", "Good", "Fair", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Premium", "Good", "Fair", "Fair", "Fair", "Premium", "Very Good", "Very Good", "Fair", "Good", "Good", "Ideal", "Fair", "Premium", "Ideal", "Fair", "Fair", "Fair", "Ideal", "Ideal", "Premium", "Ideal", "Fair", "Fair", "Ideal", "Fair", "Premium", "Ideal", "Premium", "Premium", "Premium", "Ideal", "Ideal", "Very Good", "Fair", "Fair", "Good", "Premium", "Fair", "Fair", "Very Good", "Good", "Premium", "Very Good", "Good", "Premium", "Premium", "Premium", "Premium", "Ideal", "Fair", "Fair", "Ideal", "Ideal", "Premium", "Very Good", "Premium", "Premium", "Fair", "Fair", "Very Good", "Fair", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Very Good", "Premium", "Ideal", "Fair", "Premium", "Ideal", "Fair", "Good", "Ideal", "Very Good", "Ideal", "Good", "Ideal", "Fair", "Premium", "Ideal", "Ideal", "Ideal", "Ideal", "Premium", "Premium", "Premium", "Fair", "Very Good", "Premium", "Ideal", "Good", "Fair", "Fair", "Fair", "Ideal", "Good", "Fair", "Premium", "Fair", "Premium", "Very Good", "Fair", "Fair", "Premium", "Premium", "Premium", "Premium", "Fair", "Premium", "Premium", "Premium", "Premium", "Good", "Good", "Premium", "Premium", "Fair", "Fair", "Fair", "Very Good", "Good", "Premium", "Very Good", "Premium", "Premium", "Fair", "Premium", "Fair", "Fair", "Fair", "Fair", "Fair", "Ideal", "Fair", "Fair", "Fair", "Fair", "Fair", "Good", "Fair", "Ideal", "Premium", "Premium", "Premium", "Good", "Very Good", "Fair", "Fair", "Fair", "Ideal", "Fair", "Fair", "Fair", "Ideal", "Good", "Fair", "Fair", "Fair", "Premium", "Good", "Premium", "Very Good", "Fair", "Ideal", "Good", "Fair", "Good", "Fair", "Premium", "Premium", "Fair", "Fair", "Good", "Fair", "Fair", "Ideal", "Fair", "Fair", "Good", "Good", "Fair", "Very Good", "Premium", "Premium", "Good", "Good", "Fair", "Very Good", "Fair", "Ideal", "Good", "Fair", "Fair", "Fair", "Very Good", "Fair", "Fair", "Fair", "Fair", "Good", "Premium", "Very Good", "Very Good", "Premium", "Fair", "Fair", "Premium", "Premium", "Good", "Premium", "Fair", "Premium", "Fair", "Premium", "Fair", "Fair", "Fair", "Fair", "Very Good", "Very Good", "Fair", "Fair", "Good", "Fair", "Fair", "Ideal", "Fair", "Premium", "Fair", "Fair", "Fair", "Fair", "Premium", "Fair", "Fair", "Fair", "Ideal", "Premium", "Fair", "Ideal", "Ideal", "Fair", "Fair", "Ideal", "Premium", "Fair", "Fair", "Fair", "Good", "Premium", "Premium", "Good", "Fair", "Fair", "Premium", "Fair", "Fair", "Fair", "Premium", "Very Good", "Premium", "Premium", "Premium", "Good", "Fair", "Very Good", "Good", "Very Good", "Fair", "Fair", "Fair", "Good", "Fair", "Premium", "Premium", "Very Good", "Very Good", "Premium", "Good", "Good", "Good", "Ideal", "Fair", "Very Good", "Premium", "Premium", "Premium", "Fair", "Fair", "Very Good", "Fair", "Fair", "Fair", "Premium", "Fair", "Good", "Good", "Fair", "Premium", "Premium", "Fair", "Good", "Good", "Good", "Fair", "Ideal", "Premium", "Ideal", "Premium", "Premium", "Ideal", "Very Good", "Fair", "Fair", "Fair", "Fair", "Premium", "Premium", "Premium", "Premium", "Premium", "Fair", "Fair", "Fair", "Ideal", "Premium", "Premium", "Premium", "Premium", "Fair", "Fair", "Premium", "Good", "Ideal", "Fair", "Ideal", "Fair", "Premium", "Premium", "Good", "Ideal", "Very Good", "Fair", "Premium", "Ideal", "Premium", "Fair", "Good", "Very Good", "Premium", "Premium", "Premium", "Very Good", "Good", "Fair", "Very Good", "Good"],
##       "type": "histogram",
##       "name": "I1",
##       "marker": {
##         "color": "rgba(127,201,127,1)",
##         "line": {
##           "color": "rgba(127,201,127,1)"
##         }
##       },
##       "textfont": {
##         "color": "rgba(127,201,127,1)"
##       },
##       "error_y": {
##         "color": "rgba(127,201,127,1)"
##       },
##       "error_x": {
##         "color": "rgba(127,201,127,1)"
##       },
##       "xaxis": "x",
##       "yaxis": "y",
##       "frame": null
##     }
##   ],
##   "highlight": {
##     "on": "plotly_click",
##     "persistent": false,
##     "dynamic": false,
##     "selectize": false,
##     "opacityDim": 0.20000000000000001,
##     "selected": {
##       "opacity": 1
##     },
##     "debounce": 0
##   },
##   "shinyEvents": ["plotly_hover", "plotly_click", "plotly_selected", "plotly_relayout", "plotly_brushed", "plotly_brushing", "plotly_clickannotation", "plotly_doubleclick", "plotly_deselect", "plotly_afterplot", "plotly_sunburstclick"],
##   "base_url": "https://plot.ly"
## }

FIGURA 2.6: Una parte de los datos JSON detrás del gráfico inferior de la Figura 2.1. Este gráfico de barras esquivado tiene 8 capas de datos (es decir, 8 trazas) - una para cada nivel de claridad.

En la terminología de plotly.js, una figura tiene dos componentes clave: datos (también conocidos como trazas) y un diseño. Una traza define un mapeo de datos y visuales. Cada traza tiene un tipo (por ejemplo, histograma, gráfico circular, dispersión, etc.) y el tipo de traza determina qué otros atributos (es decir, propiedades visuales y/o interactivas, como x, hoverinfo, nombre) están disponibles para controlar el mapeo de la traza. Es decir, no todos los atributos de traza están disponibles para cada tipo de traza, pero muchos atributos (por ejemplo, el nombre de la traza) están disponibles en cada tipo de traza y sirven para un propósito similar. Desde la Figura 2.6, podemos ver que se necesitan múltiples trazas para generar el gráfico de barras esquivado, pero en lugar de hacer clic a través de un visor de JSON, a veces es más fácil usar plotly_build() y realizar cálculos en la definición de figura de plotly.js para verificar que ciertas cosas existen. Dado que plotly utiliza el estándar htmlwidgets, la definición real de la figura de plotly.js aparece bajo un elemento de lista llamado x (Vaidyanathan et al. 2016).

# use plotly_build() to get at the plotly.js definition
# behind *any* plotly object
b <- plotly_build(p)
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
# Confirm there 8 traces
length(b$x$data)
## [1] 8
#> [1] 8

# Extract the `name` of each trace. plotly.js uses `name` to 
# populate legend entries and tooltips
purrr::map_chr(b$x$data, "name")
## [1] "IF"   "VVS1" "VVS2" "VS1"  "VS2"  "SI1"  "SI2"  "I1"
#> [1] "IF" "VVS1" "VVS2" "VS1" "VS2" "SI1" "SI2" "I1" 

# Every trace has a type of histogram
unique(purrr::map_chr(b$x$data, "type"))
## [1] "histogram"
#> [1] "histogram"

Aquí hemos aprendido que plotly crea 8 trazas de histograma para generar el gráfico de barras esquivado: una traza para cada nivel de claridad. ¿Por qué una traza por categoría? Como se ilustra en la Figura 2.7, hay dos razones principales: para llenar una herramienta de información sobre herramientas y una entrada de leyenda para cada nivel de claridad.

FIGURA 2.7: Aprovechando dos características interactivas que requieren una traza por nivel de claridad: (1) Usando el modo ‘Comparar datos al pasar el cursor’ para obtener recuentos para cada nivel de claridad para un nivel de corte dado y (2) Usando la capacidad de ocultar/mostrar niveles de claridad a través de sus entradas de leyenda. Para la interactividad, consulta https://plotly-r.com/interactives/intro-show-hide.html

Si investigamos más a fondo, notaremos que color y colors no son oficialmente parte de la definición de figura de plotly.js: la función plotly_build() ha transformado efectivamente esa información en una definición de figura de plotly.js sensata (por ejemplo, marker.color contiene los códigos de color de las barras reales). De hecho, el argumento color en plot_ly() es solo un ejemplo de una abstracción que el paquete R ha construido sobre plotly.js para facilitar la asignación de valores de datos a atributos visuales, y muchos de estos se cubren en el Capítulo 3.

#2.3 Introducción a ggplotly()

La función ggplotly() del paquete plotly tiene la capacidad de traducir ggplot2 a plotly. Esta funcionalidad puede ser realmente útil para agregar rápidamente interactividad a tu flujo de trabajo existente de ggplot2. Además, incluso si conoces bien plot_ly() y plotly.js, ggplotly() aún puede ser deseable para crear visualizaciones que no necesariamente son fáciles de lograr sin ella. Para demostrarlo, exploremos la relación entre el precio y otras variables del conocido conjunto de datos de diamantes.

La agrupación hexagonal (es decir, geom_hex()) es una forma útil de visualizar una densidad 2D, como la relación entre el precio y el quilate como se muestra en la Figura 2.8. De la Figura 2.8, podemos ver que hay una fuerte relación lineal positiva entre el logaritmo del quilate y el precio. También muestra que para muchos, el quilate solo se redondea a un número particular (indicado por las bandas azules claras) y no hay diamantes con precios alrededor de $1500. Hacer este gráfico interactivo facilita la decodificación de los colores hexagonales en los recuentos que representan.

p <- ggplot(diamonds, aes(x = log(carat), y = log(price))) + 
  geom_hex(bins = 100)
ggplotly(p)

FIGURE 2.8: Un gráfico de agrupación hexagonal del quilate de diamantes versus el precio.

A menudo utilizo ggplotly() sobre plot_ly() para aprovechar la interfaz coherente y expresiva de ggplot2 para explorar resúmenes estadísticos a través de grupos. Por ejemplo, al incluir una variable de color discreta (por ejemplo, cut) con geom_freqpoly(), obtienes un polígono de frecuencia para cada nivel de esa variable. Esta capacidad para generar rápidamente codificaciones visuales de resúmenes estadísticos a través de un número arbitrario de grupos funciona básicamente para cualquier geom (por ejemplo, geom_boxplot(), geom_histogram(), geom_density(), etc.) y es una característica clave de ggplot2.

p <- ggplot(diamonds, aes(x = log(price), color = clarity)) + 
    geom_freqpoly()
ggplotly(p)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

FIGURE 2.9: Polígonos de frecuencia del precio del diamante por claridad del diamante. Esta visualización indica que puede haber efectos principales significativos.

Ahora, para ver cómo varía el precio con tanto el corte como la claridad, podríamos repetir esta misma visualización para cada nivel de corte. Aquí es donde entra en juego facet_wrap() de ggplot2. Además, para facilitar las comparaciones, podemos hacer que geom_freqpoly() muestre frecuencias relativas en lugar de absolutas. Al hacer este gráfico interactivo, podemos comparar más fácilmente niveles particulares de claridad (como se muestra en la Figura 2.10) aprovechando las capacidades de filtrado de la leyenda.

p <- ggplot(diamonds, aes(x = log(price), color = clarity)) + 
    geom_freqpoly(stat = "density") + 
    facet_wrap(~cut)
ggplotly(p)

FIGURE 2.10: Precio del diamante por claridad y corte. Para la versión interactiva, consulta https://plotly-r.com/interactives/freqpoly-facet.html

Además de admitir la mayoría de la API principal de ggplot2, ggplotly() puede convertir automáticamente cualquier paquete de extensión de ggplot2 que devuelva un objeto ggplot2 ‘estándar’. Por estándar, me refiero a que el objeto está compuesto por las estructuras de datos principales de ggplot2 y no es el resultado de geoms personalizados. Algunos ejemplos excelentes de paquetes de R que extienden ggplot2 utilizando estructuras de datos principales son ggforce, naniar y GGally (Pedersen 2019; Tierney et al. 2018; Schloerke et al. 2016).

La Figura 2.11 demuestra otra forma de visualizar la misma información encontrada en la Figura 2.10 utilizando geom_sina() del paquete ggforce (en lugar de geom_freqpoly()). Esta visualización dispersa los datos brutos dentro de la densidad para cada grupo, lo que nos permite no solo ver dónde caen la mayoría de las observaciones dentro de un grupo, sino también en todos los grupos. Al hacer esta capa interactiva, podemos consultar puntos individuales para obtener más información y hacer zoom en regiones interesantes. La segunda capa de la Figura 2.11 utiliza stat_summary() de ggplot2 para superponer un intervalo de confianza del 95% estimado mediante un algoritmo de bootstrap a través del paquete Hmisc (Harrell Jr, Charles Dupont y otros. 2019).

p <- ggplot(diamonds, aes(x=clarity, y=log(price), color=clarity)) +
    ggforce::geom_sina(alpha = 0.1) + 
    stat_summary(fun.data = "mean_cl_boot", color = "black") +
    facet_wrap(~cut)

# WebGL is a lot more efficient at rendering lots of points
toWebGL(ggplotly(p))
## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

FIGURE 2.11: Un gráfico sina del precio del diamante por claridad y corte.

Como señalan Wickham y Grolemund (2018), es sorprendente que el precio del diamante disminuya con un aumento de la claridad del diamante. Resulta que, si tenemos en cuenta el quilate del diamante, entonces vemos que una mejor claridad del diamante sí conduce a un precio del diamante más alto, como se muestra en la Figura 2.12. Ver un patrón tan fuerte en los residuos de un modelo lineal simple de quilate vs precio indica que nuestro modelo podría mejorarse enormemente agregando claridad como predictor del precio.

m <- lm(log(price) ~ log(carat), data = diamonds)
diamonds <- modelr::add_residuals(diamonds, m)
p <- ggplot(diamonds, aes(x = clarity, y = resid, color = clarity)) +
    ggforce::geom_sina(alpha = 0.1) + 
    stat_summary(fun.data = "mean_cl_boot", color = "black") +
    facet_wrap(~cut)
toWebGL(ggplotly(p))
## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

FIGURE 2.12: Un gráfico sina del precio del diamante por claridad y corte, después de tener en cuenta el quilate.

Como se discute en el Capítulo 16.4.7, el paquete GGally proporciona una interfaz conveniente para realizar visualizaciones de diagnóstico de modelos similares a través de la función ggnostic(). También proporciona una función de conveniencia para visualizar los estimados de coeficientes y sus errores estándar a través de la función ggcoef(). La Figura 2.13 muestra cómo inyectar interactividad en este gráfico nos permite consultar valores exactos y hacer zoom en las regiones más interesantes.

FIGURE 2.13: Ampliando un gráfico de coeficientes generado a partir de la función ggcoef() del paquete GGally. Para la versión interactiva, consulta https://plotly-r.com/interactives/ggally.html

Aunque el conjunto de datos de diamantes no contiene ningún valor faltante, es un problema muy común en problemas reales de análisis de datos. El paquete naniar proporciona una serie de recursos computacionales y visuales para trabajar y revelar la estructura en valores faltantes. Todas las visualizaciones basadas en ggplot2 devuelven un objeto que puede ser convertido por ggplotly(). Además, naniar proporciona un geom personalizado, geom_miss_point(), que puede ser útil para visualizar la estructura de los valores faltantes. La Figura 2.14 demuestra esto al introducir valores faltantes falsos en el precio del diamante.

library(naniar)
## Warning: package 'naniar' was built under R version 4.3.3
# fake some missing data
diamonds$price_miss <- ifelse(diamonds$depth>60, diamonds$price, NA)
p <- ggplot(diamonds, aes(x = clarity, y = log(price_miss))) +
    geom_miss_point(alpha = 0.1) + 
    stat_summary(fun.data = "mean_cl_boot", colour = "black") +
    facet_wrap(~cut)
toWebGL(ggplotly(p))
## Warning: Removed 5625 rows containing non-finite values (`stat_summary()`).
## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

## Warning in geom2trace.default(dots[[1L]][[10L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomMissPoint() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'gl' objects don't have these attributes: 'name', 'legendgroup', 'showlegend', 'xaxis', 'yaxis', 'hoverinfo', 'mode', 'type'
## Valid attributes include:
## 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'scattergl' objects don't have these attributes: 'hoveron'
## Valid attributes include:
## 'connectgaps', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'fill', 'fillcolor', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

FIGURA 2.14: Utilizando la función geom_miss_point() del paquete naniar para visualizar valores faltantes en relación con valores no faltantes. Los valores faltantes se muestran en rojo.

En resumen, el ecosistema ggplot2 proporciona un conjunto de herramientas de visualización exploratoria de clase mundial, y tener la capacidad de insertar rápidamente interactividad como el desplazamiento, el zoom y el filtrado a través de ggplotly() lo hace aún más poderoso para el análisis exploratorio. En esta introducción a ggplotly(), solo hemos visto técnicas relativamente simples que vienen de forma gratuita, pero el verdadero poder de los gráficos interactivos radica en vincular múltiples vistas. En esa parte del libro, puedes encontrar muchos ejemplos de enlace de múltiples gráficos (ggplotly() y plot_ly()) puramente del lado del cliente, así como con shiny.

También vale la pena mencionar que las conversiones de ggplotly() no siempre son perfectas y ggplot2 no proporciona una API para características interactivas, por lo que a veces es deseable modificar los valores devueltos de ggplotly(). El Capítulo 33 habla en general sobre cómo modificar la estructura de datos subyacente de ggplotly() (que, por cierto, utiliza la misma definición de figura plotly.js que se discutió en la Sección 2.2). Además, el Capítulo 25.2 describe varias formas de personalizar la información sobre herramientas que produce ggplotly().

SECCIÓN 3 - Cimientos dispersos

Como aprendimos en la Sección 2.2, una figura de plotly.js contiene uno (o más) rastros y cada rastro tiene un tipo. El tipo de dispersión de trazado es excelente para dibujar geometrías de bajo nivel (por ejemplo, puntos, líneas, texto y polígonos) y proporciona la base para muchas funciones add_*() (por ejemplo, add_markers(), add_lines(), add_paths( ), add_segments(), add_ribbons(), add_area() y add_polygons()), así como muchos gráficos ggplotly(). Estas capas basadas en dispersión proporcionan una interfaz más conveniente para casos especiales de trazas de dispersión al realizar un poco de manipulación y transformación de datos bajo el capó antes de mapearlas a trazas de dispersión. Para un ejemplo simple, add_lines () garantiza que las líneas se dibujen de acuerdo con el orden de x, lo cual es deseable para el trazado de series temporales. Este comportamiento es sutilmente diferente al de add_paths (), que en su lugar utiliza el orden de filas.

library(plotly)
data(economics, package = "ggplot2")

# sort economics by psavert, just to 
# show difference between paths and lines
p <- economics %>%
  arrange(psavert) %>%
  plot_ly(x = ~date, y = ~psavert)

add_paths(p)
add_lines(p)

FIGURA 3.1: La diferencia entre add_paths() y add_lines(): El panel superior conecta las observaciones según el orden de psavert (tasa de ahorro personal), mientras que el panel inferior conecta las observaciones según el orden de x (la fecha).

La sección 2.1 introdujo argumentos sobre el ‘mapeo estético’ (exclusivos de R paquete) que facilitan la asignación de datos a propiedades visuales (por ejemplo, color, tipo de línea, etc.). Además de estos argumentos, las agrupaciones dplyr se puede utilizar para garantizar que haya al menos una geometría por grupo. El El panel superior de la Figura 3.1 muestra cómo se podría utilizar group_by () para envolver efectivamente la serie de tiempo de la Figura 3.1 por año, lo que se puede útil para visualizar la estacionalidad anual. Otro enfoque para generar Al menos una geometría por ‘grupo’ es proporcionar variaciones categóricas. capaz de una estética relevante (por ejemplo, color), como se muestra en el panel inferior de la Figura 3.1.

library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
econ <- economics %>%
  mutate(yr = year(date), mnth = month(date))

# One trace (more performant, but less interactive)
econ %>%
  group_by(yr) %>%
  plot_ly(x = ~mnth, y = ~uempmed) %>%
  add_lines(text = ~yr)
# Multiple traces (less performant, but more interactive)
plot_ly(econ, x = ~mnth, y = ~uempmed) %>%
  add_lines(color = ~ordered(yr))
# The split argument guarantees one trace per group level (regardless 
# of the variable type). This is useful if you want a consistent
# visual property over multiple traces 
# plot_ly(econ, x = ~mnth, y = ~uempmed) %>%
#   add_lines(split = ~yr, color = I("black"))

FIGURA 3.2: Dibujar múltiples líneas usando grupos dplyr (panel superior) versus un mapeo de color categórico (panel inferior). Comparativamente hablando, el panel inferior tiene capacidades más interactivas (por ejemplo, filtrado basado en leyendas y múltiples información sobre herramientas), pero no se escala tan bien con muchas líneas. Para ver una demostración en video del interactivo, consulte https://bit.ly/scatter-lines. Para el interactivo, consulte https://plotly-r.com/interactives/scatter-lines.html

Estos gráficos no solo difieren en la apariencia visual, sino que también difieren en las capacidades interactivas, el rendimiento computacional y la implementación subyacente. Esto se debe a que el enfoque de agrupación (panel superior de la Figura 3.2) utiliza solo un rastro de plotly.js (más eficaz, menos interactivo), mientras que el enfoque de color (panel inferior de la Figura 3.2) genera un rastro por línea/año. En este caso, el beneficio de tener.

múltiples trazas es que podemos realizar un filtrado interactivo a través de la leyenda y comparar múltiples valores de y en una x dada. El costo de tener esas capacidades es que los gráficos comienzan a sufrir problemas de rendimiento después de unos cientos de trazos, mientras que se pueden representar miles de líneas con bastante facilidad en un solo trazo. Consulte el Capítulo 24 para obtener más detalles sobre escalamiento y rendimiento.

Estas características hacen que sea más fácil comenzar a usar plotly.js, pero aun así vale la pena aprender a usar plotly.js directamente. No encontrará atributos de plotly.js enumerados como argumentos explícitos en ninguna función de trazado (excepto el atributo de tipo especial), pero se pasan palabra por palabra a la definición de la figura de plotly.js a través del operador .. Las capas basadas en dispersión en este capítulo fijan el atributo de tipo plotly.js en “scatter”, así como el modo¹ (por ejemplo, add_markers() usa mode=‘markers’, etc.), pero también puedes usar add_trace de nivel inferior. () para trabajar más directamente con plotly.js. Por ejemplo, la Figura 3.3 muestra cómo representar marcadores, líneas y texto en el mismo trazo de dispersión. También demuestra cómo aprovechar los atributos anidados de plotly.js, como textfont² y xaxis³; estos atributos contienen otros atributos, por lo que debe proporcionar una lista con nombres adecuados para estos argumentos.

set.seed(99)  # Esto establece una semilla aleatoria para reproducibilidad

plot_ly() %>%
  add_trace(
    type = "scatter",
    mode = "markers+lines+text",
    x = 4:6, 
    y = 4:6,
    text = replicate(3, praise::praise("You are ${adjective}! 🙌")),
    textposition = "right",
    hoverinfo = "text",
    textfont = list(family = "Roboto Condensed", size = 16)
  ) %>%
  layout(xaxis = list(range = c(3, 8)))

FIGURA 3.3: Uso de la función genérica add_trace() para representar marcadores, líneas y texto en un único trazo de dispersión. Esta función add_trace(), así como cualquier función add_*(), le permite especificar directamente los atributos de plotly.js. Si es nuevo en plotly.js, le recomiendo que se tome un poco de tiempo para revisar los atributos de plotly.js que están disponibles para el tipo de seguimiento de dispersión y pensar cómo podría usarlos. La mayoría de estos atributos también funcionan para otros tipos de trazas, por lo que aprender un atributo una vez para una trama específica también puede resultar útil en otros contextos. La referencia de figuras en línea de plotly.js, https://plot.ly/r/reference/#scatter, es un lugar decente para buscar y aprender sobre los atributos, pero recomiendo usar la función esquema() en su lugar durante algunos razones:

-esquema () proporciona un poco más de información que los documentos en línea (por ejemplo, tipos de valores, valores predeterminados, rangos aceptables, etc.). -La interfaz hace que sea un poco más fácil recorrer y descubrir nuevos atributos. -Puede estar absolutamente seguro de que coincide con la versión utilizada en el paquete R (los documentos en línea pueden usar una versión diferente, probablemente anterior).

schema()

FIGURA 3.4: Uso de la función esquema () para recorrer los atributos disponibles para un tipo de seguimiento determinado (por ejemplo, dispersión). Las secciones que siguen en este capítulo demuestran varios tipos de vistas de datos que utilizan capas basadas en dispersión. En un intento de evitar la duplicación de documentación, se pone especial énfasis en las características que actualmente sólo están disponibles en el paquete R (por ejemplo, los argumentos de mapeo estético).

3.1 Marcadores Esta sección detalla las trazas de dispersión con un modo de “marcadores” (es decir, add_markers()). Para simplificar, muchos de los ejemplos aquí utilizan add_markers() con un eje numérico xey, lo que da como resultado un diagrama de dispersión: una forma común de visualizar la asociación entre dos variables cuantitativas. El contenido que sigue son todavía marcadores relevantes que se muestran x e y no numéricos (también conocidos como puntos) como se muestra en la Sección 3.1.6.

3.1.1 Mezcla alfa Como señala Unwin (2015), los diagramas de dispersión pueden ser útiles para exponer otras características importantes, entre ellas: relaciones casuales, valores atípicos, conglomerados, brechas, barreras y relaciones condicionales. Sin embargo, un problema común con los diagramas de dispersión es el sobregráfico, lo que significa que hay múltiples observaciones ocupando las mismas (o similares) ubicaciones x/y. La Figura 3.5 muestra una forma de combatir el trazado excesivo mediante la combinación alfa. Cuando trabaje con decenas de miles de puntos (o más), considere usar towebGL () para representar gráficos usando Canvas en lugar de SVG (más información en el Capítulo 24), o aprovechar la estimación de densidad 2D (Sección 7.2).

library(plotly)
library(ggplot2)

subplot(
  plot_ly(mpg, x = ~cty, y = ~hwy, name = "default"),
  plot_ly(mpg, x = ~cty, y = ~hwy) %>% 
    add_markers(alpha = 0.2, name = "alpha")
)
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

FIGURA 3.5: Cómo combatir el sobregráfico en un diagrama de dispersión con combinación alfa.

3.1.2 Colores Como se analizó en la Sección 2.2, asignar una variable discreta a color produce un trazo por categoría, lo cual es deseable para sus propiedades de leyenda y de desplazamiento. Por otro lado, asignar una variable numérica a un color produce un trazo, así como una guía de barra de colores para decodificar visualmente los colores en valores de datos. La función colorbar() se puede utilizar para personalizar la apariencia de esta guía generada automáticamente. La escala de colores predeterminada es viridis, una escala de colores perceptualmente uniforme (incluso cuando se convierte a blanco y negro) y perceptible incluso para aquellos con formas comunes de daltonismo (Berkeley Institute for Data Science, 2016). Viridis también es la escala de colores predeterminada para factores ordenados. }

library(plotly)
library(ggplot2)

p <- plot_ly(mpg, x = ~cty, y = ~hwy, alpha = 0.5)

subplot(
  add_markers(p, color = ~cyl, showlegend = FALSE) %>% 
    colorbar(title = "Viridis"),
  add_markers(p, color = ~factor(cyl))
)

FIGURA 3.6: Variaciones en un mapeo de color numérico.

Existen numerosas formas de alterar la escala de colores por defecto a través del argumento colores. Este argumento exceptúa uno de los siguientes: (1) un nombre de paleta de color brewer (ver los nombres de fila de RColorBrewer::brewer.pal.info para nombres válidos), (2) un vector de colores a interpolar, o (3) una función de interpolación de color como colorRamp() o scales::color_ramp(). Aunque esto otorga mucha flexibilidad, hay que ser consciente de que se debe utilizar una escala de colores secuencial para variables numéricas (& factores ordenados), como se muestra en la Figura 3.7, y una escala de colores cualitativa para variables discretas, como se muestra en laFigura 3.8.

library(plotly)
library(viridisLite)

col1 <- c("#132B43", "#56B1F7")
col2 <- inferno(10)
col3 <- colorRamp(c("red", "white", "blue"))

subplot(
  add_markers(p, color = ~cyl, colors = col1) %>%
    colorbar(title = "ggplot2 default"),
  add_markers(p, color = ~cyl, colors = col2) %>% 
    colorbar(title = "Inferno"),
  add_markers(p, color = ~cyl, colors = col3) %>% 
    colorbar(title = "colorRamp")
) %>% hide_legend()

FIGURA 3.7: Tres variaciones de una asignación numérica de colores.

library(plotly)

col1 <- "Accent"
col2 <- colorRamp(c("red", "blue"))
col3 <- c(`4` = "red", `5` = "black", `6` = "blue", `8` = "green")

subplot(
  add_markers(p, color = ~factor(cyl), colors = col1),
  add_markers(p, color = ~factor(cyl), colors = col2),
  add_markers(p, color = ~factor(cyl), colors = col3)
) %>% hide_legend()

FIGURA 3.8: Tres variaciones de un mapeo de color discreto.

Como se presenta en la Figura 2.3, los códigos de color se pueden especificar manualmente (es decir, evitar asignar valores de datos a un rango visual) utilizando la función 1 (). La Figura 3.9 proporciona un ejemplo sencillo usando add_markers(). De esta manera se puede utilizar cualquier color comprendido por la función col2rgb() del paquete grDevices. El Capítulo 27 proporciona aún más detalles sobre cómo trabajar con diferentes especificaciones de color al especificar colores manualmente.

add_markers(p, color = I("black")) 

3.1.3 Símbolos El argumento symbol puede utilizarse para asignar valores de datos al atributo marker.symbol plotly.js. Utiliza la misma semántica que ya hemos visto para el color:

-Un mapeo numérico genera una traza. -Un mapeo discreto genera múltiples trazas (una traza por categoría). -El plural, símbolos, se puede utilizar para especificar el rango visual para el mapeo. -Los mapeos se evitan por completo mediante I(). Por ejemplo, el panel izquierdo de la Figura 3.10 utiliza un mapeo numérico y el panel derecho utiliza un mapeo discreto. Como resultado, el panel izquierdo está vinculado a la primera entrada de la leyenda, mientras que el panel derecho está vinculado a las tres entradas inferiores de la leyenda. Cuando se trazan varias trazas y no se especifica ningún color, se aplica el colorway de plotly.js (es decir, cada traza se representará con un color diferente). Para establecer un color fijo, puede establecer el color de cada traza generada a partir de esta capa con color = I(“negro”), o similar.

vinculado a la primera entrada de leyenda, mientras que el panel derecho está vinculado a las tres entradas de leyenda inferiores. Al trazar varios trazos y no se especifica ningún color, se aplica la combinación de colores plotly.js (es decir, cada trazo se representará con un color diferente). Para establecer un color fijo, puede establecer el color de cada rastro generado a partir de esta capa con color = I(“negro”), o similar.

p <- plot_ly(mpg, x = ~cty, y = ~hwy, alpha = 0.3) 
subplot(
  add_markers(p, symbol = ~cyl, name = "A single trace"),
  add_markers(p, symbol = ~factor(cyl), color = I("black"))
) 

FIGURA 3.10: Asignación de símbolo a una variable numérica (panel izquierdo) y un factor (panel derecho).

Hay dos formas de especificar el rango visual de símbolos: (1) códigos numéricos (interpretados como códigos pch) o (2) una cadena de caracteres que especifica un valor de símbolo.marcador válido. La Figura 3.11 utiliza códigos pch (panel izquierdo), así como su correspondiente nombre de símbolo de marcador (panel derecho) para especificar el rango visual.

subplot(
  add_markers(p, symbol = ~cyl, symbols = c(17, 18, 19)),
  add_markers(
    p, color = I("black"),
    symbol = ~factor(cyl), 
    symbols = c("triangle-up", "diamond", "circle")
  )
)

FIGURA 3.11: Especificación del rango visual de símbolos.

Estos símbolos (es decir, el rango visual) también se pueden suministrar directamente al símbolo a través de 1 (). Por ejemplo, la Figura 3.12 fija el símbolo del marcador en forma de diamante.

plot_ly(mpg, x = ~cty, y = ~hwy) %>%
  add_markers(symbol = I(18), alpha = 0.5)

FIGURA 3.12: Configuración de un símbolo fijo directamente usando 1(). Si desea ver todos los símbolos disponibles para trazar, así como un método para proporcionar sus propios glifos personalizados, consulte el Capítulo 28.

3.1.4 Carrera y envergadura El argumento del trazo sigue la misma semántica que el color y el símbolo cuando se trata de asignaciones variables y especificación de rangos visuales. Normalmente no desea asignar valores de datos a un trazo, sólo desea especificar un color de contorno fijo. Por ejemplo, la Figura 3.13 modifica la Figura 3.12 para simplemente agregar un contorno negro. De forma predeterminada, el intervalo o ancho del trazo es cero; probablemente querrás establecer el ancho en alrededor de un píxel.

library(plotly)
library(ggplot2)

plot_ly(mpg, x = ~cty, y = ~hwy, alpha = 0.5) %>%
  add_markers(symbol = I(18), stroke = I("black"), span = I(1))

FIGURA 3.13: Uso de trazo y extensión para controlar el color del contorno así como el ancho de ese contorno. 3.1.5 Tamaño Para los diagramas de dispersión, el argumento de tamaño controla el área de los marcadores (a menos que se especifique lo contrario mediante sizemode) y debe ser una variable numérica. El argumento tamaños controla el tamaño mínimo y máximo de los círculos, en píxeles:

library(plotly)

p <- plot_ly(mpg, x = ~cty, y = ~hwy, alpha = 0.3)

subplot(
  add_markers(p, size = ~cyl, name = "default"),
  add_markers(p, size = ~cyl, sizes = c(1, 500), name = "custom")
)
## Warning: `line.width` does not currently support multiple values.

## Warning: `line.width` does not currently support multiple values.

FIGURA 3.14: Controlando el rango de tamaño mediante tamaños (medidos en píxeles). Al igual que con otros argumentos, 1 () se puede utilizar para especificar el tamaño directamente. En el caso de los marcadores, el tamaño controla el atributo marcador.size plotly.js. Recuerde, siempre tiene la opción de configurar este atributo directamente haciendo algo similar a la Figura 3.15.

plot_ly(mpg, x = ~cty, y = ~hwy, alpha = 0.3, size = I(30)) 
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

FIGURA 3.15: Establecer un tamaño de marcador fijo directamente usando Marker.size.

3.1.6 Diagramas de puntos y barras de error Un diagrama de puntos es similar a un diagrama de dispersión, excepto que en lugar de dos ejes numéricos, uno es categórico. El objetivo habitual de un diagrama de puntos es comparar valores en una escala numérica en numerosas categorías. En este contexto, los diagramas de puntos son preferibles a los gráficos circulares, ya que comparar la posición a lo largo de una escala común es mucho más fácil que comparar ángulos o áreas (Cleveland y McGill, 1984; Heer y Bostock, 2010). Además, los diagramas de puntos pueden ser preferibles a los gráficos de barras, especialmente cuando se comparan valores dentro de un rango estrecho y alejado de o (Few, 2006). Además, al presentar estimaciones puntuales y la incertidumbre asociada a esas estimaciones, los gráficos de barras tienden a exagerar la diferencia en las estimaciones puntuales y perder el foco en la incertidumbre (Messing, 2012). Una aplicación popular para los diagramas de puntos (con barras de error) es el llamado “gráfico de coeficientes” para visualizar las estimaciones puntuales de los coeficientes y su error estándar. La función coefplot() en el paquete coefplot (Lander, 2016) y la función ggcoef() en GGally producen gráficos de coeficientes para muchos tipos de objetos modelo en R usando ggplot2, que podemos traducir a gráficos mediante ggplotly(). Dado que estos paquetes utilizan puntos y segmentos para dibujar los gráficos de coeficientes, la información flotante no es la mejor y sería mejor utilizar objetos de error10. La Figura 3.16 utiliza la función tidy () del paquete broom (Robinson, 2016) para obtener un marco de datos con una fila por coeficiente del modelo. y produzca un gráfico de coeficientes con barras de error a lo largo del eje x.

# Fit a full-factorial linear model
m <- lm(
  Sepal.Length ~ Sepal.Width * Petal.Length * Petal.Width, 
  data = iris
)

# (1) get a tidy() data structure of covariate-level info 
# (e.g., point estimate, standard error, etc)
# (2) make sure term column is a factor ordered by the estimate
# (3) plot estimate by term with an error bar for the standard error
broom::tidy(m) %>% 
  mutate(term = forcats::fct_reorder(term, estimate)) %>%
  plot_ly(x = ~estimate, y = ~term) %>%
  add_markers(
    error_x = ~list(value = std.error), 
    color = I("black"),
    hoverinfo = "x"
  )

FIGURA 3.16: Gráfico de coeficientes. 3.2 Líneas

Muchos de los mismos principios que aprendimos sobre asignaciones estéticas con respecto a marcadores (Sección 3.1) también se aplican a las líneas”. Además, al comienzo de este capítulo (es decir, Figura 3.2) también aprendimos cómo usar group_by () de dplyr para garantizar que haya hay al menos una geometría (en este caso, línea) por grupo. También aprendimos la diferencia entre add_paths() y add_lines(); el primero dibuja líneas según el orden de las filas, mientras que el segundo las dibuja según x. En este capítulo , aprenderemos sobre el tipo de línea/tipo de línea, una estética que se aplica a líneas y polígonos. También discutiremos algunos otros tipos de gráficos importantes que se pueden implementar con add_paths (), add_lines () y add_segments().

3.2.1 Tipos de línea

En términos generales, es difícil percibir más de 8 colores/tipos de línea/símbolos diferentes en un gráfico determinado, por lo que a veces tenemos que filtrar datos para usarlos de manera efectiva. Aquí usamos el paquete dplyr para encontrar las 5 ciudades principales en términos de ventas mensuales promedio (top5), luego filtramos efectivamente los datos originales para que contengan solo estas ciudades a través de semi_join(). Como lo demuestra la Figura 3.17, una vez que tenemos los datos filtrados, asignar la ciudad al color o tipo de línea es trivial. La paleta de colores se puede modificar mediante el argumento de colores y sigue las mismas reglas que los diagramas de dispersión. La paleta de tipos de línea se puede modificar mediante el argumento tipos de línea y acepta los valores 1ty de R¹³ o los valores de guión de plotly.js¹4.

library(dplyr)
top5 <- txhousing %>%
  group_by(city) %>%
  summarise(m = mean(sales, na.rm = TRUE)) %>%
  arrange(desc(m)) %>%
  top_n(5)
## Selecting by m
tx5 <- semi_join(txhousing, top5, by = "city")

plot_ly(tx5, x = ~date, y = ~median) %>%
  add_lines(linetype = ~city)

FIGURA 3.17: Uso de color y/o tipo de línea para diferenciar grupos de líneas.

Si desea controlar exactamente qué tipo de línea se utiliza para codificar un valor de datos particular, puede proporcionar un vector de caracteres con nombre, como en la Figura 3.18. Tenga en cuenta que esto es similar a cómo proporcionamos manualmente una escala de colores discreta para los marcadores en la Figura 3.8.

ltys <- c(
  Austin = "dashdot",
  `Collin County` = "longdash",
  Dallas = "dash",
  Houston = "solid",
  `San Antonio` = "dot"
)

plot_ly(tx5, x = ~date, y = ~median) %>%
  add_lines(linetype = ~city, linetypes = ltys)

FIGURA 3.18: Proporcionar un vector de caracteres con nombre a los tipos de línea para controlar exactamente qué tipo de línea se asigna a qué ciudad.

3.2.2 Segmentos La función add_segments() esencialmente proporciona una manera de conectar dos puntos [(x, y) a (xend, yend)] con una línea. Los segmentos forman los componentes básicos de numerosos tipos de gráficos útiles, incluidos gráficos de pendiente, gráficos de mancuernas, gráficos de velas japonesas y más. Los gráficos de pendiente y los gráficos con mancuernas son útiles para comparar valores numéricos en numerosas categorías. Los gráficos de velas japonesas se utilizan normalmente para visualizar los cambios en un activo financiero a lo largo del tiempo. Los segmentos también pueden proporcionar una alternativa útil a add_bars() (tratado en el Capítulo 5), especialmente para animaciones. En particular, la Figura 14.5 de la Sección 14.2 muestra cómo implementar una pirámide de población animada usando segmentos en lugar de barras.

3.2.2.1 Mancuernas Los llamados gráficos con mancuernas son similares en concepto a los gráficos de pendientes, pero no tan generales. Por lo general, se utilizan para comparar dos clases diferentes de valores numéricos en numerosos grupos. La figura 3.20 utiliza el método de pesas para mostrar el promedio de millas por galón en ciudad y carretera para diferentes modelos de automóviles. Con un gráfico con mancuernas, siempre es una buena idea ordenar las categorías según una métrica sensata; Para la Figura 3.20, las categorías están ordenadas por millas por galón en ciudad.

mpg %>%
  group_by(model) %>%
  summarise(c = mean(cty), h = mean(hwy)) %>%
  mutate(model = forcats::fct_reorder(model, c)) %>%
  plot_ly() %>%
  add_segments(
    x = ~c, y = ~model,
    xend = ~h, yend = ~model, 
    color = I("gray"), showlegend = FALSE
  ) %>%
  add_markers(
    x = ~c, y = ~model, 
    color = I("blue"), 
    name = "mpg city"
  ) %>%
  add_markers(
    x = ~h, y = ~model, 
    color = I("red"),
    name  = "mpg highway"
  ) %>%
  layout(xaxis = list(title = "Miles per gallon"))

FIGURA 3.20: Gráfico de milla por galón en ciudad versus carretera por modelo de automóvil.

3.2.2.2 Candelabro La figura 3.21 utiliza el paquete quantmod (Ryan, 2016) para obtener datos sobre el precio de las acciones de Microsoft y traza dos segmentos para cada día: uno para codificar los valores de apertura/cierre y otro para codificar el máximo/mínimo diario. Esta implementación utiliza add_segments() para implementar el gráfico de velas, pero las versiones más recientes de plotly.js contienen tipos de seguimiento de velas y ohlc16, los cuales son útiles para visualizar datos financieros.

library(quantmod)
## Warning: package 'quantmod' was built under R version 4.3.3
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## Loading required package: TTR
## Warning: package 'TTR' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
msft <- getSymbols("MSFT", auto.assign = F)
dat <- as.data.frame(msft)
dat$date <- index(msft)
dat <- subset(dat, date >= "2016-01-01")

names(dat) <- sub("^MSFT\\.", "", names(dat))

plot_ly(dat, x = ~date, xend = ~date, color = ~Close > Open, 
        colors = c("red", "forestgreen"), hoverinfo = "none") %>%
  add_segments(y = ~Low, yend = ~High, size = I(1)) %>%
  add_segments(y = ~Open, yend = ~Close, size = I(3)) %>%
  layout(showlegend = FALSE, yaxis = list(title = "Price")) %>%
  rangeslider()

FIGURA 3.21: Un gráfico de velas construido con add_segments(). Observe cómo el mapeo de colores, que es un vector lógico (VERDADERO si el valor de cierre fue mayor que el de apertura), crea dos rastros: un rastro rojo que indica una caída en el precio y un rastro verde que indica un aumento en el precio.

3.2.3 Gráficos De Densidad En el Capítulo 5, aprovechamos una serie de algoritmos en R para calcular el número “óptimo” de contenedores para un histograma, a través de hist(), y enrutar esos resultados a add_bars (). Podemos aprovechar la función de densidad () para calcular estimaciones de densidad del núcleo de manera similar y enviar los resultados a add_lines (), como se hace en la Figura 3.22.

kerns <- c("gaussian", "epanechnikov", "rectangular", 
          "triangular", "biweight", "cosine", "optcosine")
p <- plot_ly()
for (k in kerns) {
  d <- density(economics$pce, kernel = k, na.rm = TRUE)
  p <- add_lines(p, x = d$x, y = d$y, name = k)
}
p

FIGURA 3.22: Varias estimaciones de densidad de granos.

3.2.4 Coordenadas paralelas Una técnica de visualización muy útil, pero que a menudo se pasa por alto, es el trazado de coordenadas paralelas. Las coordenadas paralelas proporcionan una manera de comparar valores a lo largo de una escala posicional común (o no alineada), la más básica de todas las tareas de percepción en más de tres dimensiones (Cleveland y McGill, 1984). Por lo general, cada línea representa cada medición de una fila (u observación) determinada en un conjunto de datos. Es cierto que plotly.js proporciona un tipo de traza, parcoords, específicamente para coordenadas paralelas que ofrecen capacidades interactivas deseables (por ejemplo, resaltado y reordenamiento de ejes).17 Sin embargo, también puede ser útil aprender a usar add_lines() para implementar coordenadas paralelas, ya que puede ofrecer más flexibilidad y control sobre las escalas de los ejes. Cuando las mediciones se realizan en escalas muy diferentes, se debe tener cierto cuidado y transformar las variables para ponerlas en una escala común. Como muestra la figura 3.23, incluso cuando las variables se miden en una escala similar, aún puede resultar informativo transformarlas de diferentes maneras.

iris$obs <- seq_len(nrow(iris))
iris_pcp <- function(transform = identity) {
  iris[] <- purrr::map_if(iris, is.numeric, transform)
  tidyr::gather(iris, variable, value, -Species, -obs) %>% 
    group_by(obs) %>% 
    plot_ly(x = ~variable, y = ~value, color = ~Species) %>% 
    add_lines(alpha = 0.3)
}
subplot(
  iris_pcp(), 
  iris_pcp(scale),
  iris_pcp(scales::rescale),
  nrows = 3, shareX = TRUE
) %>% hide_legend()
## Warning: attributes are not identical across measure variables; they will be
## dropped

FIGURA 3.23: Gráficos de coordenadas paralelas del conjunto de datos Iris. El panel superior muestra todas las variables en una escala común. El panel central escala cada variable para que tenga una media de o y una desviación estándar de 1. En el panel inferior, cada variable se escala para tener un mínimo de o y un máximo de 1.

También vale la pena señalar que GGally ofrece una función ggparcoord() que crea gráficos de coordenadas paralelas a través de ggplot2, que podemos convertir a plotly a través de ggplotly(). Gracias al marco de resaltado vinculado, las coordenadas paralelas creadas de esta manera podrían vincularse a gráficos de dimensiones más bajas (pero a veces de mayor resolución) de datos relacionados para guiar la exploración de datos multivariados. El paquete para peatones proporciona algunos ejemplos de cómo vincular coordenadas paralelas con otras vistas, como un gran recorrido para exponer características inusuales en un espacio de alta dimensión (Sievert, 2019a).

3.3 Polígonos La función add_polygons() es esencialmente equivalente a add_paths() con el atributo de relleno establecido en “toself”. Los polígonos forman la base para otras capas basadas en dispersión de nivel superior (por ejemplo, add_ribbons() y add_sf()) que no tienen un tipo de seguimiento plotly.js dedicado. Los polígonos se pueden usar para dibujar muchas cosas, pero quizás la aplicación más familiar en la que quizás quieras usar add_polygons() es para dibujar objetos geoespaciales. Si usa add_polygons() para dibujar un mapa, asegúrese de corregir la relación de aspecto (por ejemplo, xaxis.scaleanchor¹9) y también considere usar plotly_empty() sobre plot_ly() para ocultar las etiquetas de los ejes, los ticks y el fondo. red. Por otro lado, la Sección 4.2 le muestra cómo crear mapas personalizados usando el paquete sf y add_sf(), lo cual requiere un poco de trabajo para comenzar, pero vale la pena la inversión.

base <- map_data("world", "canada") %>%
  group_by(group) %>%
  plotly_empty(x = ~long, y = ~lat, alpha = 0.2) %>%
  layout(showlegend = FALSE, xaxis = list(scaleanchor = "y"))
  
base %>%
  add_polygons(hoverinfo = "none", color = I("black")) %>%
  add_markers(text = ~paste(name, "<br />", pop), hoverinfo = "text", 
              color = I("red"), data = maps::canada.cities)

FIGURA 3.24: Uso de add_polygons () para crear un mapa de Canadá y las principales ciudades canadienses a través de los datos proporcionados por el paquete de mapas.

Como lo señala la discusión en torno a la Figura 4.10, las capas de polígonos basadas en dispersión (es decir, add_polygons(), add_ribbons (), etc.) representan todos los polígonos usando un trazo de plotly.js de forma predeterminada. Este enfoque es computacionalmente eficiente, pero no siempre es deseable (por ejemplo, no puede haber múltiples rellenos por traza, la interactividad es relativamente limitada). Para solucionar las limitaciones, considere usar división (o color con una variable discreta) para dividir los datos del polígono en múltiples trazados. La Figura 3.25 muestra el uso de división que impondrá la combinación de colores de plotly.js a cada rastro (es decir, subregión) y aprovechará hoveron para generar una información sobre herramientas por subregión.

add_polygons(base, split = ~subregion, hoveron = "fills")

FIGURA 3.25: Uso de división para representar polígonos con diferentes rellenos y propiedades interactivas.

SECCIÓN 4 - Mapas

#4.1 Mapas integrados #4.1.1 Descripción general

Si tienes datos de latitud/longitud bastante simples y deseas crear un mapa rápidamente, es posible que desees probar una de las opciones de mapeo integradas de plotly (es decir, plot_mapbox() y plot_geo()). En general, puedes tratar estas funciones constructoras como un reemplazo directo de plot_ly() y obtener un mapa base dinámico renderizado detrás de tus datos. Además, todas las capas basadas en scatter que aprendimos en la Sección 3 funcionan como esperarías con plot_ly(). Por ejemplo, la Figura 4.1 utiliza plot_mapbox() y add_markers() para crear un gráfico de burbujas: # en esta parte del codigo me exige un ” secret token ” que son ayudas pagas

FIGURA 4.1: Un gráfico de burbujas alimentado por Mapbox que muestra la población de varias ciudades en Canadá. Para ver la versión interactiva, visita https://plotly-r.com/interactives/mapbox-bubble.html

El estilo del mapa base de Mapbox se controla a través del atributo layout.mapbox.style. El paquete plotly viene con soporte para 7 estilos diferentes, pero también puedes proporcionar una URL personalizada a un estilo personalizado de Mapbox. Para obtener todos los nombres de los estilos de mapa base preempaquetados, puedes obtenerlos del esquema oficial de plotly.js():

styles <- schema()$layout$layoutAttributes$mapbox$style$values
styles
##  [1] "basic"             "streets"           "outdoors"         
##  [4] "light"             "dark"              "satellite"        
##  [7] "satellite-streets" "carto-darkmatter"  "carto-positron"   
## [10] "open-street-map"   "stamen-terrain"    "stamen-toner"     
## [13] "stamen-watercolor" "white-bg"
#>  [1] "basic"             "streets"          
#>  [3] "outdoors"          "light"            
#>  [5] "dark"              "satellite"        
#>  [7] "satellite-streets" "open-street-map"  
#>  [9] "white-bg"          "carto-positron"   
#> [11] "carto-darkmatter"  "stamen-terrain"   
#> [13] "stamen-toner"      "stamen-watercolor"

Cualquiera de estos valores puede ser utilizado para un estilo de mapa box. La Figura 4.2 demuestra el mapa base de imágenes satelitales de la Tierra. # en esta parte del codigo me exige un ” secret token ” que son ayudas pagas

FIGURA 4.2: Ampliación de imágenes satelitales de la Tierra utilizando plot_mapbox(). Para ver la versión interactiva, visita https://plotly-r.com/interactives/satellite.html

La Figura 4.3 muestra cómo crear un menú desplegable integrado de plotly.js para controlar el estilo del mapa base a través del atributo layout.updatemenus. La idea detrás de un menú desplegable integrado de plotly.js es proporcionar una lista de botones (es decir, elementos de menú) donde cada botón invoca un método de plotly.js con algunos argumentos. En este caso, cada botón utiliza el método relayout para modificar el atributo layout.mapbox.style. # en esta parte del codigo me exige un ” secret token ” que son ayudas pagas

FIGURA 4.3: Proporcionando un menú desplegable para controlar el estilo de la capa base de Mapbox. Para ver la versión interactiva, visita https://plotly-r.com/interactives/mapbox-style-dropdown.html

La otra solución de mapeo integrada en plotly es plot_geo(). En comparación con plot_mapbox(), este enfoque tiene soporte para diferentes proyecciones de mapas, pero el estilo del mapa base es limitado y puede ser más engorroso. La Figura 4.4 demuestra el uso de plot_geo() junto con add_markers() y add_segments() para visualizar las rutas de vuelo dentro de los Estados Unidos. Mientras que plot_mapbox() está fijo en una proyección mercator, el constructor plot_geo() tiene varias proyecciones disponibles, incluida la proyección ortográfica que da la ilusión del globo 3D.

library(plotly)
library(dplyr)
# airport locations
air <- read.csv(
  'https://plotly-r.com/data-raw/airport_locations.csv'
)
# flights between airports
flights <- read.csv(
  'https://plotly-r.com/data-raw/flight_paths.csv'
)
flights$id <- seq_len(nrow(flights))

# map projection
geo <- list(
  projection = list(
    type = 'orthographic',
    rotation = list(lon = -100, lat = 40, roll = 0)
  ),
  showland = TRUE,
  landcolor = toRGB("gray95"),
  countrycolor = toRGB("gray80")
)

plot_geo(color = I("red")) %>%
  add_markers(
    data = air, x = ~long, y = ~lat, text = ~airport,
    size = ~cnt, hoverinfo = "text", alpha = 0.5
  ) %>%
  add_segments(
    data = group_by(flights, id),
    x = ~start_lon, xend = ~end_lon,
    y = ~start_lat, yend = ~end_lat,
    alpha = 0.3, size = I(1), hoverinfo = "none"
  ) %>%
  layout(geo = geo, showlegend = FALSE)
## Warning: `line.width` does not currently support multiple values.

FIGURA 4.4: Utilizando la proyección ortográfica integrada para visualizar patrones de vuelo en un globo “3D”. Para ver la versión interactiva, visita https://plotly-r.com/interactives/geo-flights.html

Una ventaja de plot_geo() es que proyecta automáticamente geometrías en el sistema de coordenadas adecuado definido por la proyección del mapa. Por ejemplo, en la Figura 4.5, el segmento de línea simple es recto cuando se usa plot_mapbox() pero curvado cuando se usa plot_geo(). Es posible lograr el mismo efecto usando plot_ly() o plot_mapbox(), pero los datos relevantes de marcadores/líneas/polígonos deben colocarse en una estructura de datos sf antes de renderizar (consulte la Sección 4.2.1 para más detalles). # en esta parte del codigo me exige un ” secret token ” que son ayudas pagas

FIGURA 4.5: Una comparación de las soluciones de mapeo integradas de plotly: plot_mapbox() (arriba) y plot_geo() (abajo). El enfoque plot_geo() transformará los segmentos de línea para reflejar correctamente su proyección en un sistema de coordenadas no cartesianas.

4.1.2 Coropletas

Además de las trazas de dispersión, ambas soluciones de mapeo integradas (es decir, plot_mapbox() y plot_geo()) tienen un tipo de traza de coroplético optimizado (es decir, los tipos de traza choroplethmapbox y choropleth). Comparativamente hablando, choroplethmapbox es más potente porque puedes especificar completamente la colección de características utilizando GeoJSON, pero la traza de coroplético puede ser un poco más fácil de usar si se adapta a tu caso de uso.

La Figura 4.6 muestra la densidad de población de los Estados Unidos a través de la traza de coroplético utilizando los datos de los estados de EE. UU. del paquete datasets (R Core Team 2016). Simplemente proporcionando un atributo z, los objetos plotly_geo() intentarán crear un coroplético, pero también deberás proporcionar ubicaciones y un locationmode. Vale la pena señalar que el locationmode está actualmente limitado a países y estados de EE. UU., así que si necesitas una unidad geo diferente (por ejemplo, condados, municipios, etc.), deberías usar el tipo de traza choroplethmapbox y/o usar un enfoque de mapeo “personalizado” como se discute en la Sección 4.2.

density <- state.x77[, "Population"] / state.x77[, "Area"]

g <- list(
  scope = 'usa',
  projection = list(type = 'albers usa'),
  lakecolor = toRGB('white')
)

plot_geo() %>%
  add_trace(
    z = ~density, text = state.name, span = I(0),
    locations = state.abb, locationmode = 'USA-states'
  ) %>%
  layout(geo = g)

FIGURA 4.6: Un mapa de la densidad de población de los Estados Unidos utilizando los datos state.x77 del paquete datasets.

Choroplethmapbox es más flexible que choropleth porque proporcionas tu propia definición GeoJSON del coroplético a través del atributo geojson. Actualmente, este atributo debe ser una URL que apunte a un archivo geojson. Además, la ubicación debería señalar un atributo id de nivel superior de cada elemento dentro del archivo geojson. La Figura 4.7 muestra cómo podríamos visualizar la misma información que la Figura 4.6, pero esta vez usando choroplethmapbox.

plot_ly() %>%
  add_trace(
    type = "choroplethmapbox",
    # See how this GeoJSON URL was generated at
    # https://plotly-r.com/data-raw/us-states.R
    geojson = paste(c(
      "https://gist.githubusercontent.com/cpsievert/",
      "7cdcb444fb2670bd2767d349379ae886/raw/",
      "cf5631bfd2e385891bb0a9788a179d7f023bf6c8/", 
      "us-states.json"
    ), collapse = ""),
    locations = row.names(state.x77),
    z = state.x77[, "Population"] / state.x77[, "Area"],
    span = I(0)
  ) %>%
  layout(
    mapbox = list(
      style = "light",
      zoom = 4,
      center = list(lon = -98.58, lat = 39.82)
    )
  ) %>%
  config(
    mapboxAccessToken = Sys.getenv("MAPBOX_TOKEN"),
    # Workaround to make sure image download uses full container
    # size https://github.com/plotly/plotly.js/pull/3746
    toImageButtonOptions = list(
      format = "svg", 
      width = NULL, 
      height = NULL
    )
  )

FIGURA 4.7: Otro mapa de la densidad de población de los Estados Unidos, esta vez utilizando choroplethmapbox con un archivo GeoJSON personalizado.

Las Figuras 4.6 y 4.7 no son una forma ideal de visualizar la población estatal desde un punto de vista de percepción gráfica. Normalmente usamos el color en coropléticos para codificar una variable numérica (por ejemplo, PIB, exportaciones netas, puntaje promedio de SAT, etc.) y el ojo percibe naturalmente el área que cubre un color particular como proporcional a su efecto general. Esto resulta ser engañoso ya que el área que cubre el color generalmente no tiene una relación sensata con los datos codificados por el color. Un ejemplo clásico de este efecto engañoso en acción se encuentra en los mapas electorales de EE. UU. – la proporción de color rojo a azul no es representativa del voto popular general (Newman 2016).

Los cartogramas son un enfoque para reducir este efecto engañoso y otorgan otra dimensión para codificar datos a través del tamaño de las características geoespaciales. La Sección 4.2.2 cubre cómo renderizar cartogramas en plotly usando sf y cartogram.

#4.2 Mapas personalizados

#4.2.1 Funciones simples (sf)

El paquete R sf es un enfoque moderno para trabajar con estructuras de datos geo-espaciales basadas en los principios de datos ordenados (Pebesma 2018; Wickham 2014b). La idea clave detrás de sf es que almacena geometrías geo-espaciales en una columna de lista de un marco de datos. Esto permite que cada fila represente la unidad real de observación/interés, ya sea un polígono, un polígono múltiple, un punto, una línea o incluso una colección de estas características, y como resultado, funciona perfectamente dentro de flujos de trabajo ordenados más grandes. El paquete sf en sí mismo no proporciona realmente datos geo-espaciales, sino que proporciona el marco y las utilidades para almacenar y calcular en estructuras de datos geo-espaciales de una manera opinada.

Hay numerosos paquetes para acceder a datos geo-espaciales como estructuras de datos de características simples. Algunos ejemplos notables incluyen rnaturalearth y USAboundaries. El paquete rnaturalearth es mejor para obtener cualquier dato de mapa en el mundo a través de una API proporcionada por https://www.naturalearthdata.com/ (South 2017). El paquete USAboundaries es excelente para obtener datos de mapas para los Estados Unidos en cualquier momento de la historia (Mullen y Bratt 2018). Realmente no importa qué herramienta utilices para obtener o crear un objeto sf: una vez que tengas uno, plot_ly() sabe cómo renderizarlo:

library(rnaturalearth)
## Warning: package 'rnaturalearth' was built under R version 4.3.3
world <- ne_countries(returnclass = "sf")
class(world)
## [1] "sf"         "data.frame"
#> [1] "sf"    "data.frame"
plot_ly(world, color = I("gray90"), stroke = I("black"), span = I(1))
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter

FIGURA 4.8: Renderización de todos los países del mundo utilizando plot_ly() y la función ne_countries() del paquete rnaturalearth.

¿Cómo sabe plot_ly() cómo renderizar los países? Es porque las características geo-espaciales están codificadas en una columna de lista especial (geometría). Además, los metadatos sobre la estructura geo-espacial se conservan como atributos especiales de los datos. La Figura 4.9 aumenta el método de impresión para sf a los marcos de datos para demostrar que toda la información necesaria para renderizar los países (es decir, polígonos) en la Figura 4.8 está contenida dentro del marco de datos del mundo. También, tenga en cuenta que sf proporciona métodos especiales de dplyr para esta clase especial de marcos de datos para que pueda tratar las manipulaciones de datos como si fuera una estructura de datos ‘tidy’. Una cosa sobre este método es que la columna especial ‘geometry’ siempre se conserva; si intentamos seleccionar solo la columna de nombre, entonces obtenemos tanto el nombre como la geometría.

library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
world %>%
  select(name) %>%
  print(n = 4)
## Simple feature collection with 177 features and 1 field
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -90 xmax: 180 ymax: 83.64513
## Geodetic CRS:  WGS 84
## First 4 features:
##        name                       geometry
## 1      Fiji MULTIPOLYGON (((180 -16.067...
## 2  Tanzania MULTIPOLYGON (((33.90371 -0...
## 3 W. Sahara MULTIPOLYGON (((-8.66559 27...
## 4    Canada MULTIPOLYGON (((-122.84 49,...

FIGURA 4.9: Un diagrama de un marco de datos de características simples. La columna de geometría rastrea las características espaciales adjuntas a cada fila en el marco de datos.

De hecho, existen 4 formas diferentes de representar objetos sf con plotly: plot_ly(), plot_mapbox(), plot_geo(), y a través de geom_sf() de ggplot2. Estas funciones representan múltiples polígonos utilizando una única traza de manera predeterminada, lo cual es rápido, pero es posible que desee aprovechar la flexibilidad añadida de múltiples trazas. Por ejemplo, una traza dada solo puede tener un color de relleno, por lo que es imposible representar múltiples polígonos con diferentes colores utilizando una única traza. Por esta razón, si desea variar el color de múltiples polígonos, asegúrese de dividirlos por un identificador único (por ejemplo, nombre), como se hace en la Figura 4.10. Tenga en cuenta que, como se discutió para los gráficos de líneas en la Figura 3.2, el uso de múltiples trazas añade automáticamente la capacidad de filtrar por nombre a través de las entradas de la leyenda.

FIGURA 4.10: Utilizando la división y el color para crear un mapa coroplético de las provincias en Canadá.

Otra característica importante para los mapas que puede requerir dividir múltiples polígonos en múltiples trazas es la capacidad de mostrar un texto diferente al pasar el cursor sobre el relleno de cada polígono. Al proporcionar texto que sea único dentro de cada polígono y especificar hoveron=‘fills’, el comportamiento del tooltip está vinculado al relleno de la traza (en lugar de mostrarse en cada punto a lo largo del polígono).

FIGURA 4.11: Utilizando división, texto y hoveron=‘fills’ para mostrar un tooltip específico para cada provincia canadiense.

Aunque los enfoques de mapeo integrados (plot_mapbox() y plot_geo()) pueden representar objetos sf, los enfoques de mapeo personalizados (plot_ly() y geom_sf()) son más flexibles porque permiten cualquier proyección de mapeo bien definida. Trabajar con y entender las proyecciones de mapas puede ser intimidante para un cartógrafo casual. Afortunadamente, existen recursos útiles para buscar proyecciones de mapas en una interfaz amigable para humanos, como http://spatialreference.org/. A través de este sitio web, uno puede buscar proyecciones deseables para una porción dada del globo y extraer comandos para proyectar sus objetos geo-espaciales en esa proyección. Una forma de realizar la proyección es proporcionar el comando PROJ4 relevante a la función st_transform() en sf (PROJ contributors 2018).

# filter the world sf object down to canada
canada <- filter(world, name == "Canada")
# coerce cities lat/long data to an official sf object
cities <- st_as_sf(
  maps::canada.cities, 
  coords = c("long", "lat"),
  crs = 4326
)

# A PROJ4 projection designed for Canada
# http://spatialreference.org/ref/sr-org/7/
# http://spatialreference.org/ref/sr-org/7/proj4/
moll_proj <- "+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 
+units=m +no_defs"

# perform the projections
canada <- st_transform(canada, moll_proj)
cities <- st_transform(cities, moll_proj)

# plot with geom_sf()
p <- ggplot() + 
  geom_sf(data = canada) +
  geom_sf(data = cities, aes(size = pop), color = "red", alpha = 0.3)
ggplotly(p)

FIGURA 4.12: La población de varias ciudades canadienses representadas en un mapa base personalizado utilizando una proyección Mollweide.

Algunos objetos geo-espaciales tienen una resolución innecesariamente alta para una visualización dada. En estos casos, es posible que desee considerar simplificar el objeto geo-espacial para mejorar la velocidad del código R y la capacidad de respuesta de la visualización. Por ejemplo, podríamos recrear la Figura 4.8 con una resolución mucho más alta especificando scale = “large” en ne_countries(). Esto nos da un objeto sf con más de 50 veces más coordenadas espaciales que la escala predeterminada. La mayor resolución nos permite acercarnos mejor a regiones geo-espaciales más complejas, pero también conduce a un código R más lento, archivos HTML más grandes y una capacidad de respuesta más lenta. Sievert (2018b) explora este tema con más profundidad y demuestra cómo utilizar la función st_simplify() de sf para simplificar las características antes de representarlas.

Análogo a la discusión en torno a 3.2, es importante ser consciente de los compromisos involucrados al representar gráficos de plotly utilizando una o muchas trazas, y estar informado sobre cómo aprovechar cualquiera de los enfoques. Específicamente, de forma predeterminada, plotly intenta representar todas las características simples en una sola traza, lo cual es eficiente en términos de rendimiento, pero no proporciona mucha interactividad.

Para aquellos interesados en aprender más sobre geocomputación en R con sf y otros excelentes paquetes de R como sp y raster, Robin Lovelace (2019) proporciona muchos recursos de aprendizaje agradables y de libre acceso (Pebesma y Bivand 2005; Hijmans 2019).

#4.2.2 Cartogramas

Los cartogramas distorsionan el tamaño de los polígonos geo-espaciales para codificar una variable numérica distinta al tamaño de la tierra. Hay numerosos tipos de cartogramas y generalmente se clasifican por su capacidad para preservar la forma y mantener regiones contiguas. Se ha demostrado que los cartogramas son un enfoque efectivo tanto para codificar como para enseñar sobre datos geo-espaciales, aunque los efectos ciertamente varían según el tipo de cartograma (Nusrat S, Alam MJ, Kobourov S. 2018). El paquete R cartogram proporciona una interfaz a varios algoritmos de cartograma populares (Jeworutzki 2018). Un número de otros paquetes R proporcionan algoritmos de cartograma, pero lo grandioso de cartogram es que todas las funciones pueden tomar un objeto sf (o sp) como entrada y devolver un objeto sf. Esto hace que sea increíblemente fácil pasar de objetos espaciales crudos, a objetos transformados, a visualizaciones. La Figura 4.13 muestra un cartograma de área continua de la población de EE. UU. en 2014 utilizando un algoritmo de distorsión de hoja de goma de James A. Dougenik, Nicholas R. Chrisman, Duane R. Niemeyer (1985).

FIGURA 4.13: Un cartograma de la población de Estados Unidos en 2014. Un cartograma ajusta el tamaño del área de los objetos geo-espaciales proporcionalmente a alguna métrica (por ejemplo, población).

La Figura 4.14 demuestra un cartograma de Dorling no continuo de la población de EE. UU. en 2014, según Dorling, D (1996). Este cartograma no intenta preservar la forma de los polígonos (es decir, estados), sino que utiliza círculos para representar cada objeto geo-espacial y luego codifica la variable de interés (es decir, población) utilizando el área del círculo.

FIGURA 4.14: Un cartograma de Dorling de la población de Estados Unidos en 2014. Un cartograma de Dorling ajusta el tamaño de los círculos proporcionalmente a alguna métrica (por ejemplo, población).

La Figura 4.15 demuestra un cartograma no continuo de la población de Estados Unidos en 2014 según Olson, J. M. (1976). A diferencia del cartograma de Dorling, este enfoque sí preserva la forma de los polígonos. La implementación detrás de la Figura 4.15 es simplemente tomar la implementación de la Figura 4.14 y cambiar cartogram_dorling() por cartogram_ncont().

FIGURA 4.15: Un cartograma no contiguo de la población de EE. UU. en 2014 que preserva la forma.

Una clase popular de cartogramas contiguos que no preservan la forma a veces se denominan cartogramas de mosaico (también conocidos como tilegrams). En el momento de escribir este texto, no parece haber un excelente paquete R para calcular tilegrams, pero Pitch Interactive ofrece un buen servicio web donde puedes generar tilegrams a partir de datos existentes o personalizados https://pitchinteractiveinc.github.io/tilegrams/. Además, el servicio te permite descargar un archivo TopoJSON del tilegram generado, que podemos leer en R y convertir en un objeto sf a través de geojsonio (Chamberlain y Teucher 2018). La Figura 4.16 muestra un tilegram de la población de EE. UU. en 2016 exportado directamente desde el servicio web gratuito de Pitch.

FIGURA 4.16: Un cartograma de mosaico de la población de EE. UU. en 2016.

SECCIÓN 5 - Barras e histogramas

Las funciones “add_bars()” y “add_histogram()” envuelven los tipos de trazos bar’ e histogram “plotly.js”. La principal diferencia entre ellos es que los trazos de bar’ requieren alturas de barra (tanto x como y), mientras que los trazos de histogram requieren solo una variable y plotly.js maneja la agrupación en el navegador. Y quizás de manera confusa, ambas funciones se pueden usar para visualizar la distribución de una variable numérica o discreta. Entonces, esencialmente, la única diferencia entre ellos es dónde ocurre la agrupación.

La Figura 5.1 compara el algoritmo de agrupación predeterminado en plotly.js con algunos algoritmos diferentes disponibles en R mediante la función “hist()”. Aunque plotly.js tiene la capacidad de personalizar contenedores de histograma a través de xbins/ybins, R tiene diversas funciones para estimar el número óptimo de contenedores en un histograma que podemos aprovechar fácilmente”. La función “hist()” por sí sola nos permite hacer referencia a 3 algoritmos famosos por nombre (Sturges, 1926; Freedman y Diaconis, 1981; Scott, 1979), pero también hay paquetes (por ejemplo, el paquete de histogramas) que amplían esta interfaz para incorporar más metodología (Mildenberger et al., 2009). ) a continuación envuelve la función hist() para obtener los resultados de agrupación y asigna esos contenedores a una versión gráfica del histograma usando add_bars().

library(plotly)

# Crea un histograma usando plot_ly
pl <- plot_ly(diamonds, x = ~price) %>%
  add_histogram(name = "plotly.js")

# Define una función para crear histogramas de precios
price_hist <- function(method = "FD") {
  h <- hist(diamonds$price, breaks = method, plot = FALSE)
  plot_ly(x = h$mids, y = h$counts) %>% add_bars(name = method)
}

# Crea histogramas usando diferentes métodos
p1 <- price_hist()
p2 <- price_hist("Sturges")
p3 <- price_hist("Scott")

# Crea subgráficos
subplot(p1, p2, p3, nrows = 3, shareX = TRUE)

FIGURA 5.1: El algoritmo de agrupamiento predeterminado de plotly.js versus el predeterminado hist() de R.

La figura 5.2 muestra dos formas de crear un gráfico de barras básico. Aunque los resultados visuales son los mismos, vale la pena señalar la diferencia en la implementación. La función add_histogram() envía todos los valores observados al navegador y permite que plotly.js realice la agrupación.

Se necesita más esfuerzo humano para realizar la agrupación en R, pero hacerlo tiene la ventaja de enviar menos datos y requerir menos trabajo de cálculo por parte del navegador web. En este caso, solo tenemos unos 50.000 registros, por lo que no hay mucha diferencia en los tiempos de carga de la página o el tamaño de la página. Sin embargo, con 1 millón de registros, el tiempo de carga de la página se duplica y el tamaño de la página casi se duplica.

library(dplyr)
library(plotly)

# Crear el primer gráfico de histograma
p1 <- plot_ly(diamonds, x = ~cut) %>%
  add_histogram()

# Crear el segundo gráfico de barras
p2 <- diamonds %>%
  count(cut) %>%
  plot_ly(x = ~cut, y = ~n) %>%
  add_bars()

# Crear un subplot y ocultar la leyenda
subplot(p1, p2) %>% hide_legend()

FIGURE 5.2: Number of diamonds by cut.

##5.1 Distribuciones numéricas múltiples A menudo resulta útil ver cómo cambia la distribución numérica con respecto a una variable discreta. Cuando utilice barras para visualizar múltiples distribuciones numéricas, recomiendo trazar cada distribución en su propio eje usando una pequeña visualización de múltiplos, en lugar de intentar superponerlas en un solo eje. El Capítulo 13, y específicamente la Sección 13.1.2.3, analiza los múltiplos pequeños con más detalle, pero la Figura 13.9 demuestra cómo se hace con plot_ly() y subplot(). Observe cómo la función one_plot() define qué mostrar en cada panel, luego se emplea una estrategia dividir-aplicar-recombinar (es decir, dividir(), lapply(), subplot()) para generar la visualización enrejada.

library(dplyr)
library(plotly)

# Definir la función para crear un gráfico
one_plot <- function(d) {
  plot_ly(d, x = ~price) %>%
    add_annotations(
      text = unique(d$clarity), x = 0.5, y = 1, xref = "paper", yref = "paper", showarrow = FALSE
    )
}

# Aplicar la función a cada grupo de datos dividido por claridad
diamonds %>%
  split(.$clarity) %>%
  lapply(one_plot) %>%
  subplot(nrows = 2, shareX = TRUE, titleX = FALSE) %>%
  hide_legend()
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram
## No trace type specified:
##   Based on info supplied, a 'histogram' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#histogram

##5.2 Distribuciones discretas múltiples Visualizar múltiples distribuciones discretas es difícil. La sutil complejidad se debe al hecho de que tanto los recuentos como las proporciones son importantes para comprender distribuciones discretas multivariadas. La Figura 5.4 presenta el recuento de diamantes, dividido tanto por talla como por claridad, utilizando un gráfico de barras agrupadas.

library(plotly)

# Crear el histograma con diferentes colores para cada nivel de claridad
plot_ly(diamonds, x = ~cut, color = ~clarity) %>%
  add_histogram()

FIGURA 5.4: Gráfico de barras agrupadas de recuentos de diamantes por talla y claridad.

La figura 5.4 es útil para comparar el número de diamantes por claridad, dado un tipo de talla. Por ejemplo, dentro de los diamantes “ideales”, la talla “VS1” es la más popular, la “VS2” es la segunda más popular y la “11” la menos popular. La distribución de la claridad dentro de los diamantes “ideales” parece ser bastante similar a la de otros diamantes, pero es difícil hacer esta comparación utilizando recuentos brutos. La figura 5.5 facilita esta comparación al mostrar la frecuencia relativa de los diamantes por claridad, dada una talla.

library(dplyr)
library(plotly)

# Número de diamantes por corte y claridad (n)
cc <- diamonds %>%
  count(cut, clarity)

# Número de diamantes por corte (nn)
cc2 <- cc %>%
  left_join(count(cc, cut, wt = n, name = 'nn'))
## Joining with `by = join_by(cut)`
# Calcular la proporción
cc2 <- cc2 %>%
  mutate(prop = n / nn)

# Crear el gráfico de barras
plot_ly(cc2, x = ~cut, y = ~prop, color = ~clarity, type = "bar") %>%
  layout(barmode = "stack")

FIGURA 5.5: Un gráfico de barras apiladas que muestra la proporción de claridad del diamante dentro del corte.

Este tipo de trama, también conocida como trama espinal, es un caso especial de trama en mosaico. En un gráfico de mosaico, puede escalar tanto el ancho como la altura de las barras según distribuciones discretas. Para gráficos de mosaico, recomiendo usar el paquete ggmosaic (Jeppson et al., 2016), que implementa un geom ggplot2 personalizado diseñado para gráficos de mosaico, que podemos convertir a plotly mediante ggplotly (). La Figura 5.6 muestra un diagrama de mosaico de corte por claridad. Observe cómo los anchos de las barras se escalan proporcionalmente a la frecuencia de corte.

library(ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.3
library(plotly)

# Crear el gráfico de mosaico
p <- ggplot(data = cc) +
  geom_mosaic(aes(weight = n, x = product(cut), fill = clarity))

# Convertir el gráfico de ggplot a plotly
ggplotly(p)
## Warning: `unite_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `unite()` instead.
## ℹ The deprecated feature was likely used in the ggmosaic package.
##   Please report the issue at <https://github.com/haleyjeppson/ggmosaic>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

FIGURA 5.6: Uso de ggmosaic y ggplotly() para crear visualizaciones interactivas avanzadas de datos categóricos.

SECCIÓN 6 - Diagramas de caja

Los diagramas de caja codifican el resumen de cinco números de una variable numérica y proporcionan una forma decente de comparar muchas distribuciones numéricas. La tarea visual de comparar múltiples diagramas de caja es relativamente fácil (es decir, comparar la posición a lo largo de una escala común) en comparación con algunas alternativas comunes (por ejemplo, una visualización enrejada de histogramas, como la Figura 5.1), pero el diagrama de caja a veces es inadecuado para capturar distribuciones complejas (por ejemplo, multimodales) (en este caso, un polígono de frecuencia, como el de la Figura 2.9, proporciona una buena alternativa). La función add_boxplot() requiere una variable numérica y garantiza que los diagramas de caja estén orientados correctamente, independientemente de si la variable numérica se coloca en la escala x o y. Como muestra la Figura 6.1, en el eje ortogonal al eje numérico, puede proporcionar una variable discreta (para acondicionamiento) o proporcionar un valor único (para nombrar la categoría del eje).

library(plotly)

# Crear un diagrama de caja con puntos de datos transparentes
p <- plot_ly(diamonds, y = ~price, color = I("black"),
             alpha = 0.1, boxpoints = "suspectedoutliers")

# Añadir un diagrama de caja a 'p' con la variable "Overall" en el eje x
pl <- p %>% add_boxplot(x = "Overall")

# Añadir otro diagrama de caja a 'p' con la variable "cut" en el eje x
p2 <- p %>% add_boxplot(x = ~cut)

# Crear los subgráficos
subplot(
  pl, p2, shareY = TRUE,
  widths = c(0.2, 0.8), margin = 0
) %>% hide_legend()

FIGURA 6.1: Precio general del diamante y precio por talla.

Si desea dividir por más de una variable discreta, puede usar la interacción de esas variables con el eje discreto y colorear por la variable anidada, como lo hace la Figura 6.2 con la claridad y el corte del diamante. Otro enfoque sería utilizar una pantalla enrejada, similar a la Figura 13.9.

library(plotly)

# Crear un diagrama de caja con la variable 'price' en el eje x y la interacción entre 'clarity' y 'cut' en el eje y
plot_ly(diamonds, x = ~price, y = ~interaction(clarity, cut)) %>%
  add_boxplot(color = ~clarity) %>%
  layout(yaxis = list(title = ""))

FIGURA 6.2: Precios de los diamantes por talla y claridad.

También resulta útil ordenar los diagramas de caja según algo significativo, como el precio medio. La Figura 6.3 presenta la misma información que la Figura 6.2, pero ordena los diagramas de caja por su mediana y deja inmediatamente claro que los diamantes con una talla “SI2” tienen el precio más alto, en promedio.

library(dplyr)
library(plotly)

# Añadir la interacción entre 'clarity' y 'cut' como una nueva variable 'cc'
d <- diamonds %>%
  mutate(cc = interaction(clarity, cut))

# Obtener los niveles de interacción ordenados por la mediana del precio
lvls <- d %>%
  group_by(cc) %>%
  summarise(m = median(price)) %>%
  arrange(m) %>%
  pull(cc)

# Crear el gráfico de diagrama de caja
plot_ly(d, x = ~price, y = ~factor(cc, levels = lvls)) %>%
  add_boxplot(color = ~clarity) %>%
  layout(yaxis = list(title = ""))

FIGURA 6.3: Precios de los diamantes por talla y claridad, ordenados por mediana de precios.

Similar a add_histogram(), add_boxplot() envía los datos sin procesar al navegador y permite que plotly.js calcule estadísticas resumidas. Desafortunadamente, plotly.js aún no permite estadísticas precalculadas para diagramas de caja.

SECCIÓN 7 - Frecuencias 2D

##7.1 Agrupación rectangular en plotly.js El paquete plotly proporciona dos funciones para mostrar contenedores rectangulares: add_heatmap() y add_histogram2d(). Para datos numéricos, la función add_heatmap() es un análogo 2D de add_bars() (los bins deben calcularse previamente), y la función add_histogram2d() es un análogo 2D de add_histogram() (los bins se pueden calcular en el navegador). Por lo tanto, recomiendo add_histogram2d() con fines exploratorios, ya que no es necesario pensar en cómo realizar la agrupación. También proporciona un útil atributo zs-mooth¹ para aumentar efectivamente el número de contenedores (actualmente, “best” realiza una interpolación bilineal², un tipo de algoritmo de vecinos más cercanos) y atributos nbinsx³/nbinsy para establecer el número de contenedores en el direcciones x y/o y. La Figura 7.1 compara tres usos diferentes de add_histogram(): (1) el algoritmo de agrupamiento predeterminado de plotly.js, (2) el suavizado predeterminado más, (3) establecer el número de bins en las direcciones x e y. También vale la pena señalar que los contornos rellenos, en lugar de contenedores, se pueden usar en cualquiera de estos casos usando add_histogram2dcontour() en lugar de add_histogram2d().

library(plotly)

# Crear un gráfico scatter plot con el eje x como 'carat' y el eje y como logaritmo de 'price'
p <- plot_ly(diamonds, x = ~carat, y = ~log(price), type = "scatter", mode = "markers")

# Crear subplots con histogramas 2D y configuraciones específicas
subplot(
  p %>% add_histogram2d() %>% colorbar(title = "default") %>% layout(xaxis = list(title = "default")),
  p %>% add_histogram2d(zsmooth = "best") %>% colorbar(title = "zsmooth") %>% layout(xaxis = list(title = "zsmooth")),
  p %>% add_histogram2d(nbinsx = 60, nbinsy = 68) %>% colorbar(title = "nbins") %>% layout(xaxis = list(title = "nbins")),
  shareY = TRUE, titleX = TRUE
)
## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

## Warning: 'histogram2d' objects don't have these attributes: 'mode'
## Valid attributes include:
## 'autobinx', 'autobiny', 'autocolorscale', 'bingroup', 'coloraxis', 'colorbar', 'colorscale', 'customdata', 'customdatasrc', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'opacity', 'reversescale', 'showlegend', 'showscale', 'stream', 'textfont', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xaxis', 'xbingroup', 'xbins', 'xcalendar', 'xgap', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybingroup', 'ybins', 'ycalendar', 'ygap', 'yhoverformat', 'ysrc', 'z', 'zauto', 'zhoverformat', 'zmax', 'zmid', 'zmin', 'zsmooth', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

##7.2 Agrupación rectangular en R En el Capítulo 5, aprovechamos una serie de algoritmos en R para calcular el número “óptimo” de contenedores para un histograma, a través de hist(), y enrutar esos resultados a add_bars (). Hay una sorprendente falta de investigación y herramientas computacionales para el análogo 2D, y entre las investigaciones que existen, las soluciones generalmente dependen de las características desconocidas de la distribución subyacente, por lo que el enfoque típico es asumir una forma gaussiana (Scott, 1992). En la práctica, esa suposición no es muy útil, pero la estimación de la densidad del kernel 2D proporciona una alternativa útil que tiende a ser más robusta ante los cambios en la forma distributiva. Aunque la estimación de la densidad del núcleo requiere la elección del núcleo y un parámetro de ancho de banda, la función kde2d() del paquete MASS proporciona una regla general bien respaldada para estimar el ancho de banda de una densidad del núcleo gaussiano (Venables y Ripley, 2002). La Figura 7.2 usa kde2d() para estimar una densidad 2D, escala la frecuencia relativa a una frecuencia absoluta y luego usa la función add_heatmap() para mostrar los resultados como un mapa de calor.

library(plotly)
library(MASS)
## Warning: package 'MASS' was built under R version 4.3.3
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## The following object is masked from 'package:plotly':
## 
##     select
# Definir la función kde_count
kde_count <- function(x, y, ...) {
  kde <- MASS::kde2d(x, y, ...)
  df <- with(kde, setNames(expand.grid(x, y), c("x", "y")))
  # Escalar 'z' a un recuento
  count <- with(kde, c(z) * length(x) * diff(x)[1] * diff(y)[1])
  data.frame(df, count)
}

# Aplicar la función kde_count a los datos de diamantes
kd <- with(diamonds, kde_count(log(carat), log(price), n = 30))

# Crear un heatmap con los resultados del KDE
plot_ly(kd, x = ~x, y = ~y, z = ~count) %>%
  add_heatmap() %>%
  colorbar(title = "Número de diamantes")

FIGURA 7.2: Estimación de densidad 2D mediante la función kde2d().

##7.3 Ejes categóricos Las funciones add_histogram2d(), add_histogram2dcontour () y add_heatmap() admiten ejes categóricos. Por lo tanto, add_histogram2d() se puede utilizar para mostrar fácilmente tablas de contingencia bidireccionales, pero como es más fácil comparar valores a lo largo de una escala común que comparar colores (Cleveland y McGill, 1984), recomiendo crear gráficos de barras agrupadas. Sin embargo, la función add_heatmap() aún puede ser útil para ejes categóricos, ya que nos permite mostrar cualquier cantidad que queramos a lo largo del eje z (color).

La Figura 7.3 usa add_heatmap() para mostrar una matriz de correlación. Observe cómo los argumentos de límites en la función colorbar() se pueden usar para expandir los límites de la escala de colores para reflejar el rango de posibles correlaciones (algo que no se hace fácilmente en plotly.js).

library(plotly)
library(dplyr)

# Calcular la matriz de correlación de las variables numéricas
corr <- cor(dplyr::select_if(diamonds, is.numeric))

# Crear el heatmap de la matriz de correlación
plot_ly(colors = "RdBu") %>%
  add_heatmap(x = rownames(corr), y = colnames(corr), z = corr) %>%
  colorbar(limits = c(-1, 1))

FIGURA 7.3: Visualización de una matriz de correlación con add_heatmap() y control de los límites de escala con colorbar ().

#SECCIÓN 8 - Gráficos 3D ##8.1 Marcadores Resulta que simplemente agregando un atributo z, plot_ly() automáticamente representa marcadores, líneas y rutas en tres dimensiones. Eso significa que todas las técnicas que aprendimos en las Secciones 3.1 y 3.2 se pueden reutilizar para gráficos 3D:

library(plotly)

# Crear un gráfico 3D de dispersión con las variables 'cty', 'hwy' y 'cyl'
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>% 
  add_markers(color = ~cyl)

FIGURA 8.1: Un diagrama de dispersión 3D.

##8.2 Caminos Para crear un camino en 3D, use add_paths() de la misma manera que lo haría para un camino 2D, pero agregue una tercera variable z, como lo hace la Figura 8.2.

library(plotly)

# Crear un gráfico 3D de líneas con las variables 'cty', 'hwy' y 'cyl'
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_paths(color = ~displ)

FIGURA 8.2: Un camino con interpolación de color en 3D.

##8.3 Líneas La Figura 8.3 usa add_lines() en lugar de add_paths () para garantizar que los puntos estén conectados por el eje x en lugar del orden de las filas.

library(plotly)

# Crear un gráfico 3D de líneas con las variables 'cty', '-hwy' y 'cyl'
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_lines(color = ~displ)

FIGURA 8.3: Una línea con interpolación de color en 3D.

Al igual que con las líneas que no son 3D, puede crear varias líneas especificando una variable de agrupación.

library(plotly)
library(dplyr)

# Crear un gráfico 3D de líneas con las variables 'cty', '-hwy' y 'cyl', agrupado por 'cyl'
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  group_by(cyl) %>%
  add_lines(color = ~displ)

FIGURA 8.4: Uso de group_by () para crear múltiples líneas 3D.

##8.4 Ejes Para gráficos 3D, tenga en cuenta que los objetos del eje son parte de la definición de escena¹, que es parte del diseño(). Es decir, si desea establecer títulos de ejes (por ejemplo, Figura 8.5), o algo más específico para la definición de ejes, la relación entre ejes (es decir, relación de aspecto²) o la configuración predeterminada de la cámara (es decir, cámara³); lo harías a través de la escena.

library(plotly)

# Crear un gráfico 3D de líneas con las variables 'cty', 'hwy' y 'cyl'
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_lines(color = ~displ) %>%
  layout(
    scene = list(
      xaxis = list(title = "MPG city"),
      yaxis = list(title = "MPG highway"),
      zaxis = list(title = "Number of cylinders")
    )
  )

FIGURA 8.5: Configuración de títulos de ejes en un gráfico 3D.

##8.5 Superficies Crear superficies 3D con add_surface() es muy parecido a crear mapas de calor con add_heatmap(). De hecho, incluso puedes crear superficies 3D sobre x/y categóricas (intenta cambiar add_heatmap() por add_surface() en la Figura 7.3). Dicho esto, debería haber un orden sensato para los ejes x/y en un gráfico de superficie, ya que plotly.js interpola los valores z. Normalmente la superficie 3D se encuentra sobre una región continua, como se hace en la Figura 8.6 para mostrar la altura de un volcán. Si se proporciona una matriz numérica para z como en la Figura 8.6, no es necesario proporcionar los atributos x e y, pero si lo son,la longitud de x debe coincidir con el número de columnas de la matriz y y debe coincidir con el número de filas.

library(plotly)

x <- seq_len(nrow(volcano)) + 100
y <- seq_len(ncol(volcano)) + 500

plot_ly() %>%
  add_surface(x = x, y = y, z = ~volcano)

FIGURA 8.6: Una superficie 3D de la altura del volcán.