Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Decomposição de séries temporais. Campo Grande-MS, Brasil: RStudio/Rpubs, 2021. Disponível em https://rpubs.com/amrofi/decomposicao_time_series.

1 Observando o GDP per capita

Nesta série do GDP per capita brasileiro de 1960 a 2017, é possível ver uma tendência crescente, embora com algumas oscilações no período de 1990 a 2000 e uma queda após 2011.

library(fpp3)
# Brazil
global_economy_br<-global_economy %>%
  filter(Country == "Brazil") %>%
  autoplot(GDP/Population) +
  labs(title= "GDP per capita - Brazil, 1960-2017", y = "USD",
       xlab("Ano"))
global_economy_br

2 Médias móveis

Primeiro farei a média móvel da série do GDP per capita do Brasil. Um forma é fazer a média com uma janela temporal de, por exemplo, 5 anos.

bra_5MA <- global_economy %>%
  filter(Country == "Brazil") %>%
  mutate(
    `5-MA` = slider::slide_dbl(GDP/Population, mean,
                .before = 2, .after = 2, .complete = TRUE)
  )
bra_3MA <- global_economy %>%
  filter(Country == "Brazil") %>%
  mutate(
    `3-MA` = slider::slide_dbl(GDP/Population, mean,
                .before = 1, .after = 1, .complete = TRUE)
  )

O gráfico pode ser visualizado.

bra_5MA %>%
  fabletools::autoplot(GDP/Population) +
  geom_line(aes(y = `5-MA`), color = "#D55E00") +
  geom_line(data = bra_3MA,aes(y=`3-MA`), color = "green")+
  labs(y = "USD",
       title = "GDP per capita do Brasil e Médias Móveis de 3 e 5 anos") +
  guides(colour = guide_legend(title = "series"))+
  theme(legend.position = "bottom") 

Observe que o ciclo de tendência (em laranja) é mais suave do que a série original e captura o movimento principal da série temporal sem todas as flutuações menores. A ordem da média móvel determina a suavidade da estimativa do ciclo de tendência. Em geral, um período maior significa uma curva mais suave - compare a curva verde (3 anos) com a laranja (5 anos, mais suave).

3 Exemplo Consumo Morettin e Toloi

Os dados vem do livro de Morettin e Toloi, Análise de Séries Temporais (https://www.ime.usp.br/~pam/ST.html), consumo no varejo de São Paulo, mensais de Jan/1984 a Out/1996, em https://www.ime.usp.br/~pam/CONSUMO.XLS.

Um exemplo semelhante consta em https://rpubs.com/amrofi/time_series_rstudio_intro, Figueiredo (2019), feito na época sem o tsibble.

library(fpp3)
dados <-structure(list(obs = structure(c(441763200, 444441600, 446947200, 
449625600, 452217600, 454896000, 457488000, 460166400, 462844800, 
465436800, 468115200, 470707200, 473385600, 476064000, 478483200, 
481161600, 483753600, 486432000, 489024000, 491702400, 494380800, 
496972800, 499651200, 502243200, 504921600, 507600000, 510019200, 
512697600, 515289600, 517968000, 520560000, 523238400, 525916800, 
528508800, 531187200, 533779200, 536457600, 539136000, 541555200, 
544233600, 546825600, 549504000, 552096000, 554774400, 557452800, 
560044800, 562723200, 565315200, 567993600, 570672000, 573177600, 
575856000, 578448000, 581126400, 583718400, 586396800, 589075200, 
591667200, 594345600, 596937600, 599616000, 602294400, 604713600, 
607392000, 609984000, 612662400, 615254400, 617932800, 620611200, 
623203200, 625881600, 628473600, 631152000, 633830400, 636249600, 
638928000, 641520000, 644198400, 646790400, 649468800, 652147200, 
654739200, 657417600, 660009600, 662688000, 665366400, 667785600, 
670464000, 673056000, 675734400, 678326400, 681004800, 683683200, 
686275200, 688953600, 691545600, 694224000, 696902400, 699408000, 
702086400, 704678400, 707356800, 709948800, 712627200, 715305600, 
717897600, 720576000, 723168000, 725846400, 728524800, 730944000, 
733622400, 736214400, 738892800, 741484800, 744163200, 746841600, 
749433600, 752112000, 754704000, 757382400, 760060800, 762480000, 
765158400, 767750400, 770428800, 773020800, 775699200, 778377600, 
780969600, 783648000, 786240000, 788918400, 791596800, 794016000, 
796694400, 799286400, 801964800, 804556800, 807235200, 809913600, 
812505600, 815184000, 817776000, 820454400, 823132800, 825638400, 
828316800, 830908800, 833587200, 836179200, 838857600, 841536000, 
844128000), class = c("POSIXct", "POSIXt"), tzone = "UTC"), t = c(1, 
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 
113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 
139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
152, 153, 154), consumo = c(114.13, 110.79, 116.46, 111.57, 120.66, 
121.15, 121.27, 127.02, 129.04, 133.3, 130.6, 179.39, 120.64, 
114.05, 130.6, 118.26, 145.54, 135.13, 153.35, 159.95, 150.01, 
164.93, 170.37, 220.96, 134.26, 133.11, 147.84, 164.46, 181.86, 
170.44, 186.64, 174.21, 181.62, 194.16, 181.9, 232.01, 140.16, 
130.78, 119.04, 120.73, 129.81, 111.04, 122.75, 133.95, 125.41, 
132.05, 129.54, 176.37, 110.09, 113.25, 124.03, 110.63, 116.72, 
124.63, 124.38, 130.27, 119.87, 115.75, 122.44, 162.43, 105.89, 
115.59, 147, 131.7, 131.32, 136.66, 126.43, 134.88, 128.26, 125.32, 
124.61, 166.11, 116.25, 96.93, 89.27, 101.87, 125.57, 113.31, 
109.39, 127.33, 120.56, 117.73, 113.81, 147.25, 100.15, 95.11, 
112.26, 109.39, 114.2, 113.8, 126.47, 128.36, 115.71, 116.09, 
99.53, 127.27, 87.08, 85.67, 82.02, 98.2, 96.44, 90.23, 97.15, 
95.08, 94, 93, 96.09, 129.21, 75.39, 77.7, 97.34, 84.97, 87.55, 
86.64, 90.52, 95.4, 95.2, 95.8, 101.23, 128.49, 85.63, 82.77, 
96.55, 81.33, 96.91, 83.76, 90.19, 114.84, 108.4, 106.05, 109.71, 
143.86, 99.12, 99.28, 114.75, 106.13, 110.02, 108.07, 112.52, 
113.87, 107.84, 112.12, 112.03, 139.37, 92.24, 93.56, 107.37, 
102.89, 114.78, 102.88, 118.41, 119.23, 117.36, 122.06)), row.names = c(NA, 
-154L), class = c("tbl_df", "tbl", "data.frame"))

Primeiro, converterei para tsibble.

dados_tsbl <- as_tsibble(dados, key = t, index = obs)

Farei as médias móveis de 12 meses em fim de período e de 3 meses centrada.

dados_MA <- dados_tsbl %>%
  mutate(
    `3-MA` = slider::slide_dbl(consumo, mean,
                .before = 1, .after = 1, .complete = TRUE)
  )
dados_MA <- dados_MA %>%
  mutate(
    `12-MA` = slider::slide_dbl(consumo, mean,
                .before = 11, .complete = TRUE)
  )
attach(dados_MA)
dados_MA[3:5] %>%
  plot.ts(main="Consumo de Morettin e Toloi, Médias Móveis de 3 e 12 meses")

4 Obtendo a Sazonalidade

# calculo manual do IE
# multiplicativo
# farei com a série em formato ts
consumo.ts<-ts(dados_MA$consumo,start = c(1984,1),frequency = 12)
cons12.ma<-forecast::ma(consumo.ts,12)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
S<-100*consumo.ts/cons12.ma
View(S)
# tapply(S, cycle(S), mean) #fazendo assim eu nao consigo todos os meses
# farei uma janela para 1984,7 a 1996,4
Sw<-window(S, start=c(1984,7),end=c(1996,4))
IEM<-tapply(Sw, cycle(Sw), mean) # IE medio mensal
# agora somo todos os IEM e faço o IE
IEM.total<-sum(IEM)
IE<-12*IEM/IEM.total
IE
##         1         2         3         4         5         6         7         8 
## 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457 1.0562029 
##         9        10        11        12 
## 1.0136767 1.0299569 1.0224863 1.3389367
plot(IE, type = "o")

# pelo stats::decompose, multiplicative
# decompose(x, type = c("additive","multiplicative"), filter = NULL)
cons.components<- decompose(consumo.ts, type=c("multiplicative"))
cons.components
## $x
##         Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep    Oct
## 1984 114.13 110.79 116.46 111.57 120.66 121.15 121.27 127.02 129.04 133.30
## 1985 120.64 114.05 130.60 118.26 145.54 135.13 153.35 159.95 150.01 164.93
## 1986 134.26 133.11 147.84 164.46 181.86 170.44 186.64 174.21 181.62 194.16
## 1987 140.16 130.78 119.04 120.73 129.81 111.04 122.75 133.95 125.41 132.05
## 1988 110.09 113.25 124.03 110.63 116.72 124.63 124.38 130.27 119.87 115.75
## 1989 105.89 115.59 147.00 131.70 131.32 136.66 126.43 134.88 128.26 125.32
## 1990 116.25  96.93  89.27 101.87 125.57 113.31 109.39 127.33 120.56 117.73
## 1991 100.15  95.11 112.26 109.39 114.20 113.80 126.47 128.36 115.71 116.09
## 1992  87.08  85.67  82.02  98.20  96.44  90.23  97.15  95.08  94.00  93.00
## 1993  75.39  77.70  97.34  84.97  87.55  86.64  90.52  95.40  95.20  95.80
## 1994  85.63  82.77  96.55  81.33  96.91  83.76  90.19 114.84 108.40 106.05
## 1995  99.12  99.28 114.75 106.13 110.02 108.07 112.52 113.87 107.84 112.12
## 1996  92.24  93.56 107.37 102.89 114.78 102.88 118.41 119.23 117.36 122.06
##         Nov    Dec
## 1984 130.60 179.39
## 1985 170.37 220.96
## 1986 181.90 232.01
## 1987 129.54 176.37
## 1988 122.44 162.43
## 1989 124.61 166.11
## 1990 113.81 147.25
## 1991  99.53 127.27
## 1992  96.09 129.21
## 1993 101.23 128.49
## 1994 109.71 143.86
## 1995 112.03 139.37
## 1996              
## 
## $seasonal
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1984 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1985 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1986 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1987 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1988 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1989 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1990 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1991 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1992 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1993 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1994 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1995 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
## 1996 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
##            Aug       Sep       Oct       Nov       Dec
## 1984 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1985 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1986 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1987 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1988 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1989 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1990 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1991 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1992 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1993 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1994 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1995 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 1996 1.0562029 1.0136767 1.0299569                    
## 
## $trend
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1984        NA        NA        NA        NA        NA        NA 126.55292
## 1985 133.40667 136.11542 138.36125 140.55292 143.52792 146.91708 149.21667
## 1986 164.01542 165.99667 167.90792 170.44292 172.14125 173.08208 173.78833
## 1987 155.84625 151.50667 147.48708 142.55708 137.78750 133.28750 129.71625
## 1988 126.68625 126.60083 126.21667 125.30667 124.33167 123.45500 122.69917
## 1989 128.69375 128.97125 129.51292 130.26125 130.75042 130.99417 131.57917
## 1990 120.02417 118.99958 118.36417 117.72708 116.96083 115.72500 114.26833
## 1991 115.79333 116.54792 116.38875 116.11833 115.45500 114.02750 112.65042
## 1992 103.20083 100.59250  98.30125  96.43458  95.32917  95.26667  94.86042
## 1993  92.56708  92.30417  92.36750  92.53417  92.86500  93.04917  93.44583
## 1994  94.45208  95.24833  96.60833  97.58542  98.36583  99.35958 100.56208
## 1995 110.13208 111.02208 110.95833 111.18792 111.53750 111.44708 110.97333
## 1996 109.53458 110.00333 110.62333 111.43417        NA        NA        NA
##            Aug       Sep       Oct       Nov       Dec
## 1984 126.96000 127.68500 128.55292 129.86833 131.48750
## 1985 150.57833 152.09083 154.73417 158.17250 161.15708
## 1986 173.93708 172.64000 169.61792 165.62708 160.98333
## 1987 127.73292 127.21042 126.99750 126.03125 126.05208
## 1988 122.62167 123.67625 125.51125 126.99750 128.10708
## 1989 131.23333 128.05042 124.40208 122.91958 121.70708
## 1990 113.52167 114.40375 115.67500 115.51458 115.06125
## 1991 111.71250 110.05917 108.33292 107.12667 105.40458
## 1992  94.04125  94.34750  94.43458  93.51292  92.99292
## 1993  94.08375  94.26208  94.07750  94.31583  94.58583
## 1994 101.81208 103.25833 105.05000 106.62958 108.18875
## 1995 110.44833 109.90250 109.46000 109.52333 109.50542
## 1996        NA        NA        NA                    
## 
## $random
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1984        NA        NA        NA        NA        NA        NA 0.9598431
## 1985 1.0366261 0.9814219 0.9957447 0.9164827 1.0178221 0.9661237 1.0294031
## 1986 0.9383618 0.9392454 0.9288382 1.0510118 1.0604205 1.0343623 1.0757297
## 1987 1.0309464 1.0110610 0.8514482 0.9224709 0.9456365 0.8750710 0.9478643
## 1988 0.9961546 1.0477783 1.0366433 0.9616677 0.9423005 1.0603938 1.0153785
## 1989 0.9432045 1.0497723 1.1973567 1.1012776 1.0081234 1.0958289 0.9624586
## 1990 1.1102803 0.9540707 0.7956180 0.9425322 1.0776341 1.0284764 0.9588944
## 1991 0.9914613 0.9558493 1.0174974 1.0261317 0.9928399 1.0483008 1.1245370
## 1992 0.9672608 0.9975414 0.8801973 1.1091875 1.0154471 0.9948630 1.0258334
## 1993 0.9336101 0.9859786 1.1117098 1.0002067 0.9463025 0.9780459 0.9702947
## 1994 1.0392565 1.0178490 1.0542825 0.9078041 0.9888950 0.8854829 0.8983450
## 1995 1.0317056 1.0474183 1.0909681 1.0396971 0.9900944 1.0185673 1.0156174
## 1996 0.9653313 0.9962129 1.0238952 1.0057292        NA        NA        NA
##            Aug       Sep       Oct       Nov       Dec
## 1984 0.9472352 0.9969767 1.0067674 0.9835182 1.0189520
## 1985 1.0057138 0.9730109 1.0348905 1.0534275 1.0240100
## 1986 0.9482733 1.0378218 1.1113964 1.0740979 1.0763803
## 1987 0.9928703 0.9725457 1.0095415 1.0052363 1.0449960
## 1988 1.0058422 0.9561471 0.8954045 0.9429109 0.9469631
## 1989 0.9730968 0.9881225 0.9780784 0.9914580 1.0193419
## 1990 1.0619513 1.0395934 0.9881630 0.9635763 0.9557981
## 1991 1.0878790 1.0371587 1.0404359 0.9086548 0.9017923
## 1992 0.9572457 0.9828743 0.9561650 1.0049608 1.0377344
## 1993 0.9600335 0.9963237 0.9886912 1.0497047 1.0145727
## 1994 1.0679391 1.0356302 0.9801568 1.0062619 0.9931113
## 1995 0.9761191 0.9679944 0.9945087 1.0003920 0.9505471
## 1996        NA        NA        NA                    
## 
## $figure
##  [1] 0.8723518 0.8537530 0.9479397 0.9180656 0.9962633 0.9520214 0.9983457
##  [8] 1.0562029 1.0136767 1.0299569 1.0224863 1.3389367
## 
## $type
## [1] "multiplicative"
## 
## attr(,"class")
## [1] "decomposed.ts"
# pega os valores estimados do componente sazonal
cons.saz<-cons.components$seasonal 
knitr::kable(cbind(IE=IE,CONS.SAZ=unique(cons.saz)))
IE CONS.SAZ
0.8723518 0.8723518
0.8537530 0.8537530
0.9479397 0.9479397
0.9180656 0.9180656
0.9962633 0.9962633
0.9520214 0.9520214
0.9983457 0.9983457
1.0562029 1.0562029
1.0136767 1.0136767
1.0299569 1.0299569
1.0224863 1.0224863
1.3389367 1.3389367
plot(cons.components$figure, type = "o")

5 Referências

FIGUEIREDO, A.M.R. Apresentação das Séries Temporais com R. Campo Grande-MS, Brasil: RStudio/Rpubs, 2019. Disponível em: https://rpubs.com/amrofi/time_series_rstudio_intro. Accessed on March, 31st, 2021.

HYNDMAN, Rob. fpp3: Data for “Forecasting: Principles and Practice” (3rd Edition). R package version 0.4.0. 2021. Accessed on March, 31st, 2021.https://CRAN.R-project.org/package=fpp3

HYNDMAN, R.J.; ATHANASOPOULOS, G. Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. 2021. <OTexts.com/fpp3>. Accessed on March, 31st, 2021.

MORETTIN, Pedro A.; TOLOI, Clélia M.C. Análise de Séries Temporais. São Paulo: Edgard Blucher/ABE, 2006.

LS0tDQp0aXRsZTogIkRlY29tcG9zacOnw6NvIGRlIHPDqXJpZXMgdGVtcG9yYWlzIg0KYXV0aG9yOiAiQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzIEZpZ3VlaXJlZG8sICplLW1haWw6IGFkcmlhbm8uZmlndWVpcmVkb0B1Zm1zLmJyKiINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVkICVCICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHRoZW1lOiBkZWZhdWx0DQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogbm8NCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyBMaWNlbsOnYSB7I0xpY2Vuw6dhIC51bm51bWJlcmVkfQ0KDQpUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiBUbyB2aWV3IGEgY29weSBvZiB0aGlzIGxpY2Vuc2UsIHZpc2l0IDxodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvPiBvciBzZW5kIGEgbGV0dGVyIHRvIENyZWF0aXZlIENvbW1vbnMsIFBPIEJveCAxODY2LCBNb3VudGFpbiBWaWV3LCBDQSA5NDA0MiwgVVNBLg0KDQohW0xpY2Vuc2U6IENDIEJZLVNBIDQuMF0oaHR0cHM6Ly9taXJyb3JzLmNyZWF0aXZlY29tbW9ucy5vcmcvcHJlc3NraXQvYnV0dG9ucy84OHgzMS9wbmcvYnktc2EucG5nKXt3aWR0aD0iMjUlIn0NCg0KDQojIENpdGHDp8OjbyB7I0NpdGHDp8OjbyAudW5udW1iZXJlZH0NCg0KU3VnZXN0w6NvIGRlIGNpdGHDp8OjbzogRklHVUVJUkVETywgQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzLiBEZWNvbXBvc2nDp8OjbyBkZSBzw6lyaWVzIHRlbXBvcmFpcy4gQ2FtcG8gR3JhbmRlLU1TLCBCcmFzaWw6IFJTdHVkaW8vUnB1YnMsIDIwMjEuIERpc3BvbsOtdmVsIGVtIDxodHRwczovL3JwdWJzLmNvbS9hbXJvZmkvZGVjb21wb3NpY2FvX3RpbWVfc2VyaWVzPi4NCg0KIyBPYnNlcnZhbmRvIG8gR0RQIHBlciBjYXBpdGENCg0KTmVzdGEgc8OpcmllIGRvIEdEUCBwZXIgY2FwaXRhIGJyYXNpbGVpcm8gZGUgMTk2MCBhIDIwMTcsIMOpIHBvc3PDrXZlbCB2ZXIgdW1hIHRlbmTDqm5jaWEgY3Jlc2NlbnRlLCBlbWJvcmEgY29tIGFsZ3VtYXMgb3NjaWxhw6fDtWVzIG5vIHBlcsOtb2RvIGRlIDE5OTAgYSAyMDAwIGUgdW1hIHF1ZWRhIGFww7NzIDIwMTEuICAgIA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShmcHAzKQ0KIyBCcmF6aWwNCmdsb2JhbF9lY29ub215X2JyPC1nbG9iYWxfZWNvbm9teSAlPiUNCiAgZmlsdGVyKENvdW50cnkgPT0gIkJyYXppbCIpICU+JQ0KICBhdXRvcGxvdChHRFAvUG9wdWxhdGlvbikgKw0KICBsYWJzKHRpdGxlPSAiR0RQIHBlciBjYXBpdGEgLSBCcmF6aWwsIDE5NjAtMjAxNyIsIHkgPSAiVVNEIiwNCiAgICAgICB4bGFiKCJBbm8iKSkNCmdsb2JhbF9lY29ub215X2JyDQpgYGANCg0KIyBNw6lkaWFzIG3Ds3ZlaXMNCg0KUHJpbWVpcm8gZmFyZWkgYSBtw6lkaWEgbcOzdmVsIGRhIHPDqXJpZSBkbyBHRFAgcGVyIGNhcGl0YSBkbyBCcmFzaWwuIFVtIGZvcm1hIMOpIGZhemVyIGEgbcOpZGlhIGNvbSB1bWEgamFuZWxhIHRlbXBvcmFsIGRlLCBwb3IgZXhlbXBsbywgNSBhbm9zLg0KDQpgYGB7cn0NCmJyYV81TUEgPC0gZ2xvYmFsX2Vjb25vbXkgJT4lDQogIGZpbHRlcihDb3VudHJ5ID09ICJCcmF6aWwiKSAlPiUNCiAgbXV0YXRlKA0KICAgIGA1LU1BYCA9IHNsaWRlcjo6c2xpZGVfZGJsKEdEUC9Qb3B1bGF0aW9uLCBtZWFuLA0KICAgICAgICAgICAgICAgIC5iZWZvcmUgPSAyLCAuYWZ0ZXIgPSAyLCAuY29tcGxldGUgPSBUUlVFKQ0KICApDQpicmFfM01BIDwtIGdsb2JhbF9lY29ub215ICU+JQ0KICBmaWx0ZXIoQ291bnRyeSA9PSAiQnJhemlsIikgJT4lDQogIG11dGF0ZSgNCiAgICBgMy1NQWAgPSBzbGlkZXI6OnNsaWRlX2RibChHRFAvUG9wdWxhdGlvbiwgbWVhbiwNCiAgICAgICAgICAgICAgICAuYmVmb3JlID0gMSwgLmFmdGVyID0gMSwgLmNvbXBsZXRlID0gVFJVRSkNCiAgKQ0KYGBgDQoNCk8gZ3LDoWZpY28gcG9kZSBzZXIgdmlzdWFsaXphZG8uDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpicmFfNU1BICU+JQ0KICBmYWJsZXRvb2xzOjphdXRvcGxvdChHRFAvUG9wdWxhdGlvbikgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBgNS1NQWApLCBjb2xvciA9ICIjRDU1RTAwIikgKw0KICBnZW9tX2xpbmUoZGF0YSA9IGJyYV8zTUEsYWVzKHk9YDMtTUFgKSwgY29sb3IgPSAiZ3JlZW4iKSsNCiAgbGFicyh5ID0gIlVTRCIsDQogICAgICAgdGl0bGUgPSAiR0RQIHBlciBjYXBpdGEgZG8gQnJhc2lsIGUgTcOpZGlhcyBNw7N2ZWlzIGRlIDMgZSA1IGFub3MiKSArDQogIGd1aWRlcyhjb2xvdXIgPSBndWlkZV9sZWdlbmQodGl0bGUgPSAic2VyaWVzIikpKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgDQpgYGANCiAgICANCk9ic2VydmUgcXVlIG8gY2ljbG8gZGUgdGVuZMOqbmNpYSAoZW0gbGFyYW5qYSkgw6kgbWFpcyBzdWF2ZSBkbyBxdWUgYSBzw6lyaWUgb3JpZ2luYWwgZSBjYXB0dXJhIG8gbW92aW1lbnRvIHByaW5jaXBhbCBkYSBzw6lyaWUgdGVtcG9yYWwgc2VtIHRvZGFzIGFzIGZsdXR1YcOnw7VlcyBtZW5vcmVzLiBBIG9yZGVtIGRhIG3DqWRpYSBtw7N2ZWwgZGV0ZXJtaW5hIGEgc3VhdmlkYWRlIGRhIGVzdGltYXRpdmEgZG8gY2ljbG8gZGUgdGVuZMOqbmNpYS4gRW0gZ2VyYWwsIHVtIHBlcsOtb2RvIG1haW9yIHNpZ25pZmljYSB1bWEgY3VydmEgbWFpcyBzdWF2ZSAtIGNvbXBhcmUgYSBjdXJ2YSB2ZXJkZSAoMyBhbm9zKSBjb20gYSBsYXJhbmphICg1IGFub3MsIG1haXMgc3VhdmUpLiANCg0KIyBFeGVtcGxvIENvbnN1bW8gTW9yZXR0aW4gZSBUb2xvaQ0KDQpPcyBkYWRvcyB2ZW0gZG8gbGl2cm8gZGUgTW9yZXR0aW4gZSBUb2xvaSwgQW7DoWxpc2UgZGUgU8OpcmllcyBUZW1wb3JhaXMgKGh0dHBzOi8vd3d3LmltZS51c3AuYnIvfnBhbS9TVC5odG1sKSwgY29uc3VtbyBubyB2YXJlam8gZGUgU8OjbyBQYXVsbywgbWVuc2FpcyBkZSBKYW4vMTk4NCBhIE91dC8xOTk2LCBlbSBodHRwczovL3d3dy5pbWUudXNwLmJyL35wYW0vQ09OU1VNTy5YTFMuICAgIA0KDQpVbSBleGVtcGxvIHNlbWVsaGFudGUgY29uc3RhIGVtIDxodHRwczovL3JwdWJzLmNvbS9hbXJvZmkvdGltZV9zZXJpZXNfcnN0dWRpb19pbnRybz4sIEZpZ3VlaXJlZG8gKDIwMTkpLCBmZWl0byBuYSDDqXBvY2Egc2VtIG8gdHNpYmJsZS4gICAgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGZwcDMpDQpkYWRvcyA8LXN0cnVjdHVyZShsaXN0KG9icyA9IHN0cnVjdHVyZShjKDQ0MTc2MzIwMCwgNDQ0NDQxNjAwLCA0NDY5NDcyMDAsIA0KNDQ5NjI1NjAwLCA0NTIyMTc2MDAsIDQ1NDg5NjAwMCwgNDU3NDg4MDAwLCA0NjAxNjY0MDAsIDQ2Mjg0NDgwMCwgDQo0NjU0MzY4MDAsIDQ2ODExNTIwMCwgNDcwNzA3MjAwLCA0NzMzODU2MDAsIDQ3NjA2NDAwMCwgNDc4NDgzMjAwLCANCjQ4MTE2MTYwMCwgNDgzNzUzNjAwLCA0ODY0MzIwMDAsIDQ4OTAyNDAwMCwgNDkxNzAyNDAwLCA0OTQzODA4MDAsIA0KNDk2OTcyODAwLCA0OTk2NTEyMDAsIDUwMjI0MzIwMCwgNTA0OTIxNjAwLCA1MDc2MDAwMDAsIDUxMDAxOTIwMCwgDQo1MTI2OTc2MDAsIDUxNTI4OTYwMCwgNTE3OTY4MDAwLCA1MjA1NjAwMDAsIDUyMzIzODQwMCwgNTI1OTE2ODAwLCANCjUyODUwODgwMCwgNTMxMTg3MjAwLCA1MzM3NzkyMDAsIDUzNjQ1NzYwMCwgNTM5MTM2MDAwLCA1NDE1NTUyMDAsIA0KNTQ0MjMzNjAwLCA1NDY4MjU2MDAsIDU0OTUwNDAwMCwgNTUyMDk2MDAwLCA1NTQ3NzQ0MDAsIDU1NzQ1MjgwMCwgDQo1NjAwNDQ4MDAsIDU2MjcyMzIwMCwgNTY1MzE1MjAwLCA1Njc5OTM2MDAsIDU3MDY3MjAwMCwgNTczMTc3NjAwLCANCjU3NTg1NjAwMCwgNTc4NDQ4MDAwLCA1ODExMjY0MDAsIDU4MzcxODQwMCwgNTg2Mzk2ODAwLCA1ODkwNzUyMDAsIA0KNTkxNjY3MjAwLCA1OTQzNDU2MDAsIDU5NjkzNzYwMCwgNTk5NjE2MDAwLCA2MDIyOTQ0MDAsIDYwNDcxMzYwMCwgDQo2MDczOTIwMDAsIDYwOTk4NDAwMCwgNjEyNjYyNDAwLCA2MTUyNTQ0MDAsIDYxNzkzMjgwMCwgNjIwNjExMjAwLCANCjYyMzIwMzIwMCwgNjI1ODgxNjAwLCA2Mjg0NzM2MDAsIDYzMTE1MjAwMCwgNjMzODMwNDAwLCA2MzYyNDk2MDAsIA0KNjM4OTI4MDAwLCA2NDE1MjAwMDAsIDY0NDE5ODQwMCwgNjQ2NzkwNDAwLCA2NDk0Njg4MDAsIDY1MjE0NzIwMCwgDQo2NTQ3MzkyMDAsIDY1NzQxNzYwMCwgNjYwMDA5NjAwLCA2NjI2ODgwMDAsIDY2NTM2NjQwMCwgNjY3Nzg1NjAwLCANCjY3MDQ2NDAwMCwgNjczMDU2MDAwLCA2NzU3MzQ0MDAsIDY3ODMyNjQwMCwgNjgxMDA0ODAwLCA2ODM2ODMyMDAsIA0KNjg2Mjc1MjAwLCA2ODg5NTM2MDAsIDY5MTU0NTYwMCwgNjk0MjI0MDAwLCA2OTY5MDI0MDAsIDY5OTQwODAwMCwgDQo3MDIwODY0MDAsIDcwNDY3ODQwMCwgNzA3MzU2ODAwLCA3MDk5NDg4MDAsIDcxMjYyNzIwMCwgNzE1MzA1NjAwLCANCjcxNzg5NzYwMCwgNzIwNTc2MDAwLCA3MjMxNjgwMDAsIDcyNTg0NjQwMCwgNzI4NTI0ODAwLCA3MzA5NDQwMDAsIA0KNzMzNjIyNDAwLCA3MzYyMTQ0MDAsIDczODg5MjgwMCwgNzQxNDg0ODAwLCA3NDQxNjMyMDAsIDc0Njg0MTYwMCwgDQo3NDk0MzM2MDAsIDc1MjExMjAwMCwgNzU0NzA0MDAwLCA3NTczODI0MDAsIDc2MDA2MDgwMCwgNzYyNDgwMDAwLCANCjc2NTE1ODQwMCwgNzY3NzUwNDAwLCA3NzA0Mjg4MDAsIDc3MzAyMDgwMCwgNzc1Njk5MjAwLCA3NzgzNzc2MDAsIA0KNzgwOTY5NjAwLCA3ODM2NDgwMDAsIDc4NjI0MDAwMCwgNzg4OTE4NDAwLCA3OTE1OTY4MDAsIDc5NDAxNjAwMCwgDQo3OTY2OTQ0MDAsIDc5OTI4NjQwMCwgODAxOTY0ODAwLCA4MDQ1NTY4MDAsIDgwNzIzNTIwMCwgODA5OTEzNjAwLCANCjgxMjUwNTYwMCwgODE1MTg0MDAwLCA4MTc3NzYwMDAsIDgyMDQ1NDQwMCwgODIzMTMyODAwLCA4MjU2Mzg0MDAsIA0KODI4MzE2ODAwLCA4MzA5MDg4MDAsIDgzMzU4NzIwMCwgODM2MTc5MjAwLCA4Mzg4NTc2MDAsIDg0MTUzNjAwMCwgDQo4NDQxMjgwMDApLCBjbGFzcyA9IGMoIlBPU0lYY3QiLCAiUE9TSVh0IiksIHR6b25lID0gIlVUQyIpLCB0ID0gYygxLCANCjIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCANCjIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCANCjM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCANCjUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCANCjY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCANCjg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCANCjEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgDQoxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIA0KMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCANCjEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgDQoxNTIsIDE1MywgMTU0KSwgY29uc3VtbyA9IGMoMTE0LjEzLCAxMTAuNzksIDExNi40NiwgMTExLjU3LCAxMjAuNjYsIA0KMTIxLjE1LCAxMjEuMjcsIDEyNy4wMiwgMTI5LjA0LCAxMzMuMywgMTMwLjYsIDE3OS4zOSwgMTIwLjY0LCANCjExNC4wNSwgMTMwLjYsIDExOC4yNiwgMTQ1LjU0LCAxMzUuMTMsIDE1My4zNSwgMTU5Ljk1LCAxNTAuMDEsIA0KMTY0LjkzLCAxNzAuMzcsIDIyMC45NiwgMTM0LjI2LCAxMzMuMTEsIDE0Ny44NCwgMTY0LjQ2LCAxODEuODYsIA0KMTcwLjQ0LCAxODYuNjQsIDE3NC4yMSwgMTgxLjYyLCAxOTQuMTYsIDE4MS45LCAyMzIuMDEsIDE0MC4xNiwgDQoxMzAuNzgsIDExOS4wNCwgMTIwLjczLCAxMjkuODEsIDExMS4wNCwgMTIyLjc1LCAxMzMuOTUsIDEyNS40MSwgDQoxMzIuMDUsIDEyOS41NCwgMTc2LjM3LCAxMTAuMDksIDExMy4yNSwgMTI0LjAzLCAxMTAuNjMsIDExNi43MiwgDQoxMjQuNjMsIDEyNC4zOCwgMTMwLjI3LCAxMTkuODcsIDExNS43NSwgMTIyLjQ0LCAxNjIuNDMsIDEwNS44OSwgDQoxMTUuNTksIDE0NywgMTMxLjcsIDEzMS4zMiwgMTM2LjY2LCAxMjYuNDMsIDEzNC44OCwgMTI4LjI2LCAxMjUuMzIsIA0KMTI0LjYxLCAxNjYuMTEsIDExNi4yNSwgOTYuOTMsIDg5LjI3LCAxMDEuODcsIDEyNS41NywgMTEzLjMxLCANCjEwOS4zOSwgMTI3LjMzLCAxMjAuNTYsIDExNy43MywgMTEzLjgxLCAxNDcuMjUsIDEwMC4xNSwgOTUuMTEsIA0KMTEyLjI2LCAxMDkuMzksIDExNC4yLCAxMTMuOCwgMTI2LjQ3LCAxMjguMzYsIDExNS43MSwgMTE2LjA5LCANCjk5LjUzLCAxMjcuMjcsIDg3LjA4LCA4NS42NywgODIuMDIsIDk4LjIsIDk2LjQ0LCA5MC4yMywgOTcuMTUsIA0KOTUuMDgsIDk0LCA5MywgOTYuMDksIDEyOS4yMSwgNzUuMzksIDc3LjcsIDk3LjM0LCA4NC45NywgODcuNTUsIA0KODYuNjQsIDkwLjUyLCA5NS40LCA5NS4yLCA5NS44LCAxMDEuMjMsIDEyOC40OSwgODUuNjMsIDgyLjc3LCANCjk2LjU1LCA4MS4zMywgOTYuOTEsIDgzLjc2LCA5MC4xOSwgMTE0Ljg0LCAxMDguNCwgMTA2LjA1LCAxMDkuNzEsIA0KMTQzLjg2LCA5OS4xMiwgOTkuMjgsIDExNC43NSwgMTA2LjEzLCAxMTAuMDIsIDEwOC4wNywgMTEyLjUyLCANCjExMy44NywgMTA3Ljg0LCAxMTIuMTIsIDExMi4wMywgMTM5LjM3LCA5Mi4yNCwgOTMuNTYsIDEwNy4zNywgDQoxMDIuODksIDExNC43OCwgMTAyLjg4LCAxMTguNDEsIDExOS4yMywgMTE3LjM2LCAxMjIuMDYpKSwgcm93Lm5hbWVzID0gYyhOQSwgDQotMTU0TCksIGNsYXNzID0gYygidGJsX2RmIiwgInRibCIsICJkYXRhLmZyYW1lIikpDQpgYGANCg0KUHJpbWVpcm8sIGNvbnZlcnRlcmVpIHBhcmEgdHNpYmJsZS4NCg0KYGBge3J9DQpkYWRvc190c2JsIDwtIGFzX3RzaWJibGUoZGFkb3MsIGtleSA9IHQsIGluZGV4ID0gb2JzKQ0KYGBgDQoNCkZhcmVpIGFzIG3DqWRpYXMgbcOzdmVpcyBkZSAxMiBtZXNlcyBlbSBmaW0gZGUgcGVyw61vZG8gZSBkZSAzIG1lc2VzIGNlbnRyYWRhLiAgICANCg0KYGBge3J9DQpkYWRvc19NQSA8LSBkYWRvc190c2JsICU+JQ0KICBtdXRhdGUoDQogICAgYDMtTUFgID0gc2xpZGVyOjpzbGlkZV9kYmwoY29uc3VtbywgbWVhbiwNCiAgICAgICAgICAgICAgICAuYmVmb3JlID0gMSwgLmFmdGVyID0gMSwgLmNvbXBsZXRlID0gVFJVRSkNCiAgKQ0KZGFkb3NfTUEgPC0gZGFkb3NfTUEgJT4lDQogIG11dGF0ZSgNCiAgICBgMTItTUFgID0gc2xpZGVyOjpzbGlkZV9kYmwoY29uc3VtbywgbWVhbiwNCiAgICAgICAgICAgICAgICAuYmVmb3JlID0gMTEsIC5jb21wbGV0ZSA9IFRSVUUpDQogICkNCmF0dGFjaChkYWRvc19NQSkNCmBgYA0KDQpgYGB7cn0NCmRhZG9zX01BWzM6NV0gJT4lDQogIHBsb3QudHMobWFpbj0iQ29uc3VtbyBkZSBNb3JldHRpbiBlIFRvbG9pLCBNw6lkaWFzIE3Ds3ZlaXMgZGUgMyBlIDEyIG1lc2VzIikNCmBgYA0KDQojIE9idGVuZG8gYSBTYXpvbmFsaWRhZGUgICANCg0KDQpgYGB7cn0NCiMgY2FsY3VsbyBtYW51YWwgZG8gSUUNCiMgbXVsdGlwbGljYXRpdm8NCiMgZmFyZWkgY29tIGEgc8OpcmllIGVtIGZvcm1hdG8gdHMNCmNvbnN1bW8udHM8LXRzKGRhZG9zX01BJGNvbnN1bW8sc3RhcnQgPSBjKDE5ODQsMSksZnJlcXVlbmN5ID0gMTIpDQpjb25zMTIubWE8LWZvcmVjYXN0OjptYShjb25zdW1vLnRzLDEyKQ0KUzwtMTAwKmNvbnN1bW8udHMvY29uczEyLm1hDQpWaWV3KFMpDQojIHRhcHBseShTLCBjeWNsZShTKSwgbWVhbikgI2ZhemVuZG8gYXNzaW0gZXUgbmFvIGNvbnNpZ28gdG9kb3Mgb3MgbWVzZXMNCiMgZmFyZWkgdW1hIGphbmVsYSBwYXJhIDE5ODQsNyBhIDE5OTYsNA0KU3c8LXdpbmRvdyhTLCBzdGFydD1jKDE5ODQsNyksZW5kPWMoMTk5Niw0KSkNCklFTTwtdGFwcGx5KFN3LCBjeWNsZShTdyksIG1lYW4pICMgSUUgbWVkaW8gbWVuc2FsDQojIGFnb3JhIHNvbW8gdG9kb3Mgb3MgSUVNIGUgZmHDp28gbyBJRQ0KSUVNLnRvdGFsPC1zdW0oSUVNKQ0KSUU8LTEyKklFTS9JRU0udG90YWwNCklFDQpwbG90KElFLCB0eXBlID0gIm8iKQ0KIyBwZWxvIHN0YXRzOjpkZWNvbXBvc2UsIG11bHRpcGxpY2F0aXZlDQojIGRlY29tcG9zZSh4LCB0eXBlID0gYygiYWRkaXRpdmUiLCJtdWx0aXBsaWNhdGl2ZSIpLCBmaWx0ZXIgPSBOVUxMKQ0KY29ucy5jb21wb25lbnRzPC0gZGVjb21wb3NlKGNvbnN1bW8udHMsIHR5cGU9YygibXVsdGlwbGljYXRpdmUiKSkNCmNvbnMuY29tcG9uZW50cw0KIyBwZWdhIG9zIHZhbG9yZXMgZXN0aW1hZG9zIGRvIGNvbXBvbmVudGUgc2F6b25hbA0KY29ucy5zYXo8LWNvbnMuY29tcG9uZW50cyRzZWFzb25hbCANCmtuaXRyOjprYWJsZShjYmluZChJRT1JRSxDT05TLlNBWj11bmlxdWUoY29ucy5zYXopKSkNCnBsb3QoY29ucy5jb21wb25lbnRzJGZpZ3VyZSwgdHlwZSA9ICJvIikNCmBgYA0KDQojIFJlZmVyw6puY2lhcw0KDQpGSUdVRUlSRURPLCBBLk0uUi4gQXByZXNlbnRhw6fDo28gZGFzIFPDqXJpZXMgVGVtcG9yYWlzIGNvbSBSLiBDYW1wbyBHcmFuZGUtTVMsIEJyYXNpbDogUlN0dWRpby9ScHVicywgMjAxOS4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3JwdWJzLmNvbS9hbXJvZmkvdGltZV9zZXJpZXNfcnN0dWRpb19pbnRybz4uIEFjY2Vzc2VkIG9uIE1hcmNoLCAzMXN0LCAyMDIxLg0KDQpIWU5ETUFOLCBSb2IuIGZwcDM6IERhdGEgZm9yICJGb3JlY2FzdGluZzogUHJpbmNpcGxlcyBhbmQgUHJhY3RpY2UiICgzcmQgRWRpdGlvbikuIFINCiAgcGFja2FnZSB2ZXJzaW9uIDAuNC4wLiAyMDIxLiBBY2Nlc3NlZCBvbiBNYXJjaCwgMzFzdCwgMjAyMS48aHR0cHM6Ly9DUkFOLlItcHJvamVjdC5vcmcvcGFja2FnZT1mcHAzPiAgICANCg0KSFlORE1BTiwgUi5KLjsgQVRIQU5BU09QT1VMT1MsIEcuIEZvcmVjYXN0aW5nOiBwcmluY2lwbGVzIGFuZCBwcmFjdGljZSwgM3JkIGVkaXRpb24sIE9UZXh0czogTWVsYm91cm5lLCBBdXN0cmFsaWEuIDIwMjEuIDxPVGV4dHMuY29tL2ZwcDM+LiBBY2Nlc3NlZCBvbiBNYXJjaCwgMzFzdCwgMjAyMS4gICAgDQoNCk1PUkVUVElOLCBQZWRybyBBLjsgVE9MT0ksIENsw6lsaWEgTS5DLiBBbsOhbGlzZSBkZSBTw6lyaWVzIFRlbXBvcmFpcy4gU8OjbyBQYXVsbzogRWRnYXJkIEJsdWNoZXIvQUJFLCAyMDA2Lg0K