#Contexto

Para Arca Continental su principal canal de distribución es el canal tradicional, es decir, las tienditas de la esquina. Esto permite que la familia de productos de la compañía Coca Cola estén siempre cerca de sus consumidores a través de estas pequeñas empresas familiares que forman parte de su propia comunidad.

Sin embargo, este tipo de formato de Retail está enfrentando una fuerte competencia por parte de los canales modernos. En un principio fueron las tiendas de conveniencia como Oxxo y 7-Eleven quienes comenzaron a crear una importante cantidad de nuevos establecimientos, cada vez más en zonas habitacionales y no solo en avenidas o gasolineras.

#Instalar paquetes y llamar librerías

install.packages("DataExplorer")
library(DataExplorer)
install.packages("dplyr")
library(dplyr)
install.packages("tidyverse")
library(tidyverse)
install.packages("ggplot2")
library(ggplot2)
install.packages("forecast")
library(forecast)

#Importar la base de datos

# file.choose()
df <- read.csv("/cloud/project/Datos Arca Continental Original.csv")
colnames(df) <- make.names(colnames(df))

#Análisis Descriptivo

summary(df)
##        ID              Año        Territorio        Sub.Territorio    
##  Min.   :     1   Min.   :2016   Length:151219      Length:151219     
##  1st Qu.: 37806   1st Qu.:2016   Class :character   Class :character  
##  Median : 75610   Median :2016   Mode  :character   Mode  :character  
##  Mean   : 75610   Mean   :2016                                        
##  3rd Qu.:113414   3rd Qu.:2017                                        
##  Max.   :151219   Max.   :2017                                        
##      CEDI              Cliente         Nombre          Tamaño.Cte.Industria
##  Length:151219      Min.   :    4   Length:151219      Length:151219       
##  Class :character   1st Qu.: 5365   Class :character   Class :character    
##  Mode  :character   Median :34975   Mode  :character   Mode  :character    
##                     Mean   :42302                                          
##                     3rd Qu.:76863                                          
##                     Max.   :99998                                          
##  Segmento.Det          Marca           Presentacion          Tamaño         
##  Length:151219      Length:151219      Length:151219      Length:151219     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Retornable_NR         Enero             Febrero             Marzo          
##  Length:151219      Length:151219      Length:151219      Length:151219     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Abril               Mayo              Junio              Julio          
##  Length:151219      Length:151219      Length:151219      Length:151219     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Agosto           Septiembre          Octubre           Noviembre        
##  Length:151219      Length:151219      Length:151219      Length:151219     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##   Diciembre        
##  Length:151219     
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
str(df)
## 'data.frame':    151219 obs. of  25 variables:
##  $ ID                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Año                 : int  2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
##  $ Territorio          : chr  "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
##  $ Sub.Territorio      : chr  "Belenes" "Belenes" "Belenes" "Belenes" ...
##  $ CEDI                : chr  "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
##  $ Cliente             : int  77737 77737 77737 77737 77737 77737 77737 77737 77737 77737 ...
##  $ Nombre              : chr  "ABARR" "ABARR" "ABARR" "ABARR" ...
##  $ Tamaño.Cte.Industria: chr  "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
##  $ Segmento.Det        : chr  "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
##  $ Marca               : chr  "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
##  $ Presentacion        : chr  "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
##  $ Tamaño              : chr  "Individual" "Individual" "Individual" "Individual" ...
##  $ Retornable_NR       : chr  "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
##  $ Enero               : chr  "" "" "" "" ...
##  $ Febrero             : chr  "" "2" "" "" ...
##  $ Marzo               : chr  "" "8" "3" "" ...
##  $ Abril               : chr  "" "4" "6" "" ...
##  $ Mayo                : chr  "" "4" "3" "" ...
##  $ Junio               : chr  "" "2" "3" "" ...
##  $ Julio               : chr  "" "2" "3" "" ...
##  $ Agosto              : chr  "" "2" "3" "" ...
##  $ Septiembre          : chr  "" "2" "3" "" ...
##  $ Octubre             : chr  "" "2" "3" "" ...
##  $ Noviembre           : chr  "" "4" "3" "" ...
##  $ Diciembre           : chr  "1" "2" "3" "1" ...
#create_report(df)
introduce(df)
##     rows columns discrete_columns continuous_columns all_missing_columns
## 1 151219      25               22                  3                   0
##   total_missing_values complete_rows total_observations memory_usage
## 1                    0        151219            3780475     28806528
plot_intro(df)

plot_missing(df)

plot_histogram(df)

plot_bar(df)
## 14 columns ignored with more than 50 categories.
## Nombre: 581 categories
## Presentacion: 52 categories
## Enero: 421 categories
## Febrero: 415 categories
## Marzo: 473 categories
## Abril: 490 categories
## Mayo: 522 categories
## Junio: 528 categories
## Julio: 494 categories
## Agosto: 497 categories
## Septiembre: 492 categories
## Octubre: 515 categories
## Noviembre: 515 categories
## Diciembre: 534 categories

plot_correlation(df)
## 15 features with more than 20 categories ignored!
## Nombre: 581 categories
## Marca: 48 categories
## Presentacion: 52 categories
## Enero: 421 categories
## Febrero: 415 categories
## Marzo: 473 categories
## Abril: 490 categories
## Mayo: 522 categories
## Junio: 528 categories
## Julio: 494 categories
## Agosto: 497 categories
## Septiembre: 492 categories
## Octubre: 515 categories
## Noviembre: 515 categories
## Diciembre: 534 categories
## Warning in cor(x = structure(list(ID = 1:151219, Año = c(2016L, 2016L, : the
## standard deviation is zero

count(df, Territorio, sort=TRUE)
##    Territorio      n
## 1 Guadalajara 151219
count(df, Sub.Territorio, sort=TRUE)
##   Sub.Territorio     n
## 1      Huentitán 63662
## 2     Toluquilla 57820
## 3        Belenes 29737
count(df, CEDI, sort=TRUE)
##              CEDI     n
## 1  Suc. Huentitán 63662
## 2 Suc. Toluquilla 57820
## 3    Suc. Belenes 29737
count(df, Cliente, sort=TRUE)
##      Cliente   n
## 1        286 306
## 2        750 295
## 3       1378 281
## 4       1053 280
## 5       1174 276
## 6       1397 273
## 7        689 263
## 8       1582 257
## 9       1451 254
## 10      1523 253
## 11      1130 250
## 12      1288 249
## 13      1032 238
## 14      1431 238
## 15      1937 236
## 16       372 235
## 17       605 233
## 18       411 231
## 19       475 231
## 20      1862 230
## 21       386 228
## 22        54 227
## 23       294 226
## 24      2097 226
## 25      1724 223
## 26       113 220
## 27      1257 218
## 28      1203 217
## 29        27 214
## 30      1074 214
## 31      1196 214
## 32      1880 214
## 33       487 212
## 34       371 211
## 35      1039 209
## 36       365 208
## 37      2224 204
## 38       683 200
## 39       866 200
## 40        30 199
## 41       575 199
## 42      1836 199
## 43      1939 199
## 44       457 193
## 45      1546 192
## 46      2912 192
## 47      2019 191
## 48      1098 187
## 49       391 185
## 50        73 184
## 51      1685 183
## 52       800 182
## 53      1126 178
## 54      1238 175
## 55      2069 175
## 56      2111 172
## 57        62 170
## 58      1794 170
## 59      1870 169
## 60      5583 164
## 61      7821 161
## 62     53916 160
## 63      1859 158
## 64      9872 154
## 65     98475 151
## 66      9455 150
## 67     97821 150
## 68     75365 147
## 69      1511 146
## 70      8112 146
## 71     97665 146
## 72      6223 145
## 73      8475 143
## 74      8373 141
## 75     95879 141
## 76      1920 140
## 77      5365 140
## 78      8672 140
## 79      1343 137
## 80     98373 137
## 81      2706 136
## 82      3601 136
## 83      7383 136
## 84     73331 136
## 85     94609 136
## 86     98694 136
## 87      7665 135
## 88      5879 134
## 89     79872 134
## 90     80438 134
## 91     97446 134
## 92      7033 133
## 93     72764 133
## 94     79455 133
## 95     96812 133
## 96     98672 133
## 97      4112 132
## 98      4122 132
## 99      8409 132
## 100    82647 132
## 101    96223 132
## 102    99267 132
## 103     3881 131
## 104     4855 131
## 105     5261 131
## 106    83072 131
## 107    97538 131
## 108    98791 131
## 109     7843 130
## 110    72797 130
## 111    95583 130
## 112     4431 129
## 113     7446 129
## 114     8029 129
## 115    79139 129
## 116    96251 129
## 117     4169 128
## 118     9267 128
## 119     9615 128
## 120    56247 128
## 121    75765 128
## 122      623 127
## 123     1716 127
## 124     6812 127
## 125     8791 127
## 126    81395 127
## 127    82706 127
## 128    96228 127
## 129    96547 127
## 130    97033 127
## 131    98409 127
## 132    98484 127
## 133     1812 126
## 134     5719 126
## 135     6775 126
## 136     7538 126
## 137     8484 126
## 138    35053 126
## 139    72663 126
## 140    74855 126
## 141    75093 126
## 142    76253 126
## 143     1956 125
## 144     8018 125
## 145     8694 125
## 146     9010 125
## 147     9371 125
## 148     9998 125
## 149    79010 125
## 150    81716 125
## 151    96307 125
## 152      948 124
## 153     4026 124
## 154     6004 124
## 155     6307 124
## 156    73234 124
## 157    74002 124
## 158    94431 124
## 159    96805 124
## 160     1090 123
## 161     2764 123
## 162     6251 123
## 163     7875 123
## 164     8946 123
## 165     9041 123
## 166    77875 123
## 167    98065 123
## 168    99734 123
## 169      438 122
## 170     3798 122
## 171     4609 122
## 172     4924 122
## 173     5230 122
## 174     6102 122
## 175     6547 122
## 176     6593 122
## 177     8152 122
## 178     8483 122
## 179     8612 122
## 180     9139 122
## 181    42627 122
## 182    74116 122
## 183    76422 122
## 184    80335 122
## 185    81759 122
## 186    98029 122
## 187     1759 121
## 188     3072 121
## 189     3331 121
## 190     4167 121
## 191     5965 121
## 192     8266 121
## 193     9574 121
## 194     9646 121
## 195    75840 121
## 196    82075 121
## 197    95493 121
## 198    96451 121
## 199    98329 121
## 200    99245 121
## 201     6805 120
## 202    76802 120
## 203    77545 120
## 204    79615 120
## 205    96811 120
## 206    98266 120
## 207    99371 120
## 208    99759 120
## 209    99998 120
## 210     2647 119
## 211     3961 119
## 212     4734 119
## 213     6319 119
## 214     9245 119
## 215     9462 119
## 216     9759 119
## 217    53595 119
## 218    72878 119
## 219    81731 119
## 220    81956 119
## 221    82000 119
## 222    95525 119
## 223    95959 119
## 224    98152 119
## 225    99398 119
## 226      242 118
## 227     1393 118
## 228     2000 118
## 229     4693 118
## 230     5108 118
## 231     6811 118
## 232     9964 118
## 233    34178 118
## 234    76874 118
## 235    79646 118
## 236    96091 118
## 237    96190 118
## 238    96555 118
## 239    96673 118
## 240    99173 118
## 241    99816 118
## 242     1395 117
## 243     2651 117
## 244     2663 117
## 245     5706 117
## 246     6556 117
## 247     6673 117
## 248     7769 117
## 249     7884 117
## 250     9173 117
## 251    72682 117
## 252    73798 117
## 253    74034 117
## 254    75488 117
## 255    75965 117
## 256    76102 117
## 257    76986 117
## 258    78946 117
## 259    95359 117
## 260    99248 117
## 261      335 116
## 262     2146 116
## 263     4116 116
## 264     8493 116
## 265    73875 116
## 266    75257 116
## 267    77196 116
## 268    77309 116
## 269    79574 116
## 270    95108 116
## 271    96181 116
## 272    96593 116
## 273    99864 116
## 274      183 115
## 275     2797 115
## 276     3234 115
## 277     5765 115
## 278     6414 115
## 279     7988 115
## 280    63881 115
## 281    73249 115
## 282    73867 115
## 283    75230 115
## 284    79462 115
## 285    94026 115
## 286    94122 115
## 287     1916 114
## 288     3867 114
## 289     5840 114
## 290     6555 114
## 291     7316 114
## 292     7742 114
## 293     8795 114
## 294     9506 114
## 295    73535 114
## 296    73748 114
## 297    76556 114
## 298    80242 114
## 299    81393 114
## 300    81812 114
## 301    94734 114
## 302    95259 114
## 303    96319 114
## 304    97464 114
## 305    98018 114
## 306    98407 114
## 307    98421 114
## 308    99957 114
## 309     2627 113
## 310     5093 113
## 311     5781 113
## 312     6091 113
## 313     7632 113
## 314     8259 113
## 315     8802 113
## 316     9734 113
## 317     9756 113
## 318    77884 113
## 319    80183 113
## 320    94169 113
## 321    96004 113
## 322    98537 113
## 323    99210 113
## 324     1791 112
## 325     4002 112
## 326     5263 112
## 327     5511 112
## 328     5531 112
## 329     5959 112
## 330     6874 112
## 331     7704 112
## 332     8537 112
## 333     9957 112
## 334    42835 112
## 335    73455 112
## 336    75511 112
## 337    79275 112
## 338    96729 112
## 339    98259 112
## 340    99165 112
## 341     2075 111
## 342     2682 111
## 343     3069 111
## 344     3535 111
## 345     5257 111
## 346     5901 111
## 347     6729 111
## 348     6785 111
## 349     7831 111
## 350    42908 111
## 351    75706 111
## 352    77501 111
## 353    81713 111
## 354    95781 111
## 355    98612 111
## 356      664 110
## 357     2661 110
## 358     3107 110
## 359     5835 110
## 360     6228 110
## 361     6986 110
## 362     8010 110
## 363    74580 110
## 364    75712 110
## 365    76999 110
## 366    83085 110
## 367    94924 110
## 368        4 109
## 369      100 109
## 370      247 109
## 371      578 109
## 372      652 109
## 373     5493 109
## 374     7917 109
## 375     9248 109
## 376    42651 109
## 377    73069 109
## 378    74112 109
## 379    77917 109
## 380    93961 109
## 381    94769 109
## 382    95835 109
## 383    98802 109
## 384     2399 108
## 385     2780 108
## 386     3249 108
## 387     6181 108
## 388     6451 108
## 389     6802 108
## 390     8065 108
## 391     8201 108
## 392     8283 108
## 393     9017 108
## 394     9165 108
## 395    78284 108
## 396    80578 108
## 397    81543 108
## 398    94241 108
## 399    94310 108
## 400    94693 108
## 401    96414 108
## 402    97450 108
## 403    97831 108
## 404    98483 108
## 405    99964 108
## 406     1180 107
## 407     1635 107
## 408     1664 107
## 409     1785 107
## 410     2795 107
## 411     3023 107
## 412     3063 107
## 413     4241 107
## 414     4769 107
## 415     5023 107
## 416     5359 107
## 417     6263 107
## 418     8140 107
## 419     8402 107
## 420    42780 107
## 421    72859 107
## 422    73401 107
## 423    78186 107
## 424    80100 107
## 425    81182 107
## 426    81916 107
## 427    82912 107
## 428    94167 107
## 429    95023 107
## 430    96557 107
## 431    96785 107
## 432    97704 107
## 433      921 106
## 434     1160 106
## 435     4373 106
## 436     4695 106
## 437     8407 106
## 438     9210 106
## 439    73107 106
## 440    73601 106
## 441    73853 106
## 442    74250 106
## 443    74979 106
## 444    77800 106
## 445    78795 106
## 446    80921 106
## 447    97452 106
## 448    98283 106
## 449    99797 106
## 450      184 105
## 451      396 105
## 452     1182 105
## 453     1388 105
## 454     2539 105
## 455     3853 105
## 456     5259 105
## 457     5488 105
## 458     6014 105
## 459     6190 105
## 460     7309 105
## 461     7478 105
## 462     7800 105
## 463    10885 105
## 464    34531 105
## 465    72967 105
## 466    73971 105
## 467    74174 105
## 468    74293 105
## 469    76863 105
## 470    79506 105
## 471    94440 105
## 472    96626 105
## 473    99756 105
## 474     3157 104
## 475     4814 104
## 476     5526 104
## 477     6253 104
## 478     6422 104
## 479     6557 104
## 480     8543 104
## 481     9398 104
## 482     9816 104
## 483    10439 104
## 484    16252 104
## 485    72658 104
## 486    72820 104
## 487    74695 104
## 488    81030 104
## 489    81635 104
## 490    95531 104
## 491    96775 104
## 492    97742 104
## 493    98140 104
## 494      885 103
## 495     2878 103
## 496     3455 103
## 497     3875 103
## 498     3963 103
## 499     8186 103
## 500     8408 103
## 501     8572 103
## 502    73965 103
## 503    78010 103
## 504    79743 103
## 505    81664 103
## 506    82146 103
## 507    96263 103
## 508    97230 103
## 509    98408 103
## 510     6381 102
## 511     7196 102
## 512     7450 102
## 513     7501 102
## 514     8125 102
## 515     8154 102
## 516     9098 102
## 517     9603 102
## 518    62661 102
## 519    72929 102
## 520    73157 102
## 521    77288 102
## 522    79041 102
## 523    80396 102
## 524    81090 102
## 525    82399 102
## 526    99781 102
## 527      932 101
## 528     1543 101
## 529     2486 101
## 530     2908 101
## 531     3965 101
## 532     4174 101
## 533     4375 101
## 534     4657 101
## 535     5007 101
## 536     5525 101
## 537     5718 101
## 538     7488 101
## 539     9864 101
## 540    31409 101
## 541    73357 101
## 542    74215 101
## 543    79017 101
## 544    80652 101
## 545    82795 101
## 546    94528 101
## 547    94712 101
## 548    95743 101
## 549    95796 101
## 550    96025 101
## 551    97488 101
## 552    98543 101
## 553    98572 101
## 554    99788 101
## 555     1731 100
## 556     1795 100
## 557     4861 100
## 558     6005 100
## 559     6160 100
## 560     8329 100
## 561     9913 100
## 562    76182 100
## 563    78201 100
## 564    94548 100
## 565    94644 100
## 566    95718 100
## 567    96014 100
## 568      407  99
## 569     1030  99
## 570     1713  99
## 571     3401  99
## 572     4979  99
## 573     5712  99
## 574     6352  99
## 575     6449  99
## 576     7230  99
## 577     7740  99
## 578     8228  99
## 579     8250  99
## 580     9275  99
## 581     9707  99
## 582     9788  99
## 583     9797  99
## 584    42539  99
## 585    56793  99
## 586    75119  99
## 587    75177  99
## 588    76601  99
## 589    79603  99
## 590    80597  99
## 591    80932  99
## 592    81180  99
## 593    96330  99
## 594    97478  99
## 595    97988  99
## 596    99098  99
## 597    99811  99
## 598     2967  98
## 599     3142  98
## 600     3748  98
## 601     4034  98
## 602     4548  98
## 603     6675  98
## 604     6847  98
## 605     7299  98
## 606    42486  98
## 607    72736  98
## 608    73286  98
## 609    75231  98
## 610    76449  98
## 611    76869  98
## 612    79884  98
## 613    81795  98
## 614    96005  98
## 615    97632  98
## 616     4581  97
## 617     5532  97
## 618     5535  97
## 619     9671  97
## 620     9861  97
## 621    74814  97
## 622    75535  97
## 623    76473  97
## 624    78842  97
## 625    80535  97
## 626    80786  97
## 627    94478  97
## 628    95261  97
## 629      485  96
## 630     3247  96
## 631     4310  96
## 632     4440  96
## 633     6999  96
## 634     7208  96
## 635     7452  96
## 636     8284  96
## 637     8842  96
## 638    42700  96
## 639    73779  96
## 640    75448  96
## 641    75901  96
## 642    80664  96
## 643    81160  96
## 644    94367  96
## 645    96535  96
## 646    98250  96
## 647      439  95
## 648     1927  95
## 649     2413  95
## 650     2859  95
## 651     3971  95
## 652     4478  95
## 653     4528  95
## 654     6330  95
## 655     6863  95
## 656     7844  95
## 657     8421  95
## 658    33934  95
## 659    43325  95
## 660    72687  95
## 661    74370  95
## 662    75540  95
## 663    75775  95
## 664    76125  95
## 665    76457  95
## 666    76847  95
## 667    79742  95
## 668    79767  95
## 669    79915  95
## 670    80247  95
## 671    80485  95
## 672    81420  95
## 673    81818  95
## 674    97769  95
## 675     1317  94
## 676     2929  94
## 677     2980  94
## 678     3085  94
## 679     4115  94
## 680     4199  94
## 681     4367  94
## 682     5775  94
## 683     5796  94
## 684     6114  94
## 685     6457  94
## 686     6601  94
## 687     6626  94
## 688     7464  94
## 689     7796  94
## 690    42622  94
## 691    73570  94
## 692    74080  94
## 693    74657  94
## 694    77215  94
## 695    79677  94
## 696    80154  94
## 697    80407  94
## 698    81388  94
## 699    94050  94
## 700    94199  94
## 701    97842  94
## 702    97843  94
## 703     1818  93
## 704     2830  93
## 705     4293  93
## 706     4644  93
## 707     5119  93
## 708     5520  93
## 709     9742  93
## 710    42800  93
## 711    43290  93
## 712    58874  93
## 713    72997  93
## 714    73254  93
## 715    74698  93
## 716    75007  93
## 717    76675  93
## 718    80651  93
## 719    81785  93
## 720    93981  93
## 721    94964  93
## 722    96381  93
## 723    97740  93
## 724    97844  93
## 725    99861  93
## 726     2242  92
## 727     2294  92
## 728     2531  92
## 729     3357  92
## 730     4580  92
## 731     4712  92
## 732     4738  92
## 733     6043  92
## 734     9015  92
## 735     9781  92
## 736    34453  92
## 737    76016  92
## 738    78689  92
## 739    94861  92
## 740    96007  92
## 741    98402  92
## 742    99707  92
## 743      154  91
## 744      786  91
## 745     3254  91
## 746     3981  91
## 747     4050  91
## 748     4215  91
## 749     4238  91
## 750     4968  91
## 751     5177  91
## 752     5857  91
## 753     8306  91
## 754     8689  91
## 755    11588  91
## 756    12372  91
## 757    34517  91
## 758    73322  91
## 759    74508  91
## 760    77796  91
## 761    78678  91
## 762    80286  91
## 763    83023  91
## 764    83142  91
## 765    95526  91
## 766    97857  91
## 767      445  90
## 768     2835  90
## 769     3083  90
## 770     3570  90
## 771     3779  90
## 772     4964  90
## 773     5046  90
## 774     6792  90
## 775     9140  90
## 776     9811  90
## 777     9915  90
## 778    30625  90
## 779    34670  90
## 780    42611  90
## 781    74115  90
## 782    74375  90
## 783    77198  90
## 784    77333  90
## 785    82242  90
## 786    82531  90
## 787    95532  90
## 788    96462  90
## 789    98228  90
## 790    98493  90
## 791      535  89
## 792      597  89
## 793     2687  89
## 794     2736  89
## 795     2759  89
## 796     4652  89
## 797     4792  89
## 798     6535  89
## 799     7198  89
## 800     7286  89
## 801     9186  89
## 802     9677  89
## 803     9743  89
## 804    42718  89
## 805    72980  89
## 806    73063  89
## 807    75046  89
## 808    77410  89
## 809    95203  89
## 810    98814  89
## 811      651  88
## 812     1588  88
## 813     3060  88
## 814     3931  88
## 815     4994  88
## 816     5231  88
## 817     6473  88
## 818     8691  88
## 819    11332  88
## 820    43287  88
## 821    72751  88
## 822    74763  88
## 823    74792  88
## 824    77208  88
## 825    77587  88
## 826    81317  88
## 827    97316  88
## 828    98125  88
## 829      426  87
## 830      905  87
## 831     2926  87
## 832     4250  87
## 833     5448  87
## 834     5690  87
## 835     6025  87
## 836     6182  87
## 837     7288  87
## 838     7474  87
## 839     9884  87
## 840    42331  87
## 841    43082  87
## 842    75857  87
## 843    76452  87
## 844    77286  87
## 845    80280  87
## 846    96112  87
## 847    96792  87
## 848    98071  87
## 849     4698  86
## 850     5014  86
## 851     5758  86
## 852     6007  86
## 853     6125  86
## 854     6252  86
## 855     6462  86
## 856     7545  86
## 857     7787  86
## 858     7842  86
## 859     9492  86
## 860    73963  86
## 861    74900  86
## 862    75651  86
## 863    78696  86
## 864    80004  86
## 865     2372  85
## 866     2611  85
## 867     4579  85
## 868     9591  85
## 869     9632  85
## 870     9961  85
## 871    35017  85
## 872    42912  85
## 873    43182  85
## 874    54271  85
## 875    72782  85
## 876    74748  85
## 877    77470  85
## 878    79873  85
## 879    81116  85
## 880    81859  85
## 881    83179  85
## 882    94581  85
## 883    98306  85
## 884     1897  84
## 885     4763  84
## 886     7367  84
## 887     7410  84
## 888     9230  84
## 889     9873  84
## 890    31225  84
## 891    33557  84
## 892    43087  84
## 893    56108  84
## 894    73005  84
## 895    73496  84
## 896    74994  84
## 897    75163  84
## 898    76301  84
## 899    80337  84
## 900    80426  84
## 901    82759  84
## 902    82926  84
## 903    95758  84
## 904    96865  84
## 905    97612  84
## 906    98561  84
## 907      280  83
## 908     4582  83
## 909     4612  83
## 910     5507  83
## 911     5743  83
## 912     6055  83
## 913     6301  83
## 914     6452  83
## 915     6869  83
## 916     9767  83
## 917    34713  83
## 918    42516  83
## 919    42830  83
## 920    43323  83
## 921    43520  83
## 922    76043  83
## 923    77299  83
## 924    79140  83
## 925    79186  83
## 926    81286  83
## 927    82413  83
## 928    94596  83
## 929    99158  83
## 930     1420  82
## 931     2713  82
## 932     4382  82
## 933    33819  82
## 934    34753  82
## 935    43652  82
## 936    72713  82
## 937    73089  82
## 938    73901  82
## 939    76114  82
## 940    76235  82
## 941    82294  82
## 942    83060  82
## 943    94579  82
## 944     2516  81
## 945     2658  81
## 946     2751  81
## 947     2800  81
## 948     3189  81
## 949     3325  81
## 950     3527  81
## 951     4524  81
## 952     6112  81
## 953     7857  81
## 954     9158  81
## 955    42594  81
## 956    42634  81
## 957    51657  81
## 958    74155  81
## 959    74738  81
## 960    74968  81
## 961    76284  81
## 962    76525  81
## 963    77474  81
## 964    77737  81
## 965    79492  81
## 966      337  80
## 967     1116  80
## 968     2700  80
## 969     2861  80
## 970     5020  80
## 971     7778  80
## 972     8678  80
## 973    14650  80
## 974    35034  80
## 975    53062  80
## 976    73527  80
## 977    74336  80
## 978    75941  80
## 979    75988  80
## 980    95338  80
## 981    99045  80
## 982     4900  79
## 983     6464  79
## 984     7612  79
## 985     8190  79
## 986     8561  79
## 987    33755  79
## 988    34975  79
## 989    73418  79
## 990    74582  79
## 991    76055  79
## 992     1332  78
## 993     2594  78
## 994     2702  78
## 995     2993  78
## 996     3179  78
## 997     4370  78
## 998     7737  78
## 999     7791  78
## 1000    8696  78
## 1001   34311  78
## 1002   52808  78
## 1003   54792  78
## 1004   73247  78
## 1005   75209  78
## 1006   76209  78
## 1007   82861  78
## 1008   95520  78
## 1009   97794  78
## 1010   98154  78
## 1011    2529  77
## 1012    4202  77
## 1013   32024  77
## 1014   72988  77
## 1015   73083  77
## 1016   74612  77
## 1017   79671  77
## 1018   98899  77
## 1019    4567  76
## 1020    4596  76
## 1021    8899  76
## 1022   18861  76
## 1023   33617  76
## 1024   34673  76
## 1025   34715  76
## 1026   72979  76
## 1027   73075  76
## 1028   73931  76
## 1029   74896  76
## 1030   76797  76
## 1031   83189  76
## 1032   94513  76
## 1033    1286  75
## 1034    3857  75
## 1035    4513  75
## 1036    9045  75
## 1037   48547  75
## 1038   75145  75
## 1039   75534  75
## 1040   77204  75
## 1041   79591  75
## 1042   94567  75
## 1043   96160  75
## 1044   96967  75
## 1045    2456  74
## 1046    2634  74
## 1047    5015  74
## 1048    6930  74
## 1049    7794  74
## 1050    8814  74
## 1051    9745  74
## 1052   23745  74
## 1053   34155  74
## 1054   47519  74
## 1055   50489  74
## 1056   72817  74
## 1057   74646  74
## 1058   75784  74
## 1059   76230  74
## 1060   76930  74
## 1061   79913  74
## 1062   81746  74
## 1063   81897  74
## 1064   82529  74
## 1065   95014  74
## 1066   95020  74
## 1067   99015  74
## 1068   99230  74
## 1069    2047  73
## 1070    5521  73
## 1071    5568  73
## 1072    7204  73
## 1073   30183  73
## 1074   31100  73
## 1075   35051  73
## 1076   42476  73
## 1077   55049  73
## 1078   56323  73
## 1079   73812  73
## 1080   74179  73
## 1081   76067  73
## 1082   82702  73
## 1083   95568  73
## 1084    3058  72
## 1085    3082  72
## 1086    7333  72
## 1087    8071  72
## 1088    9169  72
## 1089   34657  72
## 1090   35073  72
## 1091   72855  72
## 1092   74284  72
## 1093   76193  72
## 1094   80184  72
## 1095    2737  71
## 1096    3745  71
## 1097    5203  71
## 1098    5338  71
## 1099    5651  71
## 1100   31604  71
## 1101   34533  71
## 1102   53000  71
## 1103   54832  71
## 1104   64238  71
## 1105   75413  71
## 1106   75719  71
## 1107   76759  71
## 1108   77411  71
## 1109   82456  71
## 1110   86898  71
## 1111   95521  71
## 1112   95690  71
## 1113   97383  71
## 1114   98682  71
## 1115    2476  70
## 1116    3308  70
## 1117    6365  70
## 1118   34954  70
## 1119   72739  70
## 1120   75782  70
## 1121   76228  70
## 1122   76365  70
## 1123   76454  70
## 1124   80905  70
## 1125   81927  70
## 1126   83292  70
## 1127   97039  70
## 1128    2496  69
## 1129    5420  69
## 1130    7339  69
## 1131    8187  69
## 1132   33996  69
## 1133   34755  69
## 1134   42632  69
## 1135   72849  69
## 1136   73332  69
## 1137   74150  69
## 1138   75050  69
## 1139   77592  69
## 1140    6865  68
## 1141   34977  68
## 1142   75722  68
## 1143   76376  68
## 1144   76464  68
## 1145   76624  68
## 1146   79169  68
## 1147   95263  68
## 1148    2988  67
## 1149    4650  67
## 1150    7178  67
## 1151   34731  67
## 1152   42593  67
## 1153   43277  67
## 1154   43600  67
## 1155   74063  67
## 1156   77311  67
## 1157    6477  66
## 1158    7483  66
## 1159   24997  66
## 1160   34772  66
## 1161   42552  66
## 1162   60591  66
## 1163   73972  66
## 1164   74626  66
## 1165   75878  66
## 1166   76707  66
## 1167   77339  66
## 1168   78691  66
## 1169   80998  66
## 1170     998  65
## 1171   17080  65
## 1172   34477  65
## 1173   34794  65
## 1174   42559  65
## 1175   43061  65
## 1176   73058  65
## 1177   75420  65
## 1178   75446  65
## 1179   76314  65
## 1180   77085  65
## 1181   77367  65
## 1182   77554  65
## 1183   96815  65
## 1184    3298  64
## 1185    6967  64
## 1186   33818  64
## 1187   34416  64
## 1188   53376  64
## 1189   57450  64
## 1190   72943  64
## 1191   75423  64
## 1192   76816  64
## 1193   79632  64
## 1194   94525  64
## 1195    2622  63
## 1196    3087  63
## 1197    3496  63
## 1198    5043  63
## 1199    5803  63
## 1200    7438  63
## 1201    8682  63
## 1202   31248  63
## 1203   34733  63
## 1204   52077  63
## 1205   56052  63
## 1206   74103  63
## 1207   74440  63
## 1208   76796  63
## 1209   76876  63
## 1210   77059  63
## 1211   82993  63
## 1212   94652  63
## 1213    4525  62
## 1214    6635  62
## 1215    7859  62
## 1216   27373  62
## 1217   73827  62
## 1218   74095  62
## 1219   74256  62
## 1220   74694  62
## 1221   75645  62
## 1222   76166  62
## 1223   76605  62
## 1224   81428  62
## 1225    6605  61
## 1226    6646  61
## 1227    7039  61
## 1228    7572  61
## 1229    7681  61
## 1230    7731  61
## 1231    7802  61
## 1232   29181  61
## 1233   34394  61
## 1234   43185  61
## 1235   50722  61
## 1236   72748  61
## 1237   73229  61
## 1238   74009  61
## 1239   74609  61
## 1240   82047  61
## 1241    5577  60
## 1242    7882  60
## 1243   34094  60
## 1244   34131  60
## 1245   43644  60
## 1246   55603  60
## 1247   72909  60
## 1248   75213  60
## 1249   77063  60
## 1250   10049  59
## 1251   10241  59
## 1252   31364  59
## 1253   33912  59
## 1254   34573  59
## 1255   34972  59
## 1256   43151  59
## 1257   44951  59
## 1258   58265  59
## 1259   59867  59
## 1260   73275  59
## 1261   74625  59
## 1262   76061  59
## 1263   76895  59
## 1264   94524  59
## 1265   95015  59
## 1266    1746  58
## 1267    6516  58
## 1268    6815  58
## 1269    7766  58
## 1270   42794  58
## 1271   47359  58
## 1272   73034  58
## 1273   73989  58
## 1274   74030  58
## 1275   74058  58
## 1276   74645  58
## 1277   74998  58
## 1278   75307  58
## 1279   76461  58
## 1280   76518  58
## 1281   76794  58
## 1282   94233  58
## 1283    7358  57
## 1284   33973  57
## 1285   34032  57
## 1286   34716  57
## 1287   42712  57
## 1288   47473  57
## 1289   76581  57
## 1290   77153  57
## 1291   77393  57
## 1292   96660  57
## 1293    7378  56
## 1294    7733  56
## 1295   31243  56
## 1296   31709  56
## 1297   33757  56
## 1298   34712  56
## 1299   42695  56
## 1300   43121  56
## 1301   54999  56
## 1302   57694  56
## 1303   75043  56
## 1304   75128  56
## 1305   75314  56
## 1306   75539  56
## 1307   75678  56
## 1308   76477  56
## 1309   96646  56
## 1310    7777  55
## 1311   30484  55
## 1312   35015  55
## 1313   42792  55
## 1314   73018  55
## 1315   74142  55
## 1316   76163  55
## 1317   77438  55
## 1318    8207  54
## 1319   16635  54
## 1320   31262  54
## 1321   34957  54
## 1322   43298  54
## 1323   43786  54
## 1324   72769  54
## 1325   74107  54
## 1326   77581  54
## 1327    7306  53
## 1328    7987  53
## 1329    8920  53
## 1330   10175  53
## 1331   31024  53
## 1332   31125  53
## 1333   32487  53
## 1334   33634  53
## 1335   34136  53
## 1336   43295  53
## 1337   43803  53
## 1338   72762  53
## 1339   74650  53
## 1340   75098  53
## 1341   76197  53
## 1342   76198  53
## 1343    4233  52
## 1344    7804  52
## 1345    9181  52
## 1346   16580  52
## 1347   30164  52
## 1348   33719  52
## 1349   34118  52
## 1350   47190  52
## 1351   57695  52
## 1352   74992  52
## 1353   75474  52
## 1354   75741  52
## 1355   76037  52
## 1356   76524  52
## 1357   77026  52
## 1358    7543  51
## 1359    7732  51
## 1360    7808  51
## 1361    8074  51
## 1362   31605  51
## 1363   34151  51
## 1364   34914  51
## 1365   35032  51
## 1366   43337  51
## 1367   43788  51
## 1368   43823  51
## 1369   43839  51
## 1370   54576  51
## 1371   74489  51
## 1372   74732  51
## 1373   76358  51
## 1374   76673  51
## 1375   77562  51
## 1376   18766  50
## 1377   26736  50
## 1378   32525  50
## 1379   54083  50
## 1380   61026  50
## 1381   72983  50
## 1382   76983  50
## 1383   77072  50
## 1384   77306  50
## 1385   77572  50
## 1386   77598  50
## 1387    1428  49
## 1388   30346  49
## 1389   42615  49
## 1390   43015  49
## 1391   43807  49
## 1392   54021  49
## 1393   54052  49
## 1394   57515  49
## 1395   60611  49
## 1396   62484  49
## 1397   73117  49
## 1398   74639  49
## 1399   74753  49
## 1400   74858  49
## 1401   75785  49
## 1402   77015  49
## 1403    6193  48
## 1404    6660  48
## 1405   31102  48
## 1406   31166  48
## 1407   33410  48
## 1408   33673  48
## 1409   33717  48
## 1410   56623  48
## 1411   57126  48
## 1412   61139  48
## 1413   72799  48
## 1414   74013  48
## 1415   74189  48
## 1416   74848  48
## 1417   77190  48
## 1418   95719  48
## 1419    4070  47
## 1420   30247  47
## 1421   31163  47
## 1422   43169  47
## 1423   43593  47
## 1424   43643  47
## 1425   43735  47
## 1426   60521  47
## 1427   72740  47
## 1428   73658  47
## 1429   76251  47
## 1430   76297  47
## 1431   77024  47
## 1432   77358  47
## 1433   77459  47
## 1434   97483  47
## 1435   98920  47
## 1436    7760  46
## 1437    8094  46
## 1438   31188  46
## 1439   33452  46
## 1440   42264  46
## 1441   42644  46
## 1442   43675  46
## 1443   55372  46
## 1444   73378  46
## 1445   73803  46
## 1446   77441  46
## 1447   77468  46
## 1448     628  45
## 1449    6672  45
## 1450   30325  45
## 1451   33674  45
## 1452   42617  45
## 1453   42990  45
## 1454   43671  45
## 1455   56053  45
## 1456   61364  45
## 1457   73115  45
## 1458   73560  45
## 1459   73634  45
## 1460   73835  45
## 1461   73966  45
## 1462   73987  45
## 1463   74534  45
## 1464   30501  44
## 1465   31304  44
## 1466   34910  44
## 1467   42496  44
## 1468   42777  44
## 1469   43167  44
## 1470   49301  44
## 1471   55789  44
## 1472   58042  44
## 1473   60015  44
## 1474   72737  44
## 1475   73679  44
## 1476   75211  44
## 1477   75984  44
## 1478    7771  43
## 1479   30445  43
## 1480   31546  43
## 1481   43889  43
## 1482   56493  43
## 1483   60314  43
## 1484   73012  43
## 1485   73082  43
## 1486   73210  43
## 1487   74248  43
## 1488   77359  43
## 1489   95803  43
## 1490   99745  43
## 1491    7812  42
## 1492    8221  42
## 1493    9172  42
## 1494    9737  42
## 1495   30580  42
## 1496   31859  42
## 1497   42524  42
## 1498   43181  42
## 1499   43275  42
## 1500   43763  42
## 1501   53150  42
## 1502   58266  42
## 1503   58448  42
## 1504   58837  42
## 1505   61068  42
## 1506   63345  42
## 1507   73030  42
## 1508   73318  42
## 1509   74706  42
## 1510   76072  42
## 1511   76751  42
## 1512   94842  42
## 1513    7861  41
## 1514   31823  41
## 1515   33932  41
## 1516   42535  41
## 1517   43179  41
## 1518   58293  41
## 1519   73414  41
## 1520   73660  41
## 1521   73678  41
## 1522   76190  41
## 1523   77135  41
## 1524    5166  40
## 1525   30686  40
## 1526   42889  40
## 1527   43075  40
## 1528   43090  40
## 1529   50643  40
## 1530   52891  40
## 1531   54107  40
## 1532   57776  40
## 1533   72707  40
## 1534   73727  40
## 1535   73952  40
## 1536   74275  40
## 1537   76275  40
## 1538     586  39
## 1539    7716  39
## 1540   34993  39
## 1541   42683  39
## 1542   42710  39
## 1543   42760  39
## 1544   53424  39
## 1545   54816  39
## 1546   73785  39
## 1547   74042  39
## 1548   74959  39
## 1549   75015  39
## 1550   75166  39
## 1551   75672  39
## 1552    4959  38
## 1553   31084  38
## 1554   32346  38
## 1555   33473  38
## 1556   33773  38
## 1557   43063  38
## 1558   43729  38
## 1559   60817  38
## 1560   74929  38
## 1561   76665  38
## 1562   94202  38
## 1563    1417  37
## 1564    7726  37
## 1565    7961  37
## 1566   30363  37
## 1567   31345  37
## 1568   31349  37
## 1569   42989  37
## 1570   43245  37
## 1571   43591  37
## 1572   54486  37
## 1573   75172  37
## 1574   75210  37
## 1575   75301  37
## 1576    3472  36
## 1577   31388  36
## 1578   43162  36
## 1579   55681  36
## 1580   57216  36
## 1581   72788  36
## 1582   73015  36
## 1583   73432  36
## 1584   73701  36
## 1585   73924  36
## 1586   74291  36
## 1587   74477  36
## 1588   77273  36
## 1589   98285  36
## 1590    7926  35
## 1591    8285  35
## 1592   10052  35
## 1593   24356  35
## 1594   30119  35
## 1595   34119  35
## 1596   42473  35
## 1597   42708  35
## 1598   56347  35
## 1599   59946  35
## 1600   73333  35
## 1601   75583  35
## 1602   76100  35
## 1603   76432  35
## 1604   76980  35
## 1605   13739  34
## 1606   31009  34
## 1607   43068  34
## 1608   57051  34
## 1609   57426  34
## 1610   73097  34
## 1611   73773  34
## 1612   74476  34
## 1613   74819  34
## 1614   77180  34
## 1615   77457  34
## 1616   77543  34
## 1617    4842  33
## 1618    7669  33
## 1619   30665  33
## 1620   42450  33
## 1621   42500  33
## 1622   42854  33
## 1623   43228  33
## 1624   43632  33
## 1625   51542  33
## 1626   73565  33
## 1627   73661  33
## 1628   74398  33
## 1629   74414  33
## 1630   74801  33
## 1631   75071  33
## 1632   76227  33
## 1633   76941  33
## 1634   77054  33
## 1635   77591  33
## 1636    3632  32
## 1637   32345  32
## 1638   42523  32
## 1639   43564  32
## 1640   75702  32
## 1641   77534  32
## 1642   30289  31
## 1643   30985  31
## 1644   31402  31
## 1645   33558  31
## 1646   33619  31
## 1647   43128  31
## 1648   43784  31
## 1649   44960  31
## 1650   56446  31
## 1651   73935  31
## 1652   73962  31
## 1653   75016  31
## 1654   76587  31
## 1655   77270  31
## 1656    6072  30
## 1657    7809  30
## 1658   42682  30
## 1659   53217  30
## 1660   76410  30
## 1661   76790  30
## 1662   76914  30
## 1663   76933  30
## 1664   77074  30
## 1665   20628  29
## 1666   30182  29
## 1667   32407  29
## 1668   43750  29
## 1669   49299  29
## 1670   55656  29
## 1671   58680  29
## 1672   60283  29
## 1673   73942  29
## 1674   74529  29
## 1675   74910  29
## 1676   75550  29
## 1677   75985  29
## 1678   76663  29
## 1679   77334  29
## 1680   77583  29
## 1681   31245  28
## 1682   42456  28
## 1683   54053  28
## 1684   59102  28
## 1685   72770  28
## 1686   73863  28
## 1687   76242  28
## 1688   77078  28
## 1689   77604  28
## 1690   96672  28
## 1691    4356  27
## 1692   30198  27
## 1693   31289  27
## 1694   43903  27
## 1695   54460  27
## 1696   56176  27
## 1697   62377  27
## 1698   73486  27
## 1699   73888  27
## 1700   74197  27
## 1701   74415  27
## 1702   74676  27
## 1703   75000  27
## 1704   75320  27
## 1705   76435  27
## 1706   77325  27
## 1707    7972  26
## 1708   10013  26
## 1709   10338  26
## 1710   31126  26
## 1711   33890  26
## 1712   42550  26
## 1713   42828  26
## 1714   43808  26
## 1715   44641  26
## 1716   53578  26
## 1717   60056  26
## 1718   75451  26
## 1719   75555  26
## 1720   76203  26
## 1721   76292  26
## 1722   76309  26
## 1723   77178  26
## 1724   77525  26
## 1725    4450  25
## 1726    6688  25
## 1727   42630  25
## 1728   42934  25
## 1729   43265  25
## 1730   62239  25
## 1731   62589  25
## 1732   72728  25
## 1733   72784  25
## 1734   72908  25
## 1735   74022  25
## 1736   76340  25
## 1737   77481  25
## 1738   30151  24
## 1739   31443  24
## 1740   32083  24
## 1741   34973  24
## 1742   42803  24
## 1743   51141  24
## 1744   59204  24
## 1745   61184  24
## 1746   72672  24
## 1747   74243  24
## 1748   75564  24
## 1749   75648  24
## 1750   77557  24
## 1751   30503  23
## 1752   31681  23
## 1753   42457  23
## 1754   42922  23
## 1755   43345  23
## 1756   43723  23
## 1757   43873  23
## 1758   58601  23
## 1759   61009  23
## 1760   73630  23
## 1761   74836  23
## 1762   74898  23
## 1763   76360  23
## 1764   77046  23
## 1765   77223  23
## 1766   96516  23
## 1767   30644  22
## 1768   30784  22
## 1769   31985  22
## 1770   32041  22
## 1771   42547  22
## 1772   42844  22
## 1773   42849  22
## 1774   42864  22
## 1775   42880  22
## 1776   43116  22
## 1777   43273  22
## 1778   43894  22
## 1779   58642  22
## 1780   75723  22
## 1781   75870  22
## 1782   76619  22
## 1783   77320  22
## 1784   77351  22
## 1785   30173  21
## 1786   31187  21
## 1787   31843  21
## 1788   34231  21
## 1789   42890  21
## 1790   43239  21
## 1791   43592  21
## 1792   43610  21
## 1793   43857  21
## 1794   57843  21
## 1795   58357  21
## 1796   74551  21
## 1797   76019  21
## 1798   76786  21
## 1799   76858  21
## 1800   77245  21
## 1801   77477  21
## 1802   30347  20
## 1803   47826  20
## 1804   52223  20
## 1805   57724  20
## 1806   72720  20
## 1807   72850  20
## 1808   73052  20
## 1809   73911  20
## 1810   75854  20
## 1811   76612  20
## 1812   77268  20
## 1813   77269  20
## 1814   77524  20
## 1815   30587  19
## 1816   34937  19
## 1817   43170  19
## 1818   43709  19
## 1819   55317  19
## 1820   58332  19
## 1821   58576  19
## 1822   73713  19
## 1823   74485  19
## 1824   75234  19
## 1825    8110  18
## 1826   31847  18
## 1827   34690  18
## 1828   34974  18
## 1829   43869  18
## 1830   45330  18
## 1831   52772  18
## 1832   53711  18
## 1833   56293  18
## 1834   73900  18
## 1835   75883  18
## 1836    4411  17
## 1837   16586  17
## 1838   16895  17
## 1839   26694  17
## 1840   30707  17
## 1841   31123  17
## 1842   41626  17
## 1843   42819  17
## 1844   54712  17
## 1845   61466  17
## 1846   74933  17
## 1847   77480  17
## 1848   42905  16
## 1849   43030  16
## 1850   43069  16
## 1851   54741  16
## 1852   77485  16
## 1853   42711  15
## 1854   43842  15
## 1855   49232  15
## 1856   55103  15
## 1857   58093  15
## 1858   58412  15
## 1859   61913  15
## 1860   75024  15
## 1861   76843  15
## 1862   77414  15
## 1863   77550  15
## 1864   30303  14
## 1865   31543  14
## 1866   43761  14
## 1867   55187  14
## 1868   74434  14
## 1869   74797  14
## 1870   75716  14
## 1871   76773  14
## 1872   31068  13
## 1873   32002  13
## 1874   42998  13
## 1875   43815  13
## 1876   60709  13
## 1877   60923  13
## 1878   30116  12
## 1879   30244  12
## 1880   30248  12
## 1881   41994  12
## 1882   42866  12
## 1883   43340  12
## 1884   43511  12
## 1885   43599  12
## 1886   43762  12
## 1887   43877  12
## 1888   54685  12
## 1889   73738  12
## 1890   17329  11
## 1891   31028  11
## 1892   42875  11
## 1893   43283  11
## 1894   43311  11
## 1895   43621  11
## 1896   43913  11
## 1897   55026  11
## 1898   55710  11
## 1899   75285  11
## 1900   75543  11
## 1901   75726  11
## 1902   76063  11
## 1903   31421  10
## 1904   33556  10
## 1905   43303  10
## 1906   43716  10
## 1907   53988  10
## 1908   73933  10
## 1909   76894  10
## 1910   84734  10
## 1911   30586   9
## 1912   30908   9
## 1913   53558   9
## 1914   56028   9
## 1915   57514   9
## 1916   57909   9
## 1917   60282   9
## 1918   60762   9
## 1919   75049   9
## 1920   18847   8
## 1921   30290   8
## 1922   30524   8
## 1923   31246   8
## 1924   31849   8
## 1925   46192   8
## 1926   48506   8
## 1927   56716   8
## 1928   57933   8
## 1929   58066   8
## 1930   58930   8
## 1931   31105   7
## 1932   34834   7
## 1933   43093   7
## 1934   47602   7
## 1935   17486   6
## 1936   30410   6
## 1937   32028   6
## 1938   42618   6
## 1939   54924   6
## 1940   55290   6
## 1941   61309   6
## 1942   72668   6
## 1943   30906   5
## 1944   31560   5
## 1945   38329   5
## 1946   42744   5
## 1947   43835   5
## 1948   44182   5
## 1949   44669   5
## 1950   53712   5
## 1951   30464   4
## 1952   43096   4
## 1953   51226   4
## 1954   51689   4
## 1955   59886   4
## 1956   60016   4
## 1957   77504   4
## 1958   30117   3
## 1959   31547   3
## 1960   34555   3
## 1961   43119   3
## 1962   55451   3
## 1963   56095   3
## 1964   57869   3
## 1965   63385   3
## 1966   76764   3
## 1967    5246   2
## 1968   10058   2
## 1969   29996   2
## 1970   31570   2
## 1971   34797   2
## 1972   35985   2
## 1973   43872   2
## 1974   57610   2
## 1975   58720   2
## 1976   66201   2
## 1977    2441   1
## 1978    5566   1
## 1979    8181   1
## 1980   17695   1
## 1981   28120   1
## 1982   28188   1
## 1983   28490   1
## 1984   30288   1
## 1985   30402   1
## 1986   31186   1
## 1987   32001   1
## 1988   32286   1
## 1989   33639   1
## 1990   34851   1
## 1991   35804   1
## 1992   35982   1
## 1993   38197   1
## 1994   38274   1
## 1995   43912   1
## 1996   44035   1
## 1997   51713   1
## 1998   55232   1
## 1999   55344   1
## 2000   55559   1
## 2001   60119   1
count(df, Nombre, sort=TRUE)
##     Nombre     n
## 1    ABARR 21419
## 2    MARIA 10804
## 3    JOSE   5632
## 4    Maria  2367
## 5    JUAN   2299
## 6    LUIS   1997
## 7    SUPER  1957
## 8    MARTH  1919
## 9    CARLO  1665
## 10   MIGUE  1555
## 11   PEDRO  1493
## 12   MARTI  1300
## 13   ROSA   1287
## 14   VICTO  1253
## 15   PATRI  1199
## 16   JAIME  1193
## 17   ANTON  1188
## 18   MINI   1114
## 19   JESUS  1100
## 20   FRANC  1044
## 21   BEATR   990
## 22   ROBER   980
## 23   MANUE   899
## 24   VINOS   852
## 25   GUADA   799
## 26   LAURA   795
## 27   CLAUD   789
## 28   ALEJA   769
## 29   CREME   705
## 30   MARIS   693
## 31   MINIS   667
## 32   ENRIQ   656
## 33   SAUL    653
## 34   SERGI   649
## 35   HECTO   644
## 36   ROCIO   638
## 37   RAUL    632
## 38   ANA L   621
## 39   J JES   606
## 40   ALICI   579
## 41   TERES   575
## 42   GERAR   573
## 43   JAVIE   550
## 44   ARACE   540
## 45   ANDRE   522
## 46   MARGA   522
## 47   NORMA   507
## 48   JORGE   505
## 49   SILVI   500
## 50   BERTH   496
## 51   IRMA    495
## 52   ELOIS   482
## 53   ALMA    478
## 54   OLGA    472
## 55   RAMON   470
## 56   DIEGO   464
## 57   Jose    464
## 58   BLANC   462
## 59   ISMAE   454
## 60   SALVA   450
## 61    RUIZ   438
## 62   IVAN    436
## 63   MISCE   432
## 64   FARMA   426
## 65   EMANU   424
## 66   ESTEB   417
## 67    TERE   416
## 68   FERNA   415
## 69   MELIS   414
## 70   JUANA   412
## 71   EMMAN   404
## 72   CELIA   399
## 73   EDGAR   393
## 74   FELIP   384
## 75   ADRIA   379
## 76   JOEL    378
## 77   OSCAR   377
## 78   ALFRE   376
## 79   GUILL   373
## 80   Juan    370
## 81   ALBER   366
## 82   MARCO   365
## 83   Rosa    361
## 84   RICAR   342
## 85   DELIA   341
## 86   BREND   339
## 87   GLORI   335
## 88   MARIO   329
## 89   MAYRA   320
## 90   RUBEN   315
## 91   QUIRI   311
## 92   SOCOR   309
## 93   ANA M   308
## 94   CENTR   306
## 95   VIRGI   302
## 96   EVA A   293
## 97   TRINI   293
## 98   MAGDA   289
## 99   ESMER   281
## 100  Claud   277
## 101  RODOL   277
## 102  PELON   276
## 103  CESAR   275
## 104  HOMOB   273
## 105  FRUTA   270
## 106  SAMUE   270
## 107  ANGEL   267
## 108  CINTH   263
## 109  MA DE   261
## 110  EL GR   256
## 111  IRIS    256
## 112  DAVID   255
## 113  NOEMI   254
## 114  EVELI   253
## 115  DULCE   252
## 116  ELVIA   251
## 117  JUNIO   251
## 118  CARNI   250
## 119  ABEL    248
## 120  TIEND   248
## 121  J GIL   245
## 122  ELVA    243
## 123  ZAPAT   243
## 124  Franc   242
## 125  RAQUE   242
## 126  LOS G   241
## 127  Luis    241
## 128  NORBE   240
## 129  EL GU   239
## 130  MONIC   239
## 131  RODRI   238
## 132  SAL Y   238
## 133   PATO   237
## 134  HUGO    236
## 135  CARBA   235
## 136  OCTAV   235
## 137  ELVIR   234
## 138  CELED   233
## 139  CERVE   233
## 140  ERNES   233
## 141  MA TE   233
## 142  ADAN    232
## 143  MA DO   232
## 144  EDELM   231
## 145  GONZA   231
## 146  LOS I   230
## 147  J CON   229
## 148  CANDE   228
## 149  DEPOS   228
## 150  JULIA   228
## 151  VALEN   228
## 152  VARGA   228
## 153  SARA    226
## 154  WILFR   226
## 155  ORTIZ   224
## 156  ELIAS   223
## 157  GABRI   223
## 158  VETIN   223
## 159  EL PI   222
## 160  EVA S   222
## 161  Marth   222
## 162  PETRA   222
## 163  ALVAR   221
## 164  FREDI   219
## 165  OSIEL   219
## 166  IRENE   218
## 167  SIMON   218
## 168  ERIK    217
## 169  OMAR    217
## 170  TRINO   215
## 171  AUGUS   214
## 172  DEMET   214
## 173  OTILI   214
## 174  BRAUL   213
## 175  GASOL   213
## 176  CLARA   212
## 177  CORNE   212
## 178  MOISE   212
## 179  LA HI   211
## 180  LEOVI   211
## 181  SAN I   211
## 182  YOLAN   210
## 183  MUCIO   208
## 184  DON B   206
## 185  LUPIT   206
## 186  ROSAU   206
## 187  ARTUR   205
## 188  ORFIL   205
## 189  ANDAN   204
## 190  QUINC   204
## 191  AMELI   202
## 192  BLAS    202
## 193  BODEG   201
## 194  MIX D   199
## 195  OSVAL   199
## 196  JUVEN   198
## 197  J AUR   195
## 198  Carlo   194
## 199  JULIO   193
## 200  EDUAR   192
## 201  GENAR   192
## 202  MARIB   191
## 203  EUGEN   190
## 204   CRUZ   189
## 205  ABRAH   188
## 206  ALBIN   188
## 207  LA LO   188
## 208  SIX T   188
## 209   REBE   186
## 210   DIAZ   185
## 211  EDER    185
## 212   RAFA   184
## 213  CABAL   183
## 214  ERIKA   183
## 215  Ferna   183
## 216  RAYMU   182
## 217  Teres   181
## 218  SAN J   179
## 219  LA CH   178
## 220  AVELI   177
## 221  MARCE   177
## 222  Aleja   176
## 223  DONAT   176
## 224  Monic   175
## 225  RUTH    175
## 226  SANTI   175
## 227  Angel   173
## 228  EL AN   173
## 229  SUSAN   173
## 230  CYNTH   172
## 231  EMPOR   172
## 232  HOGAR   172
## 233  ZENAI   171
## 234  MERCE   170
## 235  VICEN   170
## 236  VALDE   167
## 237  ELMER   163
## 238  LA DU   163
## 239  M DE    163
## 240  IVONN   162
## 241  VIVIA   162
## 242  Ma De   160
## 243  PUERQ   160
## 244  RITA    160
## 245  LA PE   159
## 246  TORIB   157
## 247  ISABE   155
## 248  LEONA   152
## 249  EL VE   151
## 250   LUIS   148
## 251  BENJA   147
## 252  Anton   145
## 253  CHABE   144
## 254  GILBE   144
## 255  Hecto   141
## 256  ORALI   140
## 257  DANIE   139
## 258  Salva   139
## 259  Blanc   137
## 260  FABIA   137
## 261  ELENA   136
## 262  IGNAC   135
## 263  DIVIN   134
## 264  LA ME   134
## 265  MERCA   134
## 266  LOREN   133
## 267  Enriq   132
## 268  INBOX   132
## 269  Guada   131
## 270  Oscar   129
## 271  Patri   128
## 272  DISTR   127
## 273  Sandr   124
## 274  Glori   122
## 275  LA TI   122
## 276  CARME   115
## 277  CRIST   114
## 278  Adria   113
## 279  Julio   113
## 280  EVANG   111
## 281  Rafae   110
## 282  Arman   109
## 283  Humbe   109
## 284  Loren   108
## 285  Eduar   103
## 286  Esthe   103
## 287  JESSI   103
## 288  FABIO   102
## 289  GUSTA   100
## 290  ABEND    99
## 291  Olga     98
## 292  ADOLF    94
## 293  MODEL    94
## 294  Mayra    94
## 295  David    93
## 296  IMELD    93
## 297   ROSA    93
## 298  MAURI    92
## 299  OLIVI    92
## 300  Epifa    91
## 301  ESPER    89
## 302  LETIC    89
## 303  Lidia    89
## 304  LA MI    88
## 305  Pablo    88
## 306  Victo    88
## 307  Crist    86
## 308  ANA C    85
## 309  MAXIM    85
## 310  Pascu    85
## 311  Rita     85
## 312  COLUM    83
## 313  EFREN    82
## 314  FELIC    82
## 315  Wilfr    82
## 316  BUGAM    81
## 317  CAMER    81
## 318  KEVIN    80
## 319  Raul     80
## 320  J Jes    79
## 321  Lucia    78
## 322  Ernes    77
## 323  Aurel    76
## 324  NEMEC    76
## 325  Susan    76
## 326  Gabri    75
## 327  RIGOB    75
## 328  CELIN    74
## 329  Carol    74
## 330  Casil    74
## 331  Damar    74
## 332  AVAL     73
## 333  Azuce    73
## 334  EVERA    72
## 335  Eva G    72
## 336   GERA    72
## 337  Lilia    72
## 338  IMPUL    71
## 339  Leono    71
## 340  SIX B    71
## 341  Faust    70
## 342  MUNDO    69
## 343  JUANI    68
## 344  Hugo     66
## 345  LUZ E    66
## 346  Leopo    66
## 347  ANA R    65
## 348  Alma     65
## 349  J PAT    65
## 350  Ma El    65
## 351  ABUND    64
## 352  Brend    64
## 353  Erika    64
## 354  Jorge    64
## 355  Mary     64
## 356  Agust    63
## 357  BELY     63
## 358  Imeld    63
## 359  LA NU    63
## 360  Apolo    62
## 361  LA SU    62
## 362  Luz E    62
## 363  PETRO    62
## 364  ELIA     61
## 365  Joel     61
## 366  Ofeli    61
## 367  TECAT    61
## 368  Irene    60
## 369  Juven    60
## 370  Avid     59
## 371  Cynth    59
## 372  DARIO    59
## 373  AMPAR    58
## 374  KARLA    58
## 375  Manue    58
## 376  Josef    57
## 377  Juana    57
## 378  SANDR    57
## 379  GABIN    56
## 380  OBDUL    56
## 381  Osval    55
## 382  Alfre    54
## 383  ISAAC    54
## 384  NESTO    54
## 385  Pedro    54
## 386  ARNUL    53
## 387  Carme    53
## 388  Cruz     53
## 389  EL VA    53
## 390  Enedi    53
## 391  KAREN    53
## 392  Nohem    53
## 393  PRIMI    53
## 394  Yesen    53
## 395  Felip    52
## 396  Ampar    51
## 397  EL CH    51
## 398  Beatr    50
## 399  Marco    50
## 400  Ana I    49
## 401  Genar    49
## 402  JUDIT    49
## 403  Ma Gu    49
## 404  Rode     49
## 405  Sergi    48
## 406  CLEME    47
## 407  GREGO    47
## 408  HILDA    47
## 409  Oswal    47
## 410  REBEC    47
## 411  Veron    47
## 412  Arace    46
## 413  Gerar    46
## 414  JOSEF    46
## 415  MARIC    46
## 416  Rebec    46
## 417  EFRAI    45
## 418  LA PA    45
## 419  Oliva    45
## 420  ROSAL    45
## 421  CONSU    44
## 422  Ulloq    44
## 423  Areli    43
## 424  CRUZ     43
## 425  HUMBE    43
## 426  NUBIA    43
## 427  RENE     43
## 428  IRINE    42
## 429  CATAL    41
## 430  GENER    41
## 431  Secun    41
## 432  EVA F    40
## 433  IRAIS    40
## 434  LEONI    40
## 435  Mario    40
## 436  Omar     40
## 437  Fabio    39
## 438  LUCEC    39
## 439  Trini    38
## 440  Ana A    37
## 441  GINO     37
## 442  GRACI    37
## 443  LLUVI    37
## 444  Avela    36
## 445  Ruth     36
## 446  ELBA     35
## 447  EMA C    35
## 448  GERMA    35
## 449  Lauro    35
## 450  PAMEL    35
## 451  LULU     34
## 452  Yolan    34
## 453  AMEZA    33
## 454  Marti    33
## 455  Rogel    32
## 456  Rufin    32
## 457  Dalil    31
## 458  Elvir    31
## 459  MIRIA    31
## 460  Ramon    31
## 461  Tibur    31
## 462  ANA B    29
## 463  EPIFA    29
## 464  GEORG    29
## 465  Jocel    29
## 466  Refug    29
## 467  SANTA    29
## 468  Yanet    29
## 469  Eliza    28
## 470  JENNI    28
## 471  Karla    28
## 472  Migue    28
## 473  TOÑO     28
## 474  Yadir    28
## 475  Gilbe    27
## 476  PASTE    27
## 477  Perfe    27
## 478  RAFAE    27
## 479  Ameli    26
## 480  CATAR    26
## 481  Nancy    26
## 482  Norma    26
## 483  FAUST    25
## 484  Berth    24
## 485  CIRIL    24
## 486  Keren    24
## 487  Ma Co    24
## 488  Ricar    24
## 489  VERON    24
## 490  CURSO    23
## 491  Moise    23
## 492  OFELI    23
## 493  Renzo    23
## 494  TACOS    23
## 495  ULISE    23
## 496  Eva C    22
## 497  Guill    22
## 498  LUCIA    22
## 499  Ma Lu    22
## 500  EVA B    21
## 501  Esteb    21
## 502  Ma Ra    21
## 503  Nicol    21
## 504  SILVE    21
## 505  BIONI    20
## 506  Josue    20
## 507  ROMEL    20
## 508  Hulbe    19
## 509  Saman    19
## 510  VANES    19
## 511  Emeli    18
## 512  Hilda    18
## 513  Danie    17
## 514  Edgar    17
## 515  Narci    17
## 516  PABLO    17
## 517  Ruben    17
## 518  Clara    16
## 519  BIANC    15
## 520  Laura    15
## 521  Pauli    15
## 522  Vanes    15
## 523  Elier    14
## 524  MARA     14
## 525  MARY     14
## 526  Ma Eu    14
## 527  AZUCE    13
## 528  PANAD    13
## 529  Paola    12
## 530  REPAR    12
## 531  Alba     11
## 532  Ma So    11
## 533  Andre    10
## 534  Yrene    10
## 535  Belen     9
## 536  Catal     9
## 537  Clien     9
## 538  Gerso     9
## 539  Jesus     9
## 540  Arian     8
## 541  Doria     8
## 542  Eva R     8
## 543  Genov     8
## 544  Jessi     8
## 545  Karen     8
## 546  Ma Re     8
## 547  Ma Ve     8
## 548  Ana G     7
## 549  Ma As     7
## 550  Virgi     7
## 551  Elia      6
## 552  Irma      6
## 553  Jonat     6
## 554  Obdul     6
## 555  Robus     6
## 556  Emma      5
## 557  Merce     5
## 558  XOCHI     5
## 559  Dulce     4
## 560  Erik      4
## 561  Libni     4
## 562  Fiado     3
## 563  Froyl     2
## 564  Lucy      2
## 565  Marga     2
## 566  Modes     2
## 567  Rober     2
## 568  AGUAL     1
## 569  CECIL     1
## 570  Elvia     1
## 571  Eric      1
## 572  Esmer     1
## 573  Fatim     1
## 574  Jaime     1
## 575  LOURD     1
## 576  Letic     1
## 577  MAURO     1
## 578  Marce     1
## 579  NUEVO     1
## 580  Produ     1
## 581  Rodri     1
count(df, Tamaño.Cte.Industria, sort=TRUE)
##   Tamaño.Cte.Industria      n
## 1         Extra Grande 116707
## 2                Micro  34512
count(df, Segmento.Det, sort=TRUE)
##            Segmento.Det     n
## 1       Sabores Regular 55634
## 2         Colas Regular 27924
## 3           Colas Light 13027
## 4      Bebidas de Fruta 11601
## 5      Jugos y Néctares 10436
## 6       Agua Purificada  6052
## 7          Agua Mineral  4304
## 8    Isotónicos Regular  4123
## 9   Bebidas Energeticas  3705
## 10      Agua Saborizada  3652
## 11           Té Regular  3611
## 12    Leche UHT Regular  1977
## 13 Leche UHT Saborizada  1639
## 14 Leche UHT Especializ  1351
## 15        Sabores Light  1199
## 16     Isotónicos Light   781
## 17             Té Light   191
## 18 Cafe Listo Para Bebe     6
## 19               Polvos     6
count(df, Marca, sort=TRUE)
##                   Marca     n
## 1             Coca-Cola 27924
## 2                Sprite 13088
## 3                 Fanta 12408
## 4                Fresca  9916
## 5          Manzana Lift  9616
## 6       Coca-Cola Light  7881
## 7             Del Valle  6801
## 8         Sidral Mundet  6610
## 9  Ciel Agua Purificada  6052
## 10           Valle Frut  5936
## 11             Powerade  4123
## 12             Fuze Tea  3611
## 13       Coca-Cola Zero  3406
## 14     Del Valle y Nada  2871
## 15       Delaware Punch  2469
## 16      Topo Chico A.M.  2392
## 17    Del Valle Reserva  2168
## 18    Ciel Mineralizada  1912
## 19                 Burn  1880
## 20               Frutsi  1824
## 21       Coca-Cola Life  1726
## 22          Ciel Exprim  1698
## 23 Santa Clara Saboriza  1639
## 24   Santa Clara Entera  1405
## 25 Santa Clara Deslacto  1351
## 26              Glacéau  1255
## 27                Pulpy  1189
## 28      Ciel Saborizada  1119
## 29          Sprite Zero  1101
## 30               Senzao  1080
## 31 Del Valle Nutridefen  1071
## 32            Ciel Mini   835
## 33        Powerade Zero   781
## 34    Santa Clara Light   572
## 35       Monster Energy   570
## 36     Del Valle Blends   396
## 37       Fuze Tea Light   191
## 38               Bebere   180
## 39           Fanta Zero    40
## 40               Mixtos    31
## 41    Manzana Lift Zero    29
## 42          Fresca Zero    20
## 43  Coca-Cola Light Sin    14
## 44   Topo Chico Sangría    14
## 45            Café Blak    12
## 46  Sidral Mundet Light     8
## 47       Del Valle Bits     3
## 48 Topo Chico Sangría L     1
count(df, Presentacion, sort=TRUE)
##        Presentacion     n
## 1         600 ml NR 21190
## 2      1 Ltro. N.R. 13019
## 3         2 Lts. NR 11613
## 4        500 ml Ret  9898
## 5       Lata 235 ml  9687
## 6         400 ml NR  9277
## 7       1.5 Lts. NR  9214
## 8    250 ml. NR PET  7834
## 9     500 ml NR PET  5507
## 10 500 ml NR Vidrio  5390
## 11      2.5 Lts. NR  4260
## 12             Lata  4037
## 13    12 Oz. NR Pet  3553
## 14    1 Ltro. Tetra  3533
## 15     1.5 Lts. Ret  3526
## 16         8 Oz. NR  3294
## 17       12 Oz. Ret  2918
## 18   300 ML. NR PET  2491
## 19     200 ml Tetra  2027
## 20 2.5 Lts. Ret Pet  1965
## 21    413 ml NR VId  1865
## 22      Lata 16 Oz.  1837
## 23     250 ml Tetra  1795
## 24    235 ml NR Vid  1533
## 25       2 Lts. Ret  1460
## 26   250 ML. NR VID  1276
## 27     1.250 Lts NR  1149
## 28      Lata 453 ml   958
## 29      Lata 450 ml   798
## 30  125 ml NR Tetra   776
## 31        5 Lts. NR   512
## 32      Lata 222 ml   476
## 33      Lata 340 ml   358
## 34      Lata 335 ml   282
## 35       Lata 8 OZ.   230
## 36    237 ml NR Vid   229
## 37      6.5 Oz. Ret   228
## 38    355 Ml NR Pet   209
## 39  100 ml NR Tetra   207
## 40        473 ml NR   180
## 41        710 ml NR   162
## 42      LATA 680 ML   151
## 43     1.750 Lts NR   148
## 44 12 Oz. NR Vidrio    66
## 45        3 Lts. NR    54
## 46    350 ML NR PET    16
## 47      Lata 237 ml    13
## 48       Bag In Box     6
## 49   Sobres 907 grs     6
## 50    251ml NR Alum     3
## 51        200 ml NR     2
## 52      Lata 310 ml     1
count(df, Tamaño, sort=TRUE)
##       Tamaño      n
## 1 Individual 108025
## 2   Familiar  43193
## 3                 1
count(df, Retornable_NR, sort=TRUE)
##   Retornable_NR      n
## 1 No Retornable 131223
## 2    Retornable  19995
## 3                    1

Revisar la estructura de los datos

str(df)
## 'data.frame':    151219 obs. of  25 variables:
##  $ ID                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Año                 : int  2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
##  $ Territorio          : chr  "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
##  $ Sub.Territorio      : chr  "Belenes" "Belenes" "Belenes" "Belenes" ...
##  $ CEDI                : chr  "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
##  $ Cliente             : int  77737 77737 77737 77737 77737 77737 77737 77737 77737 77737 ...
##  $ Nombre              : chr  "ABARR" "ABARR" "ABARR" "ABARR" ...
##  $ Tamaño.Cte.Industria: chr  "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
##  $ Segmento.Det        : chr  "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
##  $ Marca               : chr  "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
##  $ Presentacion        : chr  "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
##  $ Tamaño              : chr  "Individual" "Individual" "Individual" "Individual" ...
##  $ Retornable_NR       : chr  "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
##  $ Enero               : chr  "" "" "" "" ...
##  $ Febrero             : chr  "" "2" "" "" ...
##  $ Marzo               : chr  "" "8" "3" "" ...
##  $ Abril               : chr  "" "4" "6" "" ...
##  $ Mayo                : chr  "" "4" "3" "" ...
##  $ Junio               : chr  "" "2" "3" "" ...
##  $ Julio               : chr  "" "2" "3" "" ...
##  $ Agosto              : chr  "" "2" "3" "" ...
##  $ Septiembre          : chr  "" "2" "3" "" ...
##  $ Octubre             : chr  "" "2" "3" "" ...
##  $ Noviembre           : chr  "" "4" "3" "" ...
##  $ Diciembre           : chr  "1" "2" "3" "1" ...

Cambiar de chr a numeric

df$Enero <- as.numeric(df$Enero)
## Warning: NAs introduced by coercion
df$Febrero <- as.numeric(df$Febrero)
## Warning: NAs introduced by coercion
df$Marzo <- as.numeric(df$Marzo)
## Warning: NAs introduced by coercion
df$Abril <- as.numeric(df$Abril)
## Warning: NAs introduced by coercion
df$Mayo <- as.numeric(df$Mayo)
## Warning: NAs introduced by coercion
df$Junio <- as.numeric(df$Junio)
## Warning: NAs introduced by coercion
df$Julio <- as.numeric(df$Julio)
## Warning: NAs introduced by coercion
df$Agosto <- as.numeric(df$Agosto)
## Warning: NAs introduced by coercion
df$Septiembre <- as.numeric(df$Septiembre)
## Warning: NAs introduced by coercion
df$Octubre <- as.numeric(df$Octubre)
## Warning: NAs introduced by coercion
df$Noviembre <- as.numeric(df$Noviembre)
## Warning: NAs introduced by coercion
df$Diciembre <- as.numeric(df$Diciembre)
## Warning: NAs introduced by coercion
str(df)
## 'data.frame':    151219 obs. of  25 variables:
##  $ ID                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Año                 : int  2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
##  $ Territorio          : chr  "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
##  $ Sub.Territorio      : chr  "Belenes" "Belenes" "Belenes" "Belenes" ...
##  $ CEDI                : chr  "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
##  $ Cliente             : int  77737 77737 77737 77737 77737 77737 77737 77737 77737 77737 ...
##  $ Nombre              : chr  "ABARR" "ABARR" "ABARR" "ABARR" ...
##  $ Tamaño.Cte.Industria: chr  "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
##  $ Segmento.Det        : chr  "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
##  $ Marca               : chr  "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
##  $ Presentacion        : chr  "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
##  $ Tamaño              : chr  "Individual" "Individual" "Individual" "Individual" ...
##  $ Retornable_NR       : chr  "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
##  $ Enero               : num  NA NA NA NA NA NA 1 NA 3 NA ...
##  $ Febrero             : num  NA 2 NA NA NA NA NA 1 3 NA ...
##  $ Marzo               : num  NA 8 3 NA NA 1 NA NA 4 NA ...
##  $ Abril               : num  NA 4 6 NA NA NA NA 1 4 NA ...
##  $ Mayo                : num  NA 4 3 NA NA NA 0 NA 4 NA ...
##  $ Junio               : num  NA 2 3 NA NA NA NA 1 4 0 ...
##  $ Julio               : num  NA 2 3 NA NA NA 0 NA 4 NA ...
##  $ Agosto              : num  NA 2 3 NA NA NA NA 1 7 NA ...
##  $ Septiembre          : num  NA 2 3 NA NA NA NA 1 4 NA ...
##  $ Octubre             : num  NA 2 3 NA NA NA 0 NA 3 NA ...
##  $ Noviembre           : num  NA 4 3 NA 0 NA NA NA 1 NA ...
##  $ Diciembre           : num  1 2 3 1 NA NA NA NA 3 NA ...

Revisar NAs en la base de datos

# ¿Cuántos NAs tengo en la base de datos?
sum(is.na(df))
## [1] 886213
# ¿Cuántos NAs tengo por variable?
sapply(df, function(x) sum(is.na(x)))
##                   ID                  Año           Territorio 
##                    0                    0                    0 
##       Sub.Territorio                 CEDI              Cliente 
##                    0                    0                    0 
##               Nombre Tamaño.Cte.Industria         Segmento.Det 
##                    0                    0                    0 
##                Marca         Presentacion               Tamaño 
##                    0                    0                    0 
##        Retornable_NR                Enero              Febrero 
##                    0                78899                76273 
##                Marzo                Abril                 Mayo 
##                76515                74809                72025 
##                Junio                Julio               Agosto 
##                69959                71995                71750 
##           Septiembre              Octubre            Noviembre 
##                72430                72878                73872 
##            Diciembre 
##                74808
# Opción 1. Eliminar NAs
#df1 <- na.omit(df)

# Opción 2. Reemplazar NAs con CEROS
df1 <- df
df1[is.na(df1)] <- 0
sum(is.na(df1))
## [1] 0
# Opción 3. Reemplazar NAs con PROMEDIO
# df1 <- df
# df1$Enero[is.na(df1$Enero)] <- mean(df1$Enero, na.rm=TRUE)

Detectar valores atípicos

boxplot(df1$Enero)

# Eliminar renglón de los totales
df1 <- df1[df1$Enero <6000, ]
boxplot(df1$Enero)

Funciones del paquete dplyr

# Adecuar nombres con gsub
names(df1) <- gsub(" ", "_",names(df1))

# Muestra las ventas de Enero a Junio por CEDI:
df2 <- select(df1,c(CEDI,Enero:Junio))

# Muestra los movimientos por Cedi y tamaño de tienda grande:
df3 <- df1 %>% filter(Tamaño.Cte.Industria == "Grande")

# Ordena la base de datos por Cedi, por marca y por presentación:
df4 <- df1 %>% arrange(CEDI, Marca, Presentacion)

# Agrega un campo calculado con las ventas del primer semestre y muestra las ventas del primer semestre por marca:
df5 <- df1 %>% 
  mutate(Ventas_Sem1 = Enero + Febrero + Marzo + Abril + Mayo + Junio)

ventas_sem1_por_marca <- df5 %>% 
  group_by(Marca) %>% 
  summarise(Ventas_Sem1=sum(Ventas_Sem1))

# Obtén la media de las ventas del primer semestre agrupado por marca, presentación y tamaño.
df6 <- df5 %>%
  group_by(Marca, Presentacion, Tamaño) %>%
  summarise(Ventas_Sem1=mean(Ventas_Sem1))
## `summarise()` has grouped output by 'Marca', 'Presentacion'. You can override
## using the `.groups` argument.
# Calcular medidas de tendencia central
summary(df1)
##        ID              Año        Territorio        Sub.Territorio    
##  Min.   :     1   Min.   :2016   Length:151219      Length:151219     
##  1st Qu.: 37806   1st Qu.:2016   Class :character   Class :character  
##  Median : 75610   Median :2016   Mode  :character   Mode  :character  
##  Mean   : 75610   Mean   :2016                                        
##  3rd Qu.:113414   3rd Qu.:2017                                        
##  Max.   :151219   Max.   :2017                                        
##      CEDI              Cliente         Nombre          Tamaño.Cte.Industria
##  Length:151219      Min.   :    4   Length:151219      Length:151219       
##  Class :character   1st Qu.: 5365   Class :character   Class :character    
##  Mode  :character   Median :34975   Mode  :character   Mode  :character    
##                     Mean   :42302                                          
##                     3rd Qu.:76863                                          
##                     Max.   :99998                                          
##  Segmento.Det          Marca           Presentacion          Tamaño         
##  Length:151219      Length:151219      Length:151219      Length:151219     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Retornable_NR          Enero            Febrero            Marzo        
##  Length:151219      Min.   : -7.000   Min.   :-11.000   Min.   :-32.000  
##  Class :character   1st Qu.:  0.000   1st Qu.:  0.000   1st Qu.:  0.000  
##  Mode  :character   Median :  0.000   Median :  0.000   Median :  0.000  
##                     Mean   :  5.303   Mean   :  5.334   Mean   :  6.146  
##                     3rd Qu.:  2.000   3rd Qu.:  2.000   3rd Qu.:  3.000  
##                     Max.   :999.000   Max.   :986.000   Max.   :986.000  
##      Abril             Mayo             Junio             Julio        
##  Min.   :-70.00   Min.   :-23.000   Min.   :-45.000   Min.   :-42.000  
##  1st Qu.:  0.00   1st Qu.:  0.000   1st Qu.:  0.000   1st Qu.:  0.000  
##  Median :  0.00   Median :  0.000   Median :  0.000   Median :  0.000  
##  Mean   :  6.29   Mean   :  6.745   Mean   :  6.916   Mean   :  6.493  
##  3rd Qu.:  3.00   3rd Qu.:  3.000   3rd Qu.:  3.000   3rd Qu.:  3.000  
##  Max.   :986.00   Max.   :991.000   Max.   :998.000   Max.   :979.000  
##      Agosto           Septiembre          Octubre          Noviembre      
##  Min.   :-211.000   Min.   :-527.000   Min.   :-38.000   Min.   :-25.000  
##  1st Qu.:   0.000   1st Qu.:   0.000   1st Qu.:  0.000   1st Qu.:  0.000  
##  Median :   0.000   Median :   0.000   Median :  0.000   Median :  0.000  
##  Mean   :   6.651   Mean   :   6.584   Mean   :  6.582   Mean   :  6.279  
##  3rd Qu.:   3.000   3rd Qu.:   3.000   3rd Qu.:  3.000   3rd Qu.:  3.000  
##  Max.   : 998.000   Max.   : 993.000   Max.   :995.000   Max.   :991.000  
##    Diciembre      
##  Min.   :-28.000  
##  1st Qu.:  0.000  
##  Median :  0.000  
##  Mean   :  6.887  
##  3rd Qu.:  3.000  
##  Max.   :993.000
# Colapsar meses en una columna
df7 <- gather(df1, Mes, Ventas, Enero:Diciembre)

Tarea Colaborativa 2

Actividad Individual 3

# Agregar una columna con el Número de Mes
meses <- c("Enero"="01", "Febrero"="02","Marzo"="03", "Abril"="04", "Mayo"="05", "Junio"="06", "Julio"="07", "Agosto"="08", "Septiembre"="09", "Octubre"="10", "Noviembre"="11", "Diciembre"="12")

df7$Número_de_Mes <- meses[df7$Mes]

# Graficar el total de ventas por mes y año

ventas_totales <- df7 %>%
  group_by(Año, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes)
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
ggplot(ventas_totales, aes(x=Número_de_Mes, y=Ventas.Totales,group=Año, color= as.factor(Año))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", color = "Año")

Tarea Colaborativa 3

# Pregunta Detonante 4. ¿Se ha incrementado la venta de productos en envases retornables en los últimos dos años?
ventas_totales_er <- df7 %>%
   filter(Retornable_NR == "Retornable") %>%
  group_by(Año, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes)
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
ggplot(ventas_totales_er, aes(x=Número_de_Mes, y=Ventas.Totales,group=Año, color= as.factor(Año))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales de Productos en Envases Retornables", color = "Año")

# Pregunta Detonante 
ventas_totales_seg <- df7 %>%
   filter(Segmento.Det == "Agua Purificada" | Segmento.Det == "Isotónicos Regular" | Segmento.Det == "Colas Regular" ) %>%
  filter(Año == 2018) %>%
  group_by(Segmento.Det, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes)
## `summarise()` has grouped output by 'Segmento.Det'. You can override using the
## `.groups` argument.
ggplot(ventas_totales_seg, aes(x=Número_de_Mes, y=Ventas.Totales,group=Segmento.Det, color= as.factor(Segmento.Det))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales por Segmento", color = "Segmento")

Actividad Individual 4

# Elaborar Regresión Lineal

ventas_4567 <- df7 %>%
  filter(Cliente == "4567") %>%
  group_by(Año) %>%
  summarise(Ventas_Totales = sum(Ventas)) %>%
  filter(Ventas_Totales != 0)

# ventas_4567$Secuencia <- 1:nrow(ventas_4567)

ggplot(ventas_4567, aes(x=Año, y=Ventas_Totales)) +
  geom_point() +
  labs(x="Año",y="Ventas Totales(Qty)", title= "Ventas Totales del Cliente 4567")

regresion <- lm(Ventas_Totales ~ Año, data=ventas_4567)
summary(regresion)
## 
## Call:
## lm(formula = Ventas_Totales ~ Año, data = ventas_4567)
## 
## Residuals:
## ALL 1 residuals are 0: no residual degrees of freedom!
## 
## Coefficients: (1 not defined because of singularities)
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)    25885        NaN     NaN      NaN
## Año               NA         NA      NA       NA
## 
## Residual standard error: NaN on 0 degrees of freedom
# Ecuación
# y = 48918677 - 24174 * Año 

# R cuadrada ajustada
# 77%

datos <- data.frame(Año=2020:2025)
prediccion <- predict(regresion,datos)
## Warning in predict.lm(regresion, datos): prediction from rank-deficient fit;
## attr(*, "non-estim") has doubtful cases
prediccion
##     1     2     3     4     5     6 
## 25885 25885 25885 25885 25885 25885 
## attr(,"non-estim")
## 3 4 5 6 
## 3 4 5 6
ventas_4567$Tipo_de_Dato <- "Datos Reales"
datos$Ventas_Totales <- prediccion
datos$Tipo_de_Dato <- "Predicción"

datos_combinados <- rbind(ventas_4567,datos)

ggplot(datos_combinados, aes(x=Año, y=Ventas_Totales, color=Tipo_de_Dato)) +
  geom_point() +
  labs(x="Año",y="Ventas Totales(Qty)", title= "Pronóstico a 5 años de Ventas del Cliente 4567")

Tarea Colaborativa 4

Actividad Individual 5

ventas_mensuales_4567 <- df7 %>%
  filter(Cliente == "4567") %>%
  group_by(Año, Número_de_Mes) %>%
  summarise(Ventas_Totales = sum(Ventas)) %>%
  filter(Ventas_Totales != 0)

# Confirmar que los datos que queremos modelar esten ordenados cronológicamente.

# Función de Serie de Tiempo MENSUAL, que inicia en Enero 2017
ts <- ts(data=ventas_mensuales_4567$Ventas_Totales, start = c(2017,1), frequency = 12)

# Función de Serie de Tiempo MENSUAL, que inicia en Abril 2017
ts <- ts(data=ventas_mensuales_4567$Ventas_Totales, start = c(2017,4), frequency = 12)

# Función de Serie de Tiempo TRIMESTRAL, que inicia en Enero 2017
ts <- ts(data=ventas_mensuales_4567$Ventas_Totales, start = c(2017,1), frequency = 4)

# Función de Serie de Tiempo TRIMESTRAL, que inicia en Octubre 2017 (Q4)
ts <- ts(data=ventas_mensuales_4567$Ventas_Totales, start = c(2017,4), frequency = 4)

# Función de Serie de Tiempo ANUAL, que inicia en 2017
ts <- ts(data=ventas_mensuales_4567$Ventas_Totales, start = 2017, frequency = 1)

# Crear Modelo ARIMA
# Modelo Autorregresivo Integrado de Promedio Movil.
arima <- auto.arima(ts, D=1) # D=1 por la temporalidad
arima
## Series: ts 
## ARIMA(0,0,0) with non-zero mean 
## 
## Coefficients:
##            mean
##       2157.0833
## s.e.   152.7755
## 
## sigma^2 = 305544:  log likelihood = -92.28
## AIC=188.57   AICc=189.9   BIC=189.54
summary(arima)
## Series: ts 
## ARIMA(0,0,0) with non-zero mean 
## 
## Coefficients:
##            mean
##       2157.0833
## s.e.   152.7755
## 
## sigma^2 = 305544:  log likelihood = -92.28
## AIC=188.57   AICc=189.9   BIC=189.54
## 
## Training set error measures:
##                         ME     RMSE    MAE       MPE     MAPE      MASE
## Training set -1.515963e-13 529.2273 419.25 -6.986365 22.08948 0.8272197
##                   ACF1
## Training set 0.2900405
# Generar el pronóstico de ventas
pronostico <- forecast(arima, level=95, h=36)
pronostico
##      Point Forecast    Lo 95    Hi 95
## 2029       2157.083 1073.694 3240.473
## 2030       2157.083 1073.694 3240.473
## 2031       2157.083 1073.694 3240.473
## 2032       2157.083 1073.694 3240.473
## 2033       2157.083 1073.694 3240.473
## 2034       2157.083 1073.694 3240.473
## 2035       2157.083 1073.694 3240.473
## 2036       2157.083 1073.694 3240.473
## 2037       2157.083 1073.694 3240.473
## 2038       2157.083 1073.694 3240.473
## 2039       2157.083 1073.694 3240.473
## 2040       2157.083 1073.694 3240.473
## 2041       2157.083 1073.694 3240.473
## 2042       2157.083 1073.694 3240.473
## 2043       2157.083 1073.694 3240.473
## 2044       2157.083 1073.694 3240.473
## 2045       2157.083 1073.694 3240.473
## 2046       2157.083 1073.694 3240.473
## 2047       2157.083 1073.694 3240.473
## 2048       2157.083 1073.694 3240.473
## 2049       2157.083 1073.694 3240.473
## 2050       2157.083 1073.694 3240.473
## 2051       2157.083 1073.694 3240.473
## 2052       2157.083 1073.694 3240.473
## 2053       2157.083 1073.694 3240.473
## 2054       2157.083 1073.694 3240.473
## 2055       2157.083 1073.694 3240.473
## 2056       2157.083 1073.694 3240.473
## 2057       2157.083 1073.694 3240.473
## 2058       2157.083 1073.694 3240.473
## 2059       2157.083 1073.694 3240.473
## 2060       2157.083 1073.694 3240.473
## 2061       2157.083 1073.694 3240.473
## 2062       2157.083 1073.694 3240.473
## 2063       2157.083 1073.694 3240.473
## 2064       2157.083 1073.694 3240.473
plot(pronostico, main="Ventas Mensuales y Pronóstico a 3 Años del Cliente 4567", xlab="Año", ylab="Ventas (Qty)")

Evidencia

Preguntas Detonantes

  1. ¿Puede observarse un crecimiento en las ventas de algunos de los segmentos de productos de la familia Coca Cola en las tiendas en las que se implementó el Proyecto Siglo XXI de Arca Continental?
ventas_totales_seg <- df7 %>%
   filter(Segmento.Det == "Agua Purificada" | Segmento.Det == "Isotónicos Regular" | Segmento.Det == "Colas Regular" ) %>%
  filter(Año == 2018) %>%
  group_by(Segmento.Det, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes)
## `summarise()` has grouped output by 'Segmento.Det'. You can override using the
## `.groups` argument.
ggplot(ventas_totales_seg, aes(x=Número_de_Mes, y=Ventas.Totales,group=Segmento.Det, color= as.factor(Segmento.Det))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales por Segmento", color = "Segmento")

Respuesta: En general las ventas aumentaron en 2019, pero cada segmento se comportó diferente. El incremento de ventas se puede lograr gracias a mejores campañas de mercadotecnia y lanzamiento de nuevos productos.En 2018 la venta de Coca-Cola entre Febrero y Diciembre aumentó en 100,000 unidades, mientras que las aguas isotónicas no tuvieron cambios.

  1. ¿El incremento en las ventas es similar entre los diferentes tamaños de clientes?
ventas_totales_tam_cliente <- df7 %>%
  filter(Año == 2019) %>%
  group_by(Tamaño.Cte.Industria, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes) %>%
  filter(Ventas.Totales != 0)
## `summarise()` has grouped output by 'Tamaño.Cte.Industria'. You can override
## using the `.groups` argument.
ggplot(ventas_totales_tam_cliente, aes(x=Número_de_Mes, y=Ventas.Totales,group=Tamaño.Cte.Industria, color= as.factor(Tamaño.Cte.Industria))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales por Tamaño de Cliente", color = "Tamaño de Cliente")

Respuesta: El incremento de ventas es similar independientemente de los tamaños de los clientes. Como todos los negocios están abiertos los mismos días, y están ubicados en la misma ciudad (Guadalajara), los factores externos de las ventas efectan casi igual a todos. El mes de mayo de 2019 fue el de mayor ventas en todos los tamaños de cliente, y el primer bimestre fue el más bajo también para todos los tamaños de cliente.

  1. ¿Cuál es el comportamiento observado de las unidades vendidas por mes de cada una de las marcas, independientemente de sus respectivas presentaciones?
ventas_totales_marca <- df7 %>%
  filter(Año == 2019) %>%
  filter(Marca == c("Coca-Cola", "Valle Frut", "Ciel Agua Purificada","Coca-Cola Light")) %>%
  group_by(Marca, Número_de_Mes) %>%
  summarise(Ventas_Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes) %>%
  filter(Ventas_Totales != 0)
## `summarise()` has grouped output by 'Marca'. You can override using the
## `.groups` argument.
ggplot(ventas_totales_marca, aes(x=Número_de_Mes, y=Ventas_Totales,group=Marca, color= as.factor(Marca))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales por Marca", color = "Marca")

Respuesta: El comportamiento de ventas es similar entre las marcas a través de los meses, pero hay marcas que venden mucho más que otras. Los meses de más ventas de bebidas son los meses en que la temperatura es mayor, y las marcas más conocidas son las que tiene en mente el consumidor. El mes de mayo 2019 es para todas las marcas el de mayores ventas, pero la marca Coca-Cola es la que vende más que todas.

  1. ¿Se ha incrementado la venta de productos en envases retornables en los últimos dos años?
ventas_totales_envase <- df7 %>%
  filter(Retornable_NR=="Retornable") %>%
  filter(Año == c(2017,2018,2019)) %>%
  group_by(Año, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes) %>%
  filter(Ventas.Totales != 0)
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
ggplot(ventas_totales_envase, aes(x=Número_de_Mes, y=Ventas.Totales,group=Año, color= as.factor(Año))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales de Envases Retornables", color = "Año")

Respuesta: La venta de productos en envase retornable aumentó en los últimos dos años. Las campañas de conciencia ambiental han vuelto populares las opciones menos dañinas al ecosistema. De 2017 a 2018 hubo un ligero incremento en las ventas de envase retornable, y entre 2018 y 2019 el aumento fue muy notorio.

Notas: Hay otros factores a considerar como que en 2019 hay más tiendas con el proyecto Siglo XXI, o que las tiendas en general venden más productos (tanto retornables como no retornables).

  1. ¿El comportamiento de la venta de agua ha incrementado en relación al de los refrescos o las bebidas isotónicas?
ventas_totales_seg <- df7 %>%
   filter(Segmento.Det == "Agua Purificada" | Segmento.Det == "Isotónicos Regular" | Segmento.Det == "Colas Regular" ) %>%
  filter(Año == 2018) %>%
  group_by(Segmento.Det, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  arrange(Número_de_Mes)
## `summarise()` has grouped output by 'Segmento.Det'. You can override using the
## `.groups` argument.
ggplot(ventas_totales_seg, aes(x=Número_de_Mes, y=Ventas.Totales,group=Segmento.Det, color= as.factor(Segmento.Det))) +
  geom_line() +
  geom_point() +
  labs(x="Mes",y="Ventas Totales(Qty)", title= "Ventas Totales por Segmento", color = "Segmento")

Respuesta: Las ventas de Agua Purificada no ha aumentado en relación a Refrescos o Bebidas Isotónicas. La persepción que el agua no tiene valor agregado en la preparación y el azúcar en la receta hacen de los refrescos la opción preferida de los consumidores mexicanos. En 2018 las ventas totales de Agua Purificada no superaron las 50,000 unidades, mientras que la Coca-Cola vendió en su mes más alto 450,000 (8 veces más que el agua).

  1. ¿Puede decirse que la venta mensual de agua está relacionada con la venta mensual de refrescos en los últimos 4 años?
ventas_totales_ayr <- df7 %>%
   filter(Segmento.Det == c("Agua Purificada", "Colas Regular")) %>%
  group_by(Segmento.Det, Año) %>%
  summarise(Ventas.Totales = sum(Ventas)) 
## `summarise()` has grouped output by 'Segmento.Det'. You can override using the
## `.groups` argument.
ggplot(ventas_totales_ayr, aes(x=Año, y=Ventas.Totales,group=Segmento.Det, color= as.factor(Segmento.Det))) +
  geom_line() +
  geom_point() +
  labs(x="Año",y="Ventas Totales(Qty)", title= "Ventas Totales por Segmento", color = "Segmento")

Respuesta: La venta de agua y refrescos se incrementa en los mismos meses, y a través de los años, pero no se puede concluir que un incremento cause el otro. Los meses calurosos y el crecimiento de la población hace que las ventas se incrementen en las bebidas, sean agua o refresco. En la gráfica obtenida se observa un incremento año con año en la venta de agua y también de refrescos.

  1. ¿A cuánto ascienden las ventas esperadas para el 2020 en la Coca Cola de 500 ml NR Vidrio?
ventas_coca_vidrio <- df7 %>%
  filter(Marca == "Coca-Cola" & Presentacion == "500 ml NR Vidrio") %>%
  group_by(Año, Número_de_Mes) %>%
  summarise(Ventas.Totales = sum(Ventas)) %>%
  filter(Ventas.Totales != 0)
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
# Confirmar que los datos que queremos modelar esten ordenados cronológicamente.

# Función de Serie de Tiempo MENSUAL, que inicia en Enero 2017
ts <- ts(data=ventas_coca_vidrio$Ventas.Totales, start = c(2016,1), frequency = 12)

# Crear Modelo ARIMA
# Modelo Autorregresivo Integrado de Promedio Movil.
arima <- auto.arima(ts, D=1) # D=1 por la temporalidad
arima
## Series: ts 
## ARIMA(0,0,0)(0,1,0)[12] with drift 
## 
## Coefficients:
##          drift
##       416.6736
## s.e.   64.7256
## 
## sigma^2 = 7897914:  log likelihood = -111.8
## AIC=227.59   AICc=228.93   BIC=228.56
summary(arima)
## Series: ts 
## ARIMA(0,0,0)(0,1,0)[12] with drift 
## 
## Coefficients:
##          drift
##       416.6736
## s.e.   64.7256
## 
## sigma^2 = 7897914:  log likelihood = -111.8
## AIC=227.59   AICc=228.93   BIC=228.56
## 
## Training set error measures:
##                   ME     RMSE      MAE        MPE     MAPE      MASE      ACF1
## Training set 11.5831 1902.597 1039.278 -0.3166172 3.462935 0.1958591 0.2014916
# Generar el pronóstico de ventas
pronostico <- forecast(arima, level=95, h=16)
pronostico
##          Point Forecast    Lo 95    Hi 95
## Jan 2018       28654.08 23145.95 34162.21
## Feb 2018       28593.08 23084.95 34101.21
## Mar 2018       31231.08 25722.95 36739.21
## Apr 2018       35443.08 29934.95 40951.21
## May 2018       39982.08 34473.95 45490.21
## Jun 2018       39711.08 34202.95 45219.21
## Jul 2018       36581.08 31072.95 42089.21
## Aug 2018       40189.08 34680.95 45697.21
## Sep 2018       37467.08 31958.95 42975.21
## Oct 2018       39895.08 34386.95 45403.21
## Nov 2018       37997.08 32488.95 43505.21
## Dec 2018       34753.08 29244.95 40261.21
## Jan 2019       33654.17 25864.49 41443.84
## Feb 2019       33593.17 25803.49 41382.84
## Mar 2019       36231.17 28441.49 44020.84
## Apr 2019       40443.17 32653.49 48232.84
plot(pronostico, main="Ventas Mensuales y Pronóstico para 2020 de Coca-Cola 500 ml NR Vidrio", xlab="Año",  ylab="Ventas (Qty)")

Respuesta: Las ventas esperadas de Coca-Cola de 500 ml NR Vidrio para 2020 oscilan mensualmente entre 45,000 y 65,000 unidades, con una confiabilidad del 95%.

LS0tCnRpdGxlOiAiRXZpZGVuY2lhIEFyY2EgQ29udGluZW50YWwiCmF1dGhvcjogIkFuZHJlYSBSaW8gQ2FtYWNobyBBMDA4MzI4MzYiCmRhdGU6ICIyMDI0LTA5LTExIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6IGNlcnVsZWFuCi0tLQoKIVtdKC9jbG91ZC9wcm9qZWN0L2FyY2EgbG9nby5wbmcpCgojPHNwYW4gc3R5bGU9IkNvbG9yOnJlZDsiPkNvbnRleHRvPC9zcGFuPgoKUGFyYSAqQXJjYSBDb250aW5lbnRhbCogc3UgcHJpbmNpcGFsIGNhbmFsIGRlIGRpc3RyaWJ1Y2nDs24gZXMgZWwgY2FuYWwgdHJhZGljaW9uYWwsIGVzIGRlY2lyLCBsYXMgKnRpZW5kaXRhcyBkZSBsYSBlc3F1aW5hKi4gRXN0byBwZXJtaXRlIHF1ZSBsYSBmYW1pbGlhIGRlIHByb2R1Y3RvcyBkZSBsYSBjb21wYcOxw61hIENvY2EgQ29sYSBlc3TDqW4gc2llbXByZSBjZXJjYSBkZSBzdXMgY29uc3VtaWRvcmVzIGEgdHJhdsOpcyBkZSBlc3RhcyBwZXF1ZcOxYXMgZW1wcmVzYXMgZmFtaWxpYXJlcyBxdWUgZm9ybWFuIHBhcnRlIGRlIHN1IHByb3BpYSBjb211bmlkYWQuCgpTaW4gZW1iYXJnbywgZXN0ZSB0aXBvIGRlIGZvcm1hdG8gZGUgUmV0YWlsIGVzdMOhIGVuZnJlbnRhbmRvIHVuYSBmdWVydGUgY29tcGV0ZW5jaWEgcG9yIHBhcnRlIGRlIGxvcyBjYW5hbGVzIG1vZGVybm9zLiBFbiB1biBwcmluY2lwaW8gZnVlcm9uIGxhcyB0aWVuZGFzIGRlIGNvbnZlbmllbmNpYSBjb21vIE94eG8geSA3LUVsZXZlbiBxdWllbmVzIGNvbWVuemFyb24gYSBjcmVhciB1bmEgaW1wb3J0YW50ZSBjYW50aWRhZCBkZSBudWV2b3MgZXN0YWJsZWNpbWllbnRvcywgY2FkYSB2ZXogbcOhcyBlbiB6b25hcyBoYWJpdGFjaW9uYWxlcyB5IG5vIHNvbG8gZW4gYXZlbmlkYXMgbyBnYXNvbGluZXJhcy4KCiM8c3BhbiBzdHlsZT0iQ29sb3I6cmVkOyI+SW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4KYGBge3IgbWVzc2FnZT0gRkFMU0UsIHdhcm5pbmc9RkFMU0V9Cmluc3RhbGwucGFja2FnZXMoIkRhdGFFeHBsb3JlciIpCmxpYnJhcnkoRGF0YUV4cGxvcmVyKQppbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCmxpYnJhcnkoZHBseXIpCmluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmxpYnJhcnkodGlkeXZlcnNlKQppbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikKbGlicmFyeShnZ3Bsb3QyKQppbnN0YWxsLnBhY2thZ2VzKCJmb3JlY2FzdCIpCmxpYnJhcnkoZm9yZWNhc3QpCmBgYAojPHNwYW4gc3R5bGU9IkNvbG9yOnJlZDsiPkltcG9ydGFyIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQojIGZpbGUuY2hvb3NlKCkKZGYgPC0gcmVhZC5jc3YoIi9jbG91ZC9wcm9qZWN0L0RhdG9zIEFyY2EgQ29udGluZW50YWwgT3JpZ2luYWwuY3N2IikKY29sbmFtZXMoZGYpIDwtIG1ha2UubmFtZXMoY29sbmFtZXMoZGYpKQpgYGAKCiM8c3BhbiBzdHlsZT0iQ29sb3I6cmVkOyI+QW7DoWxpc2lzIERlc2NyaXB0aXZvPC9zcGFuPgpgYGB7cn0Kc3VtbWFyeShkZikKc3RyKGRmKQojY3JlYXRlX3JlcG9ydChkZikKaW50cm9kdWNlKGRmKQpwbG90X2ludHJvKGRmKQpwbG90X21pc3NpbmcoZGYpCnBsb3RfaGlzdG9ncmFtKGRmKQpwbG90X2JhcihkZikKcGxvdF9jb3JyZWxhdGlvbihkZikKCmNvdW50KGRmLCBUZXJyaXRvcmlvLCBzb3J0PVRSVUUpCmNvdW50KGRmLCBTdWIuVGVycml0b3Jpbywgc29ydD1UUlVFKQpjb3VudChkZiwgQ0VESSwgc29ydD1UUlVFKQpjb3VudChkZiwgQ2xpZW50ZSwgc29ydD1UUlVFKQpjb3VudChkZiwgTm9tYnJlLCBzb3J0PVRSVUUpCmNvdW50KGRmLCBUYW1hw7FvLkN0ZS5JbmR1c3RyaWEsIHNvcnQ9VFJVRSkKY291bnQoZGYsIFNlZ21lbnRvLkRldCwgc29ydD1UUlVFKQpjb3VudChkZiwgTWFyY2EsIHNvcnQ9VFJVRSkKY291bnQoZGYsIFByZXNlbnRhY2lvbiwgc29ydD1UUlVFKQpjb3VudChkZiwgVGFtYcOxbywgc29ydD1UUlVFKQpjb3VudChkZiwgUmV0b3JuYWJsZV9OUiwgc29ydD1UUlVFKQpgYGAKCiMjIFJldmlzYXIgbGEgZXN0cnVjdHVyYSBkZSBsb3MgZGF0b3MKYGBge3J9CnN0cihkZikKYGBgCiMjIENhbWJpYXIgZGUgY2hyIGEgbnVtZXJpYwpgYGB7cn0KZGYkRW5lcm8gPC0gYXMubnVtZXJpYyhkZiRFbmVybykKZGYkRmVicmVybyA8LSBhcy5udW1lcmljKGRmJEZlYnJlcm8pCmRmJE1hcnpvIDwtIGFzLm51bWVyaWMoZGYkTWFyem8pCmRmJEFicmlsIDwtIGFzLm51bWVyaWMoZGYkQWJyaWwpCmRmJE1heW8gPC0gYXMubnVtZXJpYyhkZiRNYXlvKQpkZiRKdW5pbyA8LSBhcy5udW1lcmljKGRmJEp1bmlvKQpkZiRKdWxpbyA8LSBhcy5udW1lcmljKGRmJEp1bGlvKQpkZiRBZ29zdG8gPC0gYXMubnVtZXJpYyhkZiRBZ29zdG8pCmRmJFNlcHRpZW1icmUgPC0gYXMubnVtZXJpYyhkZiRTZXB0aWVtYnJlKQpkZiRPY3R1YnJlIDwtIGFzLm51bWVyaWMoZGYkT2N0dWJyZSkKZGYkTm92aWVtYnJlIDwtIGFzLm51bWVyaWMoZGYkTm92aWVtYnJlKQpkZiREaWNpZW1icmUgPC0gYXMubnVtZXJpYyhkZiREaWNpZW1icmUpCgpzdHIoZGYpCmBgYAoKIyMgUmV2aXNhciBOQXMgZW4gbGEgYmFzZSBkZSBkYXRvcwpgYGB7cn0KIyDCv0N1w6FudG9zIE5BcyB0ZW5nbyBlbiBsYSBiYXNlIGRlIGRhdG9zPwpzdW0oaXMubmEoZGYpKQoKIyDCv0N1w6FudG9zIE5BcyB0ZW5nbyBwb3IgdmFyaWFibGU/CnNhcHBseShkZiwgZnVuY3Rpb24oeCkgc3VtKGlzLm5hKHgpKSkKCiMgT3BjacOzbiAxLiBFbGltaW5hciBOQXMKI2RmMSA8LSBuYS5vbWl0KGRmKQoKIyBPcGNpw7NuIDIuIFJlZW1wbGF6YXIgTkFzIGNvbiBDRVJPUwpkZjEgPC0gZGYKZGYxW2lzLm5hKGRmMSldIDwtIDAKc3VtKGlzLm5hKGRmMSkpCgojIE9wY2nDs24gMy4gUmVlbXBsYXphciBOQXMgY29uIFBST01FRElPCiMgZGYxIDwtIGRmCiMgZGYxJEVuZXJvW2lzLm5hKGRmMSRFbmVybyldIDwtIG1lYW4oZGYxJEVuZXJvLCBuYS5ybT1UUlVFKQpgYGAKCiMjIERldGVjdGFyIHZhbG9yZXMgYXTDrXBpY29zCmBgYHtyfQpib3hwbG90KGRmMSRFbmVybykKCiMgRWxpbWluYXIgcmVuZ2zDs24gZGUgbG9zIHRvdGFsZXMKZGYxIDwtIGRmMVtkZjEkRW5lcm8gPDYwMDAsIF0KYm94cGxvdChkZjEkRW5lcm8pCmBgYAoKIyMgRnVuY2lvbmVzIGRlbCBwYXF1ZXRlIGRwbHlyCmBgYHtyfQojIEFkZWN1YXIgbm9tYnJlcyBjb24gZ3N1YgpuYW1lcyhkZjEpIDwtIGdzdWIoIiAiLCAiXyIsbmFtZXMoZGYxKSkKCiMgTXVlc3RyYSBsYXMgdmVudGFzIGRlIEVuZXJvIGEgSnVuaW8gcG9yIENFREk6CmRmMiA8LSBzZWxlY3QoZGYxLGMoQ0VESSxFbmVybzpKdW5pbykpCgojIE11ZXN0cmEgbG9zIG1vdmltaWVudG9zIHBvciBDZWRpIHkgdGFtYcOxbyBkZSB0aWVuZGEgZ3JhbmRlOgpkZjMgPC0gZGYxICU+JSBmaWx0ZXIoVGFtYcOxby5DdGUuSW5kdXN0cmlhID09ICJHcmFuZGUiKQoKIyBPcmRlbmEgbGEgYmFzZSBkZSBkYXRvcyBwb3IgQ2VkaSwgcG9yIG1hcmNhIHkgcG9yIHByZXNlbnRhY2nDs246CmRmNCA8LSBkZjEgJT4lIGFycmFuZ2UoQ0VESSwgTWFyY2EsIFByZXNlbnRhY2lvbikKCiMgQWdyZWdhIHVuIGNhbXBvIGNhbGN1bGFkbyBjb24gbGFzIHZlbnRhcyBkZWwgcHJpbWVyIHNlbWVzdHJlIHkgbXVlc3RyYSBsYXMgdmVudGFzIGRlbCBwcmltZXIgc2VtZXN0cmUgcG9yIG1hcmNhOgpkZjUgPC0gZGYxICU+JSAKICBtdXRhdGUoVmVudGFzX1NlbTEgPSBFbmVybyArIEZlYnJlcm8gKyBNYXJ6byArIEFicmlsICsgTWF5byArIEp1bmlvKQoKdmVudGFzX3NlbTFfcG9yX21hcmNhIDwtIGRmNSAlPiUgCiAgZ3JvdXBfYnkoTWFyY2EpICU+JSAKICBzdW1tYXJpc2UoVmVudGFzX1NlbTE9c3VtKFZlbnRhc19TZW0xKSkKCiMgT2J0w6luIGxhIG1lZGlhIGRlIGxhcyB2ZW50YXMgZGVsIHByaW1lciBzZW1lc3RyZSBhZ3J1cGFkbyBwb3IgbWFyY2EsIHByZXNlbnRhY2nDs24geSB0YW1hw7FvLgpkZjYgPC0gZGY1ICU+JQogIGdyb3VwX2J5KE1hcmNhLCBQcmVzZW50YWNpb24sIFRhbWHDsW8pICU+JQogIHN1bW1hcmlzZShWZW50YXNfU2VtMT1tZWFuKFZlbnRhc19TZW0xKSkKCiMgQ2FsY3VsYXIgbWVkaWRhcyBkZSB0ZW5kZW5jaWEgY2VudHJhbApzdW1tYXJ5KGRmMSkKCiMgQ29sYXBzYXIgbWVzZXMgZW4gdW5hIGNvbHVtbmEKZGY3IDwtIGdhdGhlcihkZjEsIE1lcywgVmVudGFzLCBFbmVybzpEaWNpZW1icmUpCgpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5UYXJlYSBDb2xhYm9yYXRpdmEgMjwvc3Bhbj4KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5BY3RpdmlkYWQgSW5kaXZpZHVhbCAzPC9zcGFuPgpgYGB7cn0KIyBBZ3JlZ2FyIHVuYSBjb2x1bW5hIGNvbiBlbCBOw7ptZXJvIGRlIE1lcwptZXNlcyA8LSBjKCJFbmVybyI9IjAxIiwgIkZlYnJlcm8iPSIwMiIsIk1hcnpvIj0iMDMiLCAiQWJyaWwiPSIwNCIsICJNYXlvIj0iMDUiLCAiSnVuaW8iPSIwNiIsICJKdWxpbyI9IjA3IiwgIkFnb3N0byI9IjA4IiwgIlNlcHRpZW1icmUiPSIwOSIsICJPY3R1YnJlIj0iMTAiLCAiTm92aWVtYnJlIj0iMTEiLCAiRGljaWVtYnJlIj0iMTIiKQoKZGY3JE7Dum1lcm9fZGVfTWVzIDwtIG1lc2VzW2RmNyRNZXNdCgojIEdyYWZpY2FyIGVsIHRvdGFsIGRlIHZlbnRhcyBwb3IgbWVzIHkgYcOxbwoKdmVudGFzX3RvdGFsZXMgPC0gZGY3ICU+JQogIGdyb3VwX2J5KEHDsW8sIE7Dum1lcm9fZGVfTWVzKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzLlRvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgYXJyYW5nZShOw7ptZXJvX2RlX01lcykKCmdncGxvdCh2ZW50YXNfdG90YWxlcywgYWVzKHg9TsO6bWVyb19kZV9NZXMsIHk9VmVudGFzLlRvdGFsZXMsZ3JvdXA9QcOxbywgY29sb3I9IGFzLmZhY3RvcihBw7FvKSkpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHg9Ik1lcyIseT0iVmVudGFzIFRvdGFsZXMoUXR5KSIsIGNvbG9yID0gIkHDsW8iKQpgYGAKCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+VGFyZWEgQ29sYWJvcmF0aXZhIDM8L3NwYW4+CmBgYHtyfQojIFByZWd1bnRhIERldG9uYW50ZSA0LiDCv1NlIGhhIGluY3JlbWVudGFkbyBsYSB2ZW50YSBkZSBwcm9kdWN0b3MgZW4gZW52YXNlcyByZXRvcm5hYmxlcyBlbiBsb3Mgw7psdGltb3MgZG9zIGHDsW9zPwp2ZW50YXNfdG90YWxlc19lciA8LSBkZjcgJT4lCiAgIGZpbHRlcihSZXRvcm5hYmxlX05SID09ICJSZXRvcm5hYmxlIikgJT4lCiAgZ3JvdXBfYnkoQcOxbywgTsO6bWVyb19kZV9NZXMpICU+JQogIHN1bW1hcmlzZShWZW50YXMuVG90YWxlcyA9IHN1bShWZW50YXMpKSAlPiUKICBhcnJhbmdlKE7Dum1lcm9fZGVfTWVzKQoKZ2dwbG90KHZlbnRhc190b3RhbGVzX2VyLCBhZXMoeD1Ow7ptZXJvX2RlX01lcywgeT1WZW50YXMuVG90YWxlcyxncm91cD1Bw7FvLCBjb2xvcj0gYXMuZmFjdG9yKEHDsW8pKSkgKwogIGdlb21fbGluZSgpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnMoeD0iTWVzIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBkZSBQcm9kdWN0b3MgZW4gRW52YXNlcyBSZXRvcm5hYmxlcyIsIGNvbG9yID0gIkHDsW8iKQoKCiMgUHJlZ3VudGEgRGV0b25hbnRlIAp2ZW50YXNfdG90YWxlc19zZWcgPC0gZGY3ICU+JQogICBmaWx0ZXIoU2VnbWVudG8uRGV0ID09ICJBZ3VhIFB1cmlmaWNhZGEiIHwgU2VnbWVudG8uRGV0ID09ICJJc290w7NuaWNvcyBSZWd1bGFyIiB8IFNlZ21lbnRvLkRldCA9PSAiQ29sYXMgUmVndWxhciIgKSAlPiUKICBmaWx0ZXIoQcOxbyA9PSAyMDE4KSAlPiUKICBncm91cF9ieShTZWdtZW50by5EZXQsIE7Dum1lcm9fZGVfTWVzKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzLlRvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgYXJyYW5nZShOw7ptZXJvX2RlX01lcykKCmdncGxvdCh2ZW50YXNfdG90YWxlc19zZWcsIGFlcyh4PU7Dum1lcm9fZGVfTWVzLCB5PVZlbnRhcy5Ub3RhbGVzLGdyb3VwPVNlZ21lbnRvLkRldCwgY29sb3I9IGFzLmZhY3RvcihTZWdtZW50by5EZXQpKSkgKwogIGdlb21fbGluZSgpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnMoeD0iTWVzIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBwb3IgU2VnbWVudG8iLCBjb2xvciA9ICJTZWdtZW50byIpCgoKCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPkFjdGl2aWRhZCBJbmRpdmlkdWFsIDQ8L3NwYW4+CmBgYHtyfQojIEVsYWJvcmFyIFJlZ3Jlc2nDs24gTGluZWFsCgp2ZW50YXNfNDU2NyA8LSBkZjcgJT4lCiAgZmlsdGVyKENsaWVudGUgPT0gIjQ1NjciKSAlPiUKICBncm91cF9ieShBw7FvKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzX1RvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgZmlsdGVyKFZlbnRhc19Ub3RhbGVzICE9IDApCgojIHZlbnRhc180NTY3JFNlY3VlbmNpYSA8LSAxOm5yb3codmVudGFzXzQ1NjcpCgpnZ3Bsb3QodmVudGFzXzQ1NjcsIGFlcyh4PUHDsW8sIHk9VmVudGFzX1RvdGFsZXMpKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHg9IkHDsW8iLHk9IlZlbnRhcyBUb3RhbGVzKFF0eSkiLCB0aXRsZT0gIlZlbnRhcyBUb3RhbGVzIGRlbCBDbGllbnRlIDQ1NjciKQoKcmVncmVzaW9uIDwtIGxtKFZlbnRhc19Ub3RhbGVzIH4gQcOxbywgZGF0YT12ZW50YXNfNDU2NykKc3VtbWFyeShyZWdyZXNpb24pCgojIEVjdWFjacOzbgojIHkgPSA0ODkxODY3NyAtIDI0MTc0ICogQcOxbyAKCiMgUiBjdWFkcmFkYSBhanVzdGFkYQojIDc3JQoKZGF0b3MgPC0gZGF0YS5mcmFtZShBw7FvPTIwMjA6MjAyNSkKcHJlZGljY2lvbiA8LSBwcmVkaWN0KHJlZ3Jlc2lvbixkYXRvcykKcHJlZGljY2lvbgoKdmVudGFzXzQ1NjckVGlwb19kZV9EYXRvIDwtICJEYXRvcyBSZWFsZXMiCmRhdG9zJFZlbnRhc19Ub3RhbGVzIDwtIHByZWRpY2Npb24KZGF0b3MkVGlwb19kZV9EYXRvIDwtICJQcmVkaWNjacOzbiIKCmRhdG9zX2NvbWJpbmFkb3MgPC0gcmJpbmQodmVudGFzXzQ1NjcsZGF0b3MpCgpnZ3Bsb3QoZGF0b3NfY29tYmluYWRvcywgYWVzKHg9QcOxbywgeT1WZW50YXNfVG90YWxlcywgY29sb3I9VGlwb19kZV9EYXRvKSkgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh4PSJBw7FvIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJQcm9uw7NzdGljbyBhIDUgYcOxb3MgZGUgVmVudGFzIGRlbCBDbGllbnRlIDQ1NjciKQpgYGAKCgoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPlRhcmVhIENvbGFib3JhdGl2YSA0PC9zcGFuPgoKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5BY3RpdmlkYWQgSW5kaXZpZHVhbCA1PC9zcGFuPgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKdmVudGFzX21lbnN1YWxlc180NTY3IDwtIGRmNyAlPiUKICBmaWx0ZXIoQ2xpZW50ZSA9PSAiNDU2NyIpICU+JQogIGdyb3VwX2J5KEHDsW8sIE7Dum1lcm9fZGVfTWVzKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzX1RvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgZmlsdGVyKFZlbnRhc19Ub3RhbGVzICE9IDApCgojIENvbmZpcm1hciBxdWUgbG9zIGRhdG9zIHF1ZSBxdWVyZW1vcyBtb2RlbGFyIGVzdGVuIG9yZGVuYWRvcyBjcm9ub2zDs2dpY2FtZW50ZS4KCiMgRnVuY2nDs24gZGUgU2VyaWUgZGUgVGllbXBvIE1FTlNVQUwsIHF1ZSBpbmljaWEgZW4gRW5lcm8gMjAxNwp0cyA8LSB0cyhkYXRhPXZlbnRhc19tZW5zdWFsZXNfNDU2NyRWZW50YXNfVG90YWxlcywgc3RhcnQgPSBjKDIwMTcsMSksIGZyZXF1ZW5jeSA9IDEyKQoKIyBGdW5jacOzbiBkZSBTZXJpZSBkZSBUaWVtcG8gTUVOU1VBTCwgcXVlIGluaWNpYSBlbiBBYnJpbCAyMDE3CnRzIDwtIHRzKGRhdGE9dmVudGFzX21lbnN1YWxlc180NTY3JFZlbnRhc19Ub3RhbGVzLCBzdGFydCA9IGMoMjAxNyw0KSwgZnJlcXVlbmN5ID0gMTIpCgojIEZ1bmNpw7NuIGRlIFNlcmllIGRlIFRpZW1wbyBUUklNRVNUUkFMLCBxdWUgaW5pY2lhIGVuIEVuZXJvIDIwMTcKdHMgPC0gdHMoZGF0YT12ZW50YXNfbWVuc3VhbGVzXzQ1NjckVmVudGFzX1RvdGFsZXMsIHN0YXJ0ID0gYygyMDE3LDEpLCBmcmVxdWVuY3kgPSA0KQoKIyBGdW5jacOzbiBkZSBTZXJpZSBkZSBUaWVtcG8gVFJJTUVTVFJBTCwgcXVlIGluaWNpYSBlbiBPY3R1YnJlIDIwMTcgKFE0KQp0cyA8LSB0cyhkYXRhPXZlbnRhc19tZW5zdWFsZXNfNDU2NyRWZW50YXNfVG90YWxlcywgc3RhcnQgPSBjKDIwMTcsNCksIGZyZXF1ZW5jeSA9IDQpCgojIEZ1bmNpw7NuIGRlIFNlcmllIGRlIFRpZW1wbyBBTlVBTCwgcXVlIGluaWNpYSBlbiAyMDE3CnRzIDwtIHRzKGRhdGE9dmVudGFzX21lbnN1YWxlc180NTY3JFZlbnRhc19Ub3RhbGVzLCBzdGFydCA9IDIwMTcsIGZyZXF1ZW5jeSA9IDEpCgojIENyZWFyIE1vZGVsbyBBUklNQQojIE1vZGVsbyBBdXRvcnJlZ3Jlc2l2byBJbnRlZ3JhZG8gZGUgUHJvbWVkaW8gTW92aWwuCmFyaW1hIDwtIGF1dG8uYXJpbWEodHMsIEQ9MSkgIyBEPTEgcG9yIGxhIHRlbXBvcmFsaWRhZAphcmltYQpzdW1tYXJ5KGFyaW1hKQoKIyBHZW5lcmFyIGVsIHByb27Ds3N0aWNvIGRlIHZlbnRhcwpwcm9ub3N0aWNvIDwtIGZvcmVjYXN0KGFyaW1hLCBsZXZlbD05NSwgaD0zNikKcHJvbm9zdGljbwpwbG90KHByb25vc3RpY28sIG1haW49IlZlbnRhcyBNZW5zdWFsZXMgeSBQcm9uw7NzdGljbyBhIDMgQcOxb3MgZGVsIENsaWVudGUgNDU2NyIsIHhsYWI9IkHDsW8iLCB5bGFiPSJWZW50YXMgKFF0eSkiKQpgYGAKCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+RXZpZGVuY2lhPC9zcGFuPgoKIyMgUHJlZ3VudGFzIERldG9uYW50ZXMKCjEuIMK/UHVlZGUgb2JzZXJ2YXJzZSB1biBjcmVjaW1pZW50byBlbiBsYXMgdmVudGFzIGRlIGFsZ3Vub3MgZGUgbG9zIHNlZ21lbnRvcyBkZSBwcm9kdWN0b3MgZGUgbGEgZmFtaWxpYSBDb2NhIENvbGEgZW4gbGFzIHRpZW5kYXMgZW4gbGFzIHF1ZSBzZSBpbXBsZW1lbnTDsyBlbCBQcm95ZWN0byBTaWdsbyBYWEkgZGUgQXJjYSBDb250aW5lbnRhbD8KYGBge3J9CnZlbnRhc190b3RhbGVzX3NlZyA8LSBkZjcgJT4lCiAgIGZpbHRlcihTZWdtZW50by5EZXQgPT0gIkFndWEgUHVyaWZpY2FkYSIgfCBTZWdtZW50by5EZXQgPT0gIklzb3TDs25pY29zIFJlZ3VsYXIiIHwgU2VnbWVudG8uRGV0ID09ICJDb2xhcyBSZWd1bGFyIiApICU+JQogIGZpbHRlcihBw7FvID09IDIwMTgpICU+JQogIGdyb3VwX2J5KFNlZ21lbnRvLkRldCwgTsO6bWVyb19kZV9NZXMpICU+JQogIHN1bW1hcmlzZShWZW50YXMuVG90YWxlcyA9IHN1bShWZW50YXMpKSAlPiUKICBhcnJhbmdlKE7Dum1lcm9fZGVfTWVzKQoKZ2dwbG90KHZlbnRhc190b3RhbGVzX3NlZywgYWVzKHg9TsO6bWVyb19kZV9NZXMsIHk9VmVudGFzLlRvdGFsZXMsZ3JvdXA9U2VnbWVudG8uRGV0LCBjb2xvcj0gYXMuZmFjdG9yKFNlZ21lbnRvLkRldCkpKSArCiAgZ2VvbV9saW5lKCkgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh4PSJNZXMiLHk9IlZlbnRhcyBUb3RhbGVzKFF0eSkiLCB0aXRsZT0gIlZlbnRhcyBUb3RhbGVzIHBvciBTZWdtZW50byIsIGNvbG9yID0gIlNlZ21lbnRvIikKYGBgCgoqKlJlc3B1ZXN0YTogRW4gZ2VuZXJhbCBsYXMgdmVudGFzIGF1bWVudGFyb24gZW4gMjAxOSwgcGVybyBjYWRhIHNlZ21lbnRvIHNlIGNvbXBvcnTDsyBkaWZlcmVudGUuIEVsIGluY3JlbWVudG8gZGUgdmVudGFzIHNlIHB1ZWRlIGxvZ3JhciBncmFjaWFzIGEgbWVqb3JlcyBjYW1wYcOxYXMgZGUgbWVyY2Fkb3RlY25pYSB5IGxhbnphbWllbnRvIGRlIG51ZXZvcyBwcm9kdWN0b3MuRW4gMjAxOCBsYSB2ZW50YSBkZSBDb2NhLUNvbGEgZW50cmUgRmVicmVybyB5IERpY2llbWJyZSBhdW1lbnTDsyBlbiAxMDAsMDAwIHVuaWRhZGVzLCBtaWVudHJhcyBxdWUgbGFzIGFndWFzIGlzb3TDs25pY2FzIG5vIHR1dmllcm9uIGNhbWJpb3MuKioKCjIuIMK/RWwgaW5jcmVtZW50byBlbiBsYXMgdmVudGFzIGVzIHNpbWlsYXIgZW50cmUgbG9zIGRpZmVyZW50ZXMgdGFtYcOxb3MgZGUgY2xpZW50ZXM/CmBgYHtyfQp2ZW50YXNfdG90YWxlc190YW1fY2xpZW50ZSA8LSBkZjcgJT4lCiAgZmlsdGVyKEHDsW8gPT0gMjAxOSkgJT4lCiAgZ3JvdXBfYnkoVGFtYcOxby5DdGUuSW5kdXN0cmlhLCBOw7ptZXJvX2RlX01lcykgJT4lCiAgc3VtbWFyaXNlKFZlbnRhcy5Ub3RhbGVzID0gc3VtKFZlbnRhcykpICU+JQogIGFycmFuZ2UoTsO6bWVyb19kZV9NZXMpICU+JQogIGZpbHRlcihWZW50YXMuVG90YWxlcyAhPSAwKQoKZ2dwbG90KHZlbnRhc190b3RhbGVzX3RhbV9jbGllbnRlLCBhZXMoeD1Ow7ptZXJvX2RlX01lcywgeT1WZW50YXMuVG90YWxlcyxncm91cD1UYW1hw7FvLkN0ZS5JbmR1c3RyaWEsIGNvbG9yPSBhcy5mYWN0b3IoVGFtYcOxby5DdGUuSW5kdXN0cmlhKSkpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9wb2ludCgpICsKICBsYWJzKHg9Ik1lcyIseT0iVmVudGFzIFRvdGFsZXMoUXR5KSIsIHRpdGxlPSAiVmVudGFzIFRvdGFsZXMgcG9yIFRhbWHDsW8gZGUgQ2xpZW50ZSIsIGNvbG9yID0gIlRhbWHDsW8gZGUgQ2xpZW50ZSIpCmBgYAoKKipSZXNwdWVzdGE6IEVsIGluY3JlbWVudG8gZGUgdmVudGFzIGVzIHNpbWlsYXIgaW5kZXBlbmRpZW50ZW1lbnRlIGRlIGxvcyB0YW1hw7FvcyBkZSBsb3MgY2xpZW50ZXMuIENvbW8gdG9kb3MgbG9zIG5lZ29jaW9zIGVzdMOhbiBhYmllcnRvcyBsb3MgbWlzbW9zIGTDrWFzLCB5IGVzdMOhbiB1YmljYWRvcyBlbiBsYSBtaXNtYSBjaXVkYWQgKEd1YWRhbGFqYXJhKSwgbG9zIGZhY3RvcmVzIGV4dGVybm9zIGRlIGxhcyB2ZW50YXMgZWZlY3RhbiBjYXNpIGlndWFsIGEgdG9kb3MuIEVsIG1lcyBkZSBtYXlvIGRlIDIwMTkgZnVlIGVsIGRlIG1heW9yIHZlbnRhcyBlbiB0b2RvcyBsb3MgdGFtYcOxb3MgZGUgY2xpZW50ZSwgeSBlbCBwcmltZXIgYmltZXN0cmUgZnVlIGVsIG3DoXMgYmFqbyB0YW1iacOpbiBwYXJhIHRvZG9zIGxvcyB0YW1hw7FvcyBkZSBjbGllbnRlLioqCgozLiDCv0N1w6FsIGVzIGVsIGNvbXBvcnRhbWllbnRvIG9ic2VydmFkbyBkZSBsYXMgdW5pZGFkZXMgdmVuZGlkYXMgcG9yIG1lcyBkZSBjYWRhIHVuYSBkZSBsYXMgbWFyY2FzLCBpbmRlcGVuZGllbnRlbWVudGUgZGUgc3VzIHJlc3BlY3RpdmFzIHByZXNlbnRhY2lvbmVzPwpgYGB7cn0KdmVudGFzX3RvdGFsZXNfbWFyY2EgPC0gZGY3ICU+JQogIGZpbHRlcihBw7FvID09IDIwMTkpICU+JQogIGZpbHRlcihNYXJjYSA9PSBjKCJDb2NhLUNvbGEiLCAiVmFsbGUgRnJ1dCIsICJDaWVsIEFndWEgUHVyaWZpY2FkYSIsIkNvY2EtQ29sYSBMaWdodCIpKSAlPiUKICBncm91cF9ieShNYXJjYSwgTsO6bWVyb19kZV9NZXMpICU+JQogIHN1bW1hcmlzZShWZW50YXNfVG90YWxlcyA9IHN1bShWZW50YXMpKSAlPiUKICBhcnJhbmdlKE7Dum1lcm9fZGVfTWVzKSAlPiUKICBmaWx0ZXIoVmVudGFzX1RvdGFsZXMgIT0gMCkKCmdncGxvdCh2ZW50YXNfdG90YWxlc19tYXJjYSwgYWVzKHg9TsO6bWVyb19kZV9NZXMsIHk9VmVudGFzX1RvdGFsZXMsZ3JvdXA9TWFyY2EsIGNvbG9yPSBhcy5mYWN0b3IoTWFyY2EpKSkgKwogIGdlb21fbGluZSgpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnMoeD0iTWVzIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBwb3IgTWFyY2EiLCBjb2xvciA9ICJNYXJjYSIpCmBgYAoKKipSZXNwdWVzdGE6IEVsIGNvbXBvcnRhbWllbnRvIGRlIHZlbnRhcyBlcyBzaW1pbGFyIGVudHJlIGxhcyBtYXJjYXMgYSB0cmF2w6lzIGRlIGxvcyBtZXNlcywgcGVybyBoYXkgbWFyY2FzIHF1ZSB2ZW5kZW4gbXVjaG8gbcOhcyBxdWUgb3RyYXMuIExvcyBtZXNlcyBkZSBtw6FzIHZlbnRhcyBkZSBiZWJpZGFzIHNvbiBsb3MgbWVzZXMgZW4gcXVlIGxhIHRlbXBlcmF0dXJhIGVzIG1heW9yLCB5IGxhcyBtYXJjYXMgbcOhcyBjb25vY2lkYXMgc29uIGxhcyBxdWUgdGllbmUgZW4gbWVudGUgZWwgY29uc3VtaWRvci4gRWwgbWVzIGRlIG1heW8gMjAxOSBlcyBwYXJhIHRvZGFzIGxhcyBtYXJjYXMgZWwgZGUgbWF5b3JlcyB2ZW50YXMsIHBlcm8gbGEgbWFyY2EgQ29jYS1Db2xhIGVzIGxhIHF1ZSB2ZW5kZSBtw6FzIHF1ZSB0b2Rhcy4qKgoKNC4gwr9TZSBoYSBpbmNyZW1lbnRhZG8gbGEgdmVudGEgZGUgcHJvZHVjdG9zIGVuIGVudmFzZXMgcmV0b3JuYWJsZXMgZW4gbG9zIMO6bHRpbW9zIGRvcyBhw7Fvcz8KYGBge3J9CnZlbnRhc190b3RhbGVzX2VudmFzZSA8LSBkZjcgJT4lCiAgZmlsdGVyKFJldG9ybmFibGVfTlI9PSJSZXRvcm5hYmxlIikgJT4lCiAgZmlsdGVyKEHDsW8gPT0gYygyMDE3LDIwMTgsMjAxOSkpICU+JQogIGdyb3VwX2J5KEHDsW8sIE7Dum1lcm9fZGVfTWVzKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzLlRvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgYXJyYW5nZShOw7ptZXJvX2RlX01lcykgJT4lCiAgZmlsdGVyKFZlbnRhcy5Ub3RhbGVzICE9IDApCgpnZ3Bsb3QodmVudGFzX3RvdGFsZXNfZW52YXNlLCBhZXMoeD1Ow7ptZXJvX2RlX01lcywgeT1WZW50YXMuVG90YWxlcyxncm91cD1Bw7FvLCBjb2xvcj0gYXMuZmFjdG9yKEHDsW8pKSkgKwogIGdlb21fbGluZSgpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnMoeD0iTWVzIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBkZSBFbnZhc2VzIFJldG9ybmFibGVzIiwgY29sb3IgPSAiQcOxbyIpCmBgYAoKKipSZXNwdWVzdGE6IExhIHZlbnRhIGRlIHByb2R1Y3RvcyBlbiBlbnZhc2UgcmV0b3JuYWJsZSBhdW1lbnTDsyBlbiBsb3Mgw7psdGltb3MgZG9zIGHDsW9zLiBMYXMgY2FtcGHDsWFzIGRlIGNvbmNpZW5jaWEgYW1iaWVudGFsIGhhbiB2dWVsdG8gcG9wdWxhcmVzIGxhcyBvcGNpb25lcyBtZW5vcyBkYcOxaW5hcyBhbCBlY29zaXN0ZW1hLiBEZSAyMDE3IGEgMjAxOCBodWJvIHVuIGxpZ2VybyBpbmNyZW1lbnRvIGVuIGxhcyB2ZW50YXMgZGUgZW52YXNlIHJldG9ybmFibGUsIHkgZW50cmUgMjAxOCB5IDIwMTkgZWwgYXVtZW50byBmdWUgbXV5IG5vdG9yaW8uKiogIAoKKipOb3RhczogSGF5IG90cm9zIGZhY3RvcmVzIGEgY29uc2lkZXJhciBjb21vIHF1ZSBlbiAyMDE5IGhheSBtw6FzIHRpZW5kYXMgY29uIGVsIHByb3llY3RvIFNpZ2xvIFhYSSwgbyBxdWUgbGFzIHRpZW5kYXMgZW4gZ2VuZXJhbCB2ZW5kZW4gbcOhcyBwcm9kdWN0b3MgKHRhbnRvIHJldG9ybmFibGVzIGNvbW8gbm8gcmV0b3JuYWJsZXMpLioqCgo1LiDCv0VsIGNvbXBvcnRhbWllbnRvIGRlIGxhIHZlbnRhIGRlIGFndWEgaGEgaW5jcmVtZW50YWRvIGVuIHJlbGFjacOzbiBhbCBkZSBsb3MgcmVmcmVzY29zIG8gbGFzIGJlYmlkYXMgaXNvdMOzbmljYXM/CmBgYHtyfQp2ZW50YXNfdG90YWxlc19zZWcgPC0gZGY3ICU+JQogICBmaWx0ZXIoU2VnbWVudG8uRGV0ID09ICJBZ3VhIFB1cmlmaWNhZGEiIHwgU2VnbWVudG8uRGV0ID09ICJJc290w7NuaWNvcyBSZWd1bGFyIiB8IFNlZ21lbnRvLkRldCA9PSAiQ29sYXMgUmVndWxhciIgKSAlPiUKICBmaWx0ZXIoQcOxbyA9PSAyMDE4KSAlPiUKICBncm91cF9ieShTZWdtZW50by5EZXQsIE7Dum1lcm9fZGVfTWVzKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzLlRvdGFsZXMgPSBzdW0oVmVudGFzKSkgJT4lCiAgYXJyYW5nZShOw7ptZXJvX2RlX01lcykKCmdncGxvdCh2ZW50YXNfdG90YWxlc19zZWcsIGFlcyh4PU7Dum1lcm9fZGVfTWVzLCB5PVZlbnRhcy5Ub3RhbGVzLGdyb3VwPVNlZ21lbnRvLkRldCwgY29sb3I9IGFzLmZhY3RvcihTZWdtZW50by5EZXQpKSkgKwogIGdlb21fbGluZSgpICsKICBnZW9tX3BvaW50KCkgKwogIGxhYnMoeD0iTWVzIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBwb3IgU2VnbWVudG8iLCBjb2xvciA9ICJTZWdtZW50byIpCmBgYAoKKipSZXNwdWVzdGE6IExhcyB2ZW50YXMgZGUgQWd1YSBQdXJpZmljYWRhIG5vIGhhIGF1bWVudGFkbyBlbiByZWxhY2nDs24gYSBSZWZyZXNjb3MgbyBCZWJpZGFzIElzb3TDs25pY2FzLiBMYSBwZXJzZXBjacOzbiBxdWUgZWwgYWd1YSBubyB0aWVuZSB2YWxvciBhZ3JlZ2FkbyBlbiBsYSBwcmVwYXJhY2nDs24geSBlbCBhesO6Y2FyIGVuIGxhIHJlY2V0YSBoYWNlbiBkZSBsb3MgcmVmcmVzY29zIGxhIG9wY2nDs24gcHJlZmVyaWRhIGRlIGxvcyBjb25zdW1pZG9yZXMgbWV4aWNhbm9zLiBFbiAyMDE4IGxhcyB2ZW50YXMgdG90YWxlcyBkZSBBZ3VhIFB1cmlmaWNhZGEgbm8gc3VwZXJhcm9uIGxhcyA1MCwwMDAgdW5pZGFkZXMsIG1pZW50cmFzIHF1ZSBsYSBDb2NhLUNvbGEgdmVuZGnDsyBlbiBzdSBtZXMgbcOhcyBhbHRvIDQ1MCwwMDAgKDggdmVjZXMgbcOhcyBxdWUgZWwgYWd1YSkuKioKCjYuIMK/UHVlZGUgZGVjaXJzZSBxdWUgbGEgdmVudGEgbWVuc3VhbCBkZSBhZ3VhIGVzdMOhIHJlbGFjaW9uYWRhIGNvbiBsYSB2ZW50YSBtZW5zdWFsIGRlIHJlZnJlc2NvcyBlbiBsb3Mgw7psdGltb3MgNCBhw7Fvcz8KYGBge3J9CnZlbnRhc190b3RhbGVzX2F5ciA8LSBkZjcgJT4lCiAgIGZpbHRlcihTZWdtZW50by5EZXQgPT0gYygiQWd1YSBQdXJpZmljYWRhIiwgIkNvbGFzIFJlZ3VsYXIiKSkgJT4lCiAgZ3JvdXBfYnkoU2VnbWVudG8uRGV0LCBBw7FvKSAlPiUKICBzdW1tYXJpc2UoVmVudGFzLlRvdGFsZXMgPSBzdW0oVmVudGFzKSkgCiAgCmdncGxvdCh2ZW50YXNfdG90YWxlc19heXIsIGFlcyh4PUHDsW8sIHk9VmVudGFzLlRvdGFsZXMsZ3JvdXA9U2VnbWVudG8uRGV0LCBjb2xvcj0gYXMuZmFjdG9yKFNlZ21lbnRvLkRldCkpKSArCiAgZ2VvbV9saW5lKCkgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh4PSJBw7FvIix5PSJWZW50YXMgVG90YWxlcyhRdHkpIiwgdGl0bGU9ICJWZW50YXMgVG90YWxlcyBwb3IgU2VnbWVudG8iLCBjb2xvciA9ICJTZWdtZW50byIpCmBgYAoKKipSZXNwdWVzdGE6IExhIHZlbnRhIGRlIGFndWEgeSByZWZyZXNjb3Mgc2UgaW5jcmVtZW50YSBlbiBsb3MgbWlzbW9zIG1lc2VzLCB5IGEgdHJhdsOpcyBkZSBsb3MgYcOxb3MsIHBlcm8gbm8gc2UgcHVlZGUgY29uY2x1aXIgcXVlIHVuIGluY3JlbWVudG8gY2F1c2UgZWwgb3Ryby4gTG9zIG1lc2VzIGNhbHVyb3NvcyB5IGVsIGNyZWNpbWllbnRvIGRlIGxhIHBvYmxhY2nDs24gaGFjZSBxdWUgbGFzIHZlbnRhcyBzZSBpbmNyZW1lbnRlbiBlbiBsYXMgYmViaWRhcywgc2VhbiBhZ3VhIG8gcmVmcmVzY28uIEVuIGxhIGdyw6FmaWNhIG9idGVuaWRhIHNlIG9ic2VydmEgdW4gaW5jcmVtZW50byBhw7FvIGNvbiBhw7FvIGVuIGxhIHZlbnRhIGRlIGFndWEgeSB0YW1iacOpbiBkZSByZWZyZXNjb3MuICoqCgo3LiDCv0EgY3XDoW50byBhc2NpZW5kZW4gbGFzIHZlbnRhcyBlc3BlcmFkYXMgcGFyYSBlbCAyMDIwIGVuIGxhIENvY2EgQ29sYSBkZSA1MDAgbWwgTlIgVmlkcmlvPwpgYGB7cn0KdmVudGFzX2NvY2FfdmlkcmlvIDwtIGRmNyAlPiUKICBmaWx0ZXIoTWFyY2EgPT0gIkNvY2EtQ29sYSIgJiBQcmVzZW50YWNpb24gPT0gIjUwMCBtbCBOUiBWaWRyaW8iKSAlPiUKICBncm91cF9ieShBw7FvLCBOw7ptZXJvX2RlX01lcykgJT4lCiAgc3VtbWFyaXNlKFZlbnRhcy5Ub3RhbGVzID0gc3VtKFZlbnRhcykpICU+JQogIGZpbHRlcihWZW50YXMuVG90YWxlcyAhPSAwKQoKIyBDb25maXJtYXIgcXVlIGxvcyBkYXRvcyBxdWUgcXVlcmVtb3MgbW9kZWxhciBlc3RlbiBvcmRlbmFkb3MgY3Jvbm9sw7NnaWNhbWVudGUuCgojIEZ1bmNpw7NuIGRlIFNlcmllIGRlIFRpZW1wbyBNRU5TVUFMLCBxdWUgaW5pY2lhIGVuIEVuZXJvIDIwMTcKdHMgPC0gdHMoZGF0YT12ZW50YXNfY29jYV92aWRyaW8kVmVudGFzLlRvdGFsZXMsIHN0YXJ0ID0gYygyMDE2LDEpLCBmcmVxdWVuY3kgPSAxMikKCiMgQ3JlYXIgTW9kZWxvIEFSSU1BCiMgTW9kZWxvIEF1dG9ycmVncmVzaXZvIEludGVncmFkbyBkZSBQcm9tZWRpbyBNb3ZpbC4KYXJpbWEgPC0gYXV0by5hcmltYSh0cywgRD0xKSAjIEQ9MSBwb3IgbGEgdGVtcG9yYWxpZGFkCmFyaW1hCnN1bW1hcnkoYXJpbWEpCgojIEdlbmVyYXIgZWwgcHJvbsOzc3RpY28gZGUgdmVudGFzCnByb25vc3RpY28gPC0gZm9yZWNhc3QoYXJpbWEsIGxldmVsPTk1LCBoPTE2KQpwcm9ub3N0aWNvCnBsb3QocHJvbm9zdGljbywgbWFpbj0iVmVudGFzIE1lbnN1YWxlcyB5IFByb27Ds3N0aWNvIHBhcmEgMjAyMCBkZSBDb2NhLUNvbGEgNTAwIG1sIE5SIFZpZHJpbyIsIHhsYWI9IkHDsW8iLCAgeWxhYj0iVmVudGFzIChRdHkpIikKYGBgCgoqKlJlc3B1ZXN0YTogTGFzIHZlbnRhcyBlc3BlcmFkYXMgZGUgQ29jYS1Db2xhIGRlIDUwMCBtbCBOUiBWaWRyaW8gcGFyYSAyMDIwIG9zY2lsYW4gbWVuc3VhbG1lbnRlIGVudHJlIDQ1LDAwMCB5IDY1LDAwMCB1bmlkYWRlcywgY29uIHVuYSBjb25maWFiaWxpZGFkIGRlbCA5NSUuKioKCgo=