WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:
https://cran.rstudio.com/bin/windows/Rtools/
Reading Data
BLOC 2022-2024
Elo June-First 2022
-Competitors = 20-
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1000 |
1 |
1030.40 |
53.9 % |
51.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1000 |
2 |
1027.03 |
53.4 % |
51 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1000 |
3 |
1023.66 |
52.9 % |
50.5 % |
Vera BRIONGOS MARTÍN |
FEXME |
1000 |
4 |
1020.29 |
52.4 % |
50 % |
Mar CARREÑO ESCOBAR |
FADMES |
1000 |
5 |
1016.93 |
51.9 % |
49.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000 |
6 |
1013.56 |
51.5 % |
49 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1000 |
7 |
1010.19 |
51 % |
48.5 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1000 |
8 |
1006.82 |
50.5 % |
48.1 % |
Candela GARCIA VALLINA |
FEMPA |
1000 |
9 |
1003.45 |
50 % |
47.6 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000 |
10 |
1000.08 |
49.5 % |
47.1 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1000 |
11 |
996.72 |
49 % |
46.6 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
1000 |
12 |
993.35 |
48.5 % |
46.1 % |
Marina PABLO LASSA |
FAM |
1000 |
13 |
989.98 |
48.1 % |
45.6 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
1000 |
14 |
986.61 |
47.6 % |
45.2 % |
Nerea PÉREZ PEREA |
FMM |
1000 |
15 |
983.24 |
47.1 % |
44.7 % |
Jordana PEREZ GRANELL |
FEMECV |
1000 |
16 |
979.87 |
46.6 % |
44.2 % |
Sara FERNANDEZ ALVES |
FMM |
1000 |
17 |
976.51 |
46.1 % |
43.7 % |
Elena CARAMES GONZALEZ |
FEMPA |
1000 |
18 |
973.14 |
45.6 % |
43.3 % |
Samara FERRAGUT MARTINEZ |
FBME |
1000 |
19 |
969.77 |
45.2 % |
42.8 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
1000 |
20 |
966.40 |
44.7 % |
42.3 % |
######Elo History check code Chunk if running Sub16
alone
Elo Accumulated First_June_2022
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1030.40 |
53.9 % |
51.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1027.03 |
53.4 % |
51 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1023.66 |
52.9 % |
50.5 % |
Vera BRIONGOS MARTÍN |
FEXME |
1020.29 |
52.4 % |
50 % |
Mar CARREÑO ESCOBAR |
FADMES |
1016.93 |
51.9 % |
49.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1013.56 |
51.5 % |
49 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1010.19 |
51 % |
48.5 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1006.82 |
50.5 % |
48.1 % |
Candela GARCIA VALLINA |
FEMPA |
1003.45 |
50 % |
47.6 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000.08 |
49.5 % |
47.1 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.72 |
49 % |
46.6 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
993.35 |
48.5 % |
46.1 % |
Marina PABLO LASSA |
FAM |
989.98 |
48.1 % |
45.6 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
986.61 |
47.6 % |
45.2 % |
Nerea PÉREZ PEREA |
FMM |
983.24 |
47.1 % |
44.7 % |
Jordana PEREZ GRANELL |
FEMECV |
979.87 |
46.6 % |
44.2 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Elena CARAMES GONZALEZ |
FEMPA |
973.14 |
45.6 % |
43.3 % |
Samara FERRAGUT MARTINEZ |
FBME |
969.77 |
45.2 % |
42.8 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Elo June-First - Abs
-Competitors = 16-
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1000 |
1 |
1030.00 |
54.9 % |
51.8 % |
Aida TORRES ILLAMOLA |
FEEC |
1000 |
2 |
1025.73 |
54.3 % |
51.2 % |
Rut MONSECH GASCA |
FEEC |
1000 |
3 |
1021.47 |
53.7 % |
50.6 % |
Rebeca PEREZ DUATO |
FAM |
1000 |
4 |
1017.20 |
53.1 % |
50 % |
Nora STAURSET HOVDE |
FEMECV |
1000 |
5 |
1012.93 |
52.5 % |
49.4 % |
Maria BENACH ZUBERO |
FEEC |
1000 |
6 |
1008.67 |
51.8 % |
48.8 % |
Maria PAREDES RAMOS |
FEXME |
1000 |
7 |
1004.40 |
51.2 % |
48.2 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1000 |
8 |
1000.13 |
50.6 % |
47.5 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
1000 |
9 |
995.87 |
50 % |
46.9 % |
Miriam DIEZ LUENGO |
FMM |
1000 |
10 |
991.60 |
49.4 % |
46.3 % |
Antia FREITAS RIAL |
FEXME |
1000 |
11 |
987.33 |
48.8 % |
45.7 % |
Haizea OSES SAIZ |
EMF-FVM |
1000 |
12 |
983.07 |
48.2 % |
45.1 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
1000 |
13 |
978.80 |
47.5 % |
44.5 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
1000 |
14 |
974.53 |
46.9 % |
43.9 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
1000 |
15 |
970.27 |
46.3 % |
43.3 % |
Laura VERDASCO URIZAL |
FMM |
1000 |
15 |
970.27 |
46.3 % |
43.3 % |
_* Elo History *_
Elo Accumulated June-First_Abs_2022
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1030.40 |
53.9 % |
51.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1030.00 |
54.9 % |
51.8 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1027.03 |
53.4 % |
51 % |
Aida TORRES ILLAMOLA |
FEEC |
1025.73 |
54.3 % |
51.2 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1023.66 |
52.9 % |
50.5 % |
Rut MONSECH GASCA |
FEEC |
1021.47 |
53.7 % |
50.6 % |
Vera BRIONGOS MARTÍN |
FEXME |
1020.29 |
52.4 % |
50 % |
Rebeca PEREZ DUATO |
FAM |
1017.20 |
53.1 % |
50 % |
Mar CARREÑO ESCOBAR |
FADMES |
1016.93 |
51.9 % |
49.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1013.56 |
51.5 % |
49 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1010.19 |
51 % |
48.5 % |
Maria BENACH ZUBERO |
FEEC |
1008.67 |
51.8 % |
48.8 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1006.82 |
50.5 % |
48.1 % |
Maria PAREDES RAMOS |
FEXME |
1004.40 |
51.2 % |
48.2 % |
Candela GARCIA VALLINA |
FEMPA |
1003.45 |
50 % |
47.6 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1000.13 |
50.6 % |
47.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000.08 |
49.5 % |
47.1 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.72 |
49 % |
46.6 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
995.87 |
50 % |
46.9 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
993.35 |
48.5 % |
46.1 % |
Miriam DIEZ LUENGO |
FMM |
991.60 |
49.4 % |
46.3 % |
Marina PABLO LASSA |
FAM |
989.98 |
48.1 % |
45.6 % |
Antia FREITAS RIAL |
FEXME |
987.33 |
48.8 % |
45.7 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
986.61 |
47.6 % |
45.2 % |
Nerea PÉREZ PEREA |
FMM |
983.24 |
47.1 % |
44.7 % |
Haizea OSES SAIZ |
EMF-FVM |
983.07 |
48.2 % |
45.1 % |
Jordana PEREZ GRANELL |
FEMECV |
979.87 |
46.6 % |
44.2 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
978.80 |
47.5 % |
44.5 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
974.53 |
46.9 % |
43.9 % |
Elena CARAMES GONZALEZ |
FEMPA |
973.14 |
45.6 % |
43.3 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
970.27 |
46.3 % |
43.3 % |
Laura VERDASCO URIZAL |
FMM |
970.27 |
46.3 % |
43.3 % |
Samara FERRAGUT MARTINEZ |
FBME |
969.77 |
45.2 % |
42.8 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Elo June-Second
-Competitors = 16-
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1030.40 |
1 |
1060.25 |
59 % |
54 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1006.82 |
2 |
1032.54 |
55.1 % |
50 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1027.03 |
3 |
1048.37 |
57.4 % |
52.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1023.66 |
4 |
1040.75 |
56.3 % |
51.2 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
993.35 |
5 |
1006.35 |
51.4 % |
46.2 % |
Vera BRIONGOS MARTÍN |
FEXME |
1020.29 |
6 |
1028.87 |
54.6 % |
49.5 % |
Mar CARREÑO ESCOBAR |
FADMES |
1016.93 |
7 |
1021.26 |
53.5 % |
48.4 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.72 |
8 |
996.90 |
50 % |
44.9 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1010.19 |
9 |
1006.03 |
51.3 % |
46.2 % |
Jordana PEREZ GRANELL |
FEMECV |
979.87 |
10 |
971.62 |
46.4 % |
41.3 % |
Candela GARCIA VALLINA |
FEMPA |
1003.45 |
11 |
990.79 |
49.1 % |
44 % |
Nerea PÉREZ PEREA |
FMM |
983.24 |
12 |
966.43 |
45.6 % |
40.6 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1013.56 |
13 |
992.31 |
49.3 % |
44.2 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
986.61 |
13 |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
989.98 |
15 |
960.33 |
44.8 % |
39.8 % |
Samara FERRAGUT MARTINEZ |
FBME |
969.77 |
15 |
940.24 |
41.9 % |
37 % |
#####_ Elo History _
Elo Accumulated June_Second-2023
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1060.25 |
59 % |
54 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1048.37 |
57.4 % |
52.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1040.75 |
56.3 % |
51.2 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1032.54 |
55.1 % |
50 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1030.00 |
54.9 % |
51.8 % |
Vera BRIONGOS MARTÍN |
FEXME |
1028.87 |
54.6 % |
49.5 % |
Aida TORRES ILLAMOLA |
FEEC |
1025.73 |
54.3 % |
51.2 % |
Rut MONSECH GASCA |
FEEC |
1021.47 |
53.7 % |
50.6 % |
Mar CARREÑO ESCOBAR |
FADMES |
1021.26 |
53.5 % |
48.4 % |
Rebeca PEREZ DUATO |
FAM |
1017.20 |
53.1 % |
50 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Maria BENACH ZUBERO |
FEEC |
1008.67 |
51.8 % |
48.8 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
1006.35 |
51.4 % |
46.2 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1006.03 |
51.3 % |
46.2 % |
Maria PAREDES RAMOS |
FEXME |
1004.40 |
51.2 % |
48.2 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1000.13 |
50.6 % |
47.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000.08 |
49.5 % |
47.1 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.90 |
50 % |
44.9 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
995.87 |
50 % |
46.9 % |
Aitana NAVARIDAS MARTIN |
FNDME |
992.31 |
49.3 % |
44.2 % |
Miriam DIEZ LUENGO |
FMM |
991.60 |
49.4 % |
46.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Antia FREITAS RIAL |
FEXME |
987.33 |
48.8 % |
45.7 % |
Haizea OSES SAIZ |
EMF-FVM |
983.07 |
48.2 % |
45.1 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
978.80 |
47.5 % |
44.5 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
974.53 |
46.9 % |
43.9 % |
Elena CARAMES GONZALEZ |
FEMPA |
973.14 |
45.6 % |
43.3 % |
Jordana PEREZ GRANELL |
FEMECV |
971.62 |
46.4 % |
41.3 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
970.27 |
46.3 % |
43.3 % |
Laura VERDASCO URIZAL |
FMM |
970.27 |
46.3 % |
43.3 % |
Nerea PÉREZ PEREA |
FMM |
966.43 |
45.6 % |
40.6 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
960.33 |
44.8 % |
39.8 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Elo June-Second-Abss
Rebeca PEREZ DUATO |
FAM |
1017.20 |
1 |
1046.80 |
57.8 % |
53.2 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1030.00 |
2 |
1056.15 |
59.1 % |
54.5 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1000.13 |
3 |
1023.11 |
54.5 % |
49.7 % |
Miriam DIEZ LUENGO |
FMM |
991.60 |
4 |
1011.26 |
52.8 % |
48 % |
Maria BENACH ZUBERO |
FEEC |
1008.67 |
5 |
1024.85 |
54.7 % |
50 % |
Antia FREITAS RIAL |
FEXME |
987.33 |
6 |
1000.29 |
51.2 % |
46.5 % |
Rut MONSECH GASCA |
FEEC |
1021.47 |
7 |
1030.83 |
55.6 % |
50.9 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
974.53 |
8 |
980.83 |
48.4 % |
43.7 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1000.00 |
9 |
1003.45 |
51.7 % |
46.9 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.00 |
10 |
1000.08 |
51.2 % |
46.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
995.87 |
11 |
991.93 |
50 % |
45.3 % |
Maria PAREDES RAMOS |
FEXME |
1004.40 |
12 |
997.03 |
50.7 % |
46 % |
Haizea OSES SAIZ |
EMF-FVM |
983.07 |
13 |
972.47 |
47.2 % |
42.5 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
978.80 |
14 |
964.86 |
46.1 % |
41.5 % |
Laura VERDASCO URIZAL |
FMM |
970.27 |
15 |
953.02 |
44.4 % |
39.8 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
1000.00 |
16 |
979.87 |
48.3 % |
43.6 % |
Cristina JARDON SUAREZ |
FEMPA |
1000.00 |
17 |
976.51 |
47.8 % |
43.1 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
970.27 |
18 |
942.92 |
43 % |
38.4 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
1000.00 |
18 |
973.14 |
47.3 % |
42.6 % |
Silvia FAYOS LOZADA |
FEMECV |
1000.00 |
18 |
973.14 |
47.3 % |
42.6 % |
#####_ Elo History _
Elo Accumulated June_Second-Abs 2022
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1060.25 |
59 % |
54 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1056.15 |
59.1 % |
54.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1048.37 |
57.4 % |
52.3 % |
Rebeca PEREZ DUATO |
FAM |
1046.80 |
57.8 % |
53.2 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1040.75 |
56.3 % |
51.2 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1032.54 |
55.1 % |
50 % |
Rut MONSECH GASCA |
FEEC |
1030.83 |
55.6 % |
50.9 % |
Vera BRIONGOS MARTÍN |
FEXME |
1028.87 |
54.6 % |
49.5 % |
Aida TORRES ILLAMOLA |
FEEC |
1025.73 |
54.3 % |
51.2 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1023.11 |
54.5 % |
49.7 % |
Mar CARREÑO ESCOBAR |
FADMES |
1021.26 |
53.5 % |
48.4 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Miriam DIEZ LUENGO |
FMM |
1011.26 |
52.8 % |
48 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
1006.35 |
51.4 % |
46.2 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1006.03 |
51.3 % |
46.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1003.45 |
51.7 % |
46.9 % |
Antia FREITAS RIAL |
FEXME |
1000.29 |
51.2 % |
46.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000.08 |
49.5 % |
47.1 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.08 |
51.2 % |
46.4 % |
Maria PAREDES RAMOS |
FEXME |
997.03 |
50.7 % |
46 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.90 |
50 % |
44.9 % |
Aitana NAVARIDAS MARTIN |
FNDME |
992.31 |
49.3 % |
44.2 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
980.83 |
48.4 % |
43.7 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
979.87 |
48.3 % |
43.6 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
973.14 |
47.3 % |
42.6 % |
Elena CARAMES GONZALEZ |
FEMPA |
973.14 |
45.6 % |
43.3 % |
Silvia FAYOS LOZADA |
FEMECV |
973.14 |
47.3 % |
42.6 % |
Haizea OSES SAIZ |
EMF-FVM |
972.47 |
47.2 % |
42.5 % |
Jordana PEREZ GRANELL |
FEMECV |
971.62 |
46.4 % |
41.3 % |
Nerea PÉREZ PEREA |
FMM |
966.43 |
45.6 % |
40.6 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
964.86 |
46.1 % |
41.5 % |
Marina PABLO LASSA |
FAM |
960.33 |
44.8 % |
39.8 % |
Laura VERDASCO URIZAL |
FMM |
953.02 |
44.4 % |
39.8 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Elo Nov-2022
-Competitors = 16-
Ainhize BELAR BARRUTIA |
EMF-FVM |
1032.54 |
1 |
1062.21 |
58.8 % |
51 % |
Vera BRIONGOS MARTÍN |
FEXME |
1028.87 |
2 |
1055.00 |
57.8 % |
50 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1048.37 |
3 |
1070.83 |
60 % |
52.3 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1060.25 |
4 |
1079.08 |
61.1 % |
53.5 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
996.90 |
5 |
1012.56 |
51.8 % |
43.9 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1040.75 |
6 |
1052.59 |
57.5 % |
49.7 % |
Aitana NAVARIDAS MARTIN |
FNDME |
992.31 |
7 |
1000.89 |
50.1 % |
42.3 % |
Rocío LEAL ABAD |
FMRM |
1000.00 |
8 |
1005.43 |
50.7 % |
42.9 % |
Marina PABLO LASSA |
FAM |
960.33 |
9 |
961.99 |
44.5 % |
36.9 % |
Mar CARREÑO ESCOBAR |
FADMES |
1021.26 |
10 |
1019.00 |
52.7 % |
44.8 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1006.03 |
11 |
1000.30 |
50 % |
42.2 % |
Nerea PÉREZ PEREA |
FMM |
966.43 |
11 |
960.95 |
44.4 % |
36.8 % |
Julia PACHECO PORRAS |
FDMCM |
1000.00 |
11 |
994.76 |
49.2 % |
41.4 % |
Jordana PEREZ GRANELL |
FEMECV |
971.62 |
14 |
955.44 |
43.6 % |
36.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
1000.08 |
15 |
980.17 |
47.1 % |
39.4 % |
Elena CARAMES GONZALEZ |
FEMPA |
973.14 |
16 |
949.84 |
42.8 % |
35.3 % |
Mariana SOUSA |
FCMP |
1000.00 |
17 |
973.43 |
46.1 % |
38.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
1006.35 |
18 |
975.73 |
46.5 % |
38.8 % |
Ana MARTINEZ BELDA |
FMRM |
1000.00 |
18 |
969.87 |
45.6 % |
38 % |
#####_ Elo History _
Elo Accumulated June_Second-2023
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1079.08 |
61.1 % |
53.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1070.83 |
60 % |
52.3 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1062.21 |
58.8 % |
51 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1056.15 |
59.1 % |
54.5 % |
Vera BRIONGOS MARTÍN |
FEXME |
1055.00 |
57.8 % |
50 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1052.59 |
57.5 % |
49.7 % |
Rebeca PEREZ DUATO |
FAM |
1046.80 |
57.8 % |
53.2 % |
Rut MONSECH GASCA |
FEEC |
1030.83 |
55.6 % |
50.9 % |
Aida TORRES ILLAMOLA |
FEEC |
1025.73 |
54.3 % |
51.2 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1023.11 |
54.5 % |
49.7 % |
Mar CARREÑO ESCOBAR |
FADMES |
1019.00 |
52.7 % |
44.8 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1012.56 |
51.8 % |
43.9 % |
Miriam DIEZ LUENGO |
FMM |
1011.26 |
52.8 % |
48 % |
Rocío LEAL ABAD |
FMRM |
1005.43 |
50.7 % |
42.9 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1003.45 |
51.7 % |
46.9 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1000.30 |
50 % |
42.2 % |
Antia FREITAS RIAL |
FEXME |
1000.29 |
51.2 % |
46.5 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.08 |
51.2 % |
46.4 % |
Maria PAREDES RAMOS |
FEXME |
997.03 |
50.7 % |
46 % |
Julia PACHECO PORRAS |
FDMCM |
994.76 |
49.2 % |
41.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
980.83 |
48.4 % |
43.7 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
980.17 |
47.1 % |
39.4 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
979.87 |
48.3 % |
43.6 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
975.73 |
46.5 % |
38.8 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
973.14 |
47.3 % |
42.6 % |
Silvia FAYOS LOZADA |
FEMECV |
973.14 |
47.3 % |
42.6 % |
Haizea OSES SAIZ |
EMF-FVM |
972.47 |
47.2 % |
42.5 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
964.86 |
46.1 % |
41.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Nerea PÉREZ PEREA |
FMM |
960.95 |
44.4 % |
36.8 % |
Jordana PEREZ GRANELL |
FEMECV |
955.44 |
43.6 % |
36.1 % |
Laura VERDASCO URIZAL |
FMM |
953.02 |
44.4 % |
39.8 % |
Elena CARAMES GONZALEZ |
FEMPA |
949.84 |
42.8 % |
35.3 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Elo Nov - Abs
-Competitors = 19-
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1023.11 |
1 |
1052.98 |
57.8 % |
49.7 % |
Aida TORRES ILLAMOLA |
FEEC |
1025.73 |
2 |
1052.03 |
57.6 % |
49.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1056.15 |
3 |
1078.72 |
61.3 % |
53.4 % |
Rebeca PEREZ DUATO |
FAM |
1046.80 |
4 |
1065.87 |
59.6 % |
51.5 % |
Lucia MIRANDA CID |
FEEC |
1000.00 |
5 |
1016.09 |
52.5 % |
44.4 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1000.00 |
6 |
1012.54 |
52 % |
43.9 % |
Miriam DIEZ LUENGO |
FMM |
1011.26 |
7 |
1019.86 |
53.1 % |
44.9 % |
Silvia FAYOS LOZADA |
FEMECV |
973.14 |
8 |
978.41 |
47.1 % |
39.1 % |
Maria PAREDES RAMOS |
FEXME |
997.03 |
9 |
998.60 |
50 % |
41.9 % |
Antia FREITAS RIAL |
FEXME |
1000.29 |
10 |
998.29 |
50 % |
41.9 % |
Rut MONSECH GASCA |
FEEC |
1030.83 |
11 |
1025.10 |
53.8 % |
45.7 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1070.83 |
12 |
1061.32 |
58.9 % |
50.9 % |
Haizea OSES SAIZ |
EMF-FVM |
972.47 |
13 |
959.96 |
44.5 % |
36.6 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
964.86 |
14 |
948.84 |
42.9 % |
35.1 % |
Paula TRAVERSO LEBRON |
FEXME |
1000.00 |
14 |
984.09 |
47.9 % |
39.9 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1079.08 |
16 |
1055.30 |
58.1 % |
50 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
979.87 |
17 |
953.10 |
43.5 % |
35.7 % |
Laura VERDASCO URIZAL |
FMM |
953.02 |
17 |
926.40 |
39.8 % |
32.3 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
980.83 |
17 |
954.05 |
43.6 % |
35.8 % |
_* Elo History *_
Elo Accumulated June-First_Abs_2022
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1078.72 |
61.3 % |
53.4 % |
Rebeca PEREZ DUATO |
FAM |
1065.87 |
59.6 % |
51.5 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1062.21 |
58.8 % |
51 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1061.32 |
58.9 % |
50.9 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1055.30 |
58.1 % |
50 % |
Vera BRIONGOS MARTÍN |
FEXME |
1055.00 |
57.8 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1052.98 |
57.8 % |
49.7 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1052.59 |
57.5 % |
49.7 % |
Aida TORRES ILLAMOLA |
FEEC |
1052.03 |
57.6 % |
49.5 % |
Rut MONSECH GASCA |
FEEC |
1025.10 |
53.8 % |
45.7 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Miriam DIEZ LUENGO |
FMM |
1019.86 |
53.1 % |
44.9 % |
Mar CARREÑO ESCOBAR |
FADMES |
1019.00 |
52.7 % |
44.8 % |
Lucia MIRANDA CID |
FEEC |
1016.09 |
52.5 % |
44.4 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1012.56 |
51.8 % |
43.9 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1012.54 |
52 % |
43.9 % |
Rocío LEAL ABAD |
FMRM |
1005.43 |
50.7 % |
42.9 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1003.45 |
51.7 % |
46.9 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1000.30 |
50 % |
42.2 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.08 |
51.2 % |
46.4 % |
Maria PAREDES RAMOS |
FEXME |
998.60 |
50 % |
41.9 % |
Antia FREITAS RIAL |
FEXME |
998.29 |
50 % |
41.9 % |
Julia PACHECO PORRAS |
FDMCM |
994.76 |
49.2 % |
41.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Paula TRAVERSO LEBRON |
FEXME |
984.09 |
47.9 % |
39.9 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
980.17 |
47.1 % |
39.4 % |
Silvia FAYOS LOZADA |
FEMECV |
978.41 |
47.1 % |
39.1 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
975.73 |
46.5 % |
38.8 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
973.14 |
47.3 % |
42.6 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Nerea PÉREZ PEREA |
FMM |
960.95 |
44.4 % |
36.8 % |
Haizea OSES SAIZ |
EMF-FVM |
959.96 |
44.5 % |
36.6 % |
Jordana PEREZ GRANELL |
FEMECV |
955.44 |
43.6 % |
36.1 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
954.05 |
43.6 % |
35.8 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Elena CARAMES GONZALEZ |
FEMPA |
949.84 |
42.8 % |
35.3 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
948.84 |
42.9 % |
35.1 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
MERGING from sub16
Geila MACIÀ MARTÍN |
FEEC |
1000 |
1 |
1030.77 |
52.9 % |
51.1 % |
Júlia BENACH ZUBERO |
FEEC |
1000 |
2 |
1028.21 |
52.6 % |
50.7 % |
Emily Charlotte PESCETTO |
FEEC |
1000 |
3 |
1025.65 |
52.2 % |
50.4 % |
Laia TAULATS MCDONALD |
FAM-AND |
1000 |
4 |
1023.09 |
51.8 % |
50 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1000 |
5 |
1020.53 |
51.5 % |
49.6 % |
Maria FERRÉ PRIM |
FEEC |
1000 |
6 |
1017.97 |
51.1 % |
49.3 % |
Erika CARRASCO AGUILA |
FMM |
1000 |
7 |
1015.41 |
50.7 % |
48.9 % |
Nathalie Joanna VENDSALU |
FEMECV |
1000 |
7 |
1015.41 |
50.7 % |
48.9 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1000 |
9 |
1010.29 |
50 % |
48.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1000 |
10 |
1007.73 |
49.6 % |
47.8 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1000 |
11 |
1005.17 |
49.3 % |
47.4 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1000 |
12 |
1002.61 |
48.9 % |
47.1 % |
Maite VILA LÓPEZ |
FEXME |
1000 |
13 |
1000.05 |
48.5 % |
46.7 % |
Martina MUÑIZ VALENCIA |
FMM |
1000 |
14 |
997.49 |
48.2 % |
46.3 % |
Amaya DEL POZO CARIION |
FMM |
1000 |
15 |
994.93 |
47.8 % |
46 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
1000 |
16 |
992.37 |
47.4 % |
45.6 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
1000 |
17 |
989.81 |
47.1 % |
45.2 % |
Maria SANTOS GONZÁLEZ |
FEXME |
1000 |
18 |
987.25 |
46.7 % |
44.9 % |
Paula HUERGO MIYAR |
FEMPA |
1000 |
19 |
984.69 |
46.3 % |
44.5 % |
Ayla RUBIO GARCIA |
FMM |
1000 |
20 |
982.13 |
46 % |
44.1 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
1000 |
21 |
979.57 |
45.6 % |
43.8 % |
Aitana GARCÍA BERNABEU |
FEMECV |
1000 |
22 |
977.01 |
45.2 % |
43.4 % |
Lucia LORES REY |
FEGAMON |
1000 |
23 |
974.45 |
44.9 % |
43 % |
Alba MARTÍNEZ LLARÍA |
FMM |
1000 |
24 |
971.89 |
44.5 % |
42.7 % |
Cristina CHAMON GARCÍA |
FDMCM |
1000 |
25 |
969.33 |
44.1 % |
42.3 % |
Alejandra MARTÍN GARCÍA |
FDMCM |
1000 |
26 |
966.77 |
43.8 % |
42 % |
Geila MACIÀ MARTÍN |
FEEC |
1030.77 |
1 |
1061.61 |
56.1 % |
52.7 % |
Júlia BENACH ZUBERO |
FEEC |
1028.21 |
2 |
1056.85 |
55.4 % |
52.1 % |
Nathalie Joanna VENDSALU |
FEMECV |
1015.41 |
3 |
1041.88 |
53.3 % |
49.9 % |
Emily Charlotte PESCETTO |
FEEC |
1025.65 |
4 |
1049.88 |
54.4 % |
51.1 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1020.53 |
5 |
1042.57 |
53.4 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1002.61 |
6 |
1022.50 |
50.5 % |
47.1 % |
Erika CARRASCO AGUILA |
FMM |
1015.41 |
7 |
1033.05 |
52 % |
48.6 % |
Laia TAULATS MCDONALD |
FAM-AND |
1023.09 |
7 |
1040.71 |
53.1 % |
49.7 % |
Martina MUÑIZ VALENCIA |
FMM |
997.49 |
9 |
1010.78 |
48.8 % |
45.4 % |
India PERSSON FERNÁNDEZ |
FADMES |
1007.73 |
10 |
1018.78 |
50 % |
46.6 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1010.29 |
11 |
1019.12 |
50 % |
46.6 % |
Maite VILA LÓPEZ |
FEXME |
1000.05 |
12 |
1006.71 |
48.2 % |
44.9 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
992.37 |
13 |
996.84 |
46.8 % |
43.5 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1005.17 |
14 |
1007.40 |
48.3 % |
45 % |
Aitana GARCÍA BERNABEU |
FEMECV |
977.01 |
15 |
977.12 |
44 % |
40.7 % |
Alba MARTÍNEZ LLARÍA |
FMM |
971.89 |
16 |
969.81 |
43 % |
39.7 % |
Alejandra MARTÍN GARCÍA |
FDMCM |
966.77 |
17 |
962.49 |
41.9 % |
38.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
989.81 |
18 |
983.26 |
44.9 % |
41.5 % |
Amaya DEL POZO CARRION |
FMM |
1000.00 |
19 |
991.21 |
46 % |
42.7 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
979.57 |
20 |
968.63 |
42.8 % |
39.5 % |
Lucia LORES REY |
FEGAMON |
974.45 |
21 |
961.32 |
41.8 % |
38.5 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
1000.00 |
22 |
984.59 |
45 % |
41.7 % |
Lara PRIDA SEOANE |
FEGAMON |
1000.00 |
23 |
982.38 |
44.7 % |
41.4 % |
Sara GUERRERO RODRÍGUEZ |
FDMESCyL |
1000.00 |
24 |
980.17 |
44.4 % |
41.1 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
1000.00 |
25 |
977.97 |
44.1 % |
40.8 % |
Maria SANTOS GONZÁLEZ |
FEXME |
987.25 |
26 |
963.05 |
42 % |
38.8 % |
Paula HUERGO MIYAR |
FEMPA |
984.69 |
26 |
960.50 |
41.6 % |
38.4 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
1000.00 |
26 |
975.76 |
43.8 % |
40.5 % |
Lucía SÁNCHEZ SANTAMARÍA |
FDMESCyL |
1000.00 |
26 |
975.76 |
43.8 % |
40.5 % |
Raquel GEIJO RODRÍGUEZ |
FDMESCyL |
1000.00 |
26 |
975.76 |
43.8 % |
40.5 % |
Geila MACIÀ MARTÍN |
FEEC |
1061.61 |
1 |
1091.93 |
59.1 % |
54.1 % |
Júlia BENACH ZUBERO |
FEEC |
1056.85 |
2 |
1084.52 |
58.1 % |
53.1 % |
Emily Charlotte PESCETTO |
FEEC |
1049.88 |
3 |
1074.92 |
56.7 % |
51.7 % |
Laia TAULATS MCDONALD |
FAM-AND |
1040.71 |
4 |
1063.12 |
55 % |
50 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1042.57 |
5 |
1062.30 |
54.9 % |
49.9 % |
Nathalie Joanna VENDSALU |
FEMECV |
1041.88 |
6 |
1058.95 |
54.4 % |
49.4 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
996.84 |
7 |
1011.43 |
47.6 % |
42.6 % |
Maria FERRÉ PRIM |
FEEC |
1017.97 |
8 |
1029.80 |
50.3 % |
45.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1018.78 |
9 |
1027.94 |
50 % |
45 % |
Erika CARRASCO AGUILA |
FMM |
1033.05 |
10 |
1039.49 |
51.7 % |
46.6 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1007.40 |
11 |
1011.28 |
47.6 % |
42.6 % |
Martina MUÑIZ VALENCIA |
FMM |
1010.78 |
12 |
1011.98 |
47.7 % |
42.7 % |
Maite VILA LÓPEZ |
FEXME |
1006.71 |
13 |
1005.26 |
46.7 % |
41.7 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1022.50 |
14 |
1018.32 |
48.6 % |
43.6 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1019.12 |
14 |
1014.95 |
48.1 % |
43.1 % |
Paula HUERGO MIYAR |
FEMPA |
960.50 |
14 |
956.57 |
39.9 % |
35.1 % |
Sofía PEÑA PÉREZ |
FMM |
1000.00 |
14 |
996.08 |
45.4 % |
40.5 % |
Maria SANTOS GONZÁLEZ |
FEXME |
963.05 |
18 |
948.45 |
38.8 % |
34.1 % |
Meia LEÓN VILCHES |
FEXME |
1000.00 |
19 |
982.75 |
43.5 % |
38.6 % |
Alba MARTÍNEZ LLARÍA |
FMM |
969.81 |
20 |
949.85 |
38.9 % |
34.3 % |
Alejandra MARTÍN GARCÍA |
FDMCM |
962.49 |
20 |
942.56 |
38 % |
33.3 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
983.26 |
20 |
963.24 |
40.8 % |
36 % |
Lara PRIDA SEOANE |
FEGAMON |
982.38 |
20 |
962.36 |
40.7 % |
35.9 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
1000.00 |
20 |
980.08 |
43.2 % |
38.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
984.59 |
25 |
951.23 |
39.1 % |
34.4 % |
Elo 2023 March
-Competitors = r
-
[1] 7
[1] 2
Intza ELIZALDE LARRARTE |
EMF-FVM |
1018.32 |
1 |
1048.76 |
68.5 % |
58.4 % |
Laia TAULATS MCDONALD |
FAM-AND |
1063.12 |
2 |
1090.18 |
73.4 % |
64 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1061.32 |
3 |
1081.46 |
72.4 % |
62.8 % |
Mar CARREÑO ESCOBAR |
FADMES |
1019.00 |
4 |
1036.49 |
67 % |
56.6 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
963.24 |
5 |
981.11 |
59.6 % |
48.7 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1000.00 |
6 |
1014.52 |
64.1 % |
53.5 % |
Nerea PÉREZ PEREA |
FMM |
960.95 |
7 |
969.60 |
58 % |
47 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1011.28 |
8 |
1019.35 |
64.7 % |
54.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1027.94 |
9 |
1032.74 |
66.5 % |
56.1 % |
Irati ASO ESAIN |
FNDME |
1000.00 |
10 |
1001.72 |
62.4 % |
51.7 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1000.30 |
11 |
995.63 |
61.6 % |
50.8 % |
Julia PACHECO PORRAS |
FDMCM |
994.76 |
11 |
990.17 |
60.8 % |
50 % |
Alba MARTÍNEZ LLARÍA |
FMM |
949.85 |
13 |
942.18 |
54.1 % |
43.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
948.45 |
14 |
937.58 |
53.4 % |
42.5 % |
Sofía PEÑA PÉREZ |
FMM |
996.08 |
15 |
981.81 |
59.7 % |
48.8 % |
Amaya DEL POZO CARRION |
FMM |
991.21 |
16 |
973.76 |
58.5 % |
47.6 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
968.63 |
16 |
951.28 |
55.4 % |
44.4 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
980.17 |
18 |
953.37 |
55.7 % |
44.7 % |
Lucia LORES REY |
FEGAMON |
961.32 |
18 |
937.60 |
53.4 % |
42.5 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
951.23 |
20 |
921.15 |
51.1 % |
40.2 % |
Elena CARAMES GONZALEZ |
FEMPA |
949.84 |
21 |
913.83 |
50 % |
39.2 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
975.76 |
22 |
939.18 |
53.6 % |
42.7 % |
#####_ Elo History _
Elo Accumulated March_2023
Laia TAULATS MCDONALD |
FAM-AND |
1090.18 |
73.4 % |
64 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1081.46 |
72.4 % |
62.8 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1078.72 |
61.3 % |
53.4 % |
Rebeca PEREZ DUATO |
FAM |
1065.87 |
59.6 % |
51.5 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1062.21 |
58.8 % |
51 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1055.30 |
58.1 % |
50 % |
Vera BRIONGOS MARTÍN |
FEXME |
1055.00 |
57.8 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1052.98 |
57.8 % |
49.7 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1052.59 |
57.5 % |
49.7 % |
Aida TORRES ILLAMOLA |
FEEC |
1052.03 |
57.6 % |
49.5 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1048.76 |
68.5 % |
58.4 % |
Mar CARREÑO ESCOBAR |
FADMES |
1036.49 |
67 % |
56.6 % |
India PERSSON FERNÁNDEZ |
FADMES |
1032.74 |
66.5 % |
56.1 % |
Rut MONSECH GASCA |
FEEC |
1025.10 |
53.8 % |
45.7 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Miriam DIEZ LUENGO |
FMM |
1019.86 |
53.1 % |
44.9 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1019.35 |
64.7 % |
54.2 % |
Lucia MIRANDA CID |
FEEC |
1016.09 |
52.5 % |
44.4 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1014.52 |
64.1 % |
53.5 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1012.56 |
51.8 % |
43.9 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1012.54 |
52 % |
43.9 % |
Rocío LEAL ABAD |
FMRM |
1005.43 |
50.7 % |
42.9 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1003.45 |
51.7 % |
46.9 % |
Irati ASO ESAIN |
FNDME |
1001.72 |
62.4 % |
51.7 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.08 |
51.2 % |
46.4 % |
Maria PAREDES RAMOS |
FEXME |
998.60 |
50 % |
41.9 % |
Antia FREITAS RIAL |
FEXME |
998.29 |
50 % |
41.9 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
995.63 |
61.6 % |
50.8 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
984.09 |
47.9 % |
39.9 % |
Sofía PEÑA PÉREZ |
FMM |
981.81 |
59.7 % |
48.8 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
981.11 |
59.6 % |
48.7 % |
Silvia FAYOS LOZADA |
FEMECV |
978.41 |
47.1 % |
39.1 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
975.73 |
46.5 % |
38.8 % |
Amaya DEL POZO CARRION |
FMM |
973.76 |
58.5 % |
47.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
973.14 |
47.3 % |
42.6 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Nerea PÉREZ PEREA |
FMM |
969.60 |
58 % |
47 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Haizea OSES SAIZ |
EMF-FVM |
959.96 |
44.5 % |
36.6 % |
Jordana PEREZ GRANELL |
FEMECV |
955.44 |
43.6 % |
36.1 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
954.05 |
43.6 % |
35.8 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
953.37 |
55.7 % |
44.7 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
951.28 |
55.4 % |
44.4 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
948.84 |
42.9 % |
35.1 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Alba MARTÍNEZ LLARÍA |
FMM |
942.18 |
54.1 % |
43.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Lucia LORES REY |
FEGAMON |
937.60 |
53.4 % |
42.5 % |
Maria SANTOS GONZÁLEZ |
FEXME |
937.58 |
53.4 % |
42.5 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
921.15 |
51.1 % |
40.2 % |
Elena CARAMES GONZALEZ |
FEMPA |
913.83 |
50 % |
39.2 % |
Elo March-Abs 2023
-Competitors = r
-
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1078.72 |
1 |
1108.96 |
58.6 % |
54.2 % |
Aida TORRES ILLAMOLA |
FEEC |
1052.03 |
2 |
1079.71 |
54.5 % |
50 % |
Rut MONSECH GASCA |
FEEC |
1025.10 |
3 |
1050.22 |
50.3 % |
45.8 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1062.21 |
4 |
1084.51 |
55.2 % |
50.7 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1052.98 |
5 |
1072.65 |
53.5 % |
49 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1012.54 |
6 |
1029.71 |
47.3 % |
42.9 % |
Lucia MIRANDA CID |
FEEC |
1016.09 |
7 |
1030.58 |
47.5 % |
43 % |
Vera BRIONGOS MARTÍN |
FEXME |
1055.00 |
8 |
1066.66 |
52.6 % |
48.1 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1000.08 |
9 |
1009.31 |
44.4 % |
40 % |
Antia FREITAS RIAL |
FEXME |
998.29 |
10 |
1004.86 |
43.8 % |
39.4 % |
Irati ZABALA MUXIKA |
EMF-FVM |
1000.00 |
11 |
1004.07 |
43.7 % |
39.3 % |
Laia TAULATS MCDONALD |
FAM-AND |
1090.18 |
12 |
1091.04 |
56.1 % |
51.6 % |
Paula TRAVERSO LEBRON |
FEXME |
984.09 |
13 |
982.72 |
40.7 % |
36.4 % |
Maria PAREDES RAMOS |
FEXME |
998.60 |
14 |
994.50 |
42.3 % |
38 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1055.30 |
15 |
1048.30 |
50 % |
45.5 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
1003.45 |
16 |
994.00 |
42.2 % |
37.9 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1081.46 |
17 |
1069.02 |
53 % |
48.5 % |
Haizea OSES SAIZ |
EMF-FVM |
959.96 |
18 |
945.35 |
35.6 % |
31.6 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1052.59 |
19 |
1034.93 |
48.1 % |
43.6 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
954.05 |
20 |
934.13 |
34.1 % |
30.2 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
948.84 |
21 |
926.28 |
33.1 % |
29.3 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
973.14 |
21 |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
978.41 |
21 |
955.73 |
37 % |
32.9 % |
María FEO MIGUELA |
FNDME |
1000.00 |
21 |
977.40 |
39.9 % |
35.7 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
1000.00 |
21 |
977.40 |
39.9 % |
35.7 % |
#####_ Elo History _
Elo Accumulated Second_2023
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1108.96 |
58.6 % |
54.2 % |
Laia TAULATS MCDONALD |
FAM-AND |
1091.04 |
56.1 % |
51.6 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1084.51 |
55.2 % |
50.7 % |
Aida TORRES ILLAMOLA |
FEEC |
1079.71 |
54.5 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1072.65 |
53.5 % |
49 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1069.02 |
53 % |
48.5 % |
Vera BRIONGOS MARTÍN |
FEXME |
1066.66 |
52.6 % |
48.1 % |
Rebeca PEREZ DUATO |
FAM |
1065.87 |
59.6 % |
51.5 % |
Rut MONSECH GASCA |
FEEC |
1050.22 |
50.3 % |
45.8 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1048.76 |
68.5 % |
58.4 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1048.30 |
50 % |
45.5 % |
Mar CARREÑO ESCOBAR |
FADMES |
1036.49 |
67 % |
56.6 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
India PERSSON FERNÁNDEZ |
FADMES |
1032.74 |
66.5 % |
56.1 % |
Lucia MIRANDA CID |
FEEC |
1030.58 |
47.5 % |
43 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1029.71 |
47.3 % |
42.9 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Miriam DIEZ LUENGO |
FMM |
1019.86 |
53.1 % |
44.9 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1019.35 |
64.7 % |
54.2 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1014.52 |
64.1 % |
53.5 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1012.56 |
51.8 % |
43.9 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1009.31 |
44.4 % |
40 % |
Rocío LEAL ABAD |
FMRM |
1005.43 |
50.7 % |
42.9 % |
Antia FREITAS RIAL |
FEXME |
1004.86 |
43.8 % |
39.4 % |
Irati ZABALA MUXIKA |
EMF-FVM |
1004.07 |
43.7 % |
39.3 % |
Irati ASO ESAIN |
FNDME |
1001.72 |
62.4 % |
51.7 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
995.63 |
61.6 % |
50.8 % |
Maria PAREDES RAMOS |
FEXME |
994.50 |
42.3 % |
38 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
994.00 |
42.2 % |
37.9 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
982.72 |
40.7 % |
36.4 % |
Sofía PEÑA PÉREZ |
FMM |
981.81 |
59.7 % |
48.8 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
981.11 |
59.6 % |
48.7 % |
María FEO MIGUELA |
FNDME |
977.40 |
39.9 % |
35.7 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
977.40 |
39.9 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
975.73 |
46.5 % |
38.8 % |
Amaya DEL POZO CARRION |
FMM |
973.76 |
58.5 % |
47.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Nerea PÉREZ PEREA |
FMM |
969.60 |
58 % |
47 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Silvia FAYOS LOZADA |
FEMECV |
955.73 |
37 % |
32.9 % |
Jordana PEREZ GRANELL |
FEMECV |
955.44 |
43.6 % |
36.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
953.37 |
55.7 % |
44.7 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
951.28 |
55.4 % |
44.4 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Haizea OSES SAIZ |
EMF-FVM |
945.35 |
35.6 % |
31.6 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Alba MARTÍNEZ LLARÍA |
FMM |
942.18 |
54.1 % |
43.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Lucia LORES REY |
FEGAMON |
937.60 |
53.4 % |
42.5 % |
Maria SANTOS GONZÁLEZ |
FEXME |
937.58 |
53.4 % |
42.5 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
934.13 |
34.1 % |
30.2 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
926.28 |
33.1 % |
29.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
921.15 |
51.1 % |
40.2 % |
Elena CARAMES GONZALEZ |
FEMPA |
913.83 |
50 % |
39.2 % |
Elo 2023 May
-Competitors = r
-
Laia TAULATS MCDONALD |
FAM-AND |
1091.04 |
1 |
1121.25 |
66 % |
59.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1014.52 |
2 |
1042.46 |
55.3 % |
48.3 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1069.02 |
3 |
1094.19 |
62.5 % |
55.7 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1048.76 |
4 |
1071.45 |
59.3 % |
52.5 % |
India PERSSON FERNÁNDEZ |
FADMES |
1032.74 |
5 |
1052.93 |
56.8 % |
49.8 % |
Mar CARREÑO ESCOBAR |
FADMES |
1036.49 |
6 |
1054.11 |
56.9 % |
50 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
975.73 |
7 |
991.03 |
47.9 % |
41 % |
Amaya DEL POZO CARRION |
FMM |
973.76 |
8 |
986.51 |
47.2 % |
40.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
995.63 |
9 |
1005.73 |
50 % |
43.1 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1019.35 |
10 |
1026.79 |
53 % |
46.1 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1012.56 |
10 |
1020.03 |
52.1 % |
45.1 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
921.15 |
12 |
923.86 |
38.4 % |
32.1 % |
Irati ASO ESAIN |
FNDME |
1001.72 |
13 |
1001.56 |
49.4 % |
42.5 % |
Nerea PÉREZ PEREA |
FMM |
969.60 |
14 |
967.00 |
44.4 % |
37.7 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
953.37 |
15 |
948.28 |
41.8 % |
35.2 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
981.11 |
16 |
973.35 |
45.4 % |
38.6 % |
Alba MARTÍNEZ LLARÍA |
FMM |
942.18 |
17 |
932.01 |
39.5 % |
33.1 % |
Jordana PEREZ GRANELL |
FEMECV |
955.44 |
18 |
942.66 |
41 % |
34.5 % |
Elena CARAMES GONZALEZ |
FEMPA |
913.83 |
19 |
898.65 |
35.1 % |
29 % |
Lucia LORES REY |
FEGAMON |
937.60 |
20 |
919.77 |
37.9 % |
31.6 % |
Maria SANTOS GONZÁLEZ |
FEXME |
937.58 |
20 |
919.75 |
37.9 % |
31.6 % |
Rocío LEAL ABAD |
FMRM |
1005.43 |
20 |
987.33 |
47.4 % |
40.5 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
1000.00 |
23 |
974.41 |
45.5 % |
38.7 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
951.28 |
24 |
923.16 |
38.3 % |
32 % |
Paula MENESES BALLESTEROS |
FDMCM |
1000.00 |
24 |
971.85 |
45.1 % |
38.4 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
980.08 |
24 |
952.00 |
42.3 % |
35.7 % |
#####_ Elo History _
Elo Accumulated Third_2023
Laia TAULATS MCDONALD |
FAM-AND |
1121.25 |
66 % |
59.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1108.96 |
58.6 % |
54.2 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1094.19 |
62.5 % |
55.7 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1084.51 |
55.2 % |
50.7 % |
Aida TORRES ILLAMOLA |
FEEC |
1079.71 |
54.5 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1072.65 |
53.5 % |
49 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1071.45 |
59.3 % |
52.5 % |
Vera BRIONGOS MARTÍN |
FEXME |
1066.66 |
52.6 % |
48.1 % |
Rebeca PEREZ DUATO |
FAM |
1065.87 |
59.6 % |
51.5 % |
Mar CARREÑO ESCOBAR |
FADMES |
1054.11 |
56.9 % |
50 % |
India PERSSON FERNÁNDEZ |
FADMES |
1052.93 |
56.8 % |
49.8 % |
Rut MONSECH GASCA |
FEEC |
1050.22 |
50.3 % |
45.8 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1048.30 |
50 % |
45.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1042.46 |
55.3 % |
48.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Lucia MIRANDA CID |
FEEC |
1030.58 |
47.5 % |
43 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1029.71 |
47.3 % |
42.9 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1026.79 |
53 % |
46.1 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1020.03 |
52.1 % |
45.1 % |
Miriam DIEZ LUENGO |
FMM |
1019.86 |
53.1 % |
44.9 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1009.31 |
44.4 % |
40 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1005.73 |
50 % |
43.1 % |
Antia FREITAS RIAL |
FEXME |
1004.86 |
43.8 % |
39.4 % |
Irati ZABALA MUXIKA |
EMF-FVM |
1004.07 |
43.7 % |
39.3 % |
Irati ASO ESAIN |
FNDME |
1001.56 |
49.4 % |
42.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Maria PAREDES RAMOS |
FEXME |
994.50 |
42.3 % |
38 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
994.00 |
42.2 % |
37.9 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
991.03 |
47.9 % |
41 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Amaya DEL POZO CARRION |
FMM |
986.51 |
47.2 % |
40.4 % |
Paula TRAVERSO LEBRON |
FEXME |
982.72 |
40.7 % |
36.4 % |
Sofía PEÑA PÉREZ |
FMM |
981.81 |
59.7 % |
48.8 % |
María FEO MIGUELA |
FNDME |
977.40 |
39.9 % |
35.7 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
977.40 |
39.9 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.35 |
45.4 % |
38.6 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Nerea PÉREZ PEREA |
FMM |
967.00 |
44.4 % |
37.7 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Silvia FAYOS LOZADA |
FEMECV |
955.73 |
37 % |
32.9 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
948.28 |
41.8 % |
35.2 % |
Haizea OSES SAIZ |
EMF-FVM |
945.35 |
35.6 % |
31.6 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
43 % |
38.4 % |
Jordana PEREZ GRANELL |
FEMECV |
942.66 |
41 % |
34.5 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
934.13 |
34.1 % |
30.2 % |
Alba MARTÍNEZ LLARÍA |
FMM |
932.01 |
39.5 % |
33.1 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
926.28 |
33.1 % |
29.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
923.16 |
38.3 % |
32 % |
Lucia LORES REY |
FEGAMON |
919.77 |
37.9 % |
31.6 % |
Maria SANTOS GONZÁLEZ |
FEXME |
919.75 |
37.9 % |
31.6 % |
Elena CARAMES GONZALEZ |
FEMPA |
898.65 |
35.1 % |
29 % |
Elo May-Abs 2023
-Competitors = r
-
Aida TORRES ILLAMOLA |
FEEC |
1079.71 |
1 |
1109.90 |
60.8 % |
52.4 % |
Rebeca PEREZ DUATO |
FAM |
1065.87 |
2 |
1093.08 |
58.5 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1072.65 |
3 |
1096.78 |
59 % |
50.5 % |
Maria PAREDES RAMOS |
FEXME |
994.50 |
4 |
1015.92 |
47.5 % |
39 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1029.71 |
5 |
1047.93 |
52.1 % |
43.5 % |
Rut MONSECH GASCA |
FEEC |
1050.22 |
6 |
1065.30 |
54.6 % |
46 % |
Miriam DIEZ LUENGO |
FMM |
1019.86 |
7 |
1032.03 |
49.8 % |
41.3 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1084.51 |
8 |
1093.35 |
58.5 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
982.72 |
9 |
988.95 |
43.6 % |
35.4 % |
Lucia MIRANDA CID |
FEEC |
1030.58 |
10 |
1033.56 |
50 % |
41.5 % |
Laia TAULATS MCDONALD |
FAM-AND |
1121.25 |
11 |
1120.80 |
62.3 % |
53.9 % |
Vera BRIONGOS MARTÍN |
FEXME |
1066.66 |
12 |
1063.39 |
54.3 % |
45.7 % |
Silvia FAYOS LOZADA |
FEMECV |
955.73 |
13 |
949.89 |
38.2 % |
30.5 % |
Antia FREITAS RIAL |
FEXME |
1004.86 |
14 |
995.76 |
44.6 % |
36.3 % |
Irati ZABALA MUXIKA |
EMF-FVM |
1004.07 |
15 |
991.93 |
44 % |
35.8 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1048.30 |
16 |
1032.91 |
49.9 % |
41.4 % |
María FEO MIGUELA |
FNDME |
977.40 |
17 |
959.28 |
39.5 % |
31.6 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
1009.31 |
18 |
988.00 |
43.5 % |
35.3 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
926.28 |
19 |
902.28 |
32 % |
25 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
934.13 |
20 |
907.05 |
32.6 % |
25.5 % |
Claudia LARA PINILLOS |
FADMES |
1000.00 |
21 |
969.65 |
40.9 % |
32.9 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
942.92 |
22 |
909.71 |
32.9 % |
25.8 % |
#####_ Elo History _
Elo Accumulated May-Abs_2023
Laia TAULATS MCDONALD |
FAM-AND |
1120.80 |
62.3 % |
53.9 % |
Aida TORRES ILLAMOLA |
FEEC |
1109.90 |
60.8 % |
52.4 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1108.96 |
58.6 % |
54.2 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1096.78 |
59 % |
50.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1094.19 |
62.5 % |
55.7 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1093.35 |
58.5 % |
50 % |
Rebeca PEREZ DUATO |
FAM |
1093.08 |
58.5 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1071.45 |
59.3 % |
52.5 % |
Rut MONSECH GASCA |
FEEC |
1065.30 |
54.6 % |
46 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Mar CARREÑO ESCOBAR |
FADMES |
1054.11 |
56.9 % |
50 % |
India PERSSON FERNÁNDEZ |
FADMES |
1052.93 |
56.8 % |
49.8 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1047.93 |
52.1 % |
43.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1042.46 |
55.3 % |
48.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Lucia MIRANDA CID |
FEEC |
1033.56 |
50 % |
41.5 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1032.91 |
49.9 % |
41.4 % |
Miriam DIEZ LUENGO |
FMM |
1032.03 |
49.8 % |
41.3 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1026.79 |
53 % |
46.1 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1020.03 |
52.1 % |
45.1 % |
Maria PAREDES RAMOS |
FEXME |
1015.92 |
47.5 % |
39 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1005.73 |
50 % |
43.1 % |
Irati ASO ESAIN |
FNDME |
1001.56 |
49.4 % |
42.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Antia FREITAS RIAL |
FEXME |
995.76 |
44.6 % |
36.3 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
994.00 |
42.2 % |
37.9 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Irati ZABALA MUXIKA |
EMF-FVM |
991.93 |
44 % |
35.8 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
991.03 |
47.9 % |
41 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
988.95 |
43.6 % |
35.4 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
988.00 |
43.5 % |
35.3 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Amaya DEL POZO CARRION |
FMM |
986.51 |
47.2 % |
40.4 % |
Sofía PEÑA PÉREZ |
FMM |
981.81 |
59.7 % |
48.8 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
977.40 |
39.9 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.35 |
45.4 % |
38.6 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Nerea PÉREZ PEREA |
FMM |
967.00 |
44.4 % |
37.7 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
María FEO MIGUELA |
FNDME |
959.28 |
39.5 % |
31.6 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
38.2 % |
30.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
948.28 |
41.8 % |
35.2 % |
Haizea OSES SAIZ |
EMF-FVM |
945.35 |
35.6 % |
31.6 % |
Jordana PEREZ GRANELL |
FEMECV |
942.66 |
41 % |
34.5 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Alba MARTÍNEZ LLARÍA |
FMM |
932.01 |
39.5 % |
33.1 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
923.16 |
38.3 % |
32 % |
Lucia LORES REY |
FEGAMON |
919.77 |
37.9 % |
31.6 % |
Maria SANTOS GONZÁLEZ |
FEXME |
919.75 |
37.9 % |
31.6 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
32.9 % |
25.8 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
907.05 |
32.6 % |
25.5 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
902.28 |
32 % |
25 % |
Elena CARAMES GONZALEZ |
FEMPA |
898.65 |
35.1 % |
29 % |
Elo 2023 June
-Competitors = r
-
India PERSSON FERNÁNDEZ |
FADMES |
1052.93 |
1 |
1083.24 |
61.7 % |
50 % |
Laia TAULATS MCDONALD |
FAM-AND |
1120.80 |
2 |
1148.06 |
70.1 % |
59.2 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1026.79 |
3 |
1051.64 |
57.3 % |
45.5 % |
Mar CARREÑO ESCOBAR |
FADMES |
1054.11 |
4 |
1076.06 |
60.7 % |
49 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1071.45 |
5 |
1090.55 |
62.7 % |
51.1 % |
Sofía PEÑA PÉREZ |
FMM |
981.81 |
6 |
998.50 |
49.7 % |
38 % |
Amaya DEL POZO CARRION |
FMM |
986.51 |
7 |
1000.40 |
50 % |
38.3 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1094.19 |
8 |
1104.85 |
64.6 % |
53.1 % |
Alba MARTÍNEZ LLARÍA |
FMM |
932.01 |
9 |
940.56 |
41.5 % |
30.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1042.46 |
9 |
1050.55 |
57.2 % |
45.3 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1005.73 |
11 |
1008.41 |
51.2 % |
39.4 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.35 |
12 |
973.38 |
46.1 % |
34.7 % |
Nerea PÉREZ PEREA |
FMM |
967.00 |
13 |
964.27 |
44.8 % |
33.5 % |
Irati ASO ESAIN |
FNDME |
1001.56 |
14 |
995.91 |
49.4 % |
37.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
991.03 |
15 |
982.64 |
47.4 % |
35.9 % |
Naroa MORALES ALMAZAN |
FNDME |
1000.00 |
15 |
991.69 |
48.7 % |
37.1 % |
Lucia LORES REY |
FEGAMON |
919.77 |
17 |
906.11 |
36.8 % |
26.5 % |
Natalia PÉREZ VALLE |
FMM |
1000.00 |
17 |
986.13 |
47.9 % |
36.4 % |
Elena CARAMES GONZALEZ |
FEMPA |
898.65 |
19 |
879.50 |
33.3 % |
23.6 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
1020.03 |
20 |
997.60 |
49.6 % |
37.9 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
948.28 |
21 |
923.37 |
39.1 % |
28.5 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
923.16 |
22 |
895.57 |
35.4 % |
25.3 % |
Jordana PEREZ GRANELL |
FEMECV |
942.66 |
23 |
912.21 |
37.6 % |
27.2 % |
Maria SANTOS GONZÁLEZ |
FEXME |
919.75 |
24 |
886.61 |
34.2 % |
24.4 % |
#####_ Elo History _
Elo Accumulated June_2023
Laia TAULATS MCDONALD |
FAM-AND |
1148.06 |
70.1 % |
59.2 % |
Aida TORRES ILLAMOLA |
FEEC |
1109.90 |
60.8 % |
52.4 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1108.96 |
58.6 % |
54.2 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1096.78 |
59 % |
50.5 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1093.35 |
58.5 % |
50 % |
Rebeca PEREZ DUATO |
FAM |
1093.08 |
58.5 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.55 |
62.7 % |
51.1 % |
India PERSSON FERNÁNDEZ |
FADMES |
1083.24 |
61.7 % |
50 % |
Mar CARREÑO ESCOBAR |
FADMES |
1076.06 |
60.7 % |
49 % |
Rut MONSECH GASCA |
FEEC |
1065.30 |
54.6 % |
46 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1051.64 |
57.3 % |
45.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
57.2 % |
45.3 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1047.93 |
52.1 % |
43.5 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Lucia MIRANDA CID |
FEEC |
1033.56 |
50 % |
41.5 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1032.91 |
49.9 % |
41.4 % |
Miriam DIEZ LUENGO |
FMM |
1032.03 |
49.8 % |
41.3 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Maria PAREDES RAMOS |
FEXME |
1015.92 |
47.5 % |
39 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Amaya DEL POZO CARRION |
FMM |
1000.40 |
50 % |
38.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ASO ESAIN |
FNDME |
995.91 |
49.4 % |
37.7 % |
Antia FREITAS RIAL |
FEXME |
995.76 |
44.6 % |
36.3 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
994.00 |
42.2 % |
37.9 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Irati ZABALA MUXIKA |
EMF-FVM |
991.93 |
44 % |
35.8 % |
Naroa MORALES ALMAZAN |
FNDME |
991.69 |
48.7 % |
37.1 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
988.95 |
43.6 % |
35.4 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
988.00 |
43.5 % |
35.3 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
982.64 |
47.4 % |
35.9 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
977.40 |
39.9 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.38 |
46.1 % |
34.7 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Nerea PÉREZ PEREA |
FMM |
964.27 |
44.8 % |
33.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
María FEO MIGUELA |
FNDME |
959.28 |
39.5 % |
31.6 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
38.2 % |
30.5 % |
Haizea OSES SAIZ |
EMF-FVM |
945.35 |
35.6 % |
31.6 % |
Alba MARTÍNEZ LLARÍA |
FMM |
940.56 |
41.5 % |
30.5 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
923.37 |
39.1 % |
28.5 % |
Jordana PEREZ GRANELL |
FEMECV |
912.21 |
37.6 % |
27.2 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
32.9 % |
25.8 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
907.05 |
32.6 % |
25.5 % |
Lucia LORES REY |
FEGAMON |
906.11 |
36.8 % |
26.5 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
902.28 |
32 % |
25 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
35.4 % |
25.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
886.61 |
34.2 % |
24.4 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Elo June-Abs 2023
-Competitors = r
-
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1108.96 |
1 |
1138.90 |
64.8 % |
52.2 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1096.78 |
2 |
1123.40 |
62.8 % |
50 % |
Rut MONSECH GASCA |
FEEC |
1065.30 |
3 |
1088.69 |
58 % |
45 % |
Aida TORRES ILLAMOLA |
FEEC |
1109.90 |
4 |
1129.73 |
63.6 % |
50.9 % |
Maria PAREDES RAMOS |
FEXME |
1015.92 |
5 |
1032.80 |
50 % |
37.2 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1047.93 |
6 |
1061.30 |
54.1 % |
41.2 % |
Paula TRAVERSO LEBRON |
FEXME |
988.95 |
7 |
999.22 |
45.2 % |
32.9 % |
Lucia MIRANDA CID |
FEEC |
1033.56 |
8 |
1040.25 |
51.1 % |
38.3 % |
Irati ZABALA MUXIKA |
EMF-FVM |
991.93 |
9 |
995.45 |
44.6 % |
32.4 % |
Laia TAULATS MCDONALD |
FAM-AND |
1148.06 |
10 |
1147.52 |
65.9 % |
53.5 % |
Haizea OSES SAIZ |
EMF-FVM |
945.35 |
11 |
942.34 |
37.3 % |
26.1 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1093.35 |
12 |
1086.30 |
57.6 % |
44.7 % |
Antia FREITAS RIAL |
FEXME |
995.76 |
13 |
985.79 |
43.3 % |
31.2 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
988.00 |
14 |
974.69 |
41.7 % |
29.8 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1032.91 |
15 |
1016.03 |
47.6 % |
35 % |
María FEO MIGUELA |
FNDME |
959.28 |
16 |
939.37 |
36.9 % |
25.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
907.05 |
17 |
884.00 |
29.8 % |
20.1 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
994.00 |
18 |
967.19 |
40.7 % |
28.9 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
902.28 |
19 |
872.51 |
28.4 % |
19.1 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
977.40 |
20 |
943.93 |
37.5 % |
26.2 % |
#####_ Elo History _
Elo Accumulated June-Abs_2023
Laia TAULATS MCDONALD |
FAM-AND |
1147.52 |
65.9 % |
53.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1138.90 |
64.8 % |
52.2 % |
Aida TORRES ILLAMOLA |
FEEC |
1129.73 |
63.6 % |
50.9 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1123.40 |
62.8 % |
50 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rebeca PEREZ DUATO |
FAM |
1093.08 |
58.5 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.55 |
62.7 % |
51.1 % |
Rut MONSECH GASCA |
FEEC |
1088.69 |
58 % |
45 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
India PERSSON FERNÁNDEZ |
FADMES |
1083.24 |
61.7 % |
50 % |
Mar CARREÑO ESCOBAR |
FADMES |
1076.06 |
60.7 % |
49 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1061.30 |
54.1 % |
41.2 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1051.64 |
57.3 % |
45.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
57.2 % |
45.3 % |
Lucia MIRANDA CID |
FEEC |
1040.25 |
51.1 % |
38.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria PAREDES RAMOS |
FEXME |
1032.80 |
50 % |
37.2 % |
Miriam DIEZ LUENGO |
FMM |
1032.03 |
49.8 % |
41.3 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1016.03 |
47.6 % |
35 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Amaya DEL POZO CARRION |
FMM |
1000.40 |
50 % |
38.3 % |
Paula TRAVERSO LEBRON |
FEXME |
999.22 |
45.2 % |
32.9 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ASO ESAIN |
FNDME |
995.91 |
49.4 % |
37.7 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Naroa MORALES ALMAZAN |
FNDME |
991.69 |
48.7 % |
37.1 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Antia FREITAS RIAL |
FEXME |
985.79 |
43.3 % |
31.2 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
982.64 |
47.4 % |
35.9 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
974.69 |
41.7 % |
29.8 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.38 |
46.1 % |
34.7 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Nerea PÉREZ PEREA |
FMM |
964.27 |
44.8 % |
33.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
38.2 % |
30.5 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Alba MARTÍNEZ LLARÍA |
FMM |
940.56 |
41.5 % |
30.5 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
María FEO MIGUELA |
FNDME |
939.37 |
36.9 % |
25.7 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
923.37 |
39.1 % |
28.5 % |
Jordana PEREZ GRANELL |
FEMECV |
912.21 |
37.6 % |
27.2 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
32.9 % |
25.8 % |
Lucia LORES REY |
FEGAMON |
906.11 |
36.8 % |
26.5 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
35.4 % |
25.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
886.61 |
34.2 % |
24.4 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
872.51 |
28.4 % |
19.1 % |
Elo 2023 Nov
-Competitors = r
-
Laia TAULATS MCDONALD |
FAM-AND |
1147.52 |
1 |
1176.66 |
76.8 % |
62.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1083.24 |
2 |
1108.43 |
69.1 % |
52.6 % |
Mar CARREÑO ESCOBAR |
FADMES |
1076.06 |
3 |
1097.03 |
67.7 % |
51 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1051.64 |
4 |
1068.47 |
64 % |
46.9 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
923.37 |
5 |
936.67 |
45.4 % |
29.3 % |
Amaya DEL POZO CARRION |
FMM |
1000.40 |
6 |
1008.99 |
55.8 % |
38.5 % |
Nerea PÉREZ PEREA |
FMM |
964.27 |
7 |
968.80 |
50 % |
33.2 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.55 |
8 |
1090.11 |
66.8 % |
50 % |
Maria SANTOS GONZÁLEZ |
FEXME |
886.61 |
9 |
883.04 |
37.9 % |
23.3 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
982.64 |
10 |
974.27 |
50.8 % |
33.9 % |
Naroa MORALES ALMAZAN |
FNDME |
991.69 |
11 |
979.00 |
51.5 % |
34.5 % |
Lucia LORES REY |
FEGAMON |
906.11 |
12 |
889.63 |
38.8 % |
24 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
973.38 |
13 |
952.26 |
47.6 % |
31.1 % |
Jordana PEREZ GRANELL |
FEMECV |
912.21 |
14 |
887.17 |
38.5 % |
23.7 % |
Irati ASO ESAIN |
FNDME |
995.91 |
15 |
966.13 |
49.6 % |
32.9 % |
Alba MARTÍNEZ LLARÍA |
FMM |
940.56 |
16 |
906.83 |
41.2 % |
25.8 % |
#####_ Elo History _
Elo Accumulated Nov_2023
Laia TAULATS MCDONALD |
FAM-AND |
1176.66 |
76.8 % |
62.2 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1138.90 |
64.8 % |
52.2 % |
Aida TORRES ILLAMOLA |
FEEC |
1129.73 |
63.6 % |
50.9 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1123.40 |
62.8 % |
50 % |
India PERSSON FERNÁNDEZ |
FADMES |
1108.43 |
69.1 % |
52.6 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Rebeca PEREZ DUATO |
FAM |
1093.08 |
58.5 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.11 |
66.8 % |
50 % |
Rut MONSECH GASCA |
FEEC |
1088.69 |
58 % |
45 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1068.47 |
64 % |
46.9 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1061.30 |
54.1 % |
41.2 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
57.2 % |
45.3 % |
Lucia MIRANDA CID |
FEEC |
1040.25 |
51.1 % |
38.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria PAREDES RAMOS |
FEXME |
1032.80 |
50 % |
37.2 % |
Miriam DIEZ LUENGO |
FMM |
1032.03 |
49.8 % |
41.3 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1016.03 |
47.6 % |
35 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Amaya DEL POZO CARRION |
FMM |
1008.99 |
55.8 % |
38.5 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Paula TRAVERSO LEBRON |
FEXME |
999.22 |
45.2 % |
32.9 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Antia FREITAS RIAL |
FEXME |
985.79 |
43.3 % |
31.2 % |
Naroa MORALES ALMAZAN |
FNDME |
979.00 |
51.5 % |
34.5 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
974.69 |
41.7 % |
29.8 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
974.27 |
50.8 % |
33.9 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Nerea PÉREZ PEREA |
FMM |
968.80 |
50 % |
33.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Irati ASO ESAIN |
FNDME |
966.13 |
49.6 % |
32.9 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
952.26 |
47.6 % |
31.1 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
38.2 % |
30.5 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
María FEO MIGUELA |
FNDME |
939.37 |
36.9 % |
25.7 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
936.67 |
45.4 % |
29.3 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
32.9 % |
25.8 % |
Alba MARTÍNEZ LLARÍA |
FMM |
906.83 |
41.2 % |
25.8 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
35.4 % |
25.3 % |
Lucia LORES REY |
FEGAMON |
889.63 |
38.8 % |
24 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.04 |
37.9 % |
23.3 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
872.51 |
28.4 % |
19.1 % |
Elo 2023 Nov-Sub20
-Competitors = r
-
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1138.90 |
1 |
1164.87 |
86.8 % |
67.1 % |
Lucia MIRANDA CID |
FEEC |
1040.25 |
2 |
1058.32 |
78.1 % |
52.5 % |
Miriam DIEZ LUENGO |
FMM |
1032.03 |
3 |
1041.07 |
76.3 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1123.40 |
4 |
1122.13 |
83.7 % |
61.5 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1016.03 |
5 |
1006.99 |
72.6 % |
45.1 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
1000.00 |
6 |
982.56 |
69.7 % |
41.7 % |
María FEO MIGUELA |
FNDME |
939.37 |
7 |
913.03 |
60.7 % |
32.4 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
872.51 |
8 |
837.81 |
50 % |
23.7 % |
#####_ Elo History _
Elo Accumulated Nov-Sub20_2023
Laia TAULATS MCDONALD |
FAM-AND |
1176.66 |
76.8 % |
62.2 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1164.87 |
86.8 % |
67.1 % |
Aida TORRES ILLAMOLA |
FEEC |
1129.73 |
63.6 % |
50.9 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1122.13 |
83.7 % |
61.5 % |
India PERSSON FERNÁNDEZ |
FADMES |
1108.43 |
69.1 % |
52.6 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Rebeca PEREZ DUATO |
FAM |
1093.08 |
58.5 % |
50 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.11 |
66.8 % |
50 % |
Rut MONSECH GASCA |
FEEC |
1088.69 |
58 % |
45 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1068.47 |
64 % |
46.9 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1061.30 |
54.1 % |
41.2 % |
Lucia MIRANDA CID |
FEEC |
1058.32 |
78.1 % |
52.5 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
57.2 % |
45.3 % |
Miriam DIEZ LUENGO |
FMM |
1041.07 |
76.3 % |
50 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria PAREDES RAMOS |
FEXME |
1032.80 |
50 % |
37.2 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Amaya DEL POZO CARRION |
FMM |
1008.99 |
55.8 % |
38.5 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1006.99 |
72.6 % |
45.1 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Paula TRAVERSO LEBRON |
FEXME |
999.22 |
45.2 % |
32.9 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Antia FREITAS RIAL |
FEXME |
985.79 |
43.3 % |
31.2 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
982.56 |
69.7 % |
41.7 % |
Naroa MORALES ALMAZAN |
FNDME |
979.00 |
51.5 % |
34.5 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
974.69 |
41.7 % |
29.8 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
974.27 |
50.8 % |
33.9 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Nerea PÉREZ PEREA |
FMM |
968.80 |
50 % |
33.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Irati ASO ESAIN |
FNDME |
966.13 |
49.6 % |
32.9 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
952.26 |
47.6 % |
31.1 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
38.2 % |
30.5 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
936.67 |
45.4 % |
29.3 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
María FEO MIGUELA |
FNDME |
913.03 |
60.7 % |
32.4 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
32.9 % |
25.8 % |
Alba MARTÍNEZ LLARÍA |
FMM |
906.83 |
41.2 % |
25.8 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
35.4 % |
25.3 % |
Lucia LORES REY |
FEGAMON |
889.63 |
38.8 % |
24 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.04 |
37.9 % |
23.3 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
837.81 |
50 % |
23.7 % |
Elo 2023 Nov-Abs
-Competitors = r
-
Rebeca PEREZ DUATO |
FAM |
1093.08 |
1 |
1123.10 |
59 % |
50 % |
Maria PAREDES RAMOS |
FEXME |
1032.80 |
2 |
1059.89 |
50 % |
41 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1164.87 |
3 |
1188.20 |
67.7 % |
59.3 % |
Aida TORRES ILLAMOLA |
FEEC |
1129.73 |
4 |
1150.00 |
62.7 % |
53.9 % |
Rut MONSECH GASCA |
FEEC |
1088.69 |
5 |
1105.93 |
56.6 % |
47.5 % |
Lucia MIRANDA CID |
FEEC |
1058.32 |
6 |
1072.49 |
51.8 % |
42.8 % |
Miriam DIEZ LUENGO |
FMM |
1041.07 |
7 |
1052.12 |
48.9 % |
39.9 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1061.30 |
8 |
1069.06 |
51.3 % |
42.3 % |
Paula TRAVERSO LEBRON |
FEXME |
999.22 |
9 |
1004.06 |
42 % |
33.5 % |
Laia TAULATS MCDONALD |
FAM-AND |
1176.66 |
10 |
1177.54 |
66.3 % |
57.8 % |
Silvia FAYOS LOZADA |
FEMECV |
949.89 |
11 |
948.56 |
34.5 % |
26.8 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1122.13 |
12 |
1116.83 |
58.1 % |
49.1 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
1006.99 |
13 |
999.00 |
41.3 % |
32.9 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
974.69 |
14 |
963.65 |
36.5 % |
28.5 % |
Antia FREITAS RIAL |
FEXME |
985.79 |
15 |
971.50 |
37.5 % |
29.5 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
909.71 |
16 |
892.56 |
27.6 % |
21 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
982.56 |
17 |
961.88 |
36.3 % |
28.3 % |
Marina REVERT LLOMPART |
FBME |
1000.00 |
18 |
976.12 |
38.2 % |
30 % |
María FEO MIGUELA |
FNDME |
913.03 |
19 |
886.26 |
26.9 % |
20.4 % |
Amaya DEL POZO CARRION |
FMM |
1008.99 |
20 |
978.59 |
38.5 % |
30.3 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
837.81 |
21 |
804.94 |
18.7 % |
13.8 % |
#####_ Elo History _
Elo Accumulated Nov-Abs_2023
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1188.20 |
67.7 % |
59.3 % |
Laia TAULATS MCDONALD |
FAM-AND |
1177.54 |
66.3 % |
57.8 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
Rebeca PEREZ DUATO |
FAM |
1123.10 |
59 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1116.83 |
58.1 % |
49.1 % |
India PERSSON FERNÁNDEZ |
FADMES |
1108.43 |
69.1 % |
52.6 % |
Rut MONSECH GASCA |
FEEC |
1105.93 |
56.6 % |
47.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.11 |
66.8 % |
50 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1069.06 |
51.3 % |
42.3 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1068.47 |
64 % |
46.9 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Maria PAREDES RAMOS |
FEXME |
1059.89 |
50 % |
41 % |
Miriam DIEZ LUENGO |
FMM |
1052.12 |
48.9 % |
39.9 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
57.2 % |
45.3 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Paula TRAVERSO LEBRON |
FEXME |
1004.06 |
42 % |
33.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
999.00 |
41.3 % |
32.9 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Naroa MORALES ALMAZAN |
FNDME |
979.00 |
51.5 % |
34.5 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
45.5 % |
38.7 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
974.27 |
50.8 % |
33.9 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Nerea PÉREZ PEREA |
FMM |
968.80 |
50 % |
33.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Irati ASO ESAIN |
FNDME |
966.13 |
49.6 % |
32.9 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
961.88 |
36.3 % |
28.3 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
952.26 |
47.6 % |
31.1 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
42.3 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
936.67 |
45.4 % |
29.3 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Alba MARTÍNEZ LLARÍA |
FMM |
906.83 |
41.2 % |
25.8 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
35.4 % |
25.3 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
892.56 |
27.6 % |
21 % |
Lucia LORES REY |
FEGAMON |
889.63 |
38.8 % |
24 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
María FEO MIGUELA |
FNDME |
886.26 |
26.9 % |
20.4 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.04 |
37.9 % |
23.3 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Anchoring ‘elo.last.accum’ 2023
MERGING FROM SUB16-2023
Geila MACIÀ MARTÍN |
FEEC |
1149.83 |
65.9 % |
63.4 % |
Júlia BENACH ZUBERO |
FEEC |
1142.29 |
64.9 % |
62.4 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1102.11 |
59.5 % |
56.8 % |
Emily Charlotte PESCETTO |
FEEC |
1074.92 |
56.7 % |
51.7 % |
Laia TAULATS MCDONALD |
FAM-AND |
1063.12 |
55 % |
50 % |
Nathalie Joanna VENDSALU |
FEMECV |
1058.95 |
54.4 % |
49.4 % |
Erika CARRASCO AGUILA |
FMM |
1054.54 |
52.8 % |
50 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1054.14 |
52.7 % |
49.9 % |
Maria FERRÉ PRIM |
FEEC |
1051.99 |
55.7 % |
50 % |
Ines ALLENDE LOPEZ |
EMF-FVM |
1045.92 |
51.5 % |
48.8 % |
Aina VILA CANTERO |
FEEC |
1044.80 |
51.4 % |
48.6 % |
Martina MUÑIZ VALENCIA |
FMM |
1035.46 |
50 % |
47.3 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
1035.31 |
50 % |
47.2 % |
Swann LAMBLIN BURGUET |
FEEC |
1035.05 |
50 % |
47.2 % |
Candela AMADOR DEL CASTILLO |
FMM |
1032.72 |
49.6 % |
46.9 % |
Udane MUGICA LASA |
EMF-FVM |
1031.80 |
49.5 % |
46.7 % |
Maria FARRÉ PRIM |
FEEC |
1028.21 |
49 % |
46.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1027.94 |
50 % |
45 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1022.43 |
48.1 % |
45.4 % |
Maite VILA LÓPEZ |
FEXME |
1018.74 |
47.6 % |
44.9 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1018.32 |
48.6 % |
43.6 % |
Naroa AYERDI ARIZ |
FNDME |
1014.95 |
47.1 % |
44.3 % |
Amanda BECERRA ESPINOSA |
FEXME |
1013.02 |
46.8 % |
44.1 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1011.28 |
47.6 % |
42.6 % |
Loreto PEINADO FRANGANILLO |
FMM |
1008.25 |
46.1 % |
43.4 % |
Clara SALA PÉREZ |
FEMECV |
1004.92 |
45.6 % |
42.9 % |
Sofía PEÑA PÉREZ |
FMM |
996.08 |
45.4 % |
40.5 % |
Edurne MARTÍNEZ ALMENDROS |
FDMESCyL |
995.05 |
44.2 % |
41.5 % |
Amaya DEL POZO CARIION |
FMM |
994.93 |
47.8 % |
46 % |
Lucía LÓPEZ SÁNCHEZ |
FEXME |
992.20 |
43.8 % |
41.1 % |
Amaya DEL POZO CARRION |
FMM |
991.21 |
46 % |
42.7 % |
Alba SÁNCHEZ GARCÍA |
FMRM |
990.11 |
43.5 % |
40.8 % |
Elena FERREIRO RODRIGUEZ |
FEGAMON |
989.36 |
43.4 % |
40.7 % |
Alba DÍAZ MARTÍNEZ |
FEMECV |
987.03 |
43.1 % |
40.4 % |
Nora GARCÍA MAESTU |
FEGAMON |
986.18 |
46.3 % |
40.6 % |
Noa PERSSON FERNÁNDEZ |
FADMES |
985.19 |
42.8 % |
40.1 % |
Berta GONZÁLEZ MARTÍNEZ |
FDMCM |
984.91 |
42.8 % |
40.1 % |
Paula MARTÍNEZ AGUDO |
FMM |
984.02 |
42.7 % |
40 % |
Meia LEÓN VILCHES |
FEXME |
983.40 |
42.6 % |
39.9 % |
África PIÉDROLA SÁNCHEZ |
FADMES |
982.63 |
42.5 % |
39.8 % |
Elba VERGÉS SOLÉ |
FEEC |
982.49 |
42.5 % |
39.8 % |
Patricia LEAL ABAD |
FMRM |
982.49 |
42.5 % |
39.8 % |
Ayla RUBIO GARCIA |
FMM |
982.13 |
46 % |
44.1 % |
Sara GUERRERO RODRÍGUEZ |
FDMESCyL |
980.17 |
44.4 % |
41.1 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
980.08 |
43.2 % |
38.3 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
977.92 |
41.8 % |
39.1 % |
Anna Sofia BETHENCOURT NEMECKOVA |
FECAMON |
977.54 |
45 % |
39.4 % |
Aitana GARCÍA BERNABEU |
FEMECV |
977.12 |
44 % |
40.7 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
975.76 |
43.8 % |
40.5 % |
Lucía SÁNCHEZ SANTAMARÍA |
FDMESCyL |
975.76 |
43.8 % |
40.5 % |
Raquel GEIJO RODRÍGUEZ |
FDMESCyL |
975.76 |
43.8 % |
40.5 % |
Sofia SUAREZ DIAZ |
FEMPA |
974.08 |
44.6 % |
39 % |
Eva RABADÁN GARCÍA |
FDMCM |
973.35 |
41.2 % |
38.5 % |
Inés PORRERO MORA |
FDMCM |
973.35 |
41.2 % |
38.5 % |
Ana SECO GABARRI |
FNDME |
971.27 |
40.9 % |
38.2 % |
Nora ECHEVARRIA NUÑEZ |
EMF-FVM |
969.67 |
40.7 % |
38 % |
Cristina CHAMON GARCÍA |
FDMCM |
969.33 |
44.1 % |
42.3 % |
Vega SÁNCHEZ ESCUDERO |
FDMESCyL |
968.89 |
43.8 % |
38.3 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
968.63 |
42.8 % |
39.5 % |
Sofia PÉREZ PEREA |
FMM |
967.34 |
40.3 % |
37.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
963.24 |
40.8 % |
36 % |
Lucia LORES REY |
FEGAMON |
961.32 |
41.8 % |
38.5 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
951.23 |
39.1 % |
34.4 % |
Alba MARTÍNEZ LLARÍA |
FMM |
949.85 |
38.9 % |
34.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
948.45 |
38.8 % |
34.1 % |
Emma QUEIJO NAVEIRA |
FEGAMON |
946.72 |
37.5 % |
35 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
945.64 |
37.4 % |
34.8 % |
Carla PEREZ AMBRONA |
FMM |
943.88 |
37.1 % |
34.6 % |
Paula HUERGO MIYAR |
FEMPA |
939.58 |
36.6 % |
34 % |
Lara PRIDA SEOANE |
FEGAMON |
917.39 |
33.7 % |
31.2 % |
Alejandra MARTÍN GARCÍA |
FDMCM |
915.89 |
33.5 % |
31 % |
Júlia BENACH ZUBERO |
FEEC |
1142.29 |
1 |
1173.06 |
66.8 % |
62.8 % |
Geila MACIÀ MARTÍN |
FEEC |
1149.83 |
2 |
1178.98 |
67.6 % |
63.6 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1054.14 |
3 |
1081.91 |
54.4 % |
50 % |
Clara SALA PÉREZ |
FEMECV |
1004.92 |
4 |
1031.22 |
47.1 % |
42.8 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1102.11 |
5 |
1126.57 |
60.7 % |
56.4 % |
Maria FARRÉ PRIM |
FEEC |
1028.21 |
6 |
1051.25 |
50 % |
45.6 % |
Erika CARRASCO AGUILA |
FMM |
1054.54 |
7 |
1075.91 |
53.5 % |
49.1 % |
Udane MUGICA LASA |
EMF-FVM |
1031.80 |
8 |
1051.63 |
50.1 % |
45.7 % |
Ines ALLENDE LOPEZ |
EMF-FVM |
1045.92 |
9 |
1064.11 |
51.9 % |
47.4 % |
Edurne MARTÍNEZ ALMENDROS |
FDMESCyL |
995.05 |
10 |
1011.77 |
44.3 % |
40 % |
Maite VILA LÓPEZ |
FEXME |
1018.74 |
11 |
1033.80 |
47.5 % |
43.1 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1022.43 |
12 |
1035.88 |
47.8 % |
43.4 % |
Loreto PEINADO FRANGANILLO |
FMM |
1008.25 |
13 |
1020.14 |
45.5 % |
41.2 % |
Aina VILA CANTERO |
FEEC |
1044.80 |
14 |
1055.00 |
50.5 % |
46.1 % |
Candela AMADOR DEL CASTILLO |
FMM |
1032.72 |
15 |
1041.35 |
48.6 % |
44.2 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
1035.31 |
16 |
1042.33 |
48.7 % |
44.3 % |
Amanda BECERRA ESPINOSA |
FEXME |
1013.02 |
17 |
1018.50 |
45.3 % |
41 % |
Martina MUÑIZ VALENCIA |
FMM |
1035.46 |
18 |
1039.28 |
48.3 % |
43.9 % |
Meia LEÓN VILCHES |
FEXME |
983.40 |
18 |
987.35 |
40.9 % |
36.7 % |
Paula HUERGO MIYAR |
FEMPA |
939.58 |
20 |
940.44 |
34.6 % |
30.7 % |
Berta GONZÁLEZ MARTÍNEZ |
FDMCM |
984.91 |
21 |
984.06 |
40.4 % |
36.3 % |
Elna ROTGÉS CASELLAS |
FEEC |
1000.00 |
22 |
997.62 |
42.3 % |
38.1 % |
Naroa AYERDI ARIZ |
FNDME |
1014.95 |
23 |
1010.82 |
44.2 % |
39.9 % |
Alba DÍAZ MARTÍNEZ |
FEMECV |
987.03 |
24 |
981.37 |
40.1 % |
35.9 % |
Elba VERGÉS SOLÉ |
FEEC |
982.49 |
24 |
976.85 |
39.5 % |
35.3 % |
Elena FERREIRO RODRIGUEZ |
FEGAMON |
989.36 |
24 |
983.70 |
40.4 % |
36.2 % |
Eva RABADÁN GARCÍA |
FDMCM |
973.35 |
24 |
967.73 |
38.2 % |
34.1 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
945.64 |
24 |
940.09 |
34.5 % |
30.7 % |
Noa PERSSON FERNÁNDEZ |
FADMES |
985.19 |
24 |
979.54 |
39.8 % |
35.7 % |
Nora ECHEVARRIA NUÑEZ |
EMF-FVM |
969.67 |
24 |
964.06 |
37.7 % |
33.7 % |
Sofia PÉREZ PEREA |
FMM |
967.34 |
24 |
961.73 |
37.4 % |
33.4 % |
Swann LAMBLIN BURGUET |
FEEC |
1035.05 |
24 |
1029.27 |
46.8 % |
42.5 % |
Enara MALO SANTOS |
FNDME |
1000.00 |
24 |
994.42 |
41.9 % |
37.7 % |
Gaia POLINI MARTÍNEZ |
FEEC |
1000.00 |
24 |
994.42 |
41.9 % |
37.7 % |
Sara SANMARTÍN CALVO |
FNDME |
1000.00 |
24 |
994.42 |
41.9 % |
37.7 % |
Carla PEREZ AMBRONA |
FMM |
943.88 |
36 |
919.13 |
31.9 % |
28.1 % |
Emma QUEIJO NAVEIRA |
FEGAMON |
946.72 |
36 |
921.97 |
32.2 % |
28.5 % |
Nora GARCÍA MAESTU |
FEGAMON |
986.18 |
36 |
961.33 |
37.3 % |
33.3 % |
Asia LATORRE CORO |
FAM |
1000.00 |
36 |
975.22 |
39.2 % |
35.1 % |
Lucía LÓPEZ SÁNCHEZ |
FEXME |
992.20 |
40 |
960.93 |
37.3 % |
33.3 % |
Anna Sofia BETHENCOURT NEMECKOVA |
FECAMON |
977.54 |
41 |
944.71 |
35.1 % |
31.2 % |
Geila MACIÀ MARTÍN |
FEEC |
1178.98 |
67.6 % |
63.6 % |
Júlia BENACH ZUBERO |
FEEC |
1173.06 |
66.8 % |
62.8 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1126.57 |
60.7 % |
56.4 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1081.91 |
54.4 % |
50 % |
Erika CARRASCO AGUILA |
FMM |
1075.91 |
53.5 % |
49.1 % |
Emily Charlotte PESCETTO |
FEEC |
1074.92 |
56.7 % |
51.7 % |
Ines ALLENDE LOPEZ |
EMF-FVM |
1064.11 |
51.9 % |
47.4 % |
Laia TAULATS MCDONALD |
FAM-AND |
1063.12 |
55 % |
50 % |
Nathalie Joanna VENDSALU |
FEMECV |
1058.95 |
54.4 % |
49.4 % |
Aina VILA CANTERO |
FEEC |
1055.00 |
50.5 % |
46.1 % |
Maria FERRÉ PRIM |
FEEC |
1051.99 |
55.7 % |
50 % |
Udane MUGICA LASA |
EMF-FVM |
1051.63 |
50.1 % |
45.7 % |
Maria FARRÉ PRIM |
FEEC |
1051.25 |
50 % |
45.6 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCM |
1042.33 |
48.7 % |
44.3 % |
Candela AMADOR DEL CASTILLO |
FMM |
1041.35 |
48.6 % |
44.2 % |
Martina MUÑIZ VALENCIA |
FMM |
1039.28 |
48.3 % |
43.9 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1035.88 |
47.8 % |
43.4 % |
Maite VILA LÓPEZ |
FEXME |
1033.80 |
47.5 % |
43.1 % |
Clara SALA PÉREZ |
FEMECV |
1031.22 |
47.1 % |
42.8 % |
Swann LAMBLIN BURGUET |
FEEC |
1029.27 |
46.8 % |
42.5 % |
India PERSSON FERNÁNDEZ |
FADMES |
1027.94 |
50 % |
45 % |
Loreto PEINADO FRANGANILLO |
FMM |
1020.14 |
45.5 % |
41.2 % |
Amanda BECERRA ESPINOSA |
FEXME |
1018.50 |
45.3 % |
41 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1018.32 |
48.6 % |
43.6 % |
Edurne MARTÍNEZ ALMENDROS |
FDMESCyL |
1011.77 |
44.3 % |
40 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1011.28 |
47.6 % |
42.6 % |
Naroa AYERDI ARIZ |
FNDME |
1010.82 |
44.2 % |
39.9 % |
Elna ROTGÉS CASELLAS |
FEEC |
997.62 |
42.3 % |
38.1 % |
Sofía PEÑA PÉREZ |
FMM |
996.08 |
45.4 % |
40.5 % |
Amaya DEL POZO CARIION |
FMM |
994.93 |
47.8 % |
46 % |
Enara MALO SANTOS |
FNDME |
994.42 |
41.9 % |
37.7 % |
Gaia POLINI MARTÍNEZ |
FEEC |
994.42 |
41.9 % |
37.7 % |
Sara SANMARTÍN CALVO |
FNDME |
994.42 |
41.9 % |
37.7 % |
Amaya DEL POZO CARRION |
FMM |
991.21 |
46 % |
42.7 % |
Alba SÁNCHEZ GARCÍA |
FMRM |
990.11 |
43.5 % |
40.8 % |
Meia LEÓN VILCHES |
FEXME |
987.35 |
40.9 % |
36.7 % |
Berta GONZÁLEZ MARTÍNEZ |
FDMCM |
984.06 |
40.4 % |
36.3 % |
Paula MARTÍNEZ AGUDO |
FMM |
984.02 |
42.7 % |
40 % |
Elena FERREIRO RODRIGUEZ |
FEGAMON |
983.70 |
40.4 % |
36.2 % |
África PIÉDROLA SÁNCHEZ |
FADMES |
982.63 |
42.5 % |
39.8 % |
Patricia LEAL ABAD |
FMRM |
982.49 |
42.5 % |
39.8 % |
Ayla RUBIO GARCIA |
FMM |
982.13 |
46 % |
44.1 % |
Alba DÍAZ MARTÍNEZ |
FEMECV |
981.37 |
40.1 % |
35.9 % |
Sara GUERRERO RODRÍGUEZ |
FDMESCyL |
980.17 |
44.4 % |
41.1 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
980.08 |
43.2 % |
38.3 % |
Noa PERSSON FERNÁNDEZ |
FADMES |
979.54 |
39.8 % |
35.7 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
977.92 |
41.8 % |
39.1 % |
Aitana GARCÍA BERNABEU |
FEMECV |
977.12 |
44 % |
40.7 % |
Elba VERGÉS SOLÉ |
FEEC |
976.85 |
39.5 % |
35.3 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
975.76 |
43.8 % |
40.5 % |
Lucía SÁNCHEZ SANTAMARÍA |
FDMESCyL |
975.76 |
43.8 % |
40.5 % |
Raquel GEIJO RODRÍGUEZ |
FDMESCyL |
975.76 |
43.8 % |
40.5 % |
Asia LATORRE CORO |
FAM |
975.22 |
39.2 % |
35.1 % |
Sofia SUAREZ DIAZ |
FEMPA |
974.08 |
44.6 % |
39 % |
Inés PORRERO MORA |
FDMCM |
973.35 |
41.2 % |
38.5 % |
Ana SECO GABARRI |
FNDME |
971.27 |
40.9 % |
38.2 % |
Cristina CHAMON GARCÍA |
FDMCM |
969.33 |
44.1 % |
42.3 % |
Vega SÁNCHEZ ESCUDERO |
FDMESCyL |
968.89 |
43.8 % |
38.3 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
968.63 |
42.8 % |
39.5 % |
Eva RABADÁN GARCÍA |
FDMCM |
967.73 |
38.2 % |
34.1 % |
Nora ECHEVARRIA NUÑEZ |
EMF-FVM |
964.06 |
37.7 % |
33.7 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
963.24 |
40.8 % |
36 % |
Sofia PÉREZ PEREA |
FMM |
961.73 |
37.4 % |
33.4 % |
Nora GARCÍA MAESTU |
FEGAMON |
961.33 |
37.3 % |
33.3 % |
Lucia LORES REY |
FEGAMON |
961.32 |
41.8 % |
38.5 % |
Lucía LÓPEZ SÁNCHEZ |
FEXME |
960.93 |
37.3 % |
33.3 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
951.23 |
39.1 % |
34.4 % |
Alba MARTÍNEZ LLARÍA |
FMM |
949.85 |
38.9 % |
34.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
948.45 |
38.8 % |
34.1 % |
Anna Sofia BETHENCOURT NEMECKOVA |
FECAMON |
944.71 |
35.1 % |
31.2 % |
Paula HUERGO MIYAR |
FEMPA |
940.44 |
34.6 % |
30.7 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
940.09 |
34.5 % |
30.7 % |
Emma QUEIJO NAVEIRA |
FEGAMON |
921.97 |
32.2 % |
28.5 % |
Carla PEREZ AMBRONA |
FMM |
919.13 |
31.9 % |
28.1 % |
Lara PRIDA SEOANE |
FEGAMON |
917.39 |
33.7 % |
31.2 % |
Alejandra MARTÍN GARCÍA |
FDMCM |
915.89 |
33.5 % |
31 % |
Elo April 2024
-Competitors = r
-
re-instating ‘elo.last.accum’
elo.last.accum <- elo.23.accum
Laia TAULATS MCDONALD |
FAM-AND |
1177.54 |
1 |
1206.17 |
82 % |
67.3 % |
Maria FARRÉ PRIM |
FEEC |
1065.30 |
2 |
1094.33 |
70.5 % |
51.9 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1153.89 |
3 |
1180.83 |
79.7 % |
64 % |
Erika CARRASCO AGUILA |
FMM |
1099.99 |
4 |
1125.17 |
74.1 % |
56.4 % |
Meia LEÓN VILCHES |
FEXME |
998.21 |
5 |
1021.77 |
61.2 % |
41.6 % |
India PERSSON FERNÁNDEZ |
FADMES |
1108.43 |
6 |
1128.03 |
74.4 % |
56.8 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1090.11 |
7 |
1107.94 |
72.1 % |
53.9 % |
Martina MUÑIZ VALENCIA |
FMM |
1055.04 |
8 |
1072.80 |
67.9 % |
48.9 % |
Hirune JACOBS HAMMU |
FECAMON |
1000.00 |
9 |
1016.02 |
60.4 % |
40.8 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1068.47 |
10 |
1080.79 |
68.9 % |
50 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1039.86 |
11 |
1052.01 |
65.2 % |
45.9 % |
Maite VILA LÓPEZ |
FEXME |
1054.63 |
12 |
1064.86 |
66.9 % |
47.7 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1050.55 |
13 |
1057.33 |
65.9 % |
46.6 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
930.86 |
14 |
937.65 |
49.3 % |
30.5 % |
Elba VERGÉS SOLÉ |
FEEC |
970.89 |
15 |
975.69 |
54.7 % |
35.3 % |
Naroa MORALES ALMAZAN |
FNDME |
979.00 |
16 |
980.61 |
55.4 % |
36 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.04 |
17 |
883.37 |
41.5 % |
24.3 % |
Irati ASO ESAIN |
FNDME |
966.13 |
18 |
964.05 |
53.1 % |
33.8 % |
Alba MARTÍNEZ LLARÍA |
FMM |
906.83 |
19 |
903.25 |
44.3 % |
26.5 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1051.35 |
20 |
1046.53 |
64.5 % |
45.1 % |
Marta RIVERA GALLERA |
FMM |
980.65 |
21 |
974.13 |
54.5 % |
35.1 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
952.26 |
22 |
942.75 |
50 % |
31.1 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
977.92 |
23 |
967.65 |
53.6 % |
34.3 % |
Elna ROTGÉS CASELLAS |
FEEC |
997.62 |
23 |
987.30 |
56.4 % |
36.9 % |
Gaia POLINI MARTÍNEZ |
FEEC |
994.42 |
25 |
980.34 |
55.4 % |
35.9 % |
Libe CASTILLO EGUREN |
EMF-FVM |
1000.00 |
26 |
984.02 |
55.9 % |
36.4 % |
Paula HUERGO MIYAR |
FEMPA |
940.44 |
26 |
924.62 |
47.4 % |
28.9 % |
Lara PRIDA SEOANE |
FEGAMON |
917.39 |
28 |
897.86 |
43.6 % |
25.9 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
1000.00 |
29 |
978.38 |
55.1 % |
35.7 % |
Malena ECHALAR CÁRDENAS |
FAM |
1000.00 |
29 |
978.38 |
55.1 % |
35.7 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
952.00 |
31 |
925.55 |
47.5 % |
29 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
895.57 |
31 |
869.47 |
39.6 % |
22.9 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
974.41 |
33 |
944.05 |
50.2 % |
31.3 % |
Lucia LORES REY |
FEGAMON |
889.63 |
33 |
859.80 |
38.3 % |
21.9 % |
Andrea HERREROS BELMAR |
FDMCLM |
1000.00 |
33 |
970.85 |
54 % |
34.7 % |
#####_ Elo History _
Elo Accumulated April_2024
Laia TAULATS MCDONALD |
FAM-AND |
1206.17 |
82 % |
67.3 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1188.20 |
67.7 % |
59.3 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1180.83 |
79.7 % |
64 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
India PERSSON FERNÁNDEZ |
FADMES |
1128.03 |
74.4 % |
56.8 % |
Erika CARRASCO AGUILA |
FMM |
1125.17 |
74.1 % |
56.4 % |
Rebeca PEREZ DUATO |
FAM |
1123.10 |
59 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1116.83 |
58.1 % |
49.1 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1107.94 |
72.1 % |
53.9 % |
Rut MONSECH GASCA |
FEEC |
1105.93 |
56.6 % |
47.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Maria FARRÉ PRIM |
FEEC |
1094.33 |
70.5 % |
51.9 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1080.79 |
68.9 % |
50 % |
Martina MUÑIZ VALENCIA |
FMM |
1072.80 |
67.9 % |
48.9 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1069.06 |
51.3 % |
42.3 % |
Maite VILA LÓPEZ |
FEXME |
1064.86 |
66.9 % |
47.7 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Maria PAREDES RAMOS |
FEXME |
1059.89 |
50 % |
41 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1057.33 |
65.9 % |
46.6 % |
Miriam DIEZ LUENGO |
FMM |
1052.12 |
48.9 % |
39.9 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1046.53 |
64.5 % |
45.1 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Meia LEÓN VILCHES |
FEXME |
1021.77 |
61.2 % |
41.6 % |
Hirune JACOBS HAMMU |
FECAMON |
1016.02 |
60.4 % |
40.8 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Paula TRAVERSO LEBRON |
FEXME |
1004.06 |
42 % |
33.5 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
999.00 |
41.3 % |
32.9 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Elna ROTGÉS CASELLAS |
FEEC |
987.30 |
56.4 % |
36.9 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Libe CASTILLO EGUREN |
EMF-FVM |
984.02 |
55.9 % |
36.4 % |
Naroa MORALES ALMAZAN |
FNDME |
980.61 |
55.4 % |
36 % |
Gaia POLINI MARTÍNEZ |
FEEC |
980.34 |
55.4 % |
35.9 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
978.38 |
55.1 % |
35.7 % |
Malena ECHALAR CÁRDENAS |
FAM |
978.38 |
55.1 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Elba VERGÉS SOLÉ |
FEEC |
975.69 |
54.7 % |
35.3 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
974.27 |
50.8 % |
33.9 % |
Marta RIVERA GALLERA |
FMM |
974.13 |
54.5 % |
35.1 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Nerea PÉREZ PEREA |
FMM |
968.80 |
50 % |
33.2 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
967.65 |
53.6 % |
34.3 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Irati ASO ESAIN |
FNDME |
964.05 |
53.1 % |
33.8 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
961.88 |
36.3 % |
28.3 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
942.75 |
50 % |
31.1 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
937.65 |
49.3 % |
30.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
936.67 |
45.4 % |
29.3 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Alba MARTÍNEZ LLARÍA |
FMM |
903.25 |
44.3 % |
26.5 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
892.56 |
27.6 % |
21 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
María FEO MIGUELA |
FNDME |
886.26 |
26.9 % |
20.4 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.37 |
41.5 % |
24.3 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
869.47 |
39.6 % |
22.9 % |
Lucia LORES REY |
FEGAMON |
859.80 |
38.3 % |
21.9 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Elo April-Abs 2024
-Competitors = r
-
Geila MACIÀ MARTÍN |
FEEC |
1209.55 |
1 |
1239.91 |
71.8 % |
62.5 % |
Rebeca PEREZ DUATO |
FAM |
1123.10 |
2 |
1150.88 |
60.4 % |
50 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1188.20 |
3 |
1213.25 |
68.6 % |
58.9 % |
Júlia BENACH ZUBERO |
FEEC |
1201.96 |
4 |
1224.96 |
70 % |
60.5 % |
Miriam DIEZ LUENGO |
FMM |
1052.12 |
5 |
1072.82 |
49.3 % |
39 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1107.66 |
6 |
1126.04 |
57 % |
46.4 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1116.83 |
7 |
1132.33 |
57.8 % |
47.3 % |
Paula TRAVERSO LEBRON |
FEXME |
1004.06 |
8 |
1017.59 |
41.5 % |
31.7 % |
Isis SANZ PÉREZ |
FAM |
1000.00 |
9 |
1011.36 |
40.6 % |
30.9 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1069.06 |
10 |
1077.38 |
50 % |
39.6 % |
Maria PAREDES RAMOS |
FEXME |
1059.89 |
11 |
1065.79 |
48.3 % |
38 % |
Laia TAULATS MCDONALD |
FAM-AND |
1206.17 |
12 |
1209.00 |
68.1 % |
58.3 % |
India PERSSON FERNÁNDEZ |
FADMES |
1128.03 |
13 |
1128.71 |
57.3 % |
46.8 % |
Martina MUÑIZ VALENCIA |
FMM |
1072.80 |
14 |
1071.26 |
49.1 % |
38.7 % |
Rut MONSECH GASCA |
FEEC |
1105.93 |
15 |
1101.78 |
53.5 % |
43 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1180.83 |
16 |
1173.91 |
63.5 % |
53.3 % |
Erika CARRASCO AGUILA |
FMM |
1125.17 |
17 |
1116.02 |
55.5 % |
45 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
974.27 |
18 |
963.31 |
34.1 % |
25.4 % |
María FEO MIGUELA |
FNDME |
886.26 |
19 |
873.16 |
23.6 % |
16.8 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1080.79 |
20 |
1064.45 |
48.1 % |
37.8 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
999.00 |
21 |
980.55 |
36.4 % |
27.3 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
1000.00 |
22 |
979.36 |
36.3 % |
27.1 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
961.88 |
23 |
938.66 |
31 % |
22.8 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
892.56 |
24 |
867.13 |
23 % |
16.3 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
936.67 |
24 |
911.08 |
27.7 % |
20.1 % |
Nerea PÉREZ PEREA |
FMM |
968.80 |
24 |
943.09 |
31.6 % |
23.2 % |
Sara SAMANIEGO PAMIES |
FEEC |
1000.00 |
24 |
974.43 |
35.6 % |
26.6 % |
#####_ Elo History _
Elo Accumulated April-Abs_2024
Geila MACIÀ MARTÍN |
FEEC |
1239.91 |
71.8 % |
62.5 % |
Júlia BENACH ZUBERO |
FEEC |
1224.96 |
70 % |
60.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1213.25 |
68.6 % |
58.9 % |
Laia TAULATS MCDONALD |
FAM-AND |
1209.00 |
68.1 % |
58.3 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1173.91 |
63.5 % |
53.3 % |
Rebeca PEREZ DUATO |
FAM |
1150.88 |
60.4 % |
50 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1132.33 |
57.8 % |
47.3 % |
India PERSSON FERNÁNDEZ |
FADMES |
1128.71 |
57.3 % |
46.8 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1126.04 |
57 % |
46.4 % |
Erika CARRASCO AGUILA |
FMM |
1116.02 |
55.5 % |
45 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1107.94 |
72.1 % |
53.9 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rut MONSECH GASCA |
FEEC |
1101.78 |
53.5 % |
43 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Maria FARRÉ PRIM |
FEEC |
1094.33 |
70.5 % |
51.9 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1077.38 |
50 % |
39.6 % |
Miriam DIEZ LUENGO |
FMM |
1072.82 |
49.3 % |
39 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Martina MUÑIZ VALENCIA |
FMM |
1071.26 |
49.1 % |
38.7 % |
Maria PAREDES RAMOS |
FEXME |
1065.79 |
48.3 % |
38 % |
Maite VILA LÓPEZ |
FEXME |
1064.86 |
66.9 % |
47.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1064.45 |
48.1 % |
37.8 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1057.33 |
65.9 % |
46.6 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1046.53 |
64.5 % |
45.1 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Meia LEÓN VILCHES |
FEXME |
1021.77 |
61.2 % |
41.6 % |
Paula TRAVERSO LEBRON |
FEXME |
1017.59 |
41.5 % |
31.7 % |
Hirune JACOBS HAMMU |
FECAMON |
1016.02 |
60.4 % |
40.8 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Isis SANZ PÉREZ |
FAM |
1011.36 |
40.6 % |
30.9 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Elna ROTGÉS CASELLAS |
FEEC |
987.30 |
56.4 % |
36.9 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Libe CASTILLO EGUREN |
EMF-FVM |
984.02 |
55.9 % |
36.4 % |
Naroa MORALES ALMAZAN |
FNDME |
980.61 |
55.4 % |
36 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
980.55 |
36.4 % |
27.3 % |
Gaia POLINI MARTÍNEZ |
FEEC |
980.34 |
55.4 % |
35.9 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
979.36 |
36.3 % |
27.1 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
978.38 |
55.1 % |
35.7 % |
Malena ECHALAR CÁRDENAS |
FAM |
978.38 |
55.1 % |
35.7 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Elba VERGÉS SOLÉ |
FEEC |
975.69 |
54.7 % |
35.3 % |
Sara SAMANIEGO PAMIES |
FEEC |
974.43 |
35.6 % |
26.6 % |
Marta RIVERA GALLERA |
FMM |
974.13 |
54.5 % |
35.1 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
967.65 |
53.6 % |
34.3 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Irati ASO ESAIN |
FNDME |
964.05 |
53.1 % |
33.8 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
963.31 |
34.1 % |
25.4 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Nerea PÉREZ PEREA |
FMM |
943.09 |
31.6 % |
23.2 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
942.75 |
50 % |
31.1 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
938.66 |
31 % |
22.8 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
937.65 |
49.3 % |
30.5 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
911.08 |
27.7 % |
20.1 % |
Alba MARTÍNEZ LLARÍA |
FMM |
903.25 |
44.3 % |
26.5 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.37 |
41.5 % |
24.3 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
María FEO MIGUELA |
FNDME |
873.16 |
23.6 % |
16.8 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
869.47 |
39.6 % |
22.9 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
867.13 |
23 % |
16.3 % |
Lucia LORES REY |
FEGAMON |
859.80 |
38.3 % |
21.9 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Elo June 2024
-Competitors = r
-
Laia TAULATS MCDONALD |
FAM-AND |
1209.00 |
1 |
1239.09 |
72.2 % |
63.9 % |
Erika CARRASCO AGUILA |
FMM |
1116.02 |
2 |
1144.00 |
60 % |
50.6 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1173.91 |
3 |
1199.35 |
67.3 % |
58.5 % |
Maria FARRÉ PRIM |
FEEC |
1094.33 |
4 |
1117.64 |
56.3 % |
46.8 % |
Martina MUÑIZ VALENCIA |
FMM |
1071.26 |
5 |
1092.27 |
52.7 % |
43.2 % |
Meia LEÓN VILCHES |
FEXME |
1021.77 |
6 |
1040.58 |
45.3 % |
36.1 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1057.33 |
7 |
1073.65 |
50 % |
40.6 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
937.65 |
8 |
952.02 |
33.2 % |
25.3 % |
India PERSSON FERNÁNDEZ |
FADMES |
1128.71 |
9 |
1140.06 |
59.4 % |
50 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1064.45 |
10 |
1073.63 |
50 % |
40.6 % |
Marta RIVERA GALLERA |
FMM |
974.13 |
11 |
981.26 |
37 % |
28.6 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
978.38 |
12 |
983.12 |
37.3 % |
28.8 % |
Libe CASTILLO EGUREN |
EMF-FVM |
984.02 |
13 |
986.37 |
37.7 % |
29.2 % |
Maite VILA LÓPEZ |
FEXME |
1064.86 |
14 |
1064.56 |
48.7 % |
39.3 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1046.53 |
15 |
1043.92 |
45.7 % |
36.5 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1107.94 |
15 |
1105.13 |
54.5 % |
45 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
967.65 |
17 |
960.58 |
34.3 % |
26.2 % |
Lucia LORES REY |
FEGAMON |
859.80 |
18 |
850.72 |
21.7 % |
15.9 % |
Naroa MORALES ALMAZAN |
FNDME |
980.61 |
19 |
968.75 |
35.3 % |
27.2 % |
Alba MARTÍNEZ LLARÍA |
FMM |
903.25 |
20 |
889.29 |
25.7 % |
19.1 % |
Malena ECHALAR CÁRDENAS |
FAM |
978.38 |
21 |
961.79 |
34.4 % |
26.4 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
942.75 |
22 |
923.91 |
29.7 % |
22.4 % |
Elba VERGÉS SOLÉ |
FEEC |
975.69 |
22 |
956.74 |
33.8 % |
25.8 % |
Irati ASO ESAIN |
FNDME |
964.05 |
22 |
945.14 |
32.3 % |
24.6 % |
Maria SANTOS GONZÁLEZ |
FEXME |
883.37 |
22 |
864.73 |
23.1 % |
17 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
869.47 |
22 |
850.88 |
21.7 % |
15.9 % |
Ainhoa GARCÍA SANTOS |
FMM |
1000.00 |
22 |
981.05 |
37 % |
28.6 % |
Maia LEDESMA PRUNES |
FBME |
1000.00 |
22 |
981.05 |
37 % |
28.6 % |
#####_ Elo History _
Elo Accumulated June_2024
Geila MACIÀ MARTÍN |
FEEC |
1239.91 |
71.8 % |
62.5 % |
Laia TAULATS MCDONALD |
FAM-AND |
1239.09 |
72.2 % |
63.9 % |
Júlia BENACH ZUBERO |
FEEC |
1224.96 |
70 % |
60.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1213.25 |
68.6 % |
58.9 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1199.35 |
67.3 % |
58.5 % |
Rebeca PEREZ DUATO |
FAM |
1150.88 |
60.4 % |
50 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
Erika CARRASCO AGUILA |
FMM |
1144.00 |
60 % |
50.6 % |
India PERSSON FERNÁNDEZ |
FADMES |
1140.06 |
59.4 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1132.33 |
57.8 % |
47.3 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1126.04 |
57 % |
46.4 % |
Maria FARRÉ PRIM |
FEEC |
1117.64 |
56.3 % |
46.8 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1105.13 |
54.5 % |
45 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rut MONSECH GASCA |
FEEC |
1101.78 |
53.5 % |
43 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Martina MUÑIZ VALENCIA |
FMM |
1092.27 |
52.7 % |
43.2 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1077.38 |
50 % |
39.6 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1073.65 |
50 % |
40.6 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1073.63 |
50 % |
40.6 % |
Miriam DIEZ LUENGO |
FMM |
1072.82 |
49.3 % |
39 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Maria PAREDES RAMOS |
FEXME |
1065.79 |
48.3 % |
38 % |
Maite VILA LÓPEZ |
FEXME |
1064.56 |
48.7 % |
39.3 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1043.92 |
45.7 % |
36.5 % |
Meia LEÓN VILCHES |
FEXME |
1040.58 |
45.3 % |
36.1 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Paula TRAVERSO LEBRON |
FEXME |
1017.59 |
41.5 % |
31.7 % |
Hirune JACOBS HAMMU |
FECAMON |
1016.02 |
60.4 % |
40.8 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Isis SANZ PÉREZ |
FAM |
1011.36 |
40.6 % |
30.9 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Elna ROTGÉS CASELLAS |
FEEC |
987.30 |
56.4 % |
36.9 % |
Libe CASTILLO EGUREN |
EMF-FVM |
986.37 |
37.7 % |
29.2 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
983.12 |
37.3 % |
28.8 % |
Marta RIVERA GALLERA |
FMM |
981.26 |
37 % |
28.6 % |
Ainhoa GARCÍA SANTOS |
FMM |
981.05 |
37 % |
28.6 % |
Maia LEDESMA PRUNES |
FBME |
981.05 |
37 % |
28.6 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
980.55 |
36.4 % |
27.3 % |
Gaia POLINI MARTÍNEZ |
FEEC |
980.34 |
55.4 % |
35.9 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
979.36 |
36.3 % |
27.1 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Sara SAMANIEGO PAMIES |
FEEC |
974.43 |
35.6 % |
26.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Naroa MORALES ALMAZAN |
FNDME |
968.75 |
35.3 % |
27.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
963.31 |
34.1 % |
25.4 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Malena ECHALAR CÁRDENAS |
FAM |
961.79 |
34.4 % |
26.4 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
960.58 |
34.3 % |
26.2 % |
Elba VERGÉS SOLÉ |
FEEC |
956.74 |
33.8 % |
25.8 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
952.02 |
33.2 % |
25.3 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Irati ASO ESAIN |
FNDME |
945.14 |
32.3 % |
24.6 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Nerea PÉREZ PEREA |
FMM |
943.09 |
31.6 % |
23.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
938.66 |
31 % |
22.8 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
923.91 |
29.7 % |
22.4 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
911.08 |
27.7 % |
20.1 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Alba MARTÍNEZ LLARÍA |
FMM |
889.29 |
25.7 % |
19.1 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
María FEO MIGUELA |
FNDME |
873.16 |
23.6 % |
16.8 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
867.13 |
23 % |
16.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
864.73 |
23.1 % |
17 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
850.88 |
21.7 % |
15.9 % |
Lucia LORES REY |
FEGAMON |
850.72 |
21.7 % |
15.9 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Elo June-Abs 2024
-Competitors = r
-
Júlia BENACH ZUBERO |
FEEC |
1224.96 |
1 |
1254.63 |
67.9 % |
61.4 % |
Paula TRAVERSO LEBRON |
FEXME |
1017.59 |
2 |
1044.86 |
38.8 % |
32.2 % |
Rebeca PEREZ DUATO |
FAM |
1150.88 |
3 |
1174.14 |
57.1 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1132.33 |
4 |
1152.31 |
54 % |
46.9 % |
Maria PAREDES RAMOS |
FEXME |
1065.79 |
5 |
1082.72 |
44.1 % |
37.1 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1126.04 |
6 |
1139.31 |
52.2 % |
45 % |
Laia TAULATS MCDONALD |
FAM-AND |
1239.09 |
7 |
1248.49 |
67.2 % |
60.5 % |
Maria FARRÉ PRIM |
FEEC |
1117.64 |
8 |
1124.22 |
50 % |
42.9 % |
Miriam DIEZ LUENGO |
FMM |
1072.82 |
9 |
1076.25 |
43.1 % |
36.3 % |
India PERSSON FERNÁNDEZ |
FADMES |
1140.06 |
10 |
1139.79 |
52.2 % |
45.1 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1077.38 |
11 |
1074.05 |
42.8 % |
36 % |
Martina MUÑIZ VALENCIA |
FMM |
1092.27 |
12 |
1085.50 |
44.5 % |
37.5 % |
Erika CARRASCO AGUILA |
FMM |
1144.00 |
13 |
1133.61 |
51.4 % |
44.2 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1199.35 |
14 |
1185.34 |
58.7 % |
51.6 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
979.36 |
15 |
963.01 |
28.3 % |
22.9 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
980.55 |
16 |
960.83 |
28.1 % |
22.7 % |
Isis SANZ PÉREZ |
FAM |
1011.36 |
17 |
988.13 |
31.4 % |
25.5 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1073.63 |
18 |
1046.74 |
39 % |
32.4 % |
María FEO MIGUELA |
FNDME |
873.16 |
18 |
847.13 |
16.9 % |
13.2 % |
Elena POLLÁN GONZÁLEZ |
FBME |
1000.00 |
20 |
966.78 |
28.8 % |
23.3 % |
#####_ Elo History _
Elo Accumulated June-Abs_2024
Júlia BENACH ZUBERO |
FEEC |
1254.63 |
67.9 % |
61.4 % |
Laia TAULATS MCDONALD |
FAM-AND |
1248.49 |
67.2 % |
60.5 % |
Geila MACIÀ MARTÍN |
FEEC |
1239.91 |
71.8 % |
62.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1213.25 |
68.6 % |
58.9 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1185.34 |
58.7 % |
51.6 % |
Rebeca PEREZ DUATO |
FAM |
1174.14 |
57.1 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1152.31 |
54 % |
46.9 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
India PERSSON FERNÁNDEZ |
FADMES |
1139.79 |
52.2 % |
45.1 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1139.31 |
52.2 % |
45 % |
Erika CARRASCO AGUILA |
FMM |
1133.61 |
51.4 % |
44.2 % |
Maria FARRÉ PRIM |
FEEC |
1124.22 |
50 % |
42.9 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1105.13 |
54.5 % |
45 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rut MONSECH GASCA |
FEEC |
1101.78 |
53.5 % |
43 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Martina MUÑIZ VALENCIA |
FMM |
1085.50 |
44.5 % |
37.5 % |
Maria PAREDES RAMOS |
FEXME |
1082.72 |
44.1 % |
37.1 % |
Miriam DIEZ LUENGO |
FMM |
1076.25 |
43.1 % |
36.3 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1074.05 |
42.8 % |
36 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1073.65 |
50 % |
40.6 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Maite VILA LÓPEZ |
FEXME |
1064.56 |
48.7 % |
39.3 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1046.74 |
39 % |
32.4 % |
Paula TRAVERSO LEBRON |
FEXME |
1044.86 |
38.8 % |
32.2 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1043.92 |
45.7 % |
36.5 % |
Meia LEÓN VILCHES |
FEXME |
1040.58 |
45.3 % |
36.1 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Hirune JACOBS HAMMU |
FECAMON |
1016.02 |
60.4 % |
40.8 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Isis SANZ PÉREZ |
FAM |
988.13 |
31.4 % |
25.5 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Elna ROTGÉS CASELLAS |
FEEC |
987.30 |
56.4 % |
36.9 % |
Libe CASTILLO EGUREN |
EMF-FVM |
986.37 |
37.7 % |
29.2 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
983.12 |
37.3 % |
28.8 % |
Marta RIVERA GALLERA |
FMM |
981.26 |
37 % |
28.6 % |
Ainhoa GARCÍA SANTOS |
FMM |
981.05 |
37 % |
28.6 % |
Maia LEDESMA PRUNES |
FBME |
981.05 |
37 % |
28.6 % |
Gaia POLINI MARTÍNEZ |
FEEC |
980.34 |
55.4 % |
35.9 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Sara SAMANIEGO PAMIES |
FEEC |
974.43 |
35.6 % |
26.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Naroa MORALES ALMAZAN |
FNDME |
968.75 |
35.3 % |
27.2 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Elena POLLÁN GONZÁLEZ |
FBME |
966.78 |
28.8 % |
23.3 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
963.31 |
34.1 % |
25.4 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
963.01 |
28.3 % |
22.9 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Malena ECHALAR CÁRDENAS |
FAM |
961.79 |
34.4 % |
26.4 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
960.83 |
28.1 % |
22.7 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
960.58 |
34.3 % |
26.2 % |
Elba VERGÉS SOLÉ |
FEEC |
956.74 |
33.8 % |
25.8 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
952.02 |
33.2 % |
25.3 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Irati ASO ESAIN |
FNDME |
945.14 |
32.3 % |
24.6 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Nerea PÉREZ PEREA |
FMM |
943.09 |
31.6 % |
23.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
938.66 |
31 % |
22.8 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
923.91 |
29.7 % |
22.4 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
911.08 |
27.7 % |
20.1 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Alba MARTÍNEZ LLARÍA |
FMM |
889.29 |
25.7 % |
19.1 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
867.13 |
23 % |
16.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
864.73 |
23.1 % |
17 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
850.88 |
21.7 % |
15.9 % |
Lucia LORES REY |
FEGAMON |
850.72 |
21.7 % |
15.9 % |
María FEO MIGUELA |
FNDME |
847.13 |
16.9 % |
13.2 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Elo Nov 2024
-Competitors = r
-
Maria FARRÉ PRIM |
FEEC |
1124.22 |
1 |
1154.57 |
62.2 % |
50 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1185.34 |
2 |
1213.05 |
69.7 % |
58.3 % |
Erika CARRASCO AGUILA |
FMM |
1133.61 |
3 |
1159.00 |
62.8 % |
50.6 % |
Laia TAULATS MCDONALD |
FAM-AND |
1248.49 |
4 |
1271.12 |
76.3 % |
66.2 % |
Martina MUÑIZ VALENCIA |
FMM |
1085.50 |
5 |
1106.13 |
55.5 % |
43.1 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1073.65 |
6 |
1091.85 |
53.4 % |
41.1 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1105.13 |
7 |
1120.77 |
57.5 % |
45.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1139.79 |
8 |
1152.86 |
62 % |
49.8 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1046.74 |
9 |
1057.65 |
48.5 % |
36.4 % |
Hirune JACOBS HAMMU |
FECAMON |
1016.02 |
10 |
1024.58 |
43.8 % |
32.1 % |
Libe CASTILLO EGUREN |
EMF-FVM |
986.37 |
11 |
992.57 |
39.3 % |
28.2 % |
Maite VILA LÓPEZ |
FEXME |
1064.56 |
12 |
1068.03 |
50 % |
37.8 % |
Meia LEÓN VILCHES |
FEXME |
1040.58 |
13 |
1041.67 |
46.2 % |
34.3 % |
Elba VERGÉS SOLÉ |
FEEC |
956.74 |
14 |
955.66 |
34.4 % |
24.1 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
952.02 |
15 |
948.50 |
33.4 % |
23.4 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1043.92 |
16 |
1037.61 |
45.6 % |
33.8 % |
Irati ASO ESAIN |
FNDME |
945.14 |
17 |
936.72 |
32 % |
22.2 % |
Maria SANTOS GONZÁLEZ |
FEXME |
864.73 |
18 |
854.11 |
22.6 % |
15.1 % |
Marta RIVERA GALLERA |
FMM |
981.26 |
19 |
967.79 |
36 % |
25.4 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
983.12 |
20 |
967.18 |
35.9 % |
25.4 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
960.58 |
21 |
942.26 |
32.7 % |
22.8 % |
Naroa MORALES ALMAZAN |
FNDME |
968.75 |
22 |
947.94 |
33.4 % |
23.3 % |
Rosa COLL ESCALAS |
FBME |
1000.00 |
22 |
979.12 |
37.5 % |
26.7 % |
Gaia POLINI MARTÍNEZ |
FEEC |
980.34 |
24 |
954.56 |
34.2 % |
24 % |
Elna ROTGÉS CASELLAS |
FEEC |
987.30 |
25 |
959.04 |
34.8 % |
24.5 % |
Maia LEDESMA PRUNES |
FBME |
981.05 |
25 |
952.81 |
34 % |
23.8 % |
Malena ECHALAR CÁRDENAS |
FAM |
961.79 |
25 |
933.62 |
31.6 % |
21.9 % |
#####_ Elo History _
Elo in time
Elo Accumulated Nov_2024
Laia TAULATS MCDONALD |
FAM-AND |
1271.12 |
76.3 % |
66.2 % |
Júlia BENACH ZUBERO |
FEEC |
1254.63 |
67.9 % |
61.4 % |
Geila MACIÀ MARTÍN |
FEEC |
1239.91 |
71.8 % |
62.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1213.25 |
68.6 % |
58.9 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1213.05 |
69.7 % |
58.3 % |
Rebeca PEREZ DUATO |
FAM |
1174.14 |
57.1 % |
50 % |
Erika CARRASCO AGUILA |
FMM |
1159.00 |
62.8 % |
50.6 % |
Maria FARRÉ PRIM |
FEEC |
1154.57 |
62.2 % |
50 % |
India PERSSON FERNÁNDEZ |
FADMES |
1152.86 |
62 % |
49.8 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1152.31 |
54 % |
46.9 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1139.31 |
52.2 % |
45 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1120.77 |
57.5 % |
45.2 % |
Martina MUÑIZ VALENCIA |
FMM |
1106.13 |
55.5 % |
43.1 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rut MONSECH GASCA |
FEEC |
1101.78 |
53.5 % |
43 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
67.7 % |
51 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1091.85 |
53.4 % |
41.1 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Maria PAREDES RAMOS |
FEXME |
1082.72 |
44.1 % |
37.1 % |
Miriam DIEZ LUENGO |
FMM |
1076.25 |
43.1 % |
36.3 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1074.05 |
42.8 % |
36 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Maite VILA LÓPEZ |
FEXME |
1068.03 |
50 % |
37.8 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1057.65 |
48.5 % |
36.4 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Paula TRAVERSO LEBRON |
FEXME |
1044.86 |
38.8 % |
32.2 % |
Meia LEÓN VILCHES |
FEXME |
1041.67 |
46.2 % |
34.3 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1037.61 |
45.6 % |
33.8 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Hirune JACOBS HAMMU |
FECAMON |
1024.58 |
43.8 % |
32.1 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Libe CASTILLO EGUREN |
EMF-FVM |
992.57 |
39.3 % |
28.2 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Isis SANZ PÉREZ |
FAM |
988.13 |
31.4 % |
25.5 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Ainhoa GARCÍA SANTOS |
FMM |
981.05 |
37 % |
28.6 % |
Rosa COLL ESCALAS |
FBME |
979.12 |
37.5 % |
26.7 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Sara SAMANIEGO PAMIES |
FEEC |
974.43 |
35.6 % |
26.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Marta RIVERA GALLERA |
FMM |
967.79 |
36 % |
25.4 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
967.18 |
35.9 % |
25.4 % |
Elena POLLÁN GONZÁLEZ |
FBME |
966.78 |
28.8 % |
23.3 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
45.5 % |
40.5 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
963.31 |
34.1 % |
25.4 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
963.01 |
28.3 % |
22.9 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
960.83 |
28.1 % |
22.7 % |
Elna ROTGÉS CASELLAS |
FEEC |
959.04 |
34.8 % |
24.5 % |
Elba VERGÉS SOLÉ |
FEEC |
955.66 |
34.4 % |
24.1 % |
Gaia POLINI MARTÍNEZ |
FEEC |
954.56 |
34.2 % |
24 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Maia LEDESMA PRUNES |
FBME |
952.81 |
34 % |
23.8 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
34.5 % |
26.8 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
948.50 |
33.4 % |
23.4 % |
Naroa MORALES ALMAZAN |
FNDME |
947.94 |
33.4 % |
23.3 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Nerea PÉREZ PEREA |
FMM |
943.09 |
31.6 % |
23.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
942.26 |
32.7 % |
22.8 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
938.66 |
31 % |
22.8 % |
Irati ASO ESAIN |
FNDME |
936.72 |
32 % |
22.2 % |
Malena ECHALAR CÁRDENAS |
FAM |
933.62 |
31.6 % |
21.9 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
923.91 |
29.7 % |
22.4 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
911.08 |
27.7 % |
20.1 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Alba MARTÍNEZ LLARÍA |
FMM |
889.29 |
25.7 % |
19.1 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
38.5 % |
23.7 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
867.13 |
23 % |
16.3 % |
Maria SANTOS GONZÁLEZ |
FEXME |
854.11 |
22.6 % |
15.1 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
850.88 |
21.7 % |
15.9 % |
Lucia LORES REY |
FEGAMON |
850.72 |
21.7 % |
15.9 % |
María FEO MIGUELA |
FNDME |
847.13 |
16.9 % |
13.2 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
18.7 % |
13.8 % |
Elo Nov-Abs 2024
-Competitors = r
-
Júlia BENACH ZUBERO |
FEEC |
1254.63 |
1 |
1284.79 |
68.2 % |
62 % |
Maria PAREDES RAMOS |
FEXME |
1082.72 |
2 |
1110.87 |
44.1 % |
37.5 % |
Rebeca PEREZ DUATO |
FAM |
1174.14 |
3 |
1199.42 |
56.8 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1152.31 |
4 |
1175.10 |
53.3 % |
46.5 % |
Paula TRAVERSO LEBRON |
FEXME |
1044.86 |
5 |
1065.46 |
37.8 % |
31.6 % |
Maria FARRÉ PRIM |
FEEC |
1154.57 |
6 |
1172.23 |
52.9 % |
46.1 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1074.05 |
7 |
1089.43 |
41.1 % |
34.7 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1139.31 |
8 |
1151.90 |
50 % |
43.2 % |
India PERSSON FERNÁNDEZ |
FADMES |
1152.86 |
9 |
1162.85 |
51.6 % |
44.8 % |
Silvia FAYOS LOZADA |
FEMECV |
948.56 |
10 |
956.69 |
24.5 % |
19.8 % |
Martina MUÑIZ VALENCIA |
FMM |
1106.13 |
11 |
1111.16 |
44.2 % |
37.6 % |
Laia TAULATS MCDONALD |
FAM-AND |
1271.12 |
12 |
1273.08 |
66.8 % |
60.4 % |
Meia LEÓN VILCHES |
FEXME |
1041.67 |
13 |
1041.80 |
34.7 % |
28.8 % |
Mar CARREÑO ESCOBAR |
FADMES |
1097.03 |
14 |
1094.41 |
41.8 % |
35.3 % |
Erika CARRASCO AGUILA |
FMM |
1159.00 |
15 |
1153.61 |
50.2 % |
43.4 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1213.05 |
16 |
1204.93 |
57.6 % |
50.8 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
963.01 |
17 |
953.17 |
24.2 % |
19.5 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
960.83 |
18 |
948.44 |
23.7 % |
19.1 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1057.65 |
19 |
1042.37 |
34.7 % |
28.8 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
804.94 |
19 |
790.41 |
11.1 % |
8.7 % |
Isis SANZ PÉREZ |
FAM |
988.13 |
21 |
967.97 |
25.8 % |
20.9 % |
Jordana PEREZ GRANELL |
FEMECV |
887.17 |
22 |
864.76 |
16.1 % |
12.7 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
942.26 |
23 |
917.13 |
20.6 % |
16.5 % |
María FEO MIGUELA |
FNDME |
847.13 |
24 |
819.71 |
12.9 % |
10.1 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
867.13 |
25 |
837.10 |
14 % |
11 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
965.52 |
25 |
935.20 |
22.3 % |
17.9 % |
#####_ Elo History _
Elo Accumulated June-Abs_2024
Júlia BENACH ZUBERO |
FEEC |
1284.79 |
68.2 % |
62 % |
Laia TAULATS MCDONALD |
FAM-AND |
1273.08 |
66.8 % |
60.4 % |
Geila MACIÀ MARTÍN |
FEEC |
1239.91 |
71.8 % |
62.5 % |
Iziar MARTÍNEZ ALMENDROS |
FDMESCyL |
1213.25 |
68.6 % |
58.9 % |
Maddi AGIRRE ZUBELDIA |
EMF-FVM |
1204.93 |
57.6 % |
50.8 % |
Rebeca PEREZ DUATO |
FAM |
1199.42 |
56.8 % |
50 % |
Lucía SEMPERE GONZÁLEZ |
FEMECV |
1175.10 |
53.3 % |
46.5 % |
Maria FARRÉ PRIM |
FEEC |
1172.23 |
52.9 % |
46.1 % |
India PERSSON FERNÁNDEZ |
FADMES |
1162.85 |
51.6 % |
44.8 % |
Erika CARRASCO AGUILA |
FMM |
1153.61 |
50.2 % |
43.4 % |
Emily Charlotte PESCETTO BUDDEN |
FEEC |
1151.90 |
50 % |
43.2 % |
Aida TORRES ILLAMOLA |
FEEC |
1150.00 |
62.7 % |
53.9 % |
Intza ELIZALDE LARRARTE |
EMF-FVM |
1120.77 |
57.5 % |
45.2 % |
Martina MUÑIZ VALENCIA |
FMM |
1111.16 |
44.2 % |
37.6 % |
Maria PAREDES RAMOS |
FEXME |
1110.87 |
44.1 % |
37.5 % |
Andrea RODRIGUEZ SALAS |
FEXME |
1104.85 |
64.6 % |
53.1 % |
Rut MONSECH GASCA |
FEEC |
1101.78 |
53.5 % |
43 % |
Mar CARREÑO ESCOBAR |
FADMES |
1094.41 |
41.8 % |
35.3 % |
Elur ARTEAGA ARZALLUS |
EMF-FVM |
1091.85 |
53.4 % |
41.1 % |
Michelle Paola MATHEUS GUILLEN |
FMM |
1089.43 |
41.1 % |
34.7 % |
Ainhize BELAR BARRUTIA |
EMF-FVM |
1086.30 |
57.6 % |
44.7 % |
Miriam DIEZ LUENGO |
FMM |
1076.25 |
43.1 % |
36.3 % |
Lucia MIRANDA CID |
FEEC |
1072.49 |
51.8 % |
42.8 % |
Maite VILA LÓPEZ |
FEXME |
1068.03 |
50 % |
37.8 % |
Paula TRAVERSO LEBRON |
FEXME |
1065.46 |
37.8 % |
31.6 % |
Vera BRIONGOS MARTÍN |
FEXME |
1063.39 |
54.3 % |
45.7 % |
Kanae Maria FRAILE ITAGAKI |
FECAMON |
1052.01 |
65.2 % |
45.9 % |
Ainhoa USKOLA SAENZ DE OGER |
EMF-FVM |
1042.37 |
34.7 % |
28.8 % |
Meia LEÓN VILCHES |
FEXME |
1041.80 |
34.7 % |
28.8 % |
Carmen SÁNCHEZ JIMENEZ |
FDMCLM |
1037.61 |
45.6 % |
33.8 % |
Irati GUENETXEA BENGOA |
EMF-FVM |
1034.93 |
48.1 % |
43.6 % |
Maria BENACH ZUBERO |
FEEC |
1024.85 |
54.7 % |
50 % |
Hirune JACOBS HAMMU |
FECAMON |
1024.58 |
43.8 % |
32.1 % |
Nora STAURSET HOVDE |
FEMECV |
1012.93 |
52.5 % |
49.4 % |
Brisa CALDERON BRUÑUEL |
FEMECV |
1008.41 |
51.2 % |
39.4 % |
Aitana NAVARIDAS MARTIN |
FNDME |
1000.89 |
50.1 % |
42.3 % |
Sofía PEÑA PÉREZ |
FMM |
998.50 |
49.7 % |
38 % |
Candela SEPÚLVEDA FERRÍS |
FEMECV |
997.60 |
49.6 % |
37.9 % |
Irati ZABALA MUXIKA |
EMF-FVM |
995.45 |
44.6 % |
32.4 % |
Libe CASTILLO EGUREN |
EMF-FVM |
992.57 |
39.3 % |
28.2 % |
Aitziber URRUTIA BARRUETA |
EMF-FVM |
991.93 |
50 % |
45.3 % |
Candela GARCIA VALLINA |
FEMPA |
990.79 |
49.1 % |
44 % |
Julia PACHECO PORRAS |
FDMCM |
990.17 |
60.8 % |
50 % |
Rocío LEAL ABAD |
FMRM |
987.33 |
47.4 % |
40.5 % |
Natalia PÉREZ VALLE |
FMM |
986.13 |
47.9 % |
36.4 % |
Ainhoa GARCÍA SANTOS |
FMM |
981.05 |
37 % |
28.6 % |
Rosa COLL ESCALAS |
FBME |
979.12 |
37.5 % |
26.7 % |
Amaya DEL POZO CARRION |
FMM |
978.59 |
38.5 % |
30.3 % |
Cristina JARDON SUAREZ |
FEMPA |
976.51 |
47.8 % |
43.1 % |
Sara FERNANDEZ ALVES |
FMM |
976.51 |
46.1 % |
43.7 % |
Marina REVERT LLOMPART |
FBME |
976.12 |
38.2 % |
30 % |
Sara SAMANIEGO PAMIES |
FEEC |
974.43 |
35.6 % |
26.6 % |
Mariana SOUSA |
FCMP |
973.43 |
46.1 % |
38.5 % |
Paula MENESES BALLESTEROS |
FDMCM |
971.85 |
45.1 % |
38.4 % |
Antia FREITAS RIAL |
FEXME |
971.50 |
37.5 % |
29.5 % |
Andrea HERREROS BELMAR |
FDMCLM |
970.85 |
54 % |
34.7 % |
Ana MARTINEZ BELDA |
FMRM |
969.87 |
45.6 % |
38 % |
Claudia LARA PINILLOS |
FADMES |
969.65 |
40.9 % |
32.9 % |
Isis SANZ PÉREZ |
FAM |
967.97 |
25.8 % |
20.9 % |
Marta RIVERA GALLERA |
FMM |
967.79 |
36 % |
25.4 % |
Iune LA HIDALGA OTAMENDI |
EMF-FVM |
967.19 |
40.7 % |
28.9 % |
Amalia GARCÍA-COSIO ROMAGOSA |
FBME |
967.18 |
35.9 % |
25.4 % |
Elena POLLÁN GONZÁLEZ |
FBME |
966.78 |
28.8 % |
23.3 % |
Aloia BELTRAN RODRIGUEZ |
FEGAMON |
966.40 |
44.7 % |
42.3 % |
Valery Alejandra GONZALEZ ALFONSO |
FECAMON |
963.65 |
36.5 % |
28.5 % |
Natalia VALE FERNÁNDEZ |
FEGAMON |
963.31 |
34.1 % |
25.4 % |
Marina PABLO LASSA |
FAM |
961.99 |
44.5 % |
36.9 % |
Elna ROTGÉS CASELLAS |
FEEC |
959.04 |
34.8 % |
24.5 % |
Silvia FAYOS LOZADA |
FEMECV |
956.69 |
24.5 % |
19.8 % |
Elba VERGÉS SOLÉ |
FEEC |
955.66 |
34.4 % |
24.1 % |
Gaia POLINI MARTÍNEZ |
FEEC |
954.56 |
34.2 % |
24 % |
Idoia MARTÍNEZ IRISARRI |
EMF-FVM |
953.17 |
24.2 % |
19.5 % |
Garazi GURRUTXAGA AGIRRE |
EMF-FVM |
953.10 |
43.5 % |
35.7 % |
Maia LEDESMA PRUNES |
FBME |
952.81 |
34 % |
23.8 % |
Edurne GONZÁLEZ-LONGORIA MERINO |
FCDME |
950.48 |
36.3 % |
32.2 % |
Nayara PANTIGA GUTIERREZ |
FEMPA |
948.50 |
33.4 % |
23.4 % |
Ana TORREGROSA MARTÍNEZ |
FEMECV |
948.44 |
23.7 % |
19.1 % |
Naroa MORALES ALMAZAN |
FNDME |
947.94 |
33.4 % |
23.3 % |
Irene Xiaozhao PEREZ PRADO |
FAM |
944.05 |
50.2 % |
31.3 % |
Sara Libertad DÍAZ DE SARRALDE |
FMM |
943.93 |
37.5 % |
26.2 % |
Nerea PÉREZ PEREA |
FMM |
943.09 |
31.6 % |
23.2 % |
Haizea OSES SAIZ |
EMF-FVM |
942.34 |
37.3 % |
26.1 % |
Samara FERRAGUT MARTINEZ |
FBME |
940.24 |
41.9 % |
37 % |
Lidia ALVAREZ RODRIGUEZ |
FEMPA |
939.18 |
53.6 % |
42.7 % |
Aitana PICÓ I LÓPEZ |
FEMECV |
938.66 |
31 % |
22.8 % |
Irati ASO ESAIN |
FNDME |
936.72 |
32 % |
22.2 % |
Marina HIDALGO VALDERRÁBANO |
FADMES |
935.20 |
22.3 % |
17.9 % |
Malena ECHALAR CÁRDENAS |
FAM |
933.62 |
31.6 % |
21.9 % |
Laura VERDASCO URIZAL |
FMM |
926.40 |
39.8 % |
32.3 % |
Leire SÁNCHEZ GARCÍA |
FMRM |
925.55 |
47.5 % |
29 % |
Paula HUERGO MIYAR |
FEMPA |
924.62 |
47.4 % |
28.9 % |
Carlota BÖCK VÁZQUEZ |
FEGAMON |
923.91 |
29.7 % |
22.4 % |
Aroa MARTÍNEZ SÁNCHEZ |
FDMCM |
923.86 |
38.4 % |
32.1 % |
Alejandra MUÑOZ RODRÍGUEZ |
FADMES |
917.13 |
20.6 % |
16.5 % |
Mara RODRIGUEZ MÉNDEZ |
FEGAMON |
911.08 |
27.7 % |
20.1 % |
Lara PRIDA SEOANE |
FEGAMON |
897.86 |
43.6 % |
25.9 % |
Alba MARTÍNEZ LLARÍA |
FMM |
889.29 |
25.7 % |
19.1 % |
Oihane RUIZ DE ARGANDOÑA |
FNDME |
884.00 |
29.8 % |
20.1 % |
Elena CARAMES GONZALEZ |
FEMPA |
879.50 |
33.3 % |
23.6 % |
Jordana PEREZ GRANELL |
FEMECV |
864.76 |
16.1 % |
12.7 % |
Maria SANTOS GONZÁLEZ |
FEXME |
854.11 |
22.6 % |
15.1 % |
Paula LUCIO PANIAGUA |
FDMESCyL |
850.88 |
21.7 % |
15.9 % |
Lucia LORES REY |
FEGAMON |
850.72 |
21.7 % |
15.9 % |
Alba GÓMEZ CALATAYUD |
FEMECV |
837.10 |
14 % |
11 % |
María FEO MIGUELA |
FNDME |
819.71 |
12.9 % |
10.1 % |
Concepción María BALLESTEROS PÉREZ |
FADMES |
790.41 |
11.1 % |
8.7 % |
#### #####
## Up-coming SEASON
LS0tDQp0aXRsZTogIkVsb19TcG9ydC5DbGltYmluZ19FU1BfU3ViMThGIg0KYXV0aG9yOiAiRmVkZXJpY28gSi4gVmlsbGF0b3JvIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KLS0tDQoNCiMjIyMjIEZ1ZW50ZTogW2h0dHBzOi8vZmVkbWUucmVzdWx0cy5pbmZvXShodHRwczovL2ZlZG1lLnJlc3VsdHMuaW5mby8pDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPVRSVUV9DQpsaWJyYXJ5KGtuaXRyKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBlY2hvID0gRkFMU0UsDQoJbWVzc2FnZSA9IEZBTFNFLA0KICB3YXJuaW5nID0gRkFMU0UsDQoJaW5jbHVkZSA9IFRSVUUNCikNCmBgYA0KDQpgYGB7ciBwYWNrYWdlcywgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmlmKCFyZXF1aXJlKHRpZHl2ZXJzZSkpe2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIscmVwb3MgPSAiaHR0cDovL2NyYW4udXMuci1wcm9qZWN0Lm9yZyIpfQ0KaWYoIXJlcXVpcmUoZ29vZ2xlc2hlZXRzNCkpe2luc3RhbGwucGFja2FnZXMoImdvb2dsZXNoZWV0czQiKX0NCmlmKCFyZXF1aXJlKGdvb2dsZWRyaXZlKSl7aW5zdGFsbC5wYWNrYWdlcygiZ29vZ2xlZHJpdmUiKX0NCmlmKCFyZXF1aXJlKGRwbHlyKSl7aW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKX0NCmlmKCFyZXF1aXJlKGh0dHIyKSl7aW5zdGFsbC5wYWNrYWdlcygiaHR0cjIiKX0NCmlmKCFyZXF1aXJlKGpzb25saXRlKSl7aW5zdGFsbC5wYWNrYWdlcygianNvbmxpdGUiKX0NCmlmKCFyZXF1aXJlKFJzZWxlbml1bSkpe2luc3RhbGwucGFja2FnZXMoIlJzZWxlbml1bSIpfQ0KaWYoIXJlcXVpcmUoY2hyb21vdGUpKXtpbnN0YWxsLnBhY2thZ2VzKCJjaHJvbW90ZSIpfQ0KaWYoIXJlcXVpcmUocHVycnIpKXtpbnN0YWxsLnBhY2thZ2VzKCJwdXJyciIpfQ0KaWYoIXJlcXVpcmUod2RtYW4pKXtpbnN0YWxsLnBhY2thZ2VzKCJ3ZG1hbiIpfQ0KaWYoIXJlcXVpcmUoRFQpKXtpbnN0YWxsLnBhY2thZ2VzKCJEVCIpfQ0KaWYoIXJlcXVpcmUocGxvdGx5KSl7aW5zdGFsbC5wYWNrYWdlcygicGxvdGx5Iil9DQojIw0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShjaHJvbW90ZSkNCmxpYnJhcnkocHVycnIpDQpsaWJyYXJ5KHdkbWFuKQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocnZlc3QpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShqc29ubGl0ZSkNCmxpYnJhcnkoUlNlbGVuaXVtKQ0KDQpsaWJyYXJ5KGdvb2dsZXNoZWV0czQpDQpsaWJyYXJ5KGdvb2dsZWRyaXZlKQ0KDQpgYGANCg0KIyMjIyMgUmVhZGluZyBEYXRhDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFfQ0KDQpvcHRpb25zKGdhcmdsZV9vYXV0aF9lbWFpbCA9ICJ2aWxsYXRvcm9wYXpmakBkYXRhYW5hbHlzaXNsYWIuY29tIikNCg0Kc3MgPC0gImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFrWFlVSDlfUVdOQmJkSWhWa2dydGhYQWcyU1VDNXA2LXJCNjUxSGx5RzZrL2VkaXQ/dXNwPXNoYXJpbmciDQpob2phID0gMg0KcmFuZ28gPSAiQTE6TTU0MzUiDQpyYW5rcyA8LSByZWFkX3NoZWV0KHNzLA0KICAgICAgICAgICAgICAgIHNoZWV0PWhvamEsDQogICAgICAgICAgICAgICAgcmFuZ2U9IHJhbmdvLCANCiAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBUUlVFKQ0KDQpyYW5rcyA8LSAgcmFua3MgJT4lDQogIG11dGF0ZV9pZihpcy5jaGFyYWN0ZXIsIGFzLmZhY3RvcikNCg0KYGBgDQoNCiMjIEJMT0MgMjAyMi0yMDI0DQoNCmBgYHtyIGluY2x1ZGU9RkFMU0UsIHJvd3MucHJpbnQ9IDh9DQpibG9jLlN1YjE4RiA8LSByYW5rcyAlPiUNCiAgZmlsdGVyKHN0YWdlPT0iQ2xhc2lmaWMiLA0KICAgICAgICAgQ2F0ZWdvcnk9PSJTdWIxOF9GInxDYXRlZ29yeT09IkFic19GInxDYXRlZ29yeT09IlN1YjIwX0YiLA0KICAgICAgICAgeWVhcj09IjIwMjIifHllYXI9PSIyMDIzInx5ZWFyPT0iMjAyNCINCiAgICAjICAgICBOYW1lPT0gbm9tYnJlDQogICAgICAgICApICU+JQ0KICBncm91cF9ieShjb21wZXRpdG9yPSBOYW1lLA0KICAgICAgICAgICBZZWFyPSB5ZWFyLA0KICAgICAgICAgICBDb21wZT0gQ29tcGVfLA0KICAgICAgICAgICBUZWFtID0gVGVhbSwNCiAgICAgICAgICAgRGF0ZT0gRGF0ZSkgJT4lDQogIHJlZnJhbWUocmFuaz0gUmFuaykgJT4lDQogIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvciArIFRlYW0gfiBEYXRlLCANCiAgICAgICAgICAgICAgICAgIG5hLnJtID0gVFJVRSkNCg0KYmxvYy5TdWIxOEYgPC0gYXNfdGliYmxlKGJsb2MuU3ViMThGKQ0KIyMNCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDIyLTA2LTA0YCksYygxLDIsMyw0LDUpXSANCg0KY29tcGV0aXRvcnMuYS4xIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDIyLTA2LTA0YCksXSkNCmNvbXBldGl0b3JzLmEuMiA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyMi0wNi0wNWApLF0pDQpjb21wZXRpdG9ycy5iLjEgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjItMDYtMThgKSxdKQ0KY29tcGV0aXRvcnMuYi4yIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDIyLTA2LTE5YCksXSkNCmNvbXBldGl0b3JzLmMuMSA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyMi0xMS0wNWApLF0pDQpjb21wZXRpdG9ycy5jLjIgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjItMTEtMDZgKSxdKQ0KY29tcGV0aXRvcnMuZC4xIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDIzLTAzLTI1YCksXSkNCmNvbXBldGl0b3JzLmQuMiA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyMy0wMy0yNmApLF0pDQpjb21wZXRpdG9ycy5lLjEgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjMtMDUtMjBgKSxdKQ0KY29tcGV0aXRvcnMuZS4yIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDIzLTA1LTIxYCksXSkNCmNvbXBldGl0b3JzLmYuMSA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyMy0wNi0wMmApLF0pDQpjb21wZXRpdG9ycy5mLjIgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjMtMDYtMDNgKSxdKQ0KY29tcGV0aXRvcnMuZy4xIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDIzLTExLTEwYCksXSkNCmNvbXBldGl0b3JzLmcuMiA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyMy0xMS0xMWApLF0pDQpjb21wZXRpdG9ycy5nLjMgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjMtMTEtMTJgKSxdKQ0KY29tcGV0aXRvcnMuaC4xIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDI0LTA0LTEzYCksXSkNCmNvbXBldGl0b3JzLmguMiA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyNC0wNC0xNGApLF0pDQpjb21wZXRpdG9ycy5pLjEgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjQtMDYtMjlgKSxdKQ0KY29tcGV0aXRvcnMuaS4yIDwtIG5yb3coYmxvYy5TdWIxOEZbIWlzLm5hKGJsb2MuU3ViMThGJGAyMDI0LTA2LTMwYCksXSkNCmNvbXBldGl0b3JzLmouMSA8LSBucm93KGJsb2MuU3ViMThGWyFpcy5uYShibG9jLlN1YjE4RiRgMjAyNC0xMS0wOWApLF0pDQpjb21wZXRpdG9ycy5qLjIgPC0gbnJvdyhibG9jLlN1YjE4RlshaXMubmEoYmxvYy5TdWIxOEYkYDIwMjQtMTEtMTBgKSxdKQ0KYGBgDQoNCiMjIyAyMDIyIEp1bmUtRmlyc3QNCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMi0wNi0wNGApLGMoMSwyLDMpXSAlPiUgcHJpbnQobj0xMzApDQpgYGANCg0KIyMjIEVsbyBKdW5lLUZpcnN0IDIwMjINCg0KKi1Db21wZXRpdG9ycyA9IGByIGNvbXBldGl0b3JzLmEuMWAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwzKV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMi0wNi0wNGAhPSJOQSIpIA0KIw0KI2xhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0Kbi5kZWJ1dCA9IDANCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wIA0KIyU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSByZXAoMTAwMCwgTikNCiNSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbVshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUikpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KI24gPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0WywxXQ0KI1RlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiMjDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCiNFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNCiNSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCiNtYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNCiNQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KI21heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KI1Byb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCg0KI2Vsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjIyMqRWxvIEhpc3RvcnkqICpjaGVjayBjb2RlIENodW5rIGlmIHJ1bm5pbmcgU3ViMTYgYWxvbmUqDQoNCmBgYHtyfQ0KIyMgDQoNCmNvbXBlPSAiMjAyMi4xIg0KZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgDQogIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLA0KICAgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE4RiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCg0KI2Vsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkubGFzdCANCg0KIyU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gVGVhbSkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KIyAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgRmlyc3RfSnVuZV8yMDIyKioNCg0KYGBge3IgZXZhbD1UUlVFLCBlY2hvPUZBTFNFfQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcNCmVsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCiMjIyAyMDIyIEp1bmUtRmlyc3QgLSBBYnMNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMDVgKSwgYygxLDIsMyw0KV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyBKdW5lLUZpcnN0IC0gQWJzDQoNCiotQ29tcGV0aXRvcnMgPSBgciBjb21wZXRpdG9ycy5hLjJgLSoNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsNCldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMDVgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGlubmVyX2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQpgYGB7ciBldmFsPSBUUlVFLGluY2x1ZGU9VFJVRSwgY29scy5wcmludD0gN30NCiMjIyMjRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCg0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wIA0KIyU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQoNCiMjIw0KTiA8LSBsZW5ndGgobGFzdC5jb21wLmNhbGMkY29tcGV0aXRvclshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0pDQpSIDwtIHJlcCgxMDAwLE4pDQojUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW1bIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQphdmcucGxheWVyIDwtIG1lZGlhbihjKFINCiAgICAgICAgICAgICAgICAgICAgICAgIywgDQogICAgICAgICAgICAgICAgICAgICAgICNyZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQojbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiNOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQojUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCiNuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQojVGVhbSA8LSBsYXN0X2NvbXBfZGVidXQkVGVhbQ0KI2NhdGVnIDwtIGJsb2MuU3ViMThGLmFfYg0KI1MgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICMgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICMgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAjICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAjICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICMgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICMgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICApKQ0KDQoNCiNlbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQpDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyMgXyogRWxvIEhpc3RvcnkgKl8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMi4xLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmUtRmlyc3RfQWJzXzIwMjIqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KIyMjIDIwMjIgSnVuZS1TZWNvbmQNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMThgKSwgYygxLDIsMyw0LDUpXSAlPiUgcHJpbnQobj02NSkNCmBgYA0KDQojIyMgRWxvIEp1bmUtU2Vjb25kDQoNCiotQ29tcGV0aXRvcnMgPSBgciBjb21wZXRpdG9ycy5iLjFgLSoNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsNSldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMThgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KIyMjDQoNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQgKSkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KDQojbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiNOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQojUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCiNuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQojVGVhbSA8LSBsYXN0X2NvbXBfZGVidXQkVGVhbQ0KI2NhdGVnIDwtIGJsb2MuU3ViMThGLmFfYg0KI1MgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCg0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgDQojJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0KQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMi4yIg0KZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgDQogIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLA0KICAgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE4RiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCmVsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmVfU2Vjb25kLTIwMjMqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KDQojIyMgMjAyMiBKdW5lLVNlY29uZC1BYnMNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMDVgKSwgYygxLDIsNSw2KV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KDQojIyMgRWxvIEp1bmUtU2Vjb25kLUFic3MNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsNildICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjItMDYtMTlgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KIyMjDQoNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQgKSkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCmNhdGVnIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQoNCg0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0KQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMi4yLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmVfU2Vjb25kLUFicyAyMDIyKioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgICANCg0KDQoNCiMjIyAyMDIyIE5vdg0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMi0xMS0wNWApLCBjKDEsMiw2LDcpXSAlPiUgcHJpbnQobj02NSkNCmBgYA0KDQojIyMgRWxvIE5vdi0yMDIyDQoNCiotQ29tcGV0aXRvcnMgPSBgciBjb21wZXRpdG9ycy5iLjFgLSoNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsNyldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjItMTEtMDVgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KIyMjDQoNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQgKSkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCmNhdGVnIDwtIHJlcCgiU3ViMThGIiwgbikNClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQpDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyNcXyBFbG8gSGlzdG9yeSBcXw0KDQpgYGB7cn0NCiMjIA0KY29tcGU9ICIyMDIyLjMiDQojDQplbG8uaGlzdG9yeS5sYXN0IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSANCiAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSksDQogICAgICAgICBjYXRlZyA9IHJlcCgiU3ViMThGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IlN1YjE4RiIpICU+JQ0KICAgICAgICAgICAgICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikpIA0KIyMgDQoNCmBgYA0KDQojIyMgRWxvIGluIHRpbWUNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KcCA8LSBlbG8uaGlzdG9yeSAlPiUgDQogIGZpbHRlcihjYXRlZz09IlN1YjE4RiJ8Y2F0ZWc9PSJBYnNGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IGNhdGVnKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmVfU2Vjb25kLTIwMjMqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KIyMjIDIwMjIgTm92IC0gQWJzDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDIyLTExLTA2YCksIGMoMSwyLDcsOCldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gTm92IC0gQWJzDQoNCiotQ29tcGV0aXRvcnMgPSBgciBjb21wZXRpdG9ycy5jLjJgLSoNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsOCldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjItMTEtMDZgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIyNFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0Kbi5kZWJ1dCA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiMjIw0KDQpsYXN0LmNvbXAuY2FsYyA8LSBsYXN0LmNvbXAgJT4lIHJpZ2h0X2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCg0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNCiNSIDwtIHJlcCgxMDAwLE4pDQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCkpKQ0KIw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSDQogICAgICAgICAgICAgICAgICAgICAgICwgcmVwKDEwMDAsIG4uZGVidXQgKQ0KICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICApDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQpjYXRlZyA8LSByZXAoIkFic0YiLCBuKQ0KUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQpDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyMgXyogRWxvIEhpc3RvcnkgKl8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMi4zLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLCBjYXRlZyA9IHJlcCgiQWJzRiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCmVsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJBYnNGIikgJT4lDQogICAgICAgICAgICAgIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkgDQojIyANCg0KYGBgDQoNCiMjIyBFbG8gaW4gdGltZQ0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gVGVhbSkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUobGluZXR5cGU9ICJkYXNoZWQiKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MTAwMCxsaW5ldHlwZT0gImRhc2hlZCIpDQoNCiNwDQpnZ3Bsb3RseShwKQ0KYGBgDQoNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBKdW5lLUZpcnN0X0Fic18yMDIyKioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCg0KIyMjIE1FUkdJTkcgZnJvbSBzdWIxNg0KDQpgYGB7cn0NCiMjDQpibG9jLlN1YjE2RiA8LSByYW5rcyAlPiUNCiAgZmlsdGVyKHN0YWdlPT0iQ2xhc2lmaWMiLA0KICAgICAgICAgQ2F0ZWdvcnk9PSJTdWIxNl9GIiwNCiAgICAgICAgIHllYXI9PSIyMDIyIiwNCiAgICAgICAgICMgICAgIE5hbWU9PSBub21icmUNCiAgKSAlPiUNCiAgZ3JvdXBfYnkoY29tcGV0aXRvcj0gTmFtZSwNCiAgICAgICAgICAgWWVhcj0geWVhciwNCiAgICAgICAgICAgQ29tcGU9IENvbXBlXywNCiAgICAgICAgICAgVGVhbSA9IFRlYW0sDQogICAgICAgICAgIERhdGU9IERhdGUpICU+JQ0KICByZWZyYW1lKHJhbms9IFJhbmspICU+JQ0KICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3IgKyBUZWFtIH4gQ29tcGUsIA0KICAgICAgICAgICAgICAgICAgbmEucm0gPSBUUlVFKQ0KDQpibG9jLlN1YjE2RiA8LSBhc190aWJibGUoYmxvYy5TdWIxNkYpDQojIw0KYmxvYy5TdWIxNkZbb3JkZXIoYmxvYy5TdWIxNkYkYS5ibG9jLmZpcnN0LjIyKSxjKDEsMiwzKV0gDQojDQpjb21wZXRpdG9ycy5hIDwtIG5yb3coYmxvYy5TdWIxNkZbIWlzLm5hKGJsb2MuU3ViMTZGJGEuYmxvYy5maXJzdC4yMiksXSkNCmNvbXBldGl0b3JzLmIgPC0gbnJvdyhibG9jLlN1YjE2RlshaXMubmEoYmxvYy5TdWIxNkYkYi5ibG9jLnNlYy4yMiksXSkNCmNvbXBldGl0b3JzLmMgPC0gbnJvdyhibG9jLlN1YjE2RlshaXMubmEoYmxvYy5TdWIxNkYkYy5ibG9jLnRocmQuMjIpLF0pDQojDQojIyMgRWxvIEZpcnN0IDIwMjIgICMjIyMNCiMNCk4gPC0gbGVuZ3RoKGJsb2MuU3ViMTZGJGEuYmxvYy5maXJzdC4yMlshaXMubmEoYmxvYy5TdWIxNkYkYS5ibG9jLmZpcnN0LjIyKV0pDQpSIDwtIHJlcCgxMDAwLCBOKQ0KbmFtZXMgPC0gYmxvYy5TdWIxNkZbIWlzLm5hKGJsb2MuU3ViMTZGJGEuYmxvYy5maXJzdC4yMiksIDFdDQpUZWFtIDwtIGJsb2MuU3ViMTZGWyFpcy5uYShibG9jLlN1YjE2RiRhLmJsb2MuZmlyc3QuMjIpLCAyXQ0KI2NhdGVnIDwtIGJsb2MuU3ViMTZGWyFpcy5uYShibG9jLlN1YjE2RiRhLmJsb2MuZmlyc3QuMjIpLCBdDQpyZXN1bHRzIDwtIGJsb2MuU3ViMTZGJGEuYmxvYy5maXJzdC4yMlshaXMubmEoYmxvYy5TdWIxNkYkYS5ibG9jLmZpcnN0LjIyKV0NCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQphdmcucGxheWVyIDwtIG1lZGlhbihSKQ0KbWVkaWFuYSA8LSBtZWRpYW4ocmVzdWx0cykNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNClMgPC0gKChtZWRpYW5hLXJlc3VsdHMpIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5hLmJsb2MuZmlyc3QuMjIgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwgIiUiKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwiJSIgKSApDQoNCmVsby5hLmJsb2MuZmlyc3QuMjIgPC0gYXNfdGliYmxlKGVsby5hLmJsb2MuZmlyc3QuMjIpDQoNCmtuaXRyOjprYWJsZShlbG8uYS5ibG9jLmZpcnN0LjIyW29yZGVyKGVsby5hLmJsb2MuZmlyc3QuMjIkcmVzdWx0cyksIGMoMSwyLDMsNCw2LDcsOCldLCApDQojIyMgXyBFbG8gSGlzdG9yeSBfICMjIyMNCiNlbG8uaGlzdG9yeS5sYXN0IDwtDQojICBlbG8uYS5ibG9jLmZpcnN0LjIyICU+JSANCiMgbXV0YXRlKGNvbXAgPSByZXAoIjIwMjIuMSIsIGxlbmd0aChlbG8uYS5ibG9jLmZpcnN0LjIyJGNvbXBldGl0b3IpKSwNCiMgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE0RiIsIGxlbmd0aChlbG8uYS5ibG9jLmZpcnN0LjIyJGNvbXBldGl0b3IpKSkNCiNlbG8uaGlzdG9yeSA8LSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KIyMgMjAyMiBTZWNvbmQgIyMjIw0KYmxvYy5TdWIxNkZbb3JkZXIoYmxvYy5TdWIxNkYkYi5ibG9jLnNlYy4yMiksIGMoMSwyLDMsNCldDQojDQpibG9jLlN1YjE2Ri5hX2IgPC0gYmxvYy5TdWIxNkZbLGMoMTo0KV0gJT4lDQogIGZpbHRlcighaXMubmEoYmxvYy5TdWIxNkYkYi5ibG9jLnNlYy4yMikmIWlzLm5hKGJsb2MuU3ViMTZGJGEuYmxvYy5maXJzdC4yMikpDQoNCmJsb2MuU3ViMTZGLmFfYiA8LSBlbG8uYS5ibG9jLmZpcnN0LjIyICU+JSANCiAgcmlnaHRfam9pbihibG9jLlN1YjE2Ri5hX2IsIGJ5PSAiY29tcGV0aXRvciIpICU+JQ0KICBhc190aWJibGUoKQ0KIyMjIEVsbyBTZWNvbmQgMjAyMg0KbiA9IGxlbmd0aChibG9jLlN1YjE2Ri5hX2IkYi5ibG9jLnNlYy4yMikNCk4gPC0gbGVuZ3RoKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjIpXSkNClIgPC0gYmxvYy5TdWIxNkYuYV9iJFIubmV3DQpuYW1lcyA8LSBibG9jLlN1YjE2Ri5hX2JbIWlzLm5hKGJsb2MuU3ViMTZGLmFfYiRiLmJsb2Muc2VjLjIyKSwxXQ0KVGVhbSA8LSBibG9jLlN1YjE2Ri5hX2IkVGVhbS54DQojDQpyZXN1bHRzIDwtIGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjIpXQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIE4tbiApKSkNCm1lZGlhbmEgPC0gbWVkaWFuKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjIpXSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMNClMgPC0gKChtZWRpYW5hIC0gYmxvYy5TdWIxNkYuYV9iJGIuYmxvYy5zZWMuMjIgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8uYi5ibG9jLnNlYy4yMiA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IGJsb2MuU3ViMTZGLmFfYiRiLmJsb2Muc2VjLjIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksIiUiICkgDQopDQplbG8uYi5ibG9jLnNlYy4yMiA8LSBhc190aWJibGUoZWxvLmIuYmxvYy5zZWMuMjIpDQojIyMgZGVidXQgbGlzdCAjIyMjDQpibG9jLlN1YjE2Ri5iLmRlYnV0IDwtIGJsb2MuU3ViMTZGWyFpcy5uYShibG9jLlN1YjE2RiRiLmJsb2Muc2VjLjIyKSxjKDEsMiw0KV0gJT4lIGFudGlfam9pbihibG9jLlN1YjE2Ri5hX2JbLCBjKDEpXSwgYnk9ICJjb21wZXRpdG9yIikgJT4lIGFzX3RpYmJsZSgpDQojDQpuID0gbGVuZ3RoKGJsb2MuU3ViMTZGLmIuZGVidXQkYi5ibG9jLnNlYy4yMikNCk4gPC0gbGVuZ3RoKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjIpXSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBibG9jLlN1YjE2Ri5iLmRlYnV0WywxXQ0KVGVhbSA8LSBibG9jLlN1YjE2Ri5iLmRlYnV0JFRlYW0NCiMNClMgPC0gKChtZWRpYW5hLSBibG9jLlN1YjE2Ri5iLmRlYnV0JGIuYmxvYy5zZWMuMjIpIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmIuYmxvYy5zZWMuMjIkUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8uYi5ibG9jLnNlYy4yMiRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIyMNCmVsby5iLmJsb2Muc2VjLjIyLmRlYnV0IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gYmxvYy5TdWIxNkYuYi5kZWJ1dCRiLmJsb2Muc2VjLjIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQopDQplbG8uYi5ibG9jLnNlYy4yMi5kZWJ1dCA8LSBhc190aWJibGUoZWxvLmIuYmxvYy5zZWMuMjIuZGVidXQpDQoNCmVsby5iLmJsb2Muc2VjLjIyIDwtIGVsby5iLmJsb2Muc2VjLjIyICU+JSByYmluZChlbG8uYi5ibG9jLnNlYy4yMi5kZWJ1dCkNCiMNCmtuaXRyOjprYWJsZShlbG8uYi5ibG9jLnNlYy4yMltvcmRlcihlbG8uYi5ibG9jLnNlYy4yMiRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCiMjIyBfIEVsbyBIaXN0b3J5IF8gIyMjIw0KIw0KI2Vsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmIuYmxvYy5zZWMuMjIgJT4lIA0KIyAgbXV0YXRlKGNvbXAgPSByZXAoIjIwMjIuMiIsIGxlbmd0aChlbG8uYi5ibG9jLnNlYy4yMiRjb21wZXRpdG9yKSksDQojICAgICAgICBjYXRlZyA9IHJlcCgiU3ViMTRGIiwgbGVuZ3RoKGVsby5iLmJsb2Muc2VjLjIyJGNvbXBldGl0b3IpKSkNCiNlbG8uaGlzdG9yeSA8LSBlbG8uaGlzdG9yeSAlPiUgcmJpbmQoZWxvLmhpc3RvcnkubGFzdCkNCiMjIyMjIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUgIyMjIw0KI2Vsby5oaXN0b3J5LnRfc2VyaWVzIDwtIGVsby5oaXN0b3J5ICU+JSByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikNCiMjIDIwMjIgVGhpcmQgIyMjIw0KYmxvYy5TdWIxNkZbb3JkZXIoYmxvYy5TdWIxNkYkYy5ibG9jLnRocmQuMjIpLCBjKDEsMiwzLDQsNSldDQojIyMgRWxvIFRoaXJkIDIwMjIgICMjIyMNCiMNCmJsb2MuU3ViMTZGLmMgPC0gYXNfdGliYmxlKGJsb2MuU3ViMTZGWyFpcy5uYShibG9jLlN1YjE2RiRjLmJsb2MudGhyZC4yMikgLCBjKDEsMiw1KV0pDQojIw0KYmxvYy5TdWIxNkYuYy5kZWJ1dCA8LSBibG9jLlN1YjE2Rltpcy5uYShibG9jLlN1YjE2RiRhLmJsb2MuZmlyc3QuMjIpJmlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjImIWlzLm5hKGJsb2MuU3ViMTZGJGMuYmxvYy50aHJkLjIyKSkgLCBjKDEsMiw1KV0NCiMjDQpibG9jLlN1YjE2Ri5hX2JfYyA8LSBibG9jLlN1YjE2RlshaXMubmEoYmxvYy5TdWIxNkYkYS5ibG9jLmZpcnN0LjIyKSYhaXMubmEoYmxvYy5TdWIxNkYkYi5ibG9jLnNlYy4yMikmIWlzLm5hKGJsb2MuU3ViMTZGJGMuYmxvYy50aHJkLjIyKSwgYygxLDIsNSldDQojIw0KYmxvYy5TdWIxNkYuYV9fYyA8LSBibG9jLlN1YjE2RlshaXMubmEoYmxvYy5TdWIxNkYkYS5ibG9jLmZpcnN0LjIyKSZpcy5uYShibG9jLlN1YjE2RiRiLmJsb2Muc2VjLjIyKSYhaXMubmEoYmxvYy5TdWIxNkYkYy5ibG9jLnRocmQuMjIpLCBjKDEsMiwzLDUpXQ0KIw0KYmxvYy5TdWIxNkYuYV9vbmx5IDwtIGJsb2MuU3ViMTZGWyFpcy5uYShibG9jLlN1YjE2RiRhLmJsb2MuZmlyc3QuMjIpJmlzLm5hKGJsb2MuU3ViMTZGJGIuYmxvYy5zZWMuMjIpJmlzLm5hKGJsb2MuU3ViMTZGJGMuYmxvYy50aHJkLjIyKSxdDQojIyMjIEVMT3MgIyMjIw0KZWxvLmEuYmxvYy5maXJzdC4yMi5hX29ubHkgPC0gZWxvLmEuYmxvYy5maXJzdC4yMlssXSAlPiUgYW50aV9qb2luKGVsby5iLmJsb2Muc2VjLjIyLCBieT0iY29tcGV0aXRvciIpDQojIyMgRWxvIEFjY3VtdWxhdGVkIHNlY29uZCBjb21wICMjIyMNCmVsby5iLmJsb2Muc2VjLjIyLmFjY3VtIDwtIGVsby5iLmJsb2Muc2VjLjIyICU+JSByYmluZChlbG8uYS5ibG9jLmZpcnN0LjIyLmFfb25seSkNCmVsby5iLmJsb2Muc2VjLjIyLmFjY3VtICA8LSANCiAgZWxvLmIuYmxvYy5zZWMuMjIuYWNjdW1bb3JkZXIoZWxvLmIuYmxvYy5zZWMuMjIuYWNjdW0kY29tcGV0aXRvciksXQ0KDQoNCiMjIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMNCm4gPSBsZW5ndGgoZWxvLmIuYmxvYy5zZWMuMjIuYWNjdW0kY29tcGV0aXRvcikNCm4uZGVidXQgPSBsZW5ndGgoYmxvYy5TdWIxNkYuYy5kZWJ1dCRjb21wZXRpdG9yKQ0KIw0KYyA8LSBibG9jLlN1YjE2Ri5jICU+JSByaWdodF9qb2luKGVsby5iLmJsb2Muc2VjLjIyLmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojDQpOIDwtIGxlbmd0aChjJGNvbXBldGl0b3JbIWlzLm5hKGMkYy5ibG9jLnRocmQuMjIpXSkNClIgPC0gYyRSLm5ld1shaXMubmEoYyRjLmJsb2MudGhyZC4yMildDQpuYW1lcyA8LSBjWyFpcy5uYShjJGMuYmxvYy50aHJkLjIyKSwxXQ0KVGVhbSA8LSBjJFRlYW0ueFshaXMubmEoYyRjLmJsb2MudGhyZC4yMildDQojDQpyZXN1bHRzIDwtIGJsb2MuU3ViMTZGLmMkYy5ibG9jLnRocmQuMjINCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0ICkpKQ0KbWVkaWFuYSA8LSBtZWRpYW4oYmxvYy5TdWIxNkYkYy5ibG9jLnRocmQuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGMuYmxvYy50aHJkLjIyKV0pDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojDQpTIDwtICgobWVkaWFuYSAtIGMkYy5ibG9jLnRocmQuMjJbIWlzLm5hKGMkYy5ibG9jLnRocmQuMjIpXSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojDQplbG8uYy5ibG9jLnRocmQuMjIgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBjJGMuYmxvYy50aHJkLjIyWyFpcy5uYShjJGMuYmxvYy50aHJkLjIyKV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCikNCmVsby5jLmJsb2MudGhyZC4yMiA8LSBhc190aWJibGUoZWxvLmMuYmxvYy50aHJkLjIyKQ0KIw0KbiA9IGxlbmd0aChibG9jLlN1YjE2Ri5jLmRlYnV0JGMuYmxvYy50aHJkLjIyKQ0KTiA8LSBsZW5ndGgoYmxvYy5TdWIxNkYkYy5ibG9jLnRocmQuMjJbIWlzLm5hKGJsb2MuU3ViMTZGJGMuYmxvYy50aHJkLjIyKV0pDQpSLmRlYnV0IDwtIHJlcCgxMDAwLCBuKQ0KbmFtZXMgPC0gYmxvYy5TdWIxNkYuYy5kZWJ1dFssMV0NClRlYW0gPC0gYmxvYy5TdWIxNkYuYy5kZWJ1dCRUZWFtDQojDQpTIDwtICgobWVkaWFuYS0gYmxvYy5TdWIxNkYuYy5kZWJ1dCRjLmJsb2MudGhyZC4yMikgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8uYy5ibG9jLnRocmQuMjIkUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8uYy5ibG9jLnRocmQuMjIkUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojDQplbG8uYy5ibG9jLnRocmQuMjIuZGVidXQgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBibG9jLlN1YjE2Ri5jLmRlYnV0JGMuYmxvYy50aHJkLjIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCikNCmVsby5jLmJsb2MudGhyZC4yMi5kZWJ1dCA8LSBhc190aWJibGUoZWxvLmMuYmxvYy50aHJkLjIyLmRlYnV0KQ0KIw0KZWxvLmMuYmxvYy50aHJkLjIyIDwtIGVsby5jLmJsb2MudGhyZC4yMiAlPiUgcmJpbmQoZWxvLmMuYmxvYy50aHJkLjIyLmRlYnV0KQ0KIw0Ka25pdHI6OmthYmxlKGVsby5jLmJsb2MudGhyZC4yMltvcmRlcihlbG8uYy5ibG9jLnRocmQuMjIkcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQojDQojIyMgXyBFbG8gSGlzdG9yeSBfICMjIyMNCmNvbXBlIDwtICIyMDIyLjMiDQojZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8uYy5ibG9jLnRocmQuMjIgJT4lIA0KIyAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8uYy5ibG9jLnRocmQuMjIkY29tcGV0aXRvcikpLA0KIyAgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE0RiIsIGxlbmd0aChlbG8uYy5ibG9jLnRocmQuMjIkY29tcGV0aXRvcikpKQ0KI2Vsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KIyMjIyB0aW1lLXNlcmllcyBkYXRhLmZyYW1lICMjIyMNCiNlbG8uaGlzdG9yeS50X3NlcmllcyA8LSBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCAyMDIyKiogIyMjIw0KDQplbG8uYi5ibG9jLnNlYy4yMi5hY2N1bS5jX2Fic2VudCA8LSBlbG8uYi5ibG9jLnNlYy4yMi5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5jLmJsb2MudGhyZC4yMiwgYnk9ImNvbXBldGl0b3IiKQ0KIw0KZWxvLmMuYmxvYy50aHJkLjIyLmFjY3VtIDwtIGVsby5jLmJsb2MudGhyZC4yMiAlPiUgcmJpbmQoZWxvLmIuYmxvYy5zZWMuMjIuYWNjdW0uY19hYnNlbnQpDQplbG8uYy5ibG9jLnRocmQuMjIuYWNjdW0gPC0gZWxvLmMuYmxvYy50aHJkLjIyLmFjY3VtW29yZGVyKGVsby5jLmJsb2MudGhyZC4yMi5hY2N1bSRjb21wZXRpdG9yKSxdDQoNCiMNCmJsb2MuU3ViMThGLjIzIDwtIHJhbmtzICU+JQ0KICBmaWx0ZXIoc3RhZ2U9PSJDbGFzaWZpYyIsDQogICAgICAgICBDYXRlZ29yeT09IlN1YjE4X0YifENhdGVnb3J5PT0iU3ViMjBfRiJ8Q2F0ZWdvcnk9PSJBYnNfRiIsDQogICAgICAgICB5ZWFyPT0iMjAyMyINCiAgICAgICAgICMgICAgIE5hbWU9PSBub21icmUNCiAgKSAlPiUNCiAgZ3JvdXBfYnkoY29tcGV0aXRvcj0gTmFtZSwNCiAgICAgICAgICAgWWVhcj0geWVhciwNCiAgICAgICAgICAgQ29tcGU9IENvbXBlXywNCiAgICAgICAgICAgVGVhbSA9IFRlYW0sDQogICAgICAgICAgIERhdGU9IERhdGUpICU+JQ0KICByZWZyYW1lKHJhbms9IFJhbmspICU+JQ0KICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3IgKyBUZWFtIH4gRGF0ZSwgDQogICAgICAgICAgICAgICAgICBuYS5ybSA9IFRSVUUpDQoNCmJsb2MuU3ViMThGLjIzIDwtIGFzX3RpYmJsZShibG9jLlN1YjE4Ri4yMykNCiMNCiMgKiAqKl9Mb3Mgc3ViMTYgInNhbGVuIl8qICMjIyMNCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEZpcnN0XzIwMjMqKiAjIyMjDQojIyBlbnZpYW5kbyBsb3Mgc3ViMTYgYSBvdHJvIGFyY2hpdm8NCmVsby4yMi5hY2N1bS50b19zdWIxOCA8LSBlbG8uYy5ibG9jLnRocmQuMjIuYWNjdW0gJT4lIHNlbWlfam9pbihibG9jLlN1YjE4Ri4yMyxieT0iY29tcGV0aXRvciIpDQojIyBzdWIxNiBzYWxpZW5kbw0KIyBlbG8uYy5ibG9jLnRocmQuMjIuYWNjdW0gPC0gZWxvLmMuYmxvYy50aHJkLjIyLmFjY3VtICU+JSBhbnRpX2pvaW4oYmxvYy5TdWIxOEYuMjMsYnk9ImNvbXBldGl0b3IiKSANCg0KDQoNCmBgYCAgDQoNCg0KIyMjIDIwMjMgTWFyY2gNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjMtMDMtMjVgKSwgYygxLDIsOCw5KV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyAyMDIzIE1hcmNoDQoNCiotQ29tcGV0aXRvcnMgPSBgciBgLSoNCg0KYGBge3IgZXZhbD1UUlVFLGluY2x1ZGU9VFJVRX0NCmxhc3QuY29tcCA8LSBibG9jLlN1YjE4RlssYygxLDIsOSldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjMtMDMtMjVgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyfQ0KIyMgZXgtU3ViMTYgY29taW5nIGluICMjIw0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIHJpZ2h0X2pvaW4oZWxvLjIyLmFjY3VtLnRvX3N1YjE4LCBieT0iY29tcGV0aXRvciIpDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbIWlzLm5hKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSxdDQojDQpsYXN0X2NvbXBfZGVidXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSBhbnRpX2pvaW4obGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQpuLmRlYnV0LmZyb21fbHdyX2NhdCA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KTjtuLmRlYnV0DQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCtuLmRlYnV0LmZyb21fbHdyX2NhdCkpKQ0KIw0KUi5sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQkUi5uZXcNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQpLGMoUi5sd3JfY2F0KSApKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs3XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMjIyMjIyMjIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiMNClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzddIC0gUi5uZXdbLDFdKS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQoNCiMjIGZyb21fbHdyX0NhdCAjIyMjIyMjIyMjIyMjIyMjIw0KbiA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gUi5sd3JfY2F0DQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywxXQ0KVGVhbSA8LSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMl0pDQojDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbN10gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0LCBlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0KQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlIDwtICIyMDIzLjEiDQplbG8uaGlzdG9yeS5sYXN0IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSANCiAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSksDQogICAgICAgICBjYXRlZyA9IHJlcCgiU3ViMThGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IlN1YjE4RiIpICU+JQ0KICAgICAgICAgICAgICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikpIA0KIyMgDQoNCmBgYA0KDQojIyMgRWxvIGluIHRpbWUNCg0KYGBge3IgaW5jbHVkZT1UUlVFLCBmaWcud2lkdGg9IDl9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gY2F0ZWcpKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgTWFyY2hfMjAyMyoqDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmVsby5sYXN0LmFjY3VtDQplbG8ubGFzdC5jb21wLm5ldw0KYGBgDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PTd9DQoNCmVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQgPC0gZWxvLmxhc3QuYWNjdW0gJT4lIGFudGlfam9pbihlbG8ubGFzdC5jb21wLm5ldyxieT0iY29tcGV0aXRvciIpDQoNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSksYygxLDIsNiw3LDgpXSkNCmBgYA0KDQoNCiMjIyAyMDIzIE1hcmNoLUFicw0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMy0wMy0yNmApLCBjKDEsMiw5LDEwKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyBNYXJjaC1BYnMgMjAyMw0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDEwKV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMy0wMy0yNmAhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KYGBge3J9DQojI2NvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSBpbm5lcl9qb2luKGVsby4yMi5hY2N1bS50b19zdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQpgYGB7ciBldmFsPSBUUlVFLGluY2x1ZGU9VFJVRSwgY29scy5wcmludD0gN30NCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0Kbi5kZWJ1dCA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQgKSkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQoNCmVsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjI1xfIEVsbyBIaXN0b3J5IFxfDQoNCmBgYHtyfQ0KIyMgDQpjb21wZSA8LSAiMjAyMy4xLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgZmlnLndpZHRoPSAxNn0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIFNlY29uZF8yMDIzKioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KIyMjIDIwMjMgTWF5DQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDIzLTA1LTIwYCksIGMoMSwyLDExKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyAyMDIzIE1heQ0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDExKV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMy0wNS0yMGAhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KYGBge3J9DQojI2NvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSByaWdodF9qb2luKGVsby4yMi5hY2N1bS50b19zdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQoNCg0KDQpgYGB7ciBldmFsPSBUUlVFLGluY2x1ZGU9VFJVRSwgY29scy5wcmludD0gN30NCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0Kbi5kZWJ1dCA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQpKSkNCiMNCg0KUi5sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQkUi5uZXcNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQgKSxSLmx3cl9jYXQpKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMjIyMjIyMjIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4gPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQpOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQpSLmRlYnV0IDwtIHJlcCgxMDAwLCBuKQ0KbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0WywxXQ0KVGVhbSA8LSBsYXN0X2NvbXBfZGVidXQkVGVhbQ0KI2NhdGVnIDwtIGJsb2MuU3ViMTZGLmFfYg0KUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KIyMgZnJvbV9sd3JfQ2F0ICMjIyMjIyMjIyMjIyMjIyMjDQpuID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSBSLmx3cl9jYXQNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDFdDQpUZWFtIDwtIHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywyXSkNCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQsIGVsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQpDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyNcXyBFbG8gSGlzdG9yeSBcXw0KDQpgYGB7cn0NCiMjIA0KY29tcGU9ICIyMDIzLjIiDQplbG8uaGlzdG9yeS5sYXN0IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSANCiAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSksDQogICAgICAgICBjYXRlZyA9IHJlcCgiU3ViMThGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IlN1YjE4RiIpICU+JQ0KICAgICAgICAgICAgICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikpIA0KIyMgDQoNCmBgYA0KDQojIyMgRWxvIGluIHRpbWUNCg0KYGBge3IgaW5jbHVkZT1UUlVFLCBmaWcud2lkdGg9IDE2fQ0KcCA8LSBlbG8uaGlzdG9yeSAlPiUgDQogIGZpbHRlcihjYXRlZz09IlN1YjE4RiJ8Y2F0ZWc9PSJBYnNGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IFRlYW0pKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgVGhpcmRfMjAyMyoqDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmVsby5sYXN0LmFjY3VtDQplbG8ubGFzdC5jb21wLm5ldw0KYGBgDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PTd9DQoNCmVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQgPC0gZWxvLmxhc3QuYWNjdW0gJT4lIGFudGlfam9pbihlbG8ubGFzdC5jb21wLm5ldyxieT0iY29tcGV0aXRvciIpDQoNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSksYygxLDIsNiw3LDgpXSkNCmBgYA0KDQojIyMgMjAyMyBNYXktQWJzDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDIzLTA1LTIxYCksIGMoMSwyLDEyKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyBNYXktQWJzIDIwMjMNCg0KKi1Db21wZXRpdG9ycyA9IGByIGAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwxMildICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjMtMDUtMjFgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KIyMjDQpsYXN0LmNvbXAuY2FsYyA8LSBsYXN0LmNvbXAgJT4lIHJpZ2h0X2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIw0KTiA8LSBsZW5ndGgobGFzdC5jb21wLmNhbGMkY29tcGV0aXRvclshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0pDQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCkpKQ0KIw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSDQogICAgICAgICAgICAgICAgICAgICAgICwgDQogICAgICAgICAgICAgICAgICAgICAgIHJlcCgxMDAwLCBuLmRlYnV0ICkNCiAgICAgICAgICAgICAgICAgICAgICAgKSkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQoNCg0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0KQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMy4yLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgZmlnLndpZHRoPSAxNn0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIE1heS1BYnNfMjAyMyoqDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCg0KDQojIyMgMjAyMyBKdW5lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDIzLTA2LTAyYCksIGMoMSwyLDEzKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyAyMDIzIEp1bmUNCg0KKi1Db21wZXRpdG9ycyA9IGByIGAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwxMyldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjMtMDYtMDJgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyfQ0KIyNjb21pbmcgaW4gIyMjDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgcmlnaHRfam9pbihlbG8uMjIuYWNjdW0udG9fc3ViMTgsIGJ5PSJjb21wZXRpdG9yIikNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFshaXMubmEobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLF0NCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIGFudGlfam9pbihsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0LCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQoNCiNSLmx3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCRSLm5ldw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICMsUi5sd3JfY2F0DQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCiNuID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KI04gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCiNSLmRlYnV0IDwtIFIubHdyX2NhdA0KI25hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDFdDQojVGVhbSA8LSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMl0pDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gI3VubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAjICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAjICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIywgZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjI1xfIEVsbyBIaXN0b3J5IFxfDQoNCmBgYHtyfQ0KIyMgDQpjb21wZT0gIjIwMjMuMyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJTdWIxOEYiLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpKQ0KDQojDQplbG8uaGlzdG9yeSA8LSBlbG8uaGlzdG9yeSAlPiUgcmJpbmQoZWxvLmhpc3RvcnkubGFzdCkNCg0KIyB0aW1lLXNlcmllcyBkYXRhLmZyYW1lDQojIyBTdWIxOEYNCmVsby5oaXN0b3J5LnRfc2VyaWVzLlMxOEYgPC0gDQogIGFzX3RpYmJsZShlbG8uaGlzdG9yeSAlPiUNCiAgICAgICAgICAgICAgZmlsdGVyKGNhdGVnPT0iU3ViMThGIikgJT4lDQogICAgICAgICAgICAgIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkgDQojIyANCg0KYGBgDQoNCiMjIyBFbG8gaW4gdGltZQ0KDQpgYGB7ciBpbmNsdWRlPVRSVUUsIGZpZy53aWR0aD0gMTZ9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gVGVhbSkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUobGluZXR5cGU9ICJkYXNoZWQiKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MTAwMCxsaW5ldHlwZT0gImRhc2hlZCIpDQoNCiNwDQpnZ3Bsb3RseShwKQ0KYGBgDQoNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBKdW5lXzIwMjMqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KDQojIyMgMjAyMyBKdW5lLUFicw0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMy0wNi0wM2ApLCBjKDEsMiwxNCldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gSnVuZS1BYnMgMjAyMw0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDE0KV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMy0wNi0wM2AhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQphdmcucGxheWVyIDwtIG1lZGlhbihjKFINCiAgICAgICAgICAgICAgICAgICAgICAgIywgDQogICAgICAgICAgICAgICAgICAgICAgICNyZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KI24gPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0WywxXQ0KI1RlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INCiNTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KI0UgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KI1IubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KI21heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KI1Byb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQojbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQojUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiNlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAjICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAjICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAjICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAjICAgICAgICAgICAgICAgICAgKSkNCg0KDQojZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0KQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyMy4zLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgZmlnLndpZHRoPSAxNn0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmUtQWJzXzIwMjMqKg0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRX0NCmVsby5sYXN0LmFjY3VtDQplbG8ubGFzdC5jb21wLm5ldw0KYGBgDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PTd9DQoNCmVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQgPC0gZWxvLmxhc3QuYWNjdW0gJT4lIGFudGlfam9pbihlbG8ubGFzdC5jb21wLm5ldyxieT0iY29tcGV0aXRvciIpDQoNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSksYygxLDIsNiw3LDgpXSkNCmBgYA0KDQoNCiMjIyAyMDIzIE5vdg0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMy0xMS0xMGApLCBjKDEsMiwxNSldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gMjAyMyBOb3YNCg0KKi1Db21wZXRpdG9ycyA9IGByIGAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwxNSldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjMtMTEtMTBgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyfQ0KIyNjb21pbmcgaW4gIyMjDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgcmlnaHRfam9pbihlbG8uMjIuYWNjdW0udG9fc3ViMTgsIGJ5PSJjb21wZXRpdG9yIikNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFshaXMubmEobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLF0NCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIGFudGlfam9pbihsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0LCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQoNCiNSLmx3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCRSLm5ldw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICMsUi5sd3JfY2F0DQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KI24gPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0WywxXQ0KI1RlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INCiNTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KI0UgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KI1IubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KI21heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KI1Byb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQojbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQojUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiNlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAjICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAjICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAjICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAjICAgICAgICAgICAgICAgICAgKSkNCg0KIyMgZnJvbV9sd3JfQ2F0ICMjIyMjIyMjIyMjIyMjIyMjDQojbiA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCiNOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQojUi5kZWJ1dCA8LSBSLmx3cl9jYXQNCiNuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywxXQ0KI1RlYW0gPC0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDJdKQ0KI2NhdGVnIDwtIGJsb2MuU3ViMTZGLmFfYg0KI1MgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KI0UgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KI1IubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KI21heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KI1Byb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQojbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQojUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiNlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICMgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICMgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAjICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9ICN1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCiMjIyMNCiNlbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjLCBlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0DQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjI1xfIEVsbyBIaXN0b3J5IFxfDQoNCmBgYHtyfQ0KIyMgDQpjb21wZT0gIjIwMjMuNCINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJTdWIxOEYiLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpKQ0KDQojDQplbG8uaGlzdG9yeSA8LSBlbG8uaGlzdG9yeSAlPiUgcmJpbmQoZWxvLmhpc3RvcnkubGFzdCkNCg0KIyB0aW1lLXNlcmllcyBkYXRhLmZyYW1lDQojIyBTdWIxOEYNCmVsby5oaXN0b3J5LnRfc2VyaWVzLlMxOEYgPC0gDQogIGFzX3RpYmJsZShlbG8uaGlzdG9yeSAlPiUNCiAgICAgICAgICAgICAgZmlsdGVyKGNhdGVnPT0iU3ViMThGIikgJT4lDQogICAgICAgICAgICAgIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkgDQojIyANCg0KYGBgDQoNCiMjIyBFbG8gaW4gdGltZQ0KDQpgYGB7ciBpbmNsdWRlPVRSVUUsIGZpZy53aWR0aD0gMTZ9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gVGVhbSkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUobGluZXR5cGU9ICJkYXNoZWQiKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MTAwMCxsaW5ldHlwZT0gImRhc2hlZCIpDQoNCiNwDQpnZ3Bsb3RseShwKQ0KYGBgDQoNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBOb3ZfMjAyMyoqDQoNCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmVsby5sYXN0LmFjY3VtDQplbG8ubGFzdC5jb21wLm5ldw0KYGBgDQoNCmBgYHtyIGV2YWw9VFJVRSwgaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PTd9DQoNCmVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQgPC0gZWxvLmxhc3QuYWNjdW0gJT4lIGFudGlfam9pbihlbG8ubGFzdC5jb21wLm5ldyxieT0iY29tcGV0aXRvciIpDQoNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSksYygxLDIsNiw3LDgpXSkNCmBgYA0KDQoNCiMjIyAyMDIzIE5vdi1TdWIyMA0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyMy0xMS0xMWApLCBjKDEsMiwxNildICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gMjAyMyBOb3YtU3ViMjANCg0KKi1Db21wZXRpdG9ycyA9IGByYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDE2KV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMy0xMS0xMWAhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KYGBge3J9DQojI2NvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSByaWdodF9qb2luKGVsby4yMi5hY2N1bS50b19zdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQoNCiNSLmx3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCRSLm5ldw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICMsUi5sd3JfY2F0DQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzddIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs3XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCiNuID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KI04gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCiNSLmRlYnV0IDwtIFIubHdyX2NhdA0KI25hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDFdDQojVGVhbSA8LSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMl0pDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gI3VubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAjICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAjICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIywgZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjI1xfIEVsbyBIaXN0b3J5IFxfDQoNCmBgYHtyfQ0KIyMgDQpjb21wZT0gIjIwMjMuNC0yMCINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJTdWIyMEYiLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpKQ0KDQojDQplbG8uaGlzdG9yeSA8LSBlbG8uaGlzdG9yeSAlPiUgcmJpbmQoZWxvLmhpc3RvcnkubGFzdCkNCg0KIyB0aW1lLXNlcmllcyBkYXRhLmZyYW1lDQojIyBTdWIxOEYNCmVsby5oaXN0b3J5LnRfc2VyaWVzLlMxOEYgPC0gDQogIGFzX3RpYmJsZShlbG8uaGlzdG9yeSAlPiUNCiAgICAgICAgICAgICAgZmlsdGVyKGNhdGVnPT0iU3ViMjBGIikgJT4lDQogICAgICAgICAgICAgIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkgDQojIyANCg0KYGBgDQoNCiMjIyBFbG8gaW4gdGltZQ0KDQpgYGB7ciBpbmNsdWRlPVRSVUUsIGZpZy53aWR0aD0gMTZ9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YifGNhdGVnPT0iU3ViMjBGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IFRlYW0pKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgTm92LVN1YjIwXzIwMjMqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KDQoNCiMjIyAyMDIzIE5vdi1BYnMNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjMtMTEtMTJgKSwgYygxLDIsMTcpXSAlPiUgcHJpbnQobj02NSkNCmBgYA0KDQojIyMgRWxvIDIwMjMgTm92LUFicw0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDE3KV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyMy0xMS0xMmAhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGANCg0KYGBge3J9DQojI2NvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSByaWdodF9qb2luKGVsby4yMi5hY2N1bS50b19zdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQoNCiNSLmx3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCRSLm5ldw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApDQogICAgICAgICAgICAgICAgICAgICAgICMsUi5sd3JfY2F0DQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCiNuID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KI04gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCiNSLmRlYnV0IDwtIFIubHdyX2NhdA0KI25hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDFdDQojVGVhbSA8LSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMl0pDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gI3VubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAjICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAjICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICMgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAjICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIywgZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCg0KDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQoNCmBgYA0KDQojIyMjI1xfIEVsbyBIaXN0b3J5IFxfDQoNCmBgYHtyfQ0KIyMgDQpjb21wZT0gIjIwMjMuNC1BYnMiDQplbG8uaGlzdG9yeS5sYXN0IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSANCiAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSksDQogICAgICAgICBjYXRlZyA9IHJlcCgiQWJzRiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCmVsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJBYnNGIikgJT4lDQogICAgICAgICAgICAgIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvcn5jb21wLCB2YWx1ZS52YXIgPSAiUi5uZXciKSkgDQojIyANCg0KYGBgDQoNCiMjIyBFbG8gaW4gdGltZQ0KDQpgYGB7ciBpbmNsdWRlPVRSVUUsIGZpZy53aWR0aD0gMTZ9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YifGNhdGVnPT0iU3ViMjBGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IFRlYW0pKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgTm92LUFic18yMDIzKioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCg0KDQojIyMjIEFuY2hvcmluZyAnZWxvLmxhc3QuYWNjdW0nIDIwMjMNCg0KYGBge3IgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLjIzLmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtDQpgYGANCg0KIyMjIyBNRVJHSU5HIEZST00gU1VCMTYtMjAyMw0KDQpgYGB7cn0NCmJsb2MuU3ViMTZGIDwtIHJhbmtzICU+JQ0KICBmaWx0ZXIoc3RhZ2U9PSJDbGFzaWZpYyIsDQogICAgICAgICBDYXRlZ29yeT09IlN1YjE2X0YiLA0KICAgICAgICAgeWVhcj09IjIwMjIifHllYXI9PSIyMDIzIiwNCiAgICAgICAgICNOYW1lPT0gbm9tYnJlDQogICAgICAgICApICU+JQ0KICBncm91cF9ieShjb21wZXRpdG9yPSBOYW1lLA0KICAgICAgICAgICBZZWFyPSB5ZWFyLA0KICAgICAgICAgICBDb21wZT0gQ29tcGVfLA0KICAgICAgICAgICBUZWFtID0gVGVhbSwNCiAgICAgICAgICAgRGF0ZT0gRGF0ZSkgJT4lDQogIHJlZnJhbWUocmFuaz0gUmFuaykgJT4lDQogIHJlc2hhcGUyOjpkY2FzdChmb3JtdWxhID0gY29tcGV0aXRvciArIFRlYW0gfiBDb21wZSwgDQogICAgICAgICAgICAgICAgICBuYS5ybSA9IFRSVUUpDQoNCmJsb2MuU3ViMTZGIDwtIGFzX3RpYmJsZShibG9jLlN1YjE2RikNCiMjDQpibG9jLlN1YjE2Ri5kIDwtIGJsb2MuU3ViMTZGWyxjKDEsMiw2KV0gJT4lIGZpbHRlcihibG9jLlN1YjE2RiRkLmJsb2MuZmlyc3QuMjMhPSJOQSIpIA0KIw0KYmxvYy5TdWIxNkYuZC5kZWJ1dCA8LSBibG9jLlN1YjE2Ri5kICU+JSBhbnRpX2pvaW4oZWxvLmMuYmxvYy50aHJkLjIyLmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQoNCg0KDQoNCg0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGJsb2MuU3ViMTZGLmQuZGVidXQkY29tcGV0aXRvcikNCiMjIw0KZCA8LSBibG9jLlN1YjE2Ri5kICU+JSByaWdodF9qb2luKGVsby5jLmJsb2MudGhyZC4yMi5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChkJGNvbXBldGl0b3JbIWlzLm5hKGQkZC5ibG9jLmZpcnN0LjIzKV0pDQpSIDwtIGQkUi5uZXdbIWlzLm5hKGQkZC5ibG9jLmZpcnN0LjIzKV0NCm5hbWVzIDwtIGRbIWlzLm5hKGQkZC5ibG9jLmZpcnN0LjIzKSwxXQ0KVGVhbSA8LSBkJFRlYW0ueFshaXMubmEoZCRkLmJsb2MuZmlyc3QuMjMpXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGJsb2MuU3ViMTZGLmQkZC5ibG9jLmZpcnN0LjIzDQpzdGRldiA8LSBzZChyZXN1bHRzKQ0KIw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApKSkNCm1lZGlhbmEgPC0gbWVkaWFuKGJsb2MuU3ViMTZGJGQuYmxvYy5maXJzdC4yM1shaXMubmEoYmxvYy5TdWIxNkYkZC5ibG9jLmZpcnN0LjIzKV0pDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gZCRkLmJsb2MuZmlyc3QuMjNbIWlzLm5hKGQkZC5ibG9jLmZpcnN0LjIzKV0gKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQoNCmVsby5kLmJsb2MuZmlyc3QuMjMgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBkJGQuYmxvYy5maXJzdC4yM1shaXMubmEoZCRkLmJsb2MuZmlyc3QuMjMpXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5kLmJsb2MuZmlyc3QuMjMgPC0gYXNfdGliYmxlKGVsby5kLmJsb2MuZmlyc3QuMjMpDQoNCiMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuID0gbGVuZ3RoKGJsb2MuU3ViMTZGLmQuZGVidXQkZC5ibG9jLmZpcnN0LjIzKQ0KTiA8LSBsZW5ndGgoYmxvYy5TdWIxNkYkZC5ibG9jLmZpcnN0LjIzWyFpcy5uYShibG9jLlN1YjE2RiRkLmJsb2MuZmlyc3QuMjMpXSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBibG9jLlN1YjE2Ri5kLmRlYnV0WywxXQ0KVGVhbSA8LSBibG9jLlN1YjE2Ri5kLmRlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INClMgPC0gKChtZWRpYW5hLSBibG9jLlN1YjE2Ri5kLmRlYnV0JGQuYmxvYy5maXJzdC4yMykgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8uZC5ibG9jLmZpcnN0LjIzJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmQuYmxvYy5maXJzdC4yMyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8uZC5ibG9jLmZpcnN0LjIzLmRlYnV0IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gYmxvYy5TdWIxNkYuZC5kZWJ1dCRkLmJsb2MuZmlyc3QuMjMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5kLmJsb2MuZmlyc3QuMjMuZGVidXQgPC0gYXNfdGliYmxlKGVsby5kLmJsb2MuZmlyc3QuMjMuZGVidXQpDQoNCmVsby5kLmJsb2MuZmlyc3QuMjMgPC0gZWxvLmQuYmxvYy5maXJzdC4yMyAlPiUgcmJpbmQoZWxvLmQuYmxvYy5maXJzdC4yMy5kZWJ1dCkNCg0KDQoNCg0KDQoNCiMgIyBDb3J0ZSBTdWIxNC1TdWIxNiBfMjAyNCAjIyMjICANCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBGaXJzdF8yMDIzKioNCiMjDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8uYy5ibG9jLnRocmQuMjIuYWNjdW0NCmVsby5sYXN0LmNvbXAgPC0gZWxvLmQuYmxvYy5maXJzdC4yMw0KIyMjDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcCxieT0iY29tcGV0aXRvciIpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIyMjIDIwMjMgU2Vjb25kICANCmJsb2MuU3ViMTZGW29yZGVyKGJsb2MuU3ViMTZGJGUuYmxvYy5zZWMuMjMpLCBjKDEsMiw2LDcpXSAlPiUgcHJpbnQobj02NSkNCiMjIyBFbG8gU2Vjb25kIDIwMjMgDQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxNkZbLGMoMSwyLDcpXSAlPiUgZmlsdGVyKGJsb2MuU3ViMTZGJGUuYmxvYy5zZWMuMjMhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KIyMjDQpsYXN0LmNvbXAuY2FsYyA8LSBsYXN0LmNvbXAgJT4lIHJpZ2h0X2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIw0KTiA8LSBsZW5ndGgobGFzdC5jb21wLmNhbGMkY29tcGV0aXRvclshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0pDQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCkpKQ0KIw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCApKSkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCikpDQojDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQpDQoNCiMjIyBfIEVsbyBIaXN0b3J5IF8NCmVsby5sYXN0LmFjY3VtDQplbG8ubGFzdC5jb21wLm5ldw0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCiMNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50KQ0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kY29tcGV0aXRvciksXQ0KIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSksYygxLDIsNiw3LDgpXSkNCiMNCmJsb2MuU3ViMTZGW29yZGVyKGJsb2MuU3ViMTZGJGYuYmxvYy50aHJkLjIzKSxjKDEsMiw2LDcsOCldICU+JSBmaWx0ZXIoZi5ibG9jLnRocmQuMjMhPSJOQSIgKQ0KIyMjIEVsbyBUaGlyZCAyMDIzIA0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMTZGWyxjKDEsMiw4KV0gJT4lIGZpbHRlcihibG9jLlN1YjE2RiRmLmJsb2MudGhyZC4yMyE9Ik5BIikgDQojDQpsYXN0X2NvbXBfZGVidXQgPC0gbGFzdC5jb21wICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0ICkpKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQopDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCikpDQojDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQpDQojIyMjIyAjIyMjIyMjIyMjDQprbml0cjo6a2FibGUoZWxvLmxhc3QuY29tcC5uZXdbb3JkZXIoZWxvLmxhc3QuY29tcC5uZXckcmVzdWx0cyksYygxLDIsMyw0LDYsNyw4KV0pDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgVGhpcmRfMjAyMyoqDQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCiMNCmVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQgPC0gZWxvLmxhc3QuYWNjdW0gJT4lIGFudGlfam9pbihlbG8ubGFzdC5jb21wLm5ldyxieT0iY29tcGV0aXRvciIpDQojDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQojIyMgMjAyMyBDaGFtcA0KYmxvYy5TdWIxNkZbb3JkZXIoYmxvYy5TdWIxNkYkZy5ibG9jLmNhbXAuMjMpLGMoMSwyLDYsNyw4LDkpXSAlPiUgZmlsdGVyKGcuYmxvYy5jYW1wLjIzIT0iTkEiICkNCiMjIyBFbG8gQ2FtcCAyMDIzIA0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMTZGWyxjKDEsMiw5KV0gJT4lIGZpbHRlcihibG9jLlN1YjE2RiRnLmJsb2MuY2FtcC4yMyE9Ik5BIikgDQojDQpsYXN0X2NvbXBfZGVidXQgPC0gbGFzdC5jb21wICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0KSkpDQojDQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0ICkpKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQopDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4gPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQpOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQpSLmRlYnV0IDwtIHJlcCgxMDAwLCBuKQ0KbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0WywxXQ0KVGVhbSA8LSBsYXN0X2NvbXBfZGVidXQkVGVhbQ0KIw0KUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQopKQ0KIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0KQ0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIENoYW1wXzIwMjMqKg0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQojDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCiMjIyogKipDYXB0dXJhbmRvIGxvcyBmdXR1cm9zIFN1YjE4fFN1YjIwfEFicyoqIA0KYmxvYy5TdWIxOEYuMjQgPC0gcmFua3MgJT4lDQogIGZpbHRlcihzdGFnZT09IkNsYXNpZmljIiwNCiAgICAgICAgIENhdGVnb3J5PT0iU3ViMThfRiJ8Q2F0ZWdvcnk9PSJBYnNfRiIsDQogICAgICAgICB5ZWFyPT0iMjAyNCINCiAgICAgICAgICMgICAgIE5hbWU9PSBub21icmUNCiAgKSAlPiUNCiAgZ3JvdXBfYnkoY29tcGV0aXRvcj0gTmFtZSwNCiAgICAgICAgICAgWWVhcj0geWVhciwNCiAgICAgICAgICAgQ29tcGU9IENvbXBlXywNCiAgICAgICAgICAgVGVhbSA9IFRlYW0sDQogICAgICAgICAgIERhdGU9IERhdGUpICU+JQ0KICByZWZyYW1lKHJhbms9IFJhbmspICU+JQ0KICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3IgKyBUZWFtIH4gRGF0ZSwgDQogICAgICAgICAgICAgICAgICBuYS5ybSA9IFRSVUUpDQojDQpibG9jLlN1YjE4Ri4yNCA8LSBhc190aWJibGUoYmxvYy5TdWIxOEYuMjQpDQojIyMqICpfTG9zIHN1YjE2ICJzYWxlbiJfKg0KIyMgZW52aWFuZG8gbG9zIHN1YjE2IGEgb3RybyBhcmNoaXZvDQplbG8uMjMuYWNjdW0udG9fU3ViMTggPC0gZWxvLmxhc3QuYWNjdW0gJT4lIHNlbWlfam9pbihibG9jLlN1YjE4Ri4yNCwgYnk9ImNvbXBldGl0b3IiKQ0KIyMgc3ViMTYgc2FsaWVuZG8NCiNlbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGJsb2MuU3ViMThGLjI0LGJ5PSJjb21wZXRpdG9yIikNCmBgYA0KDQojIyMgMjAyNCBBcHJpbA0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyNC0wNC0xM2ApLCBjKDEsMiwxOCldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gQXByaWwgMjAyNA0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDE4KV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyNC0wNC0xM2AhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby4yMy5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCmBgYHtyfQ0KIyMgZXgtU3ViMTQgY29taW5nIGluICMjIw0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIHJpZ2h0X2pvaW4oZWxvLjIzLmFjY3VtLnRvX1N1YjE4LCBieT0iY29tcGV0aXRvciIpDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbIWlzLm5hKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSxdDQojDQpsYXN0X2NvbXBfZGVidXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSBhbnRpX2pvaW4obGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCiMjIyMgcmUtaW5zdGF0aW5nICdlbG8ubGFzdC5hY2N1bScNCg0KYGBge3IgZWNobz1UUlVFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bSA8LSBlbG8uMjMuYWNjdW0gDQpgYGANCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQpuLmRlYnV0LmZyb21fbHdyX2NhdCA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQrbi5kZWJ1dC5mcm9tX2x3cl9jYXQpKSkNCiMNClIubHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0JFIubmV3DQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0KQ0KICAgICAgICAgICAgICAgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgIGMoUi5sd3JfY2F0KSANCiAgICAgICAgICAgICAgICAgICAgICAgKSkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCm4gPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQpOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQpSLmRlYnV0IDwtIFIubHdyX2NhdA0KbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMV0NClRlYW0gPC0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDJdKQ0KY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyNcXyBFbG8gSGlzdG9yeSBcXw0KDQpgYGB7cn0NCiMjIA0KY29tcGU9ICIyMDI0LjEiDQplbG8uaGlzdG9yeS5sYXN0IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSANCiAgbXV0YXRlKGNvbXAgPSByZXAoY29tcGUsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSksDQogICAgICAgICBjYXRlZyA9IHJlcCgiU3ViMThGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IlN1YjE4RiIpICU+JQ0KICAgICAgICAgICAgICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikpIA0KIyMgDQoNCmBgYA0KDQojIyMgRWxvIGluIHRpbWUNCg0KYGBge3IgaW5jbHVkZT1UUlVFLCBmaWcud2lkdGg9IDF9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YifGNhdGVnPT0iU3ViMjBGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IFRlYW0pKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lPSAiRWxvIFJhbmtpbmciKSArDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZSA9ICJUaW1lIikNCiNwDQpnZ3Bsb3RseShwKQ0KYGBgDQoNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBBcHJpbF8yMDI0KioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCiMjIyAyMDI0IEFwcmlsLUFicw0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyNC0wNC0xNGApLCBjKDEsMiwxOSldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gQXByaWwtQWJzIDIwMjQNCg0KKi1Db21wZXRpdG9ycyA9IGByIGAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwxOSldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjQtMDQtMTRgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgICANCg0KDQpgYGB7cn0NCiMjIGV4LVN1YjE0IGNvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSByaWdodF9qb2luKGVsby4yMy5hY2N1bS50b19TdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYCAgDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQpuLmRlYnV0LmZyb21fbHdyX2NhdCA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQrbi5kZWJ1dC5mcm9tX2x3cl9jYXQpKSkNCiMNClIubHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0JFIubmV3DQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0KQ0KICAgICAgICAgICAgICAgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgIGMoUi5sd3JfY2F0KSANCiAgICAgICAgICAgICAgICAgICAgICAgKSkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCm4gPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQpOIDwtIGxlbmd0aCh1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQpSLmRlYnV0IDwtIFIubHdyX2NhdA0KbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMV0NClRlYW0gPC0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDJdKQ0KY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SLmRlYnV0KS9EICkpKQ0KUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLSBSLm5ld1ssMV0pL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQplbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwxKSwiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkNCg0KIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmNvbXAubmV3LmRlYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGANCg0KIyMjIyNcXyBFbG8gSGlzdG9yeSBcXw0KDQpgYGB7cn0NCiMjIA0KY29tcGU9ICIyMDI0LjEtQWJzIg0KZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgDQogIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLA0KICAgICAgICAgY2F0ZWcgPSByZXAoIkFic0YiLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpKQ0KDQojDQplbG8uaGlzdG9yeSA8LSBlbG8uaGlzdG9yeSAlPiUgcmJpbmQoZWxvLmhpc3RvcnkubGFzdCkNCg0KIyB0aW1lLXNlcmllcyBkYXRhLmZyYW1lDQojIyBTdWIxOEYNCmVsby5oaXN0b3J5LnRfc2VyaWVzLlMxOEYgPC0gDQogIGFzX3RpYmJsZShlbG8uaGlzdG9yeSAlPiUNCiAgICAgICAgICAgICAgZmlsdGVyKGNhdGVnPT0iQWJzRiIpICU+JQ0KICAgICAgICAgICAgICByZXNoYXBlMjo6ZGNhc3QoZm9ybXVsYSA9IGNvbXBldGl0b3J+Y29tcCwgdmFsdWUudmFyID0gIlIubmV3IikpIA0KIyMgDQoNCmBgYA0KDQojIyMgRWxvIGluIHRpbWUNCg0KYGBge3IgaW5jbHVkZT1UUlVFLCBmaWcud2lkdGg9IDE2fQ0KcCA8LSBlbG8uaGlzdG9yeSAlPiUgDQogIGZpbHRlcihjYXRlZz09IlN1YjE4RiJ8Y2F0ZWc9PSJBYnNGInxjYXRlZz09IlN1YjIwRiIsIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBUZWFtKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZShsaW5ldHlwZT0gImRhc2hlZCIpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdD0xMDAwLGxpbmV0eXBlPSAiZGFzaGVkIikNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEFwcmlsLUFic18yMDI0KioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCiMjIyAyMDI0IEp1bmUNCg0KYGBge3IgaW5jbHVkZT1UUlVFfQ0KYmxvYy5TdWIxOEZbb3JkZXIoYmxvYy5TdWIxOEYkYDIwMjQtMDYtMjlgKSwgYygxLDIsMjApXSAlPiUgcHJpbnQobj02NSkNCmBgYA0KDQojIyMgRWxvIEp1bmUgMjAyNA0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUUgfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwyMCldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjQtMDYtMjlgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCg0KYGBge3J9DQojIyBleC1TdWIxNCBjb21pbmcgaW4gIyMjDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgcmlnaHRfam9pbihlbG8uMjMuYWNjdW0udG9fU3ViMTgsIGJ5PSJjb21wZXRpdG9yIikNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFshaXMubmEobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLF0NCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIGFudGlfam9pbihsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0LCBieT0iY29tcGV0aXRvciIpDQpgYGAgIA0KDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KI24uZGVidXQuZnJvbV9sd3JfY2F0ID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KIyMjDQpsYXN0LmNvbXAuY2FsYyA8LSBsYXN0LmNvbXAgJT4lIHJpZ2h0X2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIw0KTiA8LSBsZW5ndGgobGFzdC5jb21wLmNhbGMkY29tcGV0aXRvclshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0pDQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCtuLmRlYnV0LmZyb21fbHdyX2NhdCkpKQ0KIw0KI1IubHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0JFIubmV3DQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0KQ0KICMgICAgICAgICAgICAgICAgICAgICAgLA0KICAjICAgICAgICAgICAgICAgICAgICAgYyhSLmx3cl9jYXQpIA0KICAgICAgICAgICAgICAgICAgICAgICApKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMjIyMjIyMjIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQoNCiMjIGZyb21fbHdyX0NhdCAjIyMjIyMjIyMjIyMjIyMjIw0KI24gPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gUi5sd3JfY2F0DQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMV0NCiNUZWFtIDwtIHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywyXSkNCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INCiNTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCiNFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNCiNSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCiNtYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNCiNQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KI21heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KI1Byb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAjICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAjICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCiMjIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGAgIA0KDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyNC4yIg0KZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgDQogIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLA0KICAgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE4RiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCmVsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0gMTZ9DQpwIDwtIGVsby5oaXN0b3J5ICU+JSANCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IkFic0YifGNhdGVnPT0iU3ViMjBGIiwgUi5uZXc+PTApICU+JQ0KICBnZ3Bsb3QoYWVzKHg9IGNvbXAsIHk9IFIubmV3LCBncm91cCA9IGNvbXBldGl0b3IsIGNvbCA9IFRlYW0pKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgSnVuZV8yMDI0KioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCg0KDQojIyMgMjAyNCBKdW5lLUFicw0KDQpgYGB7ciBpbmNsdWRlPVRSVUV9DQpibG9jLlN1YjE4RltvcmRlcihibG9jLlN1YjE4RiRgMjAyNC0wNi0zMGApLCBjKDEsMiwyMSldICU+JSBwcmludChuPTY1KQ0KYGBgDQoNCiMjIyBFbG8gSnVuZS1BYnMgMjAyNA0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUV9DQpsYXN0LmNvbXAgPC0gYmxvYy5TdWIxOEZbLGMoMSwyLDIxKV0gJT4lIGZpbHRlcihibG9jLlN1YjE4RiRgMjAyNC0wNi0zMGAhPSJOQSIpIA0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3QuY29tcCAlPiUgYW50aV9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQpgYGAgIA0KDQoNCmBgYHtyfQ0KIyMgZXgtU3ViMTQgY29taW5nIGluICMjIw0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIHJpZ2h0X2pvaW4oZWxvLjIzLmFjY3VtLnRvX1N1YjE4LCBieT0iY29tcGV0aXRvciIpDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbIWlzLm5hKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSxdDQojDQpsYXN0X2NvbXBfZGVidXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSBhbnRpX2pvaW4obGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgICANCg0KDQpgYGB7ciBldmFsPSBUUlVFLGluY2x1ZGU9VFJVRSwgY29scy5wcmludD0gN30NCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyBFTE8gIyMjIyMjIyMjIyMjIyMjIyMNCiMjIyAjIyBFTE8gKE5BU0NBUikgIyMjIyMjIyMjIyMjIw0Kbi5kZWJ1dCA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCiNuLmRlYnV0LmZyb21fbHdyX2NhdCA9IG5yb3cobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCkNCiMjIw0KbGFzdC5jb21wLmNhbGMgPC0gbGFzdC5jb21wICU+JSByaWdodF9qb2luKGVsby5sYXN0LmFjY3VtLCBieT0iY29tcGV0aXRvciIpDQojIyMNCk4gPC0gbGVuZ3RoKGxhc3QuY29tcC5jYWxjJGNvbXBldGl0b3JbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldKQ0KUiA8LSBsYXN0LmNvbXAuY2FsYyRSLm5ld1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCm5hbWVzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDFdDQpUZWFtIDwtIGxhc3QuY29tcC5jYWxjJFRlYW0ueFshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcmVzdWx0cyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXQ0KcmVzdWx0cyA8LSAodW5saXN0KHJlc3VsdHMpKQ0Kc3RkZXYgPC0gc2QoYygxOihOK24uZGVidXQrbi5kZWJ1dC5mcm9tX2x3cl9jYXQpKSkNCiMNCiNSLmx3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCRSLm5ldw0KYXZnLnBsYXllciA8LSBtZWRpYW4oYyhSLCByZXAoMTAwMCwgbi5kZWJ1dCkNCiAjICAgICAgICAgICAgICAgICAgICAgICwNCiAgIyAgICAgICAgICAgICAgICAgICAgIGMoUi5sd3JfY2F0KSANCiAgICAgICAgICAgICAgICAgICAgICAgKSkNCm1lZGlhbmEgPC0gbWVkaWFuKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCm1heC5zdGQgPC0gKG1lZGlhbmEtMSkvc3RkZXYNCiMjIyMjIyMjIyMjIyMjIyMjIw0KUyA8LSAoKG1lZGlhbmEgLSB1bmxpc3QobGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10pICkgLyBzdGRldikgLyBtYXguc3RkDQpEID0gNDAwDQprID0gMzINCkUgPC0gMS8oMSsoMTBeKCAoYXZnLnBsYXllci1SKS9EICkpKQ0KUi5uZXcgPC0gUiArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQptYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNClByb2IuRmluYWxzIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbOV0gLVIubmV3KS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ldykvRCApKSkNCiMjIw0KZWxvLmxhc3QuY29tcC5uZXcgPC0gY2JpbmQobmFtZXMgPSBuYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW09IFRlYW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXcsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsMSksICIlIiApIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KZWxvLmxhc3QuY29tcC5uZXcgPC0gYXNfdGliYmxlKGVsby5sYXN0LmNvbXAubmV3KQ0KIyMjIyMjIyMjIyMNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbiA9IGxlbmd0aChsYXN0X2NvbXBfZGVidXQkY29tcGV0aXRvcikNCk4gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNClIuZGVidXQgPC0gcmVwKDEwMDAsIG4pDQpuYW1lcyA8LSBsYXN0X2NvbXBfZGVidXRbLDFdDQpUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQpTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dFssM10pIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQpSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXdbLDFdKS9EICkpKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmVsby5sYXN0LmNvbXAubmV3LmRlYnV0IDwtIGFzX3RpYmJsZShjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHVubGlzdChsYXN0X2NvbXBfZGVidXRbLDNdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ld1ssMV0sMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIikgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKQ0KDQojIyBmcm9tX2x3cl9DYXQgIyMjIyMjIyMjIyMjIyMjIyMNCiNuID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KI04gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCiNSLmRlYnV0IDwtIFIubHdyX2NhdA0KI25hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDFdDQojVGVhbSA8LSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMl0pDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQojRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIuZGVidXQpL0QgKSkpDQojUi5uZXcgPC0gUi5kZWJ1dCArIChrICogKFMgLSAoKDIqRSkvTikgKSApDQojDQojbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQojUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoZWxvLmxhc3QuY29tcC5uZXckUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtIFIubmV3WywxXSkvRCApKSkNCiNtYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNCiNQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSwNCiAgICAjICAgICAgICAgICAgICAgICAgICAgICBTID0gU1ssMV0sDQogICAgICMgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICMgICAgICAgICAgICAgICAgICAgICBQcm9iLkZpbmFscz0gcGFzdGUocm91bmQoUHJvYi5GaW5hbHMqMTAwLDEpLCIlIiksDQogICAgICAgIyAgICAgICAgICAgICAgICAgICAgUHJvYi5wb2RpdW0gPSBwYXN0ZShyb3VuZChQcm9iLnBvZGl1bSoxMDAsIDEpLA0KICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICMgICAgICAgICAgICAgICAgICApKQ0KDQojIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuY29tcC5uZXcuZGVidXQNCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLA0KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dC5sd3JfY2F0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyNC4yLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgZmlnLndpZHRoPSAxNn0NCnAgPC0gZWxvLmhpc3RvcnkgJT4lIA0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iQWJzRiJ8Y2F0ZWc9PSJTdWIyMEYiLCBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gVGVhbSkpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUobGluZXR5cGU9ICJkYXNoZWQiKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MTAwMCxsaW5ldHlwZT0gImRhc2hlZCIpDQoNCiNwDQpnZ3Bsb3RseShwKQ0KYGBgDQoNCiMjIyAqKkVsbyBBY2N1bXVsYXRlZCBKdW5lLUFic18yMDI0KioNCg0KYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZWxvLmxhc3QuYWNjdW0NCmVsby5sYXN0LmNvbXAubmV3DQpgYGANCg0KYGBge3IgZXZhbD1UUlVFLCBpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9N30NCg0KZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCA8LSBlbG8ubGFzdC5hY2N1bSAlPiUgYW50aV9qb2luKGVsby5sYXN0LmNvbXAubmV3LGJ5PSJjb21wZXRpdG9yIikNCg0KZWxvLmxhc3QuYWNjdW0gPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIHJiaW5kKGVsby5sYXN0LmFjY3VtX2xhc3QuY29tcF9hYnNlbnQpDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRjb21wZXRpdG9yKSxdDQojDQprbml0cjo6a2FibGUoZWxvLmxhc3QuYWNjdW1bb3JkZXIoZWxvLmxhc3QuYWNjdW0kUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKSxjKDEsMiw2LDcsOCldKQ0KYGBgDQoNCg0KIyMjIDIwMjQgTm92DQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDI0LTExLTA5YCksIGMoMSwyLDIyKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyBOb3YgMjAyNA0KDQoqLUNvbXBldGl0b3JzID0gYHIgYC0qDQoNCmBgYHtyIGV2YWw9VFJVRSxpbmNsdWRlPVRSVUUgfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwyMildICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjQtMTEtMDlgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgDQoNCg0KYGBge3J9DQojIyBleC1TdWIxNCBjb21pbmcgaW4gIyMjDQpsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgcmlnaHRfam9pbihlbG8uMjMuYWNjdW0udG9fU3ViMTgsIGJ5PSJjb21wZXRpdG9yIikNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFshaXMubmEobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLF0NCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0X2NvbXBfZGVidXQgJT4lIGFudGlfam9pbihsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0LCBieT0iY29tcGV0aXRvciIpDQpgYGAgIA0KDQoNCmBgYHtyIGV2YWw9IFRSVUUsaW5jbHVkZT1UUlVFLCBjb2xzLnByaW50PSA3fQ0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjIEVMTyAjIyMjIyMjIyMjIyMjIyMjIw0KIyMjICMjIEVMTyAoTkFTQ0FSKSAjIyMjIyMjIyMjIyMjDQpuLmRlYnV0ID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KI24uZGVidXQuZnJvbV9sd3JfY2F0ID0gbnJvdyhsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0KQ0KIyMjDQpsYXN0LmNvbXAuY2FsYyA8LSBsYXN0LmNvbXAgJT4lIHJpZ2h0X2pvaW4oZWxvLmxhc3QuYWNjdW0sIGJ5PSJjb21wZXRpdG9yIikNCiMjIw0KTiA8LSBsZW5ndGgobGFzdC5jb21wLmNhbGMkY29tcGV0aXRvclshaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKV0pDQpSIDwtIGxhc3QuY29tcC5jYWxjJFIubmV3WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KbmFtZXMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksMV0NClRlYW0gPC0gbGFzdC5jb21wLmNhbGMkVGVhbS54WyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpyZXN1bHRzIDwtIGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdDQpyZXN1bHRzIDwtICh1bmxpc3QocmVzdWx0cykpDQpzdGRldiA8LSBzZChjKDE6KE4rbi5kZWJ1dCtuLmRlYnV0LmZyb21fbHdyX2NhdCkpKQ0KIw0KI1IubHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0JFIubmV3DQphdmcucGxheWVyIDwtIG1lZGlhbihjKFIsIHJlcCgxMDAwLCBuLmRlYnV0KQ0KICMgICAgICAgICAgICAgICAgICAgICAgLA0KICAjICAgICAgICAgICAgICAgICAgICAgYyhSLmx3cl9jYXQpIA0KICAgICAgICAgICAgICAgICAgICAgICApKQ0KbWVkaWFuYSA8LSBtZWRpYW4odW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KbWF4LnN0ZCA8LSAobWVkaWFuYS0xKS9zdGRldg0KIyMjIyMjIyMjIyMjIyMjIyMjDQpTIDwtICgobWVkaWFuYSAtIHVubGlzdChsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwzXSkgKSAvIHN0ZGV2KSAvIG1heC5zdGQNCkQgPSA0MDANCmsgPSAzMg0KRSA8LSAxLygxKygxMF4oIChhdmcucGxheWVyLVIpL0QgKSkpDQpSLm5ldyA8LSBSICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCm1heC5jdXQuZmluYWxzIDwtIChzdGRldi05KS9zdGRldg0KUHJvYi5GaW5hbHMgPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs5XSAtUi5uZXcpL0QgKSkpDQptYXguY3V0LnBvZGl1bSA8LSAoc3RkZXYtNCkvc3RkZXYNClByb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3KS9EICkpKQ0KIyMjDQplbG8ubGFzdC5jb21wLm5ldyA8LSBjYmluZChuYW1lcyA9IG5hbWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gUywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFIubmV3PSByb3VuZChSLm5ldywyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwxKSwgIiUiICkgDQogICAgICAgICAgICAgICAgICAgICAgICAgICApDQplbG8ubGFzdC5jb21wLm5ldyA8LSBhc190aWJibGUoZWxvLmxhc3QuY29tcC5uZXcpDQojIyMjIyMjIyMjIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KUi5kZWJ1dCA8LSByZXAoMTAwMCwgbikNCm5hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NClRlYW0gPC0gbGFzdF9jb21wX2RlYnV0JFRlYW0NCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INClMgPC0gKChtZWRpYW5hIC0gbGFzdF9jb21wX2RlYnV0WywzXSkgLyBzdGRldikgLyBtYXguc3RkDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNClIubmV3IDwtIFIuZGVidXQgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KbWF4LmN1dC5wb2RpdW0gPC0gKHN0ZGV2LTQpL3N0ZGV2DQpQcm9iLnBvZGl1bSA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzRdIC1SLm5ld1ssMV0pL0QgKSkpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIuZGVidXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFNbLDFdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3WywxXSwyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQoNCiMjIGZyb21fbHdyX0NhdCAjIyMjIyMjIyMjIyMjIyMjIw0KI24gPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gUi5sd3JfY2F0DQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMV0NCiNUZWFtIDwtIHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywyXSkNCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INCiNTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCiNFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNCiNSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCiNtYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNCiNQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KI21heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KI1Byb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAjICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAjICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCiMjIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Vsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQoNCg0KIyMjIyMgIyMjIyMjIyMjIw0Ka25pdHI6OmthYmxlKGVsby5sYXN0LmNvbXAubmV3W29yZGVyKGVsby5sYXN0LmNvbXAubmV3JHJlc3VsdHMpLGMoMSwyLDMsNCw2LDcsOCldKQ0KDQpgYGAgIA0KDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyNC4zIg0KZWxvLmhpc3RvcnkubGFzdCA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgDQogIG11dGF0ZShjb21wID0gcmVwKGNvbXBlLCBsZW5ndGgoZWxvLmxhc3QuY29tcC5uZXckY29tcGV0aXRvcikpLA0KICAgICAgICAgY2F0ZWcgPSByZXAoIlN1YjE4RiIsIGxlbmd0aChlbG8ubGFzdC5jb21wLm5ldyRjb21wZXRpdG9yKSkpDQoNCiMNCmVsby5oaXN0b3J5IDwtIGVsby5oaXN0b3J5ICU+JSByYmluZChlbG8uaGlzdG9yeS5sYXN0KQ0KDQojIHRpbWUtc2VyaWVzIGRhdGEuZnJhbWUNCiMjIFN1YjE4Rg0KZWxvLmhpc3RvcnkudF9zZXJpZXMuUzE4RiA8LSANCiAgYXNfdGliYmxlKGVsby5oaXN0b3J5ICU+JQ0KICAgICAgICAgICAgICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0UsICBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9IDE2fQ0KI2lkID0gIiINCiNzaG9ydG5hbWUgPSAiIg0KIw0KI2NvbHM9IGMoIkZFRUMvRkVNRUNWIiA9ICJkYXJrb3JhbmdlMyIsDQogIyAgICAgICAiY2N0MjEiPSAieWVsbG93MyIsDQogICMgICAgICAiRkVNRUNWIiA9ICJyZWQ0IiwNCiAgICMgICAgICJPdGhlciBjbGltbmJlcnMiID0gImdyYXkiDQogICAgIyAgICApDQojDQpjY3QgPSBjKCJjY3QyMSIgPSAiYmxhY2siLA0KICAgICAgICAiRkVFQyIgPSAiZGFya29yYW5nZTMiLA0KICAgICAgICAiRkVNRUNWIiA9ICJyZWQ0IiwNCiAgICAgICAgIk90aGVyIGNsaW1iZXJzIj0gImRhcmtncmF5IikNCiMjDQpwIDwtIGVsby5oaXN0b3J5ICU+JQ0KICBtdXRhdGUoZm9jdXMgPSBjYXNlX3doZW4oY29tcGV0aXRvciA9PSAiQWJyaWwgRkFSUlVTIFNPUklBTk8iIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAiTWFyaWEgRkVSUsOJIFBSSU0iIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAgIkphbmEgRVNURVZFIFZBTERFUyIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICAiTcOybmljYSBKQVVTRVQgU0FCQVRFUiIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICAiUnV0IFRPUlJBTExBUkRPTkEgVkFMTCIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICAiQXNoYSBHVUlUQVJUIENIVU5HIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gICJKw7psaWEgQk9SR0VTIERFTCBWSUxMQVNBTlRFIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gICJNYXIgVklDRU5URSBKVUFOIERFIExBIENSVVoiIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAiQWluYSBWSUxBIENBTlRFUk8iIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAiTGFpYSBUQVVMQVRTIE1DRE9OQUxEIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gIkVsYmEgVkVSR8OJUyBTT0zDiSIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICJKb3NlZmEgR09OWsOBTEVaIExBUkEiIH4gImNjdDIxIiwNCiAgICAgICAgICAgICAgICAgICAgIFRlYW09PSAiRkVFQyIgfiAiRkVFQyIsIFRlYW09PSAiRkVNRUNWIiB+ICJGRU1FQ1YiLCBUUlVFIH4gIk90aGVyIGNsaW1iZXJzIikpICU+JQ0KICBmaWx0ZXIoY2F0ZWc9PSJTdWIxOEYifGNhdGVnPT0iU3ViMjBGInxjYXRlZz09IkFic0YiLCANCiAgICAgICAgIFIubmV3Pj0wKSAlPiUNCiAgZ2dwbG90KGFlcyh4PSBjb21wLCB5PSBSLm5ldywgZ3JvdXAgPSBjb21wZXRpdG9yLCBjb2wgPSBmb2N1cykpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUobGluZXR5cGU9ICJkYXNoZWQiKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MTAwMCxsaW5ldHlwZT0gImRhc2hlZCIpICsNCiAgc2NhbGVfY29sb3JfbWFudWFsKG5hbWUgPSAiQ2xpbWJlciIsDQogICAgICAgICAgICAgICAgICAgICBhZXN0aGV0aWNzID0gImNvbG9yIiwNCiAgICAgICAgICAgICAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGNjdA0KICAgICAgICAgICAgICAgICAgICAgKQ0KDQojcA0KZ2dwbG90bHkocCkNCmBgYA0KDQojIyMgKipFbG8gQWNjdW11bGF0ZWQgTm92XzIwMjQqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KDQojIyMgMjAyNCBOb3YtQWJzDQoNCmBgYHtyIGluY2x1ZGU9VFJVRX0NCmJsb2MuU3ViMThGW29yZGVyKGJsb2MuU3ViMThGJGAyMDI0LTExLTEwYCksIGMoMSwyLDIzKV0gJT4lIHByaW50KG49NjUpDQpgYGANCg0KIyMjIEVsbyBOb3YtQWJzIDIwMjQNCg0KKi1Db21wZXRpdG9ycyA9IGByIGAtKg0KDQpgYGB7ciBldmFsPVRSVUUsaW5jbHVkZT1UUlVFfQ0KbGFzdC5jb21wIDwtIGJsb2MuU3ViMThGWyxjKDEsMiwyMyldICU+JSBmaWx0ZXIoYmxvYy5TdWIxOEYkYDIwMjQtMTEtMTBgIT0iTkEiKSANCiMNCmxhc3RfY29tcF9kZWJ1dCA8LSBsYXN0LmNvbXAgJT4lIGFudGlfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KYGBgICANCg0KDQpgYGB7cn0NCiMjIGV4LVN1YjE0IGNvbWluZyBpbiAjIyMNCmxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQgPC0gbGFzdF9jb21wX2RlYnV0ICU+JSByaWdodF9qb2luKGVsby4yMy5hY2N1bS50b19TdWIxOCwgYnk9ImNvbXBldGl0b3IiKQ0KbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdCA8LSBsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WyFpcy5uYShsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywzXSksXQ0KIw0KbGFzdF9jb21wX2RlYnV0IDwtIGxhc3RfY29tcF9kZWJ1dCAlPiUgYW50aV9qb2luKGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQsIGJ5PSJjb21wZXRpdG9yIikNCmBgYCAgDQoNCg0KYGBge3IgZXZhbD0gVFJVRSxpbmNsdWRlPVRSVUUsIGNvbHMucHJpbnQ9IDd9DQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgRUxPICMjIyMjIyMjIyMjIyMjIyMjDQojIyMgIyMgRUxPIChOQVNDQVIpICMjIyMjIyMjIyMjIyMNCm4uZGVidXQgPSBsZW5ndGgobGFzdF9jb21wX2RlYnV0JGNvbXBldGl0b3IpDQojbi5kZWJ1dC5mcm9tX2x3cl9jYXQgPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQojIyMNCmxhc3QuY29tcC5jYWxjIDwtIGxhc3QuY29tcCAlPiUgcmlnaHRfam9pbihlbG8ubGFzdC5hY2N1bSwgYnk9ImNvbXBldGl0b3IiKQ0KIyMjDQpOIDwtIGxlbmd0aChsYXN0LmNvbXAuY2FsYyRjb21wZXRpdG9yWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pXSkNClIgPC0gbGFzdC5jb21wLmNhbGMkUi5uZXdbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQpuYW1lcyA8LSBsYXN0LmNvbXAuY2FsY1shaXMubmEobGFzdC5jb21wLmNhbGNbLDNdKSwxXQ0KVGVhbSA8LSBsYXN0LmNvbXAuY2FsYyRUZWFtLnhbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSldDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnJlc3VsdHMgPC0gbGFzdC5jb21wLmNhbGNbIWlzLm5hKGxhc3QuY29tcC5jYWxjWywzXSksM10NCnJlc3VsdHMgPC0gKHVubGlzdChyZXN1bHRzKSkNCnN0ZGV2IDwtIHNkKGMoMTooTituLmRlYnV0K24uZGVidXQuZnJvbV9sd3JfY2F0KSkpDQojDQojUi5sd3JfY2F0IDwtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQkUi5uZXcNCmF2Zy5wbGF5ZXIgPC0gbWVkaWFuKGMoUiwgcmVwKDEwMDAsIG4uZGVidXQpDQogIyAgICAgICAgICAgICAgICAgICAgICAsDQogICMgICAgICAgICAgICAgICAgICAgICBjKFIubHdyX2NhdCkgDQogICAgICAgICAgICAgICAgICAgICAgICkpDQptZWRpYW5hIDwtIG1lZGlhbih1bmxpc3QobGFzdC5jb21wWyFpcy5uYShsYXN0LmNvbXBbLDNdKSwzXSkpDQptYXguc3RkIDwtIChtZWRpYW5hLTEpL3N0ZGV2DQojIyMjIyMjIyMjIyMjIyMjIyMNClMgPC0gKChtZWRpYW5hIC0gdW5saXN0KGxhc3QuY29tcC5jYWxjWyFpcy5uYShsYXN0LmNvbXAuY2FsY1ssM10pLDNdKSApIC8gc3RkZXYpIC8gbWF4LnN0ZA0KRCA9IDQwMA0KayA9IDMyDQpFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUikvRCApKSkNClIubmV3IDwtIFIgKyAoayAqIChTIC0gKCgyKkUpL04pICkgKQ0KIw0KbWF4LmN1dC5maW5hbHMgPC0gKHN0ZGV2LTkpL3N0ZGV2DQpQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC1SLm5ldykvRCApKSkNCm1heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KUHJvYi5wb2RpdW0gPC0gMS8oMSsoMTBeKCAoIHNvcnQoUi5uZXcsIGRlY3JlYXNpbmcgPSBUUlVFKVs0XSAtUi5uZXcpL0QgKSkpDQojIyMNCmVsby5sYXN0LmNvbXAubmV3IDwtIGNiaW5kKG5hbWVzID0gbmFtZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IFIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5uZXc9IHJvdW5kKFIubmV3LDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYi5GaW5hbHM9IHBhc3RlKHJvdW5kKFByb2IuRmluYWxzKjEwMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2IucG9kaXVtID0gcGFzdGUocm91bmQoUHJvYi5wb2RpdW0qMTAwLDEpLCAiJSIgKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCmVsby5sYXN0LmNvbXAubmV3IDwtIGFzX3RpYmJsZShlbG8ubGFzdC5jb21wLm5ldykNCiMjIyMjIyMjIyMjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiNuID0gbGVuZ3RoKGxhc3RfY29tcF9kZWJ1dCRjb21wZXRpdG9yKQ0KI04gPC0gbGVuZ3RoKHVubGlzdChsYXN0LmNvbXBbIWlzLm5hKGxhc3QuY29tcFssM10pLDNdKSkNCiNSLmRlYnV0IDwtIHJlcCgxMDAwLCBuKQ0KI25hbWVzIDwtIGxhc3RfY29tcF9kZWJ1dFssMV0NCiNUZWFtIDwtIGxhc3RfY29tcF9kZWJ1dCRUZWFtDQojY2F0ZWcgPC0gYmxvYy5TdWIxNkYuYV9iDQojUyA8LSAoKG1lZGlhbmEgLSBsYXN0X2NvbXBfZGVidXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCiNFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNCiNSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCiNtYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNCiNQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KI21heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KI1Byb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQgPC0gYXNfdGliYmxlKGNiaW5kKG5hbWVzID0gbmFtZXMsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbT0gVGVhbSwNCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICBSID0gUi5kZWJ1dCwNCiAgICMgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gdW5saXN0KGxhc3RfY29tcF9kZWJ1dFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCiMjIGZyb21fbHdyX0NhdCAjIyMjIyMjIyMjIyMjIyMjIw0KI24gPSBucm93KGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXQpDQojTiA8LSBsZW5ndGgodW5saXN0KGxhc3QuY29tcFshaXMubmEobGFzdC5jb21wWywzXSksM10pKQ0KI1IuZGVidXQgPC0gUi5sd3JfY2F0DQojbmFtZXMgPC0gbGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssMV0NCiNUZWFtIDwtIHVubGlzdChsYXN0X2NvbXBfZGVidXQuZnJvbV9sd3JfY2F0WywyXSkNCiNjYXRlZyA8LSBibG9jLlN1YjE2Ri5hX2INCiNTIDwtICgobWVkaWFuYSAtIGxhc3RfY29tcF9kZWJ1dC5mcm9tX2x3cl9jYXRbLDNdKSAvIHN0ZGV2KSAvIG1heC5zdGQNCiNFIDwtIDEvKDErKDEwXiggKGF2Zy5wbGF5ZXItUi5kZWJ1dCkvRCApKSkNCiNSLm5ldyA8LSBSLmRlYnV0ICsgKGsgKiAoUyAtICgoMipFKS9OKSApICkNCiMNCiNtYXguY3V0LmZpbmFscyA8LSAoc3RkZXYtOSkvc3RkZXYNCiNQcm9iLkZpbmFscyA8LSAxLygxKygxMF4oICggc29ydChlbG8ubGFzdC5jb21wLm5ldyRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpWzldIC0gUi5uZXdbLDFdKS9EICkpKQ0KI21heC5jdXQucG9kaXVtIDwtIChzdGRldi00KS9zdGRldg0KI1Byb2IucG9kaXVtIDwtIDEvKDErKDEwXiggKCBzb3J0KGVsby5sYXN0LmNvbXAubmV3JFIubmV3LCBkZWNyZWFzaW5nID0gVFJVRSlbNF0gLVIubmV3WywxXSkvRCApKSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojZWxvLmxhc3QuY29tcC5uZXcuZGVidXQubHdyX2NhdCA8LSBhc190aWJibGUoY2JpbmQobmFtZXMgPSBuYW1lcywNCiAjICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtPSBUZWFtLA0KICAjICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBSLmRlYnV0LA0KICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB1bmxpc3QobGFzdF9jb21wX2RlYnV0LmZyb21fbHdyX2NhdFssM10pLA0KICAgICMgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTWywxXSwNCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICBSLm5ldz0gcm91bmQoUi5uZXdbLDFdLDIpLA0KICAgICAgIyAgICAgICAgICAgICAgICAgICAgIFByb2IuRmluYWxzPSBwYXN0ZShyb3VuZChQcm9iLkZpbmFscyoxMDAsMSksIiUiKSwNCiAgICAgICAjICAgICAgICAgICAgICAgICAgICBQcm9iLnBvZGl1bSA9IHBhc3RlKHJvdW5kKFByb2IucG9kaXVtKjEwMCwgMSksDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIpIA0KICAgICAgICAgIyAgICAgICAgICAgICAgICAgICkpDQoNCiMjIyMNCg0KI2Vsby5sYXN0LmNvbXAubmV3IDwtIGVsby5sYXN0LmNvbXAubmV3ICU+JSByYmluZChlbG8ubGFzdC5jb21wLm5ldy5kZWJ1dA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsby5sYXN0LmNvbXAubmV3LmRlYnV0Lmx3cl9jYXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgKQ0KDQoNCiMjIyMjICMjIyMjIyMjIyMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5jb21wLm5ld1tvcmRlcihlbG8ubGFzdC5jb21wLm5ldyRyZXN1bHRzKSxjKDEsMiwzLDQsNiw3LDgpXSkNCg0KYGBgDQoNCiMjIyMjXF8gRWxvIEhpc3RvcnkgXF8NCg0KYGBge3J9DQojIyANCmNvbXBlPSAiMjAyNC4zLUFicyINCmVsby5oaXN0b3J5Lmxhc3QgPC0gZWxvLmxhc3QuY29tcC5uZXcgJT4lIA0KICBtdXRhdGUoY29tcCA9IHJlcChjb21wZSwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSwNCiAgICAgICAgIGNhdGVnID0gcmVwKCJBYnNGIiwgbGVuZ3RoKGVsby5sYXN0LmNvbXAubmV3JGNvbXBldGl0b3IpKSkNCg0KIw0KZWxvLmhpc3RvcnkgPC0gZWxvLmhpc3RvcnkgJT4lIHJiaW5kKGVsby5oaXN0b3J5Lmxhc3QpDQoNCiMgdGltZS1zZXJpZXMgZGF0YS5mcmFtZQ0KIyMgU3ViMThGDQplbG8uaGlzdG9yeS50X3Nlcmllcy5TMThGIDwtIA0KICBhc190aWJibGUoZWxvLmhpc3RvcnkgJT4lDQogICAgICAgICAgICAgIGZpbHRlcihjYXRlZz09IkFic0YiKSAlPiUNCiAgICAgICAgICAgICAgcmVzaGFwZTI6OmRjYXN0KGZvcm11bGEgPSBjb21wZXRpdG9yfmNvbXAsIHZhbHVlLnZhciA9ICJSLm5ldyIpKSANCiMjIA0KDQpgYGANCg0KIyMjIEVsbyBpbiB0aW1lDQoNCmBgYHtyIGluY2x1ZGU9VFJVRSwgZmlnLndpZHRoPSAyMCwgZmlnLmhlaWdodD0xMH0NCiNpZCA9ICIiDQojc2hvcnRuYW1lID0gIiINCiMNCiNjb2xzPSBjKCJGRUVDL0ZFTUVDViIgPSAiZGFya29yYW5nZTMiLA0KICMgICAgICAgImNjdDIxIj0gInllbGxvdzMiLA0KICAjICAgICAgIkZFTUVDViIgPSAicmVkNCIsDQogICAjICAgICAiT3RoZXIgY2xpbW5iZXJzIiA9ICJncmF5Ig0KICAgICMgICAgKQ0KIw0KY2N0ID0gYygiY2N0MjEiID0gImJsYWNrIiwNCiAgICAgICAgIkZFRUMiID0gImRhcmtvcmFuZ2UzIiwNCiAgICAgICAgIkZFTUVDViIgPSAicmVkNCIsDQogICAgICAgICJPdGhlciBjbGltYmVycyI9ICJkYXJrZ3JheSIpDQojIw0KcCA8LSBlbG8uaGlzdG9yeSAlPiUNCiAgbXV0YXRlKGZvY3VzID0gY2FzZV93aGVuKGNvbXBldGl0b3IgPT0gIkFicmlsIEZBUlJVUyBTT1JJQU5PIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gIk1hcmlhIEZFUlLDiSBQUklNIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gICJKYW5hIEVTVEVWRSBWQUxERVMiIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAgIk3Dsm5pY2EgSkFVU0VUIFNBQkFURVIiIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAgIlJ1dCBUT1JSQUxMQVJET05BIFZBTEwiIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAgIkFzaGEgR1VJVEFSVCBDSFVORyIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICAiSsO6bGlhIEJPUkdFUyBERUwgVklMTEFTQU5URSIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICAiTWFyIFZJQ0VOVEUgSlVBTiBERSBMQSBDUlVaIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gIkFpbmEgVklMQSBDQU5URVJPIiB+ICJjY3QyMSIsIGNvbXBldGl0b3IgPT0gIkxhaWEgVEFVTEFUUyBNQ0RPTkFMRCIgfiAiY2N0MjEiLCBjb21wZXRpdG9yID09ICJFbGJhIFZFUkfDiVMgU09Mw4kiIH4gImNjdDIxIiwgY29tcGV0aXRvciA9PSAiSm9zZWZhIEdPTlrDgUxFWiBMQVJBIiB+ICJjY3QyMSIsDQogICAgICAgICAgICAgICAgICAgICBUZWFtPT0gIkZFRUMiIH4gIkZFRUMiLCBUZWFtPT0gIkZFTUVDViIgfiAiRkVNRUNWIiwgVFJVRSB+ICJPdGhlciBjbGltYmVycyIpKSAlPiUNCiAgZmlsdGVyKGNhdGVnPT0iU3ViMThGInxjYXRlZz09IlN1YjIwRiJ8Y2F0ZWc9PSJBYnNGIiwgDQogICAgICAgICBSLm5ldz49MCkgJT4lDQogIGdncGxvdChhZXMoeD0gY29tcCwgeT0gUi5uZXcsIGdyb3VwID0gY29tcGV0aXRvciwgY29sID0gZm9jdXMpKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKGxpbmV0eXBlPSAiZGFzaGVkIikgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEwMDAsbGluZXR5cGU9ICJkYXNoZWQiKSArDQogIHNjYWxlX2NvbG9yX21hbnVhbChuYW1lID0gIkNsaW1iZXIiLA0KICAgICAgICAgICAgICAgICAgICAgYWVzdGhldGljcyA9ICJjb2xvciIsDQogICAgICAgICAgICAgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjY3QNCiAgICAgICAgICAgICAgICAgICAgICkNCg0KI3ANCmdncGxvdGx5KHApDQpgYGANCg0KIyMjICoqRWxvIEFjY3VtdWxhdGVkIEp1bmUtQWJzXzIwMjQqKg0KDQpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQplbG8ubGFzdC5hY2N1bQ0KZWxvLmxhc3QuY29tcC5uZXcNCmBgYA0KDQpgYGB7ciBldmFsPVRSVUUsIGluY2x1ZGU9VFJVRSwgY29scy5wcmludD03fQ0KDQplbG8ubGFzdC5hY2N1bV9sYXN0LmNvbXBfYWJzZW50IDwtIGVsby5sYXN0LmFjY3VtICU+JSBhbnRpX2pvaW4oZWxvLmxhc3QuY29tcC5uZXcsYnk9ImNvbXBldGl0b3IiKQ0KDQplbG8ubGFzdC5hY2N1bSA8LSBlbG8ubGFzdC5jb21wLm5ldyAlPiUgcmJpbmQoZWxvLmxhc3QuYWNjdW1fbGFzdC5jb21wX2Fic2VudCkNCmVsby5sYXN0LmFjY3VtIDwtIGVsby5sYXN0LmFjY3VtW29yZGVyKGVsby5sYXN0LmFjY3VtJGNvbXBldGl0b3IpLF0NCiMNCmtuaXRyOjprYWJsZShlbG8ubGFzdC5hY2N1bVtvcmRlcihlbG8ubGFzdC5hY2N1bSRSLm5ldywgZGVjcmVhc2luZyA9IFRSVUUpLGMoMSwyLDYsNyw4KV0pDQpgYGANCg0KDQojIyMgIyMjIyAjIyMjIyAjIyMjIyMNCg0KDQojIyMgIyMgVXAtY29taW5nIFNFQVNPTg0KDQo=