diff --git a/.gitignore b/.gitignore index e75435c..69e2a14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,49 +1,37 @@ # History files .Rhistory .Rapp.history - # Session Data files .RData .RDataTmp - # User-specific files .Ruserdata - # Example code in package build process *-Ex.R - # Output files from R CMD build /*.tar.gz - # Output files from R CMD check /*.Rcheck/ - # RStudio files .Rproj.user/ - # produced vignettes vignettes/*.html vignettes/*.pdf - # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 .httr-oauth - # knitr and R markdown default cache directories *_cache/ /cache/ - # Temporary files created by R markdown *.utf8.md *.knit.md - # R Environment Variables .Renviron - # pkgdown site docs/ - # translation temp files po/*~ - # RStudio Connect folder rsconnect/ +record_linkage.Rproj +deduplicate.html diff --git a/missing_gender_result.csv b/data-raw/missing_gender_result.csv similarity index 100% rename from missing_gender_result.csv rename to data-raw/missing_gender_result.csv diff --git a/deduplicate.R b/deduplicate.R deleted file mode 100644 index fa3e6c0..0000000 --- a/deduplicate.R +++ /dev/null @@ -1,774 +0,0 @@ -################################################## -### A script workflow for Record linkage ---------- -################################################## - -library(tidyverse) -# install.packages("fastLink") -library(fastLink) - -## Load the data - -# which is here already the results of merging multiple list from different excel files -data <- readxl::read_excel(here::here("data-raw", "Registros2.xlsx"), - sheet = "Sheet1", - col_types = c("numeric", - "text", "text", "text", "text", "text", - "text", "text", "date", "numeric", - "numeric", "numeric", "text", "text", - "text", "text", "text", "text", "text", - "text", "text", "text", "text", "text", - "text", "text", "text", "text", "text", - "text", "text")) |> - janitor::clean_names() - - -#dput(names(data)) -## Cleaning functions ############### - - -#' clean_age -#' -#' This functions cleans the age identifiers in the context of record linkage. -#' -#' If the date of birth is present, it will parse it, extract year and month, -#' and recalculate both age and age range -#' -#' If the date of birth is not mentioned, then it will use age and date_record -#' to reconstruct an estimated date of birth - and recalculate the rest -#' -#' @param frame frame with the data -#' @param date_birth variable name for the date of birth in the frame -#' @param date_record variable name for the date of birth in the frame -#' @param age variable name for the date of birth in the frame -#' @param age_range variable name for the date of birth in the frame -#' -#' @return the same column but cleaned... -#' -#' @export -clean_age <- function(frame, - date_birth, - date_record, - age, - age_range){ - - #frame$date_birth - frame2 <- frame |> - ## Rename variable - dplyr::rename( date_birth = paste0(date_birth), - date_record = paste0(date_record), - age = paste0(age), - age_range = paste0(age_range) ) |> - dplyr::mutate( - ## In case there is no date of birth - but we have an age, we recalculate it.. - - date_birth = dplyr::case_when( - # Case we age but no DOB and date registration - is.na(date_birth) & !(is.na(age)) & !(is.na(date_record)) ~ - lubridate::as_date(date_record) - lubridate::dyears(age) , - - # Case we age but no DOB and date registration - is.na(date_birth) & !(is.na(age)) & is.na(date_record) ~ - today() - lubridate::dyears(age) , - - # Case take what we have... - TRUE ~ lubridate::as_date(date_birth) ) , - ## make sure it is in the correct format - date_birth = lubridate::as_date(date_birth), - - day_birth = as.numeric( - lubridate::day(date_birth)), - - month_birth = as.numeric( - lubridate::month(date_birth)), - - year_birth= as.numeric( - lubridate::year(date_birth)), - - age = round( as.numeric(today() - date_birth) / 365), - - age_range = dplyr::case_when( - ## if age cohort was already present and we have no DOb, retain it - # !(is.na(age_range )) & is.na( date_birth) & - age <5 ~ "0-4", - - # !(is.na(age_range )) & is.na( date_birth) & - age >=5 & age <= 11 ~ "4-11", - - #!(is.na(age_range )) & is.na( date_birth) & - age >= 12 & age <= 17 ~ "12-17", - # !(is.na(age_range )) & is.na( date_birth) & - age >= 18 & age <= 59 ~ "18-59", - - # !(is.na(age_range )) & is.na( date_birth) & - age >= 60 ~ "60+", - - TRUE ~ age_range ) ) - - return(frame2) -} - - -## Testing... -# frame <- data |> -# dplyr::select(fecha_de_nacimiento, -# date_record, edad, age_range) |> -# clean_age( date_birth = "fecha_de_nacimiento", -# date_record = "date_record", -# age = "edad", -# age_range = "age_range") - - - -#' remove_spaces_based_on_patterns -#' Utility sub-function to remove spaces based on patterns -#' This function helps cleaning name decomposition - in case it is not included in the original data -#' -#' In case, there's only 2 elements, it will fill only firstname and fathername -#' The function also identify family prefix to be bind such as for spanish -#' "DEL", 'DE", "DE LOS", "DE LAS" -#' -#' @param vector a list of string with names -remove_spaces_based_on_patterns <- function(vector, - nameprefix = data.frame( - pat1 = c( "DE LA ", "DEL ", "DE LOS ", "DE LAS ","DE ", "SAN ", "LA ", "DA "), - pat2 = c( "DE_LA_", "DEL_", "DE_LOS_", "DE_LAS_", "DE_", "SAN_", "LA_", "DA_") ) -) { - for (i in 1:nrow(nameprefix) ) { - # i <- 4 - #cat(paste0(nameprefix[i, c("pat1")],"\n", vector, "\n")) - vector <- stringr::str_replace_all(string = vector, - pattern = nameprefix[i, c("pat1")], - replacement = nameprefix[i, c("pat2")]) - # cat(paste0(vector, "\n")) - } - return(vector) -} -## Test function -remove_spaces_based_on_patterns(vector = "ADRIENNE DE LOS ANGELES MILANESE PARISIANNA") - - -#' reset_spaces_based_on_patterns -#' Utility sub-function to remove spaces based on patterns -#' This function helps cleaning name decomposition - in case it is not included in the original data -#' -#' In case, there's only 2 elements, it will fill only firstname and fathername -#' The function also identify family prefix to be bind such as for spanish -#' "DEL", 'DE", "DE LOS", "DE LAS" -#' -#' @param vector a list of string with names -reset_spaces_based_on_patterns <- function(vector, - nameprefix = data.frame( - pat1 = c( "DE LA ", "DEL ", "DE LOS ", "DE LAS ","DE ", "SAN ", "LA ", "DA "), - pat2 = c( "DE_LA_", "DEL_", "DE_LOS_", "DE_LAS_", "DE_", "SAN_", "LA_", "DA_") ) - ) { - - - for (i in 1:nrow(nameprefix) ) { - # i <- 1 - # cat(paste0( nameprefix[i, c("pat1")],"\n",vector, "\n")) - vector <- stringr::str_replace_all(string = vector, - pattern = nameprefix[i, c("pat2")], - replacement = nameprefix[i, c("pat1")]) - #cat(paste0(vector, "\n")) - } - return(vector) -} - - - - -#' separate_fullname -#' -#' This function clean name decomposition - in case it is not included in the original data -#' -#' Performing this name decomposition is important in order to enhance record linkage -#' as the name pattern can be different (either "firstname_fathername_mother_name" or -#' "fathername_mothername_firstname") which will minimise linkage probabibility -#' -#' In case, there's only 2 elements, it will fill only firstname and fathername -#' The function also identify family prefix to be bind such as for spanish -#' "DEL", 'DE", "DE LOS", "DE LAS" -#' -#' @param fullname full name including everything together -#' @param firstname first name -#' @param fathername father name -#' @param mothername mother name -#' @param namepattern either "firstname_fathername_mother_name" or -#' "fathername_mothername_firstname" -#' -#' @return a clean list with c("firstname","fathername","mothername") -#' -#' @export -separate_fullname <- function(frame, - fullname, - firstname, - fathername, - mothername, - namepattern - ){ - ## Let's go! - framesp <- frame |> - ## Rename variable - dplyr::rename( fullname = paste0(fullname), - firstname = paste0(firstname), - fathername = paste0(fathername), - mothername = paste0(mothername), - namepattern = paste0(namepattern) ) |> - - ### Lets clean all spaces and get everything to upper - dplyr::mutate( fullname_or = fullname, - fullname = trimws(stringr::str_squish(fullname), - which = "both", - whitespace = "[ \t\r\n]"), - fullname = toupper(fullname)) |> - ### Lets apply the prefix space replacement... - dplyr::mutate( fullname_pref = remove_spaces_based_on_patterns(vector = fullname), - fullname = fullname_pref ) |> - ## Counting th enumber of space to understand the structure of the full name - dplyr::mutate( numspace = stringr::str_count(fullname, ' ')) |> - tidyr::separate_wider_delim(fullname, - delim = " ", - names_sep = "", - too_few = "align_start") |> - - ### Now reconstruct the first name, father and mother name based on cases - - ## Let summarize the logic...! - ## Based on the number of componnent in the full name - ranging from 0 to 4 - - ## Case A: "firstname_fathername_mother_name" - # numspace == 0 ## only firstname = fullname1 - # numspace = 1 ## firstname = fullname1 & fathername = fullname2 - # numspace = 2 ## firstname = fullname1 & fathername = fullname2 & mothername = fullname3 - # numspace = 3 ## firstname = paste0(fullname1, " ", fullname2) & fathername = fullname3 & mothername = fullname4 - # numspace = 4 ## firstname = paste0(fullname1, " ", fullname2, " ", fullname3) & fathername = fullname4 & mothername = fullname5 - - # ## Case B: "fathername_mothername_firstname" - # numspace == 0 ## only fathername = fullname1 - # numspace = 1 ## fathername = fullname1 & firstname = fullname2 - # numspace = 2 ## fathername = fullname1 & mothername = fullname2 & firstname = fullname3 - # numspace = 3 ## fathername = fullname1 & mothername = fullname2 & firstname = paste0(fullname3, " ", fullname3) - # numspace = 4 ## fathername = fullname1 & mothername = fullname2 & firstname = paste0(fullname3, " ", fullname4, " ", fullname5) - - ### Now reconstruct fathername - dplyr::mutate( fathername = dplyr::case_when( - is.na(fathername) & namepattern == "firstname_fathername_mother_name" & - numspace == 0 ~ "", - - is.na(fathername) & namepattern == "firstname_fathername_mother_name" & - numspace == 1 ~ fullname2, - - is.na(fathername) & namepattern == "firstname_fathername_mother_name" & - numspace == 2 ~ fullname2, - - is.na(fathername) & namepattern == "firstname_fathername_mother_name" & - numspace == 3 ~ fullname3, - - is.na(fathername) & namepattern == "firstname_fathername_mother_name" & - numspace == 4 ~ fullname4, - - - is.na(fathername) & namepattern == "fathername_mothername_firstname" & - numspace == 0 ~ fullname1, - - is.na(fathername) & namepattern == "fathername_mothername_firstname" & - numspace == 1 ~ fullname1, - - is.na(fathername) & namepattern == "fathername_mothername_firstname" & - numspace == 2 ~ fullname1, - - is.na(fathername) & namepattern == "fathername_mothername_firstname" & - numspace == 3 ~ fullname1, - - is.na(fathername) & namepattern == "fathername_mothername_firstname" & - numspace == 4 ~ fullname1, - - TRUE ~ fathername )) |> - - ### Now reconstruct mothername - dplyr::mutate( mothername = dplyr::case_when( - is.na(mothername) & namepattern == "firstname_fathername_mother_name" & - numspace == 0 ~ "", - - is.na(mothername) & namepattern == "firstname_fathername_mother_name" & - numspace == 1 ~ "", - - is.na(mothername) & namepattern == "firstname_fathername_mother_name" & - numspace == 2 ~ fullname3, - - is.na(mothername) & namepattern == "firstname_fathername_mother_name" & - numspace == 3 ~ fullname4, - - is.na(mothername) & namepattern == "firstname_fathername_mother_name" & - numspace == 4 ~ fullname5, - - - is.na(mothername) & namepattern == "fathername_mothername_firstname" & - numspace == 0 ~ "", - - is.na(mothername) & namepattern == "fathername_mothername_firstname" & - numspace == 1 ~ "", - - is.na(mothername) & namepattern == "fathername_mothername_firstname" & - numspace == 2 ~ fullname2, - - is.na(mothername) & namepattern == "fathername_mothername_firstname" & - numspace == 3 ~ fullname2, - - is.na(mothername) & namepattern == "fathername_mothername_firstname" & - numspace == 4 ~ fullname2, - - TRUE ~ mothername )) |> - - - ### Now reconstruct firstname - dplyr::mutate( firstname = dplyr::case_when( - is.na(firstname) & namepattern == "firstname_fathername_mother_name" & - numspace == 0 ~ fullname1, - - is.na(firstname) & namepattern == "firstname_fathername_mother_name" & - numspace == 1 ~ fullname1, - - is.na(firstname) & namepattern == "firstname_fathername_mother_name" & - numspace == 2 ~ fullname1, - - is.na(firstname) & namepattern == "firstname_fathername_mother_name" & - numspace == 3 ~ paste0(fullname1, " ", fullname2 ), - - is.na(firstname) & namepattern == "firstname_fathername_mother_name" & - numspace == 4 ~ paste0(fullname1, " ", fullname2, " ", fullname3), - - is.na(firstname) & namepattern == "fathername_mothername_firstname" & - numspace == 0 ~ "", - - is.na(firstname) & namepattern == "fathername_mothername_firstname" & - numspace == 1 ~ fullname2, - - is.na(firstname) & namepattern == "fathername_mothername_firstname" & - numspace == 2 ~ fullname3, - - is.na(firstname) & namepattern == "fathername_mothername_firstname" & - numspace == 3 ~ paste0(fullname3, " ", fullname4 ) , - - is.na(firstname) & namepattern == "fathername_mothername_firstname" & - numspace == 4 ~ paste0(fullname3, " ", fullname4, " ", fullname5) , - - TRUE ~ firstname )) |> - - - ### Lets reset the prefix space replacement... - dplyr::mutate( - firstname = reset_spaces_based_on_patterns(vector = firstname), - fathername = reset_spaces_based_on_patterns(vector = fathername), - mothername = reset_spaces_based_on_patterns(vector = mothername)) |> - - ## then clean intermediate variables - dplyr::select( - fullname1, - fullname2, - fullname3, - fullname4, - - fullname5, fullname_or, - fullname_pref, - numspace ) - - - return(framesp) -} - -## Testing... -# frame <- data |> -# dplyr::filter( is.na(nombres) ) |> -# # dplyr::select(nombre_completo, name_pattern, -# # nombres, apellido_paterno, apellido_materno) |> -# separate_fullname(fullname= "nombre_completo", -# namepattern= "name_pattern", -# firstname = "nombres", -# fathername = "apellido_paterno", -# mothername = "apellido_materno") - - - - - -#' separate_firstname -#' -#' This function decomposition - in case there is a space in -#' -#' Performing this name decomposition is important in order to enhance record linkage -#' -#' @param firstname first name -#' @return a clean list with c("firstname1","firstname2","firstname3") -#' -#' @export -separate_firstname <- function(frame, - firstname ) { - ## Let's go! - framesp <- frame |> - ## Rename variable - dplyr::rename( firstname = paste0(firstname) ) |> - - ### Lets clean all spaces and get everything to upper - dplyr::mutate( firstname_or = firstname, - firstname = trimws(stringr::str_squish(firstname), - which = "both", - whitespace = "[ \t\r\n]"), - firstname = toupper(firstname)) |> - dplyr::mutate( firstname = remove_spaces_based_on_patterns(vector = firstname) ) |> - - ## Counting the number of space to understand the structure of the full name - tidyr::separate_wider_delim(firstname, - delim = " ", - names_sep = "", - too_few = "align_start") |> - dplyr::mutate( firstname1 = reset_spaces_based_on_patterns(vector = firstname1), - firstname2 = reset_spaces_based_on_patterns(vector = firstname2), - firstname3 = reset_spaces_based_on_patterns(vector = firstname3)) - - return(framesp) -} - -framefirstname <- data |> - separate_firstname(firstname = "nombres" ) - - - -#' separate_familyname -#' -#' This function helps in decomposing names in case there is a space -#' in the father name and the mother name is empty -#' -#' Performing this name decomposition is important in order to enhance record linkage -#' -#' @param fathernamevar father name -#' @param mothernamevar mother name -#' @return a clean list with c("firstname1","firstname2","firstname3") -#' -#' @export -separate_familyname <- function(frame, - fathernamevar, - mothernamevar) { - ## Let's go! - framesp <- frame |> - ## Rename variable - dplyr::rename( fathername = paste0(fathernamevar), - mothername = paste0(mothernamevar) ) |> - - ### Lets clean all spaces and get everything to upper - dplyr::mutate( fathername_or = fathername, - fathername= trimws(stringr::str_squish( fathername), - which = "both", - whitespace = "[ \t\r\n]"), - fathername = toupper( fathername)) |> - dplyr::mutate( fathername = remove_spaces_based_on_patterns(vector = fathername) ) |> - - ## Counting the number of space to understand the structure of the full name - tidyr::separate_wider_delim( fathername, - delim = " ", - names_sep = "", - too_few = "align_start") |> - dplyr::mutate( fathername1 = reset_spaces_based_on_patterns(vector = fathername1), - fathername2 = reset_spaces_based_on_patterns(vector = fathername2), - fathername3 = reset_spaces_based_on_patterns(vector = fathername3)) |> - - dplyr::mutate( fathername = dplyr::if_else( is.na(mothername), fathername1, fathername_or ) ) |> - dplyr::mutate( mothername = dplyr::if_else( is.na(mothername), fathername2, mothername)) |> - dplyr::select( - fathername1, - fathername2, - fathername3, - fathername_or) - - return(framesp) -} - -# frame <- data |> -# dplyr::select(apellido_paterno, apellido_materno) |> -# separate_familyname( fathernamevar = "apellido_paterno", -# mothernamevar = "apellido_materno" ) - - -#' cleanvar -#' -#' function for data cleaning with additional name removal logic -#' -#' @param names_column name of the column to treat -#' @param toRemove default vector with stuff to remove from name -#' c(" JR", " SR", " IV", " III", " II") -#' @return names_column_new name of the column treat -#' -#' @export -cleanvar <- function(names_column, - toRemove = c(" JR", " JUNIOR", " SR", " IV", " III", " II")) { - # Convert to uppercase - names_column_new <- toupper(names_column) - # Remove specified name suffixes - for (tR in toRemove) { - names_column_new <- gsub(tR, "", names_column_new) - } - # Convert special characters to ASCII equivalents - names_column_new <- iconv(names_column_new, "latin1", "ASCII//TRANSLIT", sub = "") - # Remove punctuation, digits, and all spaces - names_column_new <- gsub("[[:punct:][:digit:]][[:space:]]", "", names_column_new) - # Create a new variable with only alphabetic characters - names_column_new <- gsub("[^[:alpha:]]", "", names_column_new) - - return(names_column_new) -} - - -## Pipeline for data post processing ##################### -data.prep <- data |> - - ## Filter where the phone number is not available -- "NO REFIERE" - dplyr::filter( telefono != "NO REFIERE") |> - - ## Clean age_range - #data |> dplyr::select(age_range) |> dplyr::distinct() |> dplyr::pull() - dplyr::mutate( age_range = dplyr::case_when( - age_range == "18 A 59 AÑOS" ~ "0-4", - TRUE ~ age_range )) |> - - ## Clean DOb & Age - clean_age( date_birth = "fecha_de_nacimiento", - date_record = "date_record", - age = "edad", - age_range = "age_range") |> - - ## Clean the names - separate_fullname(fullname= "nombre_completo", - namepattern= "name_pattern", - firstname = "nombres", - fathername = "apellido_paterno", - mothername = "apellido_materno") |> - - separate_firstname(firstname = "firstname") |> - - separate_familyname( fathername = "fathername", - mothername = "mothername") |> - - - ## Clean the gender variable - # data |> dplyr::select(genero) |> dplyr::distinct() |> dplyr::pull() - dplyr::mutate(gender = dplyr::case_when( - genero %in% c("F" ,"FEMENINO" ,"f", "Femenino") ~ "F", - genero %in% c("M" , "MASCULINO" , "Masculino") ~ "M", - genero %in% c("X", "Otro") ~ "Ot", - TRUE ~ NA )) |> - - ## Only retain the nationality of interest - # data |> dplyr::select(nacionalidad) |> dplyr::distinct() |> dplyr::pull() - dplyr::mutate(nationality = dplyr::case_when( - nacionalidad %in% c("Venzuela", "venezuela", "Venezolana", - "VENEZUELA", - "Venezuela", "VENEZOLANO", "VENEZOLANA") ~ "VEN", - nacionalidad %in% c("COLOMBIANO", "COLOMBIANA", "COLOMBIA", - "colombia", "Colombia", "Nac. Colombia", - "Colombiana" ) ~ "COL", - TRUE ~ "other" )) |> - dplyr::filter( nationality %in% c("VEN", "COL" )) |> - ## Apply cleanvar() - # Perform data cleaning on dfA using the clean_names function - dplyr::mutate_at( dplyr::vars(firstname1, firstname2, fathername, mothername, - asistencia, departamento, #telefono, - planilla, socio), - list(new = cleanvar)) |> - - - ### identify single data source - dplyr::mutate(datasource = paste0(socio_new, "_", planilla_new)) #|> - - # # ## Retain only fields for record linkage - # dplyr::select(datasource, nationality, - # firstname_new, fathername_new, mothername_new, - # asistencia_new, departamento_new, - # telefono, gender) - - - -dput(names(data.prep)) - - -table(data.prep$gender, useNA = "ifany") -table(data.prep$nationality, useNA = "ifany") - -## Check the datasource that we will compare -table(data.prep$datasource, useNA = "ifany") - -## See if can use departamento for blocking -table(data.prep$datasource, data.prep$departamento_new, useNA = "ifany") - -alldatasource <- data.prep |> - dplyr::select(datasource) |> - dplyr::distinct() |> - dplyr::pull() - -alldatasource - - -## Let's get 2 comparison dataset... ########## -dfA <- data.prep |> - dplyr::filter(datasource == alldatasource[9]) |> - dplyr::select( - datasource) - -dfB <- data.prep |> - dplyr::filter(datasource == alldatasource[6])|> - dplyr::select( - datasource) - -matches.out <- fastLink::fastLink( - dfA = dfA, - dfB = dfB, - # Specify the vector of variable names to be used for matching. - # These variable names should exist in both dfA and dfB - varnames = c("nationality" , - "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new", - "day_birth", "month_birth", "year_birth", - # "asistencia_new" , "departamento_new", "telefono_new" , - "gender" ), - - # Specify which variables among varnames should be compared using string distance - stringdist.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables present in stringdist.match can be partially matched - partial.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables should be matched numerically - # Must be a subset of 'varnames' and must not be present in 'stringdist.match'. - numeric.match = c( "day_birth", "month_birth", "year_birth" - # "telefono_new" - #'dob_day', 'dob_month', 'dob_year' - ), - - # Specify the number of CPU cores to utilize (parallel processing). - ## Get the number of detected cores minus 1, Reserve one core for - #non-computational tasks to help prevent system slowdowns or unresponsiveness - n.cores = parallel::detectCores() - 1, - return.all = TRUE, - return.df = TRUE) - -## Review the matching in each orginal frame -matchedA <- dfA[matches.out$matches$inds.a, ] -matchedB <- dfB[matches.out$matches$inds.b, ] - -# Confusion Matrice -fastLink::confusion(matches.out, threshold = 0.98) - -# Examine the EM object: -#matches.out$EM - -# Summarize the accuracy of the match: -# each column gives the match count, match rate, -# false discovery rate (FDR) and false negative rate (FNR) -# under different cutoffs for matches based on the posterior -# probability of a match. -summary(matches.out) - -## Gt the output... -matched_dfs <- fastLink::getMatches( - dfA = dfA, - dfB = dfB, - fl.out = matches.out, - threshold.match = 0.85 -) - -# Display the matches ################### -# convert dfA rownames to a column -dfA_clean <- dfA |> rownames_to_column() - -# convert dfB rownames to a column -dfB_clean <- dfB |> rownames_to_column() - -# convert all columns in matches dataset to character, -#so they can be joined to the rownames -matches_clean <- matched_dfs |> - dplyr::mutate(dplyr::across(dplyr::everything(), as.character)) - -# Join matches to dfA, then add dfB -# column "inds.b" is added to dfA -complete <- dplyr::left_join(dfA_clean, - matches_clean, - by = c("rowname" = "inds.a")) - -# column(s) from dfB are added -complete <- dplyr::left_join(complete, - dfB_clean, - by = c("inds.b" = "rowname")) - - - -# Preprocessing Matches via Blocking ################# -blockgender_out <- fastLink::blockData(dfA, dfB, varnames = "gender") - -## Subset dfA into blocks -dfA_block1 <- dfA[blockgender_out$block.1$dfA.inds,] -dfA_block2 <- dfA[blockgender_out$block.2$dfA.inds,] - -## Subset dfB into blocks -dfB_block1 <- dfB[blockgender_out$block.1$dfB.inds,] -dfB_block2 <- dfB[blockgender_out$block.2$dfB.inds,] - -## Run fastLink on each -link.1 <- fastLink::fastLink( - dfA = dfA_block1, - dfB = dfB_block1, - # Specify the vector of variable names to be used for matching. - # These variable names should exist in both dfA and dfB - varnames = c("nationality" , - "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new", - "day_birth", "month_birth", "year_birth", - # "asistencia_new" , "departamento_new", "telefono_new" , - "gender" ), - - # Specify which variables among varnames should be compared using string distance - stringdist.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables present in stringdist.match can be partially matched - partial.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables should be matched numerically - # Must be a subset of 'varnames' and must not be present in 'stringdist.match'. - numeric.match = c( "day_birth", "month_birth", "year_birth" - # "telefono_new" - #'dob_day', 'dob_month', 'dob_year' - ), - - # Specify the number of CPU cores to utilize (parallel processing). - ## Get the number of detected cores minus 1, Reserve one core for - #non-computational tasks to help prevent system slowdowns or unresponsiveness - n.cores = parallel::detectCores() - 1, - return.df = TRUE) - -link.2 <- fastLink::fastLink( - dfA = dfA_block2, - dfB = dfB_block2, - # Specify the vector of variable names to be used for matching. - # These variable names should exist in both dfA and dfB - varnames = c("nationality" , - "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new", - "day_birth", "month_birth", "year_birth", - # "asistencia_new" , "departamento_new", "telefono_new" , - "gender" ), - - # Specify which variables among varnames should be compared using string distance - stringdist.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables present in stringdist.match can be partially matched - partial.match = c( "firstname1_new" ,"firstname2_new" , - "fathername_new" ,"mothername_new"), - - # Specify which variables should be matched numerically - # Must be a subset of 'varnames' and must not be present in 'stringdist.match'. - numeric.match = c( "day_birth", "month_birth", "year_birth" - # "telefono_new" - #'dob_day', 'dob_month', 'dob_year' - ), - - # Specify the number of CPU cores to utilize (parallel processing). - ## Get the number of detected cores minus 1, Reserve one core for - #non-computational tasks to help prevent system slowdowns or unresponsiveness - n.cores = parallel::detectCores() - 1, - return.df = TRUE) - -## aggregate multiple matches into a single summary with aggregateEM() -agg.out <- fastLink::aggregateEM(em.list = list(link.1, link.2)) - - - -# Preprocessing Matches via Blocking ################# diff --git a/deduplicate.Rmd b/deduplicate.Rmd index 95c1ee0..9699b05 100644 --- a/deduplicate.Rmd +++ b/deduplicate.Rmd @@ -648,11 +648,11 @@ missing_gender <- data.prep |> ## let's us an API to identify gender based on firstname # devtools::install_github("coccopuffs/GenderGuesser") #missing_gender_result <- GenderGuesser::guessGender(missing_gender) -# write.csv(missing_gender_result, "missing_gender_result.csv", row.names = FALSE) +# write.csv(missing_gender_result, here::here("data-raw","missing_gender_result.csv"), row.names = FALSE) # Results are saved locally to avoid calling too many times the API -missing_gender_result <- readr::read_csv("missing_gender_result.csv") +missing_gender_result <- readr::read_csv(here::here("data-raw","missing_gender_result.csv")) missing_gender_results <- missing_gender_result |> dplyr::filter(!(is.na(gender))) |> @@ -829,8 +829,8 @@ dup <- dplyr::rows_append(dup, matchedA ) dup1 <- dup |> dplyr::distinct() -write.csv(dup1, "dup.csv", row.names = FALSE ) -write.csv(data.prep, "data.prep.csv", row.names = FALSE ) +write.csv(dup1, here::here("data-raw","dup.csv"), row.names = FALSE ) +write.csv(data.prep, here::here("data-raw","data.prep.csv"), row.names = FALSE ) # Examine the EM object: #matches.out$EM diff --git a/fastlink.R b/fastlink.R deleted file mode 100644 index 75c5530..0000000 --- a/fastlink.R +++ /dev/null @@ -1,260 +0,0 @@ -# Clear the workspace by removing all objects -rm(list = ls()) - -# Load the pacman package if it is not already installed. -# if (!requireNamespace("pacman", quietly = TRUE)) { -# install.packages("pacman") -# } -# -# pacman::p_load( -# dplyr, # Data manipulation and transformation -# data.table, # Fast data manipulation with data tables -# stringi, # Character string processing -# lubridate, # Date and time handling -# janitor, # Data cleaning and tabulation functions -# parallel, # Parallel computing -# fastLink, # Record linkage and deduplication -# stringdist # String distance computation -# ) - -# Get the number of detected cores minus 1 -# Reserve one core for non-computational tasks to help prevent system slowdowns or unresponsiveness -numCores <- parallel::detectCores() - 1 - -# Example data frames dfA and dfB -# Replace these with your actual data frames - - -#data(samplematch) - -dfA <- data.frame( - FIRST_NAME = c("John", "Mary", "Robert", "Michael", "Jennifer", "David", "Karen", "Maria", "Carlos", "James"), - LAST_NAME = c("Smith III", "Johnson!", "Williams123", "Brown", "Jones", "Davis", "Miller", "Garcia", "Martinez", "Andrson"), - BIRTH_DATE = c("1981-05-20", "1990-05-15", "1978-12-10", "1985-08-02", "1993-11-25", "1977-03-30", "1988-06-18", "1991-02-05", "1980-09-12", "1982-07-09"), - gender = c("M", "F", "M", "M", "F", "M", "F", "F", "M", "M") -) - -dfB <- data.frame( - RecipientNameFirst = c("John", "Mary", "Robert", "Michael", "Jennifer", "David", "Karenn", "Carloas", "Mariaa", "James"), - RecipientNameLast = c("Smith iv", "Brown-", "Williams", "Jones", "John son", "No Name", "Miller", "Martinez", "Garcia", "Anderson"), - RecipientDateOfBirth = c("1981-05-21", "1992-09-25", "1978-10-12", "1985-08-02", "1993-11-25", "1977-03-30", "1988-06-18", "1980-09-12", "1991-02-05", "1982-07-09"), - gender = c("M", "F", "M", "M", "F", "M", "F", "M", "F", "M") -) - -# # Example data frames dfA and dfB -# dfA <- fread(file = 'dfA.csv', -# sep = ",", -# header = T, -# nThread = numCores) -# -# dfB <- fread(file = 'dfB.csv', -# sep = ",", -# header = T, -# nThread = numCores) - -# Assign a unique key ID to each row -dfA <- dfA |> - dplyr::mutate(row_idA = paste("dfA_", dplyr::row_number(), sep = "")) - -dfB <- dfB |> - dplyr::mutate(row_idB = paste("dfB_", dplyr::row_number(), sep = "")) - -# Convert the date column to a valid date format. -dfA$BIRTH_DATE <- as.Date(dfA$BIRTH_DATE, format = "%Y-%m-%d") # "%m/%d/%Y" -dfB$RecipientDateOfBirth <- as.Date(dfB$RecipientDateOfBirth, format = "%Y-%m-%d") # "%m/%d/%Y" -# -# # Create new date variables by splitting date of birth into three different parts. -dfA <- dfA |> - dplyr::mutate(dob_day = as.numeric(lubridate::day(BIRTH_DATE)), - dob_month = as.numeric(lubridate::month(BIRTH_DATE)), - dob_year = as.numeric(lubridate::year(BIRTH_DATE)), - DOB=BIRTH_DATE) - -dfB <- dfB |> - dplyr::mutate(dob_day = as.numeric(lubridate::day(RecipientDateOfBirth)), - dob_month = as.numeric(lubridate::month(RecipientDateOfBirth)), - dob_year = as.numeric(lubridate::year(RecipientDateOfBirth)), - DOB=RecipientDateOfBirth) - - -# Define a function for data cleaning with additional name removal logic -clean_names <- function(names_column) { - # Step 0: Convert to uppercase - names_column_new <- toupper(names_column) - # Step 1: Remove specified name suffixes - toRemove <- c(" JR", " SR", " IV", " III", " II") - for (tR in toRemove) { - names_column_new <- gsub(tR, "", names_column_new) - } - # Step 2: Convert special characters to ASCII equivalents - names_column_new <- iconv(names_column_new, "latin1", "ASCII//TRANSLIT", sub = "") - # Step 3: Remove punctuation, digits, and all sapces - names_column_new <- gsub("[[:punct:][:digit:]][[:space:]]", "", names_column_new) - # Step 4: Create a new variable with only alphabetic characters - names_column_new <- gsub("[^[:alpha:]]", "", names_column_new) - return(names_column_new) -} - -# Perform data cleaning on dfA using the clean_names function -dfA <- dfA |> - dplyr::mutate_at(dplyr::vars(FIRST_NAME, LAST_NAME), list(new = clean_names)) |> - dplyr::mutate(FN = FIRST_NAME_new, LN = LAST_NAME_new) - -# Perform data cleaning on dfB using the clean_names function -dfB <- dfB |> - dplyr::mutate_at(dplyr::vars(RecipientNameFirst, RecipientNameLast), list(new = clean_names)) |> - dplyr::mutate(FN = RecipientNameFirst_new, LN = RecipientNameLast_new) - - -rm(clean_names) - -# # Create no name list -NoNameList <- c( - "NICKNAME", - "NOFAMILYNAME", - "NOFIRSTNAME", - "NOLASTNAME", - "NOMIDDLENAME", - "NONAME", - "NO", - "UNKNOWN", - "UNK", - "UN", - "NA" -) -# -# # Blank out the names in the data if they match any of the strings in the NoNameList -dfA <- dfA |> - dplyr::mutate(FN = dplyr::case_when( - FN %in% NoNameList~ "", - TRUE ~ FN), - LN = dplyr::case_when( - LN %in% NoNameList ~ "", - TRUE ~ LN)) - -dfB <- dfB |> - dplyr::mutate(FN = dplyr::case_when( - FN %in% NoNameList~ "", - TRUE ~ FN), - LN = dplyr::case_when( - LN %in% NoNameList ~ "", - TRUE ~ LN)) -rm(NoNameList) - -# Delete rows that have missing First Name (FN), Last Name (LN), or Date of Birth (DOB). -dfA <- dfA |> - dplyr::filter(!is.na(FN) & FN != "" & !is.na( LN) & LN != "" & !is.na(DOB) ) - -dfB <- dfB |> - dplyr::filter(!is.na(FN) & FN != "" & !is.na( LN) & LN != "" & !is.na(DOB) ) - - -# Exact Matching -Exact <- merge(dfA, dfB, by=c("FN","LN","DOB", "gender")) - - -# Using the fastLink R package for record linkage -matches.out <- fastLink::fastLink( - dfA = dfA, dfB = dfB, - # Specify the vector of variable names to be used for matching. - # These variable names should exist in both dfA and dfB - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year', 'gender'), - # Specify which variables among varnames should be compared using string distance - stringdist.match = c('FN', 'LN'), - # Specify which variables present in stringdist.match can be partially matched - partial.match = c('FN', 'LN'), - # Specify which variables should be matched numerically - # Must be a subset of 'varnames' and must not be present in 'stringdist.match'. - numeric.match = c('dob_day', 'dob_month', 'dob_year'), - # Specify the number of CPU cores to utilize (parallel processing). The default value is NULL. - n.cores = numCores, - return.all = TRUE, - return.df = TRUE -) - -# The output from fastLink() will be a list that includes a matrix where each row -# is a match with the relevant indices of dfA (column 1) and dfB (column 2). - -# Confusion Matrice -fastLink::confusion(matches.out, threshold = 0.98) - -# Examine the EM object: -matches.out$EM - -# Summarize the accuracy of the match: -# each column gives the match count, match rate, -# false discovery rate (FDR) and false negative rate (FNR) -# under different cutoffs for matches based on the posterior -# probability of a match. -summary(matches.out) - - -# Get fuzzy matches using the results from fastLink -# A threshold of 0.98 is set for match classification -fuzzy_matches <- fastLink::getMatches(dfA, dfB, - fl.out = matches.out, - threshold.match = 0.98) -fuzzy_matches #|> knitr::kable() - -blockdata_out <- fastLink::blockData(dfA, dfB, - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'), - # window blocking for numeric variables, where a given observation in dataset A - #will be compared to all observations in dataset B where the value of the blocking - #variable is within ±K of the value of the same variable in dataset A. - #The value of K is the size of the window - # window.block = "birthyear", - # window.size = 1, - # using k-means clustering, so that similar values of string and numeric - # variables are blocked together. - kmeans.block = "FN", - nclusters = 2) - - -## Aggregating Multiple Matches Together ### - -#Often, we run several different matches for a single data set - -#for instance, when blocking by gender or by some other criterion to reduce the -#number of pairwise comparisons. Here, we walk through how to aggregate those -#multiple matches into a single summary. -blockgender_out <- fastLink::blockData(dfA, dfB, varnames = "gender") -## Subset dfA into blocks -dfA_block1 <- dfA[blockgender_out$block.1$dfA.inds,] -dfA_block2 <- dfA[blockgender_out$block.2$dfA.inds,] - -## Subset dfB into blocks -dfB_block1 <- dfB[blockgender_out$block.1$dfB.inds,] -dfB_block2 <- dfB[blockgender_out$block.2$dfB.inds,] - -## Run fastLink on each -fl_out_block1 <- fastLink::fastLink( - dfA_block1, dfB_block1, - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'), - n.cores = numCores -) -fl_out_block2 <- fastLink::fastLink( - dfA_block2, dfB_block2, - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'), - n.cores = numCores -) - -#Here, we run fastLink() on the subsets of data defined by blocking on gender in the previous section: - -## Run fastLink on each -link.1 <- fastLink::fastLink( - dfA_block1, dfB_block1, - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'), - n.cores = numCores - ) - -link.2 <- fastLink::fastLink( - dfA_block2, dfB_block2, - varnames = c('FN', 'LN', 'dob_day', 'dob_month', 'dob_year'), - n.cores = numCores -) - -#To aggregate the two matches into a single summary, we use the aggregateEM() function as follows: -agg.out <- fastLink::aggregateEM(em.list = list(link.1, link.2)) - -summary(agg.out ) - - diff --git a/img/Record-linkage-example.png b/img/Record-linkage-example.png new file mode 100644 index 0000000..db03d3e Binary files /dev/null and b/img/Record-linkage-example.png differ diff --git a/concept.png b/img/concept.png similarity index 100% rename from concept.png rename to img/concept.png diff --git a/evaluation.png b/img/evaluation.png similarity index 100% rename from evaluation.png rename to img/evaluation.png diff --git a/pipe.png b/img/pipe.png similarity index 100% rename from pipe.png rename to img/pipe.png diff --git a/img/prob.png b/img/prob.png new file mode 100644 index 0000000..69c3afe Binary files /dev/null and b/img/prob.png differ diff --git a/record-linkage.png b/img/record-linkage.png similarity index 100% rename from record-linkage.png rename to img/record-linkage.png diff --git a/img/record-linkage.webp b/img/record-linkage.webp new file mode 100644 index 0000000..b120aa3 Binary files /dev/null and b/img/record-linkage.webp differ diff --git a/index.Rmd b/index.Rmd index ba2842d..dfbc542 100644 --- a/index.Rmd +++ b/index.Rmd @@ -71,7 +71,7 @@ Can be numerous ones: ... ] .pull-right[ -![](record-linkage.png) +![](img/record-linkage.png) ] @@ -94,7 +94,7 @@ The recommended workflow includes to go through specific steps: ] .pull-right[ -![](concept.png) +![](img/concept.png) ] ??? @@ -362,7 +362,7 @@ Revise the[demo script](FastLink.html) and [applied real use case notebook](htt ] .pull-right[ -![](pipe.png) +![](img/pipe.png) ] diff --git a/index.html b/index.html index 767431e..7cde382 100644 --- a/index.html +++ b/index.html @@ -1339,6 +1339,10 @@ --unhcr-logoblue: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjUuOSIgaGVpZ2h0PSI1NC4zIiB2aWV3Qm94PSIwIDAgMjI1LjkgNTQuMyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwMDcyYmM7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMzLDM2LjdjLjYsMCwuNi0uNC42LTFWMzIuNGMwLS43LS4xLS45LjMtLjksMS40LDAsMS43LS4xLDEuNy0xLjNWMTcuOWMwLTMuMy0yLjQtMi44LTMtNC0xLTEuNiwxLjgtMS42LjgtNS4yYTIsMiwwLDAsMC0yLjEtMS4zLDIsMiwwLDAsMC0yLjEsMS4zYy0xLDMuNiwxLjcsMy42LjgsNS4yLS43LDEuMi0zLC43LTMsNFYzMC4yYzAsMS4yLjQsMS4zLDEuNywxLjMuNCwwLC4zLjIuMy45djMuM2MwLC43LS4xLDEsLjYsMUgzMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyLjMsMTAuMWMtMS4yLDEuMy0zLjEsNC4zLTEuOSw2LjgsMi41LDEsMi4zLTgsNS41LTcuOSwxLjYsMS40LS41LDUuNy0xLjEsNy41LS44LDIuMy0xLjQsNy4xLTIuOSw5LjUtMS4yLDItLjMsOC4xLS43LDEwLjItMSwxLTMuOS4zLTUuMS4xYTgxLjc2LDgxLjc2LDAsMCwwLS43LTguMmMwLS44LS45LTEyLjctLjItMTQuMUMxNi42LDExLDI0LDUuMywyNSw0LjJTMjksMCwzMC4zLDBjLjkuNi40LDIsLjIsMi41LTEuMiwzLTYuNSw2LTguMiw3LjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjgtMi42LDEtMi40LTgtNS41LTcuOS0xLjUsMS40LjUsNS43LDEuMSw3LjUuOCwyLjMsMS40LDcuMSwyLjksOS41LDEuMiwyLC4zLDguMS43LDEwLjIsMS4xLDEsMy45LjMsNS4xLjFhNzUuNTgsNzUuNTgsMCwwLDEsLjctOC4yYy4xLS44LjktMTIuNy4yLTE0LjEtMS40LTMtOC44LTguNy05LjgtOS44UzMzLjYsMCwzMi40LDBjLS45LjYtLjMsMi0uMiwyLjUsMS4zLDMsNi41LDYsOC4yLDcuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExLjUsNi4xYy0uNy42LTIuMSwxLjEtMy4yLDIuNC0uNC0uNy42LTIuNSwxLjgtMy42YTE3LjY4LDE3LjY4LDAsMCwxLDMuMi0yLjFjLjQuOS0xLDIuMy0xLjgsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOS40LDExYy0xLjEsMS0yLjMsMS41LTMuOSwzLjRhMTIuMjIsMTIuMjIsMCwwLDEtLjItNS43Yy42LTEuOCwxLjUtMy44LDMtNC40YTE1LjY5LDE1LjY5LDAsMCwwLS45LDQuM2MtLjcsMi42LTEsMi43LS45LDMsLjIsMCwxLTEuNCwyLjEtMi40QzkuOCw4LDExLjQsNy43LDEyLjQsNi45YTE3LjMsMTcuMywwLDAsMS0zLDQuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMuOSwyMS44YTE0LjMxLDE0LjMxLDAsMCwxLTEuOC03Yy4xLTEuNi45LTUuMywyLTUuOS0uMywzLjQuNiwzLjcuMiw2LjQsMCwuMS0uNCwzLS40LDMuMi41LS4xLDAtMi42LDUuNC02LjQtMS4yLDItLjYsMi42LTIuNyw1LjNhMTAuNzQsMTAuNzQsMCwwLDAtMi43LDQuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYuMSwyNC4zYTYuNjMsNi42MywwLDAsMC0xLjIsMy4yQzIuMiwyNi0uOSwxOS44LjIsMTYuN2MuNywyLjMsMS43LDIuOSwyLjQsNC44LDEuMiwyLjksMSwzLjgsMS44LDQuNWE5LDksMCwwLDEsLjktNC42LDMyLjA3LDMyLjA3LDAsMCwxLDEuOS0zLjFjLjUsMi4xLjEsMy44LTEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOC41LDI5LjZhNDYsNDYsMCwwLDEtLjYsNS4yQzMuMywzMy4zLjgsMjgsLjgsMjUuNGMxLjQsMy4yLDMuNSwzLjIsNi4yLDcuNy4yLTEuNy0uNS0uNC0uNi0zLjcuMS0zLjQuOC0zLjUuOS01LjYuOS45LDEuMiw0LjcsMS4yLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyLjMsMzYuNGMuNCwxLjguNSwzLjguOCw1LjMtMi43LTEtMy4zLS4yLTYuNS0yLjItMS40LS44LTQtNC4xLTMuOS02LjQsMy4xLDMuNSwzLjcsMy4xLDUuMiw0LjQsMS40LDEuMSwyLjUsMi44LDMuNiwyLjYuMS0uOS0yLjMtMy0yLTguOGExNC4xNSwxNC4xNSwwLDAsMSwyLjgsNS4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcuNiw0MC44Yy44LDEuMi42LDEuNywyLjcsNC4xQTI1LjU0LDI1LjU0LDAsMCwxLDE0LjgsNDZjLTEuMywwLTYtMS4yLTcuNi00LjQsMi43LDEuNCwyLjcsMS4xLDYuMywxLjksMi42LjYsNC40LDEuNCw1LjEsMS4zLS4xLS4zLTIuMS0xLjItMy41LTIuOXMtMS0zLjktMi4zLTUuNGMuOS0uNCw0LjEsMy40LDQuOCw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MSw2LjFjLjYuNiwyLjIsMS4xLDMuMSwyLjQuNC0uNy0uNi0yLjUtMS44LTMuNmExNC43NywxNC43NywwLDAsMC0zLjItMi4xYy0uNC45LDEsMi4zLDEuOSwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01My4xLDExYzEuMSwxLDIuMywxLjUsMy45LDMuNGExMi4yMiwxMi4yMiwwLDAsMCwuMi01LjdjLS41LTEuOC0xLjUtMy44LTMtNC40YTE1LjY5LDE1LjY5LDAsMCwxLC45LDQuM2MuNywyLjYsMSwyLjcuOSwzLS4yLDAtMS0xLjQtMi4xLTIuNEM1Mi43LDgsNTEuMiw3LjcsNTAuMSw2LjlhMTcuMywxNy4zLDAsMCwwLDMsNC4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTguNSwyMS44YTE0LDE0LDAsMCwwLDEuOC03Yy0uMS0xLjYtLjktNS4zLTItNS45LjMsMy40LS42LDMuNy0uMiw2LjQsMCwuMS4zLDMsLjMsMy4yLS40LS4xLDAtMi42LTUuMy02LjQsMS4xLDIsLjYsMi42LDIuNyw1LjNhOS4yOCw5LjI4LDAsMCwxLDIuNyw0LjQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ni40LDI0LjNhOS41OCw5LjU4LDAsMCwxLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44LS43LDIuMy0xLjcsMi45LTIuMyw0LjgtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjVhMTEuNzksMTEuNzksMCwwLDAtLjktNC42LDE5LjgyLDE5LjgyLDAsMCwwLTEuOS0zLjEsNy41MSw3LjUxLDAsMCwwLDEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQsMjkuNmEzMC45MiwzMC45MiwwLDAsMCwuNyw1LjJjNC42LTEuNSw3LjEtNi44LDcuMS05LjQtMS41LDMuMi0zLjUsMy4yLTYuMiw3LjctLjItMS43LjUtLjQuNS0zLjdzLS44LTMuNS0uOS01LjZjLS45LjktMS4yLDQuNy0xLjIsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMSwzNi40Yy0uNCwxLjgtLjUsMy44LS43LDUuMywyLjYtMSwzLjMtLjIsNi40LTIuMiwxLjQtLjgsNC4xLTQuMSwzLjktNi40LTMuMSwzLjUtMy43LDMuMS01LjIsNC40LTEuNCwxLjEtMi42LDIuOC0zLjYsMi42LS4xLS45LDIuMy0zLDItOC44YTE1Ljg0LDE1Ljg0LDAsMCwwLTIuOCw1LjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NC45LDQwLjhhMTYuMTksMTYuMTksMCwwLDEtMi43LDQuMUEyNi44MSwyNi44MSwwLDAsMCw0Ny43LDQ2YzEuMywwLDYtMS4yLDcuNS00LjQtMi43LDEuNC0yLjcsMS4xLTYuMywxLjktMi42LjYtNC40LDEuNC01LjEsMS4zLjItLjMsMi4yLTEuMiwzLjUtMi45czEtMy45LDIuMy01LjRjLS45LS40LTQsMy40LTQuNyw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNC42LDUxLjhsLS44LS40YTE3LjIsMTcuMiwwLDAsMSwxMy41LTUuNmM4LjUuNSw3LjksMi41LDEyLjUsMi4xLjUsMC0uNC42LS40LjZhMTUuNTYsMTUuNTYsMCwwLDEtMTAtLjJjLTUuNS0xLjgtOS4xLTIuOS0xNC44LDMuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4LDUxLjhsLjgtLjRhMTcsMTcsMCwwLDAtMTMuNC01LjZjLTguNS41LTcuOSwyLjUtMTIuNSwyLjEtLjUsMCwuNC42LjQuNmExNS41NiwxNS41NiwwLDAsMCwxMC0uMmM1LjUtMS44LDktMi45LDE0LjcsMy41Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTguMywyNS41YzAsOC4xLTQuNCwxMi4xLTEzLjQsMTIuMVM3MS41LDMzLjcsNzEuNSwyNS41VjcuNWg5djE2YzAsMywwLDYuOCw0LjQsNi44czQuMy0zLjgsNC4zLTYuOFY3LjVoOS4xdjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwMy43IDcuNCAxMTMgNy40IDEyMS42IDIzLjEgMTIxLjYgMjMuMSAxMjEuNiA3LjQgMTMwLjIgNy40IDEzMC4yIDM2LjggMTIxLjQgMzYuOCAxMTIuNCAyMC44IDExMi4zIDIwLjggMTEyLjMgMzYuOCAxMDMuNyAzNi44IDEwMy43IDcuNCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIxMzUuOCA3LjQgMTQ0LjggNy40IDE0NC44IDE3LjYgMTUzLjMgMTcuNiAxNTMuMyA3LjQgMTYyLjMgNy40IDE2Mi4zIDM2LjggMTUzLjMgMzYuOCAxNTMuMyAyNS4yIDE0NC44IDI1LjIgMTQ0LjggMzYuOCAxMzUuOCAzNi44IDEzNS44IDcuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE4NS41LDE4LjRhNC42OSw0LjY5LDAsMCwwLTQuNy00LjNjLTQuMiwwLTUuNiw0LjEtNS42LDguMXMxLjQsOC4xLDUuNiw4LjFjMywwLDQuMi0yLjEsNC44LTQuOWg4LjljMCw1LjktNC44LDEyLjItMTMuNCwxMi4yLTkuNSwwLTE0LjktNi43LTE0LjktMTUuNCwwLTkuMyw1LjgtMTUuNCwxNC45LTE1LjQsOC4xLDAsMTIuNSw0LjMsMTMuMywxMS42aC04LjkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDcuMywxNC40aDQuMmMzLjUsMCw0LjUsMS4xLDQuNSwyLjksMCwyLjYtMi4zLDIuOS00LDIuOWgtNC43Wm0tOS4xLDIyLjRoOS4xVjI2LjZoNC44YzMuNiwwLDMuOCwyLjksNC4xLDUuN2EyMy4zOCwyMy4zOCwwLDAsMCwuNyw0LjVoOWMtLjgtMS40LS45LTQuOS0xLTYuMy0uMy0zLjctMS45LTYuNC00LjMtNy4zLDMtMS4xLDQuNC00LjMsNC40LTcuNCwwLTUuNi00LjQtOC40LTkuNi04LjRIMTk4LjJWMzYuOCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI3NC41IDQzLjYgNzEuNSA0My42IDcxLjUgNDEuNyA3OS42IDQxLjcgNzkuNiA0My42IDc2LjYgNDMuNiA3Ni42IDUxLjYgNzQuNSA1MS42IDc0LjUgNDMuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTgwLjMsNDEuN2gydjMuN2gwYTIuNDQsMi40NCwwLDAsMSwyLjEtMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRIODV2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMmwuMS05LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04OS43LDQ4LjVxLjE1LDEuOCwxLjgsMS44YTEuNjUsMS42NSwwLDAsMCwxLjUtLjloMS43YTMuMjIsMy4yMiwwLDAsMS0zLjMsMi40LDMuNDYsMy40NiwwLDAsMS0zLjYtMy4zdi0uNGEzLjU5LDMuNTksMCwwLDEsMy40LTMuOGguM2MyLjQsMCwzLjYsMiwzLjUsNC4yWm0zLjItMS4yYy0uMi0xLS42LTEuNS0xLjYtMS41YTEuNTUsMS41NSwwLDAsMC0xLjYsMS40di4xaDMuMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNy42LDQ3LjljMCwyLjctMS42LDQtNC4yLDRzLTQuMi0xLjMtNC4yLTRWNDEuOGgyLjJ2Ni4xYzAsMS4xLjMsMi4xLDIsMi4xLDEuNSwwLDItLjcsMi0yLjFWNDEuOGgyLjJ2Ni4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwOSA0MS43IDExMS4yIDQxLjcgMTE1LjMgNDguMyAxMTUuMyA0OC4zIDExNS4zIDQxLjcgMTE3LjQgNDEuNyAxMTcuNCA1MS42IDExNS4yIDUxLjYgMTExLjEgNDUgMTExLjEgNDUgMTExLjEgNTEuNiAxMDkgNTEuNiAxMDkgNDEuNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUuNCwxLjUsMS40cy0uNSwxLjQtMS41LDEuNGgtMi40Wm0tMi4xLDguMmgyLjJWNDcuOGgyLjJjMS4xLDAsMS41LjUsMS42LDEuNWE2LjcyLDYuNzIsMCwwLDAsLjQsMi40aDIuMmE1Ljg3LDUuODcsMCwwLDEtLjQtMi4zYy0uMS0xLS40LTItMS40LTIuM2gwYTIuNSwyLjUsMCwwLDAsMS42LTIuNSwyLjY5LDIuNjksMCwwLDAtMi43LTIuN2gtNS41bC0uMiw5LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzMuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYy45LDAsMS40LjUsMS42LDEuNVptNS4xLDEuMmMuMS0yLjItMS00LjItMy41LTQuMmEzLjUsMy41LDAsMCwwLTMuNiwzLjVWNDhhMy40LDMuNCwwLDAsMCwzLjIsMy43aC40YTMuMjIsMy4yMiwwLDAsMCwzLjMtMi40aC0xLjdhMS40OSwxLjQ5LDAsMCwxLTEuNS45cS0xLjY1LDAtMS44LTEuOGw1LjIuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzOS42LDQ1LjhoLTEuMlY0NC41aDEuMlY0NGEyLjA1LDIuMDUsMCwwLDEsMi0yLjJoLjRhMy4wOCwzLjA4LDAsMCwxLDEsLjF2MS41aC0uN2MtLjUsMC0uNy4yLS43Ljh2LjRIMTQzdjEuM2gtMS40djUuOGgtMlY0NS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xaDBhMi43NSwyLjc1LDAsMCwxLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOVY0NC41aDJ2NGMwLDEuMi40LDEuOCwxLjMsMS44LDEuMSwwLDEuNS0uNiwxLjUtMlY0NC41aDJ2Ny4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjcsNDkuOWMtMS4yLDAtMS42LTEuMS0xLjYtMi4xcy41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmExLjczLDEuNzMsMCwwLDEtMS41LDJjLS4xLDAtLjEsMC0uMi0uMW0zLjYtNS40aC0xLjl2MWgwYTIsMiwwLDAsMC0yLjEtMS4xLDMuMjEsMy4yMSwwLDAsMC0zLjEsMy41YzAsMS44LjksMy42LDMsMy42YTIuMzYsMi4zNiwwLDAsMCwyLjEtMS4xaDB2LjljMCwxLS41LDEuOC0xLjYsMS44YTEuMzMsMS4zMywwLDAsMS0xLjUtMWgtMS45Yy4xLDEuNiwxLjcsMi4zLDMuMSwyLjMsMy4zLDAsMy43LTIsMy43LTMuMmwuMi02LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjEuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYzEsMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4yMiwzLjIyLDAsMCwwLDMuMy0yLjRoLTEuN2ExLjQ5LDEuNDksMCwwLDEtMS41LjlxLTEuNjUsMC0xLjgtMS44bDUuMi4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4xNSwzLjE1LDAsMCwwLDMuMy0yLjRoLTEuN2ExLjU0LDEuNTQsMCwwLDEtMS42LjlxLTEuNjUsMC0xLjgtMS44bDUuMy4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgzLDQ0LjJoMGwxLjIsMy42aC0yLjZabS00LjgsNy40aDIuMmwuOC0yLjJoMy43bC43LDIuMmgyLjNsLTMuNy05LjhIMTgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5MS41LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMuNS0yLDEuNi0yYzEuMywwLDEuNywxLDEuNywyLjJhMS44LDEuOCwwLDAsMS0xLjUsMmMtLjEsMC0uMiwwLS4yLS4xbTMuNS01LjRoLTEuOXYxaDBhMi4wOSwyLjA5LDAsMCwwLTIuMS0xLjEsMy4yMSwzLjIxLDAsMCwwLTMuMSwzLjVjMCwxLjguOSwzLjYsMy4xLDMuNmEyLjM2LDIuMzYsMCwwLDAsMi4xLTEuMWgwdi45YzAsMS0uNSwxLjgtMS42LDEuOGExLjMzLDEuMzMsMCwwLDEtMS41LTFoLTEuOWMuMSwxLjYsMS43LDIuMywzLjEsMi4zLDMuMywwLDMuNy0yLDMuNy0zLjJsLjEtNi43Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk3LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjIsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNTYsMy41NiwwLDAsMC0zLjYsMy41VjQ4YTMuNCwzLjQsMCwwLDAsMy4yLDMuN2guNGEzLjIyLDMuMjIsMCwwLDAsMy4zLTIuNGgtMS43YTEuNTQsMS41NCwwLDAsMS0xLjYuOXEtMS42NSwwLTEuOC0xLjhsNS4zLjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDMuOSw0NC41aDEuOXYxaC4xYTIuNzUsMi43NSwwLDAsMSwyLjItMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRoLTJ2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMnYtNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNi42LDQ3YTEuMzIsMS4zMiwwLDAsMC0xLjQtMS4yaDBjLTEuMywwLTEuNywxLjMtMS43LDIuM3MuNCwyLjIsMS42LDIuMmExLjYyLDEuNjIsMCwwLDAsMS42LTEuNGgxLjlhMy4wOCwzLjA4LDAsMCwxLTMuNCwyLjloMGEzLjQ2LDMuNDYsMCwwLDEtMy42LTMuM3YtLjNhMy40MywzLjQzLDAsMCwxLDMuMi0zLjhoLjVhMy4xMiwzLjEyLDAsMCwxLDMuNCwyLjdsLTIuMS0uMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMyw1Mi41YTIuMjEsMi4yMSwwLDAsMS0yLjUsMS42LDQuODcsNC44NywwLDAsMS0xLjItLjFWNTIuNGMuNCwwLC44LjEsMS4xLjFhMS4wOCwxLjA4LDAsMCwwLC44LTEuMS4zNy4zNywwLDAsMC0uMS0uM2wtMi41LTYuN2gyLjFsMS42LDQuOWgwbDEuNi00LjloMkwyMjMsNTIuNSIvPjwvc3ZnPg=="); --unhcr-logowhite: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyMjUuOSA1NC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjUuOSA1NC4zOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zMywzNi43YzAuNiwwLDAuNi0wLjQsMC42LTF2LTMuM2MwLTAuNy0wLjEtMC45LDAuMy0wLjljMS40LDAsMS43LTAuMSwxLjctMS4zVjE3LjljMC0zLjMtMi40LTIuOC0zLTQKCWMtMS0xLjYsMS44LTEuNiwwLjgtNS4yYy0wLjMtMC45LTEuMi0xLjQtMi4xLTEuM2MtMC45LTAuMS0xLjgsMC40LTIuMSwxLjNjLTEsMy42LDEuNywzLjYsMC44LDUuMmMtMC43LDEuMi0zLDAuNy0zLDR2MTIuMwoJYzAsMS4yLDAuNCwxLjMsMS43LDEuM2MwLjQsMCwwLjMsMC4yLDAuMywwLjl2My4zYzAsMC43LTAuMSwxLDAuNiwxSDMzIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMi4zLDEwLjFjLTEuMiwxLjMtMy4xLDQuMy0xLjksNi44YzIuNSwxLDIuMy04LDUuNS03LjljMS42LDEuNC0wLjUsNS43LTEuMSw3LjVjLTAuOCwyLjMtMS40LDcuMS0yLjksOS41CgljLTEuMiwyLTAuMyw4LjEtMC43LDEwLjJjLTEsMS0zLjksMC4zLTUuMSwwLjFjLTAuMS0yLjctMC4zLTUuNS0wLjctOC4yYzAtMC44LTAuOS0xMi43LTAuMi0xNC4xYzEuNC0zLDguOC04LjcsOS44LTkuOAoJUzI5LDAsMzAuMywwYzAuOSwwLjYsMC40LDIsMC4yLDIuNUMyOS4zLDUuNSwyNCw4LjUsMjIuMywxMC4xIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjhjLTIuNiwxLTIuNC04LTUuNS03LjljLTEuNSwxLjQsMC41LDUuNywxLjEsNy41YzAuOCwyLjMsMS40LDcuMSwyLjksOS41CgljMS4yLDIsMC4zLDguMSwwLjcsMTAuMmMxLjEsMSwzLjksMC4zLDUuMSwwLjFjMC4xLTIuNywwLjMtNS41LDAuNy04LjJjMC4xLTAuOCwwLjktMTIuNywwLjItMTQuMWMtMS40LTMtOC44LTguNy05LjgtOS44CglTMzMuNiwwLDMyLjQsMGMtMC45LDAuNi0wLjMsMi0wLjIsMi41QzMzLjUsNS41LDM4LjcsOC41LDQwLjQsMTAuMSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEuNSw2LjFjLTAuNywwLjYtMi4xLDEuMS0zLjIsMi40QzcuOSw3LjgsOC45LDYsMTAuMSw0LjljMS0wLjgsMi4xLTEuNSwzLjItMi4xQzEzLjcsMy43LDEyLjMsNS4xLDExLjUsNi4xIgoJLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkuNCwxMWMtMS4xLDEtMi4zLDEuNS0zLjksMy40QzUsMTIuNSw0LjksMTAuNiw1LjMsOC43YzAuNi0xLjgsMS41LTMuOCwzLTQuNEM3LjgsNS43LDcuNSw3LjEsNy40LDguNgoJYy0wLjcsMi42LTEsMi43LTAuOSwzYzAuMiwwLDEtMS40LDIuMS0yLjRjMS4yLTEuMiwyLjgtMS41LDMuOC0yLjNDMTEuNiw4LjQsMTAuNiw5LjgsOS40LDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjksMjEuOGMtMS4yLTIuMS0xLjgtNC42LTEuOC03YzAuMS0xLjYsMC45LTUuMywyLTUuOWMtMC4zLDMuNCwwLjYsMy43LDAuMiw2LjRjMCwwLjEtMC40LDMtMC40LDMuMgoJYzAuNS0wLjEsMC0yLjYsNS40LTYuNGMtMS4yLDItMC42LDIuNi0yLjcsNS4zQzUuNCwxOC42LDQuNCwyMC4xLDMuOSwyMS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02LjEsMjQuM2MtMC43LDAuOS0xLjEsMi0xLjIsMy4yQzIuMiwyNi0wLjksMTkuOCwwLjIsMTYuN2MwLjcsMi4zLDEuNywyLjksMi40LDQuOGMxLjIsMi45LDEsMy44LDEuOCw0LjUKCWMtMC4xLTEuNiwwLjItMy4yLDAuOS00LjZjMC42LTEuMSwxLjItMi4xLDEuOS0zLjFDNy43LDIwLjQsNy4zLDIyLjEsNi4xLDI0LjMiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTguNSwyOS42Yy0wLjEsMS43LTAuMywzLjUtMC42LDUuMmMtNC42LTEuNS03LjEtNi44LTcuMS05LjRjMS40LDMuMiwzLjUsMy4yLDYuMiw3LjdjMC4yLTEuNy0wLjUtMC40LTAuNi0zLjcKCWMwLjEtMy40LDAuOC0zLjUsMC45LTUuNkM4LjIsMjQuNyw4LjUsMjguNSw4LjUsMjkuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTIuMywzNi40YzAuNCwxLjgsMC41LDMuOCwwLjgsNS4zYy0yLjctMS0zLjMtMC4yLTYuNS0yLjJjLTEuNC0wLjgtNC00LjEtMy45LTYuNGMzLjEsMy41LDMuNywzLjEsNS4yLDQuNAoJYzEuNCwxLjEsMi41LDIuOCwzLjYsMi42YzAuMS0wLjktMi4zLTMtMi04LjhDMTAuOCwzMi44LDExLjcsMzQuNSwxMi4zLDM2LjQiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3LjYsNDAuOGMwLjgsMS4yLDAuNiwxLjcsMi43LDQuMWMtMS44LDAuNi0zLjYsMC45LTUuNSwxLjFjLTEuMywwLTYtMS4yLTcuNi00LjRjMi43LDEuNCwyLjcsMS4xLDYuMywxLjkKCWMyLjYsMC42LDQuNCwxLjQsNS4xLDEuM2MtMC4xLTAuMy0yLjEtMS4yLTMuNS0yLjlzLTEtMy45LTIuMy01LjRDMTMuNywzNi4xLDE2LjksMzkuOSwxNy42LDQwLjgiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxLDYuMWMwLjYsMC42LDIuMiwxLjEsMy4xLDIuNGMwLjQtMC43LTAuNi0yLjUtMS44LTMuNmMtMS0wLjgtMi0xLjUtMy4yLTIuMUM0OC43LDMuNyw1MC4xLDUuMSw1MSw2LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUzLjEsMTFjMS4xLDEsMi4zLDEuNSwzLjksMy40YzAuNS0xLjksMC42LTMuOCwwLjItNS43Yy0wLjUtMS44LTEuNS0zLjgtMy00LjRjMC41LDEuNCwwLjgsMi44LDAuOSw0LjMKCWMwLjcsMi42LDEsMi43LDAuOSwzYy0wLjIsMC0xLTEuNC0yLjEtMi40Yy0xLjItMS4yLTIuNy0xLjUtMy44LTIuM0M1MC45LDguNCw1MS45LDkuOCw1My4xLDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01OC41LDIxLjhjMS4yLTIuMSwxLjgtNC41LDEuOC03Yy0wLjEtMS42LTAuOS01LjMtMi01LjljMC4zLDMuNC0wLjYsMy43LTAuMiw2LjRjMCwwLjEsMC4zLDMsMC4zLDMuMgoJYy0wLjQtMC4xLDAtMi42LTUuMy02LjRjMS4xLDIsMC42LDIuNiwyLjcsNS4zQzU3LjEsMTguNiw1OCwyMC4xLDU4LjUsMjEuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTYuNCwyNC4zYzAuNiwxLDEsMi4xLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44Yy0wLjcsMi4zLTEuNywyLjktMi4zLDQuOGMtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjUKCWMwLTEuNi0wLjMtMy4xLTAuOS00LjZjLTAuNS0xLjEtMS4yLTIuMS0xLjktMy4xQzU0LjgsMjAuNCw1NS4yLDIyLjUsNTYuNCwyNC4zIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01NCwyOS42YzAuMSwxLjgsMC4zLDMuNSwwLjcsNS4yYzQuNi0xLjUsNy4xLTYuOCw3LjEtOS40Yy0xLjUsMy4yLTMuNSwzLjItNi4yLDcuN2MtMC4yLTEuNywwLjUtMC40LDAuNS0zLjcKCXMtMC44LTMuNS0wLjktNS42QzU0LjMsMjQuNyw1NCwyOC41LDU0LDI5LjYiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUwLjEsMzYuNGMtMC40LDEuOC0wLjUsMy44LTAuNyw1LjNjMi42LTEsMy4zLTAuMiw2LjQtMi4yYzEuNC0wLjgsNC4xLTQuMSwzLjktNi40Yy0zLjEsMy41LTMuNywzLjEtNS4yLDQuNAoJYy0xLjQsMS4xLTIuNiwyLjgtMy42LDIuNmMtMC4xLTAuOSwyLjMtMywyLTguOEM1MS43LDMyLjgsNTAuNywzNC41LDUwLjEsMzYuNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDQuOSw0MC44Yy0wLjcsMS41LTEuNiwyLjktMi43LDQuMWMxLjgsMC42LDMuNiwwLjksNS41LDEuMWMxLjMsMCw2LTEuMiw3LjUtNC40Yy0yLjcsMS40LTIuNywxLjEtNi4zLDEuOQoJYy0yLjYsMC42LTQuNCwxLjQtNS4xLDEuM2MwLjItMC4zLDIuMi0xLjIsMy41LTIuOXMxLTMuOSwyLjMtNS40QzQ4LjcsMzYuMSw0NS42LDM5LjksNDQuOSw0MC44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC42LDUxLjhsLTAuOC0wLjRjMy40LTMuOCw4LjQtNS44LDEzLjUtNS42YzguNSwwLjUsNy45LDIuNSwxMi41LDIuMWMwLjUsMC0wLjQsMC42LTAuNCwwLjYKCWMtMy4zLDEtNi44LDEtMTAtMC4yQzMzLjksNDYuNSwzMC4zLDQ1LjQsMjQuNiw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zOCw1MS44bDAuOC0wLjRjLTMuNC0zLjgtOC4zLTUuOC0xMy40LTUuNmMtOC41LDAuNS03LjksMi41LTEyLjUsMi4xYy0wLjUsMCwwLjQsMC42LDAuNCwwLjYKCWMzLjMsMSw2LjgsMSwxMC0wLjJDMjguOCw0Ni41LDMyLjMsNDUuNCwzOCw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05OC4zLDI1LjVjMCw4LjEtNC40LDEyLjEtMTMuNCwxMi4xcy0xMy40LTMuOS0xMy40LTEyLjF2LTE4aDl2MTZjMCwzLDAsNi44LDQuNCw2LjhzNC4zLTMuOCw0LjMtNi44di0xNmg5LjEKCVYyNS41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTAzLjcsNy40IDExMyw3LjQgMTIxLjYsMjMuMSAxMjEuNiwyMy4xIDEyMS42LDcuNCAxMzAuMiw3LjQgMTMwLjIsMzYuOCAxMjEuNCwzNi44IDExMi40LDIwLjggCgkxMTIuMywyMC44IDExMi4zLDM2LjggMTAzLjcsMzYuOCAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMzUuOCw3LjQgMTQ0LjgsNy40IDE0NC44LDE3LjYgMTUzLjMsMTcuNiAxNTMuMyw3LjQgMTYyLjMsNy40IDE2Mi4zLDM2LjggMTUzLjMsMzYuOCAxNTMuMywyNS4yIAoJMTQ0LjgsMjUuMiAxNDQuOCwzNi44IDEzNS44LDM2LjggIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODUuNSwxOC40Yy0wLjItMi40LTIuMy00LjMtNC43LTQuM2MtNC4yLDAtNS42LDQuMS01LjYsOC4xczEuNCw4LjEsNS42LDguMWMzLDAsNC4yLTIuMSw0LjgtNC45aDguOQoJYzAsNS45LTQuOCwxMi4yLTEzLjQsMTIuMmMtOS41LDAtMTQuOS02LjctMTQuOS0xNS40YzAtOS4zLDUuOC0xNS40LDE0LjktMTUuNGM4LjEsMCwxMi41LDQuMywxMy4zLDExLjZMMTg1LjUsMTguNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA3LjMsMTQuNGg0LjJjMy41LDAsNC41LDEuMSw0LjUsMi45YzAsMi42LTIuMywyLjktNCwyLjloLTQuN1YxNC40eiBNMTk4LjIsMzYuOGg5LjFWMjYuNmg0LjgKCWMzLjYsMCwzLjgsMi45LDQuMSw1LjdjMC4xLDEuNSwwLjMsMywwLjcsNC41aDljLTAuOC0xLjQtMC45LTQuOS0xLTYuM2MtMC4zLTMuNy0xLjktNi40LTQuMy03LjNjMy0xLjEsNC40LTQuMyw0LjQtNy40CgljMC01LjYtNC40LTguNC05LjYtOC40aC0xNy4yVjM2LjgiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI3NC41LDQzLjYgNzEuNSw0My42IDcxLjUsNDEuNyA3OS42LDQxLjcgNzkuNiw0My42IDc2LjYsNDMuNiA3Ni42LDUxLjYgNzQuNSw1MS42ICIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNODAuMyw0MS43aDJ2My43bDAsMGMwLjQtMC43LDEuMi0xLjIsMi4xLTEuMmMyLjEsMCwyLjYsMS4yLDIuNiwyLjl2NC40aC0ydi00YzAtMS4yLTAuMy0xLjgtMS4zLTEuOAoJcy0xLjUsMC42LTEuNSwydjMuN2gtMkw4MC4zLDQxLjciLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTg5LjcsNDguNWMwLjEsMS4yLDAuNywxLjgsMS44LDEuOGMwLjYsMCwxLjItMC4zLDEuNS0wLjloMS43Yy0wLjQsMS41LTEuOCwyLjUtMy4zLDIuNAoJYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMCwwLDAsMCwwLDBoMC4zYzIuNCwwLDMuNiwyLDMuNSw0LjJIODkuN3ogTTkyLjksNDcuMwoJYy0wLjItMS0wLjYtMS41LTEuNi0xLjVjLTAuOCwwLTEuNSwwLjYtMS42LDEuNHYwLjFIOTIuOSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTA3LjYsNDcuOWMwLDIuNy0xLjYsNC00LjIsNHMtNC4yLTEuMy00LjItNHYtNi4xaDIuMnY2LjFjMCwxLjEsMC4zLDIuMSwyLDIuMWMxLjUsMCwyLTAuNywyLTIuMXYtNi4xaDIuMgoJVjQ3LjkiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMDksNDEuNyAxMTEuMiw0MS43IDExNS4zLDQ4LjMgMTE1LjMsNDguMyAxMTUuMyw0MS43IDExNy40LDQxLjcgMTE3LjQsNTEuNiAxMTUuMiw1MS42IDExMS4xLDQ1IAoJMTExLjEsNDUgMTExLjEsNTEuNiAxMDksNTEuNiAiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUsMC40LDEuNSwxLjRzLTAuNSwxLjQtMS41LDEuNGgtMi40TDEyNC4yLDQzLjR6IE0xMjIuMSw1MS42aDIuMnYtMy44aDIuMgoJYzEuMSwwLDEuNSwwLjUsMS42LDEuNWMwLDAuOCwwLjEsMS42LDAuNCwyLjRoMi4yYy0wLjMtMC43LTAuNC0xLjUtMC40LTIuM2MtMC4xLTEtMC40LTItMS40LTIuM2wwLDBjMS0wLjQsMS43LTEuNCwxLjYtMi41CgljMC0xLjUtMS4yLTIuNy0yLjctMi43YzAsMCwwLDAsMCwwaC01LjVMMTIyLjEsNTEuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMzLjIsNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVoMC4xYzAuOSwwLDEuNCwwLjUsMS42LDEuNUgxMzMuMnogTTEzOC4zLDQ4LjVjMC4xLTIuMi0xLTQuMi0zLjUtNC4yCgljLTEuOS0wLjEtMy41LDEuNS0zLjYsMy40YzAsMCwwLDAuMSwwLDAuMVY0OGMtMC4yLDEuOSwxLjIsMy41LDMuMSwzLjdjMCwwLDAuMSwwLDAuMSwwaDAuNGMxLjUsMC4xLDIuOS0wLjksMy4zLTIuNGgtMS43CgljLTAuMywwLjYtMC45LDEtMS41LDAuOWMtMS4xLDAtMS43LTAuNi0xLjgtMS44TDEzOC4zLDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEzOS42LDQ1LjhoLTEuMnYtMS4zaDEuMlY0NGMtMC4xLTEuMSwwLjgtMi4xLDEuOS0yLjJjMCwwLDAuMSwwLDAuMSwwaDAuNGMwLjMsMCwwLjcsMCwxLDAuMXYxLjVoLTAuNwoJYy0wLjUsMC0wLjcsMC4yLTAuNywwLjh2MC40aDEuNHYxLjNoLTEuNHY1LjhoLTJWNDUuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xbDAsMGMtMC41LDAuNy0xLjMsMS4yLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOXYtNC40aDJ2NGMwLDEuMiwwLjQsMS44LDEuMywxLjgKCWMxLjEsMCwxLjUtMC42LDEuNS0ydi0zLjhoMnY3LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1NC43LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMwLjUtMiwxLjYtMmMxLjMsMCwxLjcsMSwxLjcsMi4yYzAuMiwwLjktMC41LDEuOC0xLjQsMmMwLDAtMC4xLDAtMC4xLDAKCUMxNTQuOCw1MCwxNTQuOCw1MCwxNTQuNyw0OS45IE0xNTguMyw0NC41aC0xLjl2MWwwLDBjLTAuNC0wLjgtMS4yLTEuMi0yLjEtMS4xYy0xLjgsMC4xLTMuMiwxLjUtMy4xLDMuM2MwLDAuMSwwLDAuMSwwLDAuMgoJYzAsMS44LDAuOSwzLjYsMywzLjZjMC44LDAsMS42LTAuNCwyLjEtMS4xbDAsMHYwLjljMCwxLTAuNSwxLjgtMS42LDEuOGMtMC43LDAuMS0xLjMtMC4zLTEuNS0xaC0xLjljMC4xLDEuNiwxLjcsMi4zLDMuMSwyLjMKCWMzLjMsMCwzLjctMiwzLjctMy4yTDE1OC4zLDQ0LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2MS4yLDQ3LjNjMC0wLjgsMC43LTEuNSwxLjUtMS41aDAuMWMxLDAsMS40LDAuNSwxLjYsMS41SDE2MS4yeiBNMTY2LjMsNDguNWMwLjEtMi4yLTEtNC4yLTMuNS00LjIKCWMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjUsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTY2LjMsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY4LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTY4Ljl6IE0xNzQsNDguNQoJYzAuMS0yLjItMS00LjItMy41LTQuMmMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40CgljMS41LDAuMSwyLjktMC45LDMuMy0yLjRoLTEuN2MtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTc0LDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE4Myw0NC4yTDE4Myw0NC4ybDEuMiwzLjZoLTIuNkwxODMsNDQuMnogTTE3OC4yLDUxLjZoMi4ybDAuOC0yLjJoMy43bDAuNywyLjJoMi4zbC0zLjctOS44SDE4MkwxNzguMiw1MS42eiIKCS8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTEuNSw0OS45Yy0xLjIsMC0xLjYtMS4xLTEuNi0yLjFzMC41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmMwLjEsMS0wLjUsMS44LTEuNSwyCglDMTkxLjYsNTAsMTkxLjUsNTAsMTkxLjUsNDkuOSBNMTk1LDQ0LjVoLTEuOXYxbDAsMGMtMC40LTAuOC0xLjItMS4yLTIuMS0xLjFjLTEuOCwwLjEtMy4yLDEuNS0zLjEsMy4zYzAsMC4xLDAsMC4xLDAsMC4yCgljMCwxLjgsMC45LDMuNiwzLjEsMy42YzAuOCwwLDEuNi0wLjQsMi4xLTEuMWwwLDB2MC45YzAsMS0wLjUsMS44LTEuNiwxLjhjLTAuNywwLjEtMS4zLTAuMy0xLjUtMWgtMS45YzAuMSwxLjYsMS43LDIuMywzLjEsMi4zCgljMy4zLDAsMy43LTIsMy43LTMuMkwxOTUsNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTk3LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTk3Ljl6IE0yMDMuMSw0OC41CgljMC4xLTIuMi0xLTQuMi0zLjUtNC4yYy0yLDAtMy42LDEuNS0zLjYsMy41VjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMjAzLjEsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjAzLjksNDQuNWgxLjl2MWgwLjFjMC41LTAuNywxLjMtMS4yLDIuMi0xLjJjMi4xLDAsMi42LDEuMiwyLjYsMi45djQuNGgtMnYtNGMwLTEuMi0wLjMtMS44LTEuMy0xLjgKCXMtMS41LDAuNi0xLjUsMnYzLjdoLTJWNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjYsNDdjLTAuMS0wLjctMC43LTEuMi0xLjQtMS4ybDAsMGMtMS4zLDAtMS43LDEuMy0xLjcsMi4zczAuNCwyLjIsMS42LDIuMmMwLjgsMCwxLjUtMC42LDEuNi0xLjRoMS45CgljLTAuMSwxLjctMS41LDMtMy4yLDIuOWMtMC4xLDAtMC4xLDAtMC4yLDBsMCwwYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC4zYy0wLjItMS45LDEuMS0zLjYsMy0zLjhjMC4xLDAsMC4xLDAsMC4yLDBoMC41CgljMS43LTAuMiwzLjIsMSwzLjQsMi43TDIxNi42LDQ3Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjMsNTIuNWMtMC4zLDEuMS0xLjQsMS44LTIuNSwxLjZjLTAuNCwwLTAuOCwwLTEuMi0wLjF2LTEuNmMwLjQsMCwwLjgsMC4xLDEuMSwwLjFjMC41LTAuMSwwLjgtMC42LDAuOC0xLjEKCWMwLTAuMSwwLTAuMi0wLjEtMC4zbC0yLjUtNi43aDIuMWwxLjYsNC45bDAsMGwxLjYtNC45aDJMMjIzLDUyLjUiLz4KPC9zdmc+Cg=="); } +:root { +--unhcr-logoblue: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjUuOSIgaGVpZ2h0PSI1NC4zIiB2aWV3Qm94PSIwIDAgMjI1LjkgNTQuMyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwMDcyYmM7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMzLDM2LjdjLjYsMCwuNi0uNC42LTFWMzIuNGMwLS43LS4xLS45LjMtLjksMS40LDAsMS43LS4xLDEuNy0xLjNWMTcuOWMwLTMuMy0yLjQtMi44LTMtNC0xLTEuNiwxLjgtMS42LjgtNS4yYTIsMiwwLDAsMC0yLjEtMS4zLDIsMiwwLDAsMC0yLjEsMS4zYy0xLDMuNiwxLjcsMy42LjgsNS4yLS43LDEuMi0zLC43LTMsNFYzMC4yYzAsMS4yLjQsMS4zLDEuNywxLjMuNCwwLC4zLjIuMy45djMuM2MwLC43LS4xLDEsLjYsMUgzMyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyLjMsMTAuMWMtMS4yLDEuMy0zLjEsNC4zLTEuOSw2LjgsMi41LDEsMi4zLTgsNS41LTcuOSwxLjYsMS40LS41LDUuNy0xLjEsNy41LS44LDIuMy0xLjQsNy4xLTIuOSw5LjUtMS4yLDItLjMsOC4xLS43LDEwLjItMSwxLTMuOS4zLTUuMS4xYTgxLjc2LDgxLjc2LDAsMCwwLS43LTguMmMwLS44LS45LTEyLjctLjItMTQuMUMxNi42LDExLDI0LDUuMywyNSw0LjJTMjksMCwzMC4zLDBjLjkuNi40LDIsLjIsMi41LTEuMiwzLTYuNSw2LTguMiw3LjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjgtMi42LDEtMi40LTgtNS41LTcuOS0xLjUsMS40LjUsNS43LDEuMSw3LjUuOCwyLjMsMS40LDcuMSwyLjksOS41LDEuMiwyLC4zLDguMS43LDEwLjIsMS4xLDEsMy45LjMsNS4xLjFhNzUuNTgsNzUuNTgsMCwwLDEsLjctOC4yYy4xLS44LjktMTIuNy4yLTE0LjEtMS40LTMtOC44LTguNy05LjgtOS44UzMzLjYsMCwzMi40LDBjLS45LjYtLjMsMi0uMiwyLjUsMS4zLDMsNi41LDYsOC4yLDcuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExLjUsNi4xYy0uNy42LTIuMSwxLjEtMy4yLDIuNC0uNC0uNy42LTIuNSwxLjgtMy42YTE3LjY4LDE3LjY4LDAsMCwxLDMuMi0yLjFjLjQuOS0xLDIuMy0xLjgsMy4zIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOS40LDExYy0xLjEsMS0yLjMsMS41LTMuOSwzLjRhMTIuMjIsMTIuMjIsMCwwLDEtLjItNS43Yy42LTEuOCwxLjUtMy44LDMtNC40YTE1LjY5LDE1LjY5LDAsMCwwLS45LDQuM2MtLjcsMi42LTEsMi43LS45LDMsLjIsMCwxLTEuNCwyLjEtMi40QzkuOCw4LDExLjQsNy43LDEyLjQsNi45YTE3LjMsMTcuMywwLDAsMS0zLDQuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMuOSwyMS44YTE0LjMxLDE0LjMxLDAsMCwxLTEuOC03Yy4xLTEuNi45LTUuMywyLTUuOS0uMywzLjQuNiwzLjcuMiw2LjQsMCwuMS0uNCwzLS40LDMuMi41LS4xLDAtMi42LDUuNC02LjQtMS4yLDItLjYsMi42LTIuNyw1LjNhMTAuNzQsMTAuNzQsMCwwLDAtMi43LDQuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTYuMSwyNC4zYTYuNjMsNi42MywwLDAsMC0xLjIsMy4yQzIuMiwyNi0uOSwxOS44LjIsMTYuN2MuNywyLjMsMS43LDIuOSwyLjQsNC44LDEuMiwyLjksMSwzLjgsMS44LDQuNWE5LDksMCwwLDEsLjktNC42LDMyLjA3LDMyLjA3LDAsMCwxLDEuOS0zLjFjLjUsMi4xLjEsMy44LTEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOC41LDI5LjZhNDYsNDYsMCwwLDEtLjYsNS4yQzMuMywzMy4zLjgsMjgsLjgsMjUuNGMxLjQsMy4yLDMuNSwzLjIsNi4yLDcuNy4yLTEuNy0uNS0uNC0uNi0zLjcuMS0zLjQuOC0zLjUuOS01LjYuOS45LDEuMiw0LjcsMS4yLDUuOCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyLjMsMzYuNGMuNCwxLjguNSwzLjguOCw1LjMtMi43LTEtMy4zLS4yLTYuNS0yLjItMS40LS44LTQtNC4xLTMuOS02LjQsMy4xLDMuNSwzLjcsMy4xLDUuMiw0LjQsMS40LDEuMSwyLjUsMi44LDMuNiwyLjYuMS0uOS0yLjMtMy0yLTguOGExNC4xNSwxNC4xNSwwLDAsMSwyLjgsNS4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcuNiw0MC44Yy44LDEuMi42LDEuNywyLjcsNC4xQTI1LjU0LDI1LjU0LDAsMCwxLDE0LjgsNDZjLTEuMywwLTYtMS4yLTcuNi00LjQsMi43LDEuNCwyLjcsMS4xLDYuMywxLjksMi42LjYsNC40LDEuNCw1LjEsMS4zLS4xLS4zLTIuMS0xLjItMy41LTIuOXMtMS0zLjktMi4zLTUuNGMuOS0uNCw0LjEsMy40LDQuOCw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MSw2LjFjLjYuNiwyLjIsMS4xLDMuMSwyLjQuNC0uNy0uNi0yLjUtMS44LTMuNmExNC43NywxNC43NywwLDAsMC0zLjItMi4xYy0uNC45LDEsMi4zLDEuOSwzLjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01My4xLDExYzEuMSwxLDIuMywxLjUsMy45LDMuNGExMi4yMiwxMi4yMiwwLDAsMCwuMi01LjdjLS41LTEuOC0xLjUtMy44LTMtNC40YTE1LjY5LDE1LjY5LDAsMCwxLC45LDQuM2MuNywyLjYsMSwyLjcuOSwzLS4yLDAtMS0xLjQtMi4xLTIuNEM1Mi43LDgsNTEuMiw3LjcsNTAuMSw2LjlhMTcuMywxNy4zLDAsMCwwLDMsNC4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTguNSwyMS44YTE0LDE0LDAsMCwwLDEuOC03Yy0uMS0xLjYtLjktNS4zLTItNS45LjMsMy40LS42LDMuNy0uMiw2LjQsMCwuMS4zLDMsLjMsMy4yLS40LS4xLDAtMi42LTUuMy02LjQsMS4xLDIsLjYsMi42LDIuNyw1LjNhOS4yOCw5LjI4LDAsMCwxLDIuNyw0LjQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ni40LDI0LjNhOS41OCw5LjU4LDAsMCwxLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44LS43LDIuMy0xLjcsMi45LTIuMyw0LjgtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjVhMTEuNzksMTEuNzksMCwwLDAtLjktNC42LDE5LjgyLDE5LjgyLDAsMCwwLTEuOS0zLjEsNy41MSw3LjUxLDAsMCwwLDEuMSw2Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQsMjkuNmEzMC45MiwzMC45MiwwLDAsMCwuNyw1LjJjNC42LTEuNSw3LjEtNi44LDcuMS05LjQtMS41LDMuMi0zLjUsMy4yLTYuMiw3LjctLjItMS43LjUtLjQuNS0zLjdzLS44LTMuNS0uOS01LjZjLS45LjktMS4yLDQuNy0xLjIsNS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTAuMSwzNi40Yy0uNCwxLjgtLjUsMy44LS43LDUuMywyLjYtMSwzLjMtLjIsNi40LTIuMiwxLjQtLjgsNC4xLTQuMSwzLjktNi40LTMuMSwzLjUtMy43LDMuMS01LjIsNC40LTEuNCwxLjEtMi42LDIuOC0zLjYsMi42LS4xLS45LDIuMy0zLDItOC44YTE1Ljg0LDE1Ljg0LDAsMCwwLTIuOCw1LjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NC45LDQwLjhhMTYuMTksMTYuMTksMCwwLDEtMi43LDQuMUEyNi44MSwyNi44MSwwLDAsMCw0Ny43LDQ2YzEuMywwLDYtMS4yLDcuNS00LjQtMi43LDEuNC0yLjcsMS4xLTYuMywxLjktMi42LjYtNC40LDEuNC01LjEsMS4zLjItLjMsMi4yLTEuMiwzLjUtMi45czEtMy45LDIuMy01LjRjLS45LS40LTQsMy40LTQuNyw0LjMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNC42LDUxLjhsLS44LS40YTE3LjIsMTcuMiwwLDAsMSwxMy41LTUuNmM4LjUuNSw3LjksMi41LDEyLjUsMi4xLjUsMC0uNC42LS40LjZhMTUuNTYsMTUuNTYsMCwwLDEtMTAtLjJjLTUuNS0xLjgtOS4xLTIuOS0xNC44LDMuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4LDUxLjhsLjgtLjRhMTcsMTcsMCwwLDAtMTMuNC01LjZjLTguNS41LTcuOSwyLjUtMTIuNSwyLjEtLjUsMCwuNC42LjQuNmExNS41NiwxNS41NiwwLDAsMCwxMC0uMmM1LjUtMS44LDktMi45LDE0LjcsMy41Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTguMywyNS41YzAsOC4xLTQuNCwxMi4xLTEzLjQsMTIuMVM3MS41LDMzLjcsNzEuNSwyNS41VjcuNWg5djE2YzAsMywwLDYuOCw0LjQsNi44czQuMy0zLjgsNC4zLTYuOFY3LjVoOS4xdjE4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwMy43IDcuNCAxMTMgNy40IDEyMS42IDIzLjEgMTIxLjYgMjMuMSAxMjEuNiA3LjQgMTMwLjIgNy40IDEzMC4yIDM2LjggMTIxLjQgMzYuOCAxMTIuNCAyMC44IDExMi4zIDIwLjggMTEyLjMgMzYuOCAxMDMuNyAzNi44IDEwMy43IDcuNCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIxMzUuOCA3LjQgMTQ0LjggNy40IDE0NC44IDE3LjYgMTUzLjMgMTcuNiAxNTMuMyA3LjQgMTYyLjMgNy40IDE2Mi4zIDM2LjggMTUzLjMgMzYuOCAxNTMuMyAyNS4yIDE0NC44IDI1LjIgMTQ0LjggMzYuOCAxMzUuOCAzNi44IDEzNS44IDcuNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE4NS41LDE4LjRhNC42OSw0LjY5LDAsMCwwLTQuNy00LjNjLTQuMiwwLTUuNiw0LjEtNS42LDguMXMxLjQsOC4xLDUuNiw4LjFjMywwLDQuMi0yLjEsNC44LTQuOWg4LjljMCw1LjktNC44LDEyLjItMTMuNCwxMi4yLTkuNSwwLTE0LjktNi43LTE0LjktMTUuNCwwLTkuMyw1LjgtMTUuNCwxNC45LTE1LjQsOC4xLDAsMTIuNSw0LjMsMTMuMywxMS42aC04LjkiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDcuMywxNC40aDQuMmMzLjUsMCw0LjUsMS4xLDQuNSwyLjksMCwyLjYtMi4zLDIuOS00LDIuOWgtNC43Wm0tOS4xLDIyLjRoOS4xVjI2LjZoNC44YzMuNiwwLDMuOCwyLjksNC4xLDUuN2EyMy4zOCwyMy4zOCwwLDAsMCwuNyw0LjVoOWMtLjgtMS40LS45LTQuOS0xLTYuMy0uMy0zLjctMS45LTYuNC00LjMtNy4zLDMtMS4xLDQuNC00LjMsNC40LTcuNCwwLTUuNi00LjQtOC40LTkuNi04LjRIMTk4LjJWMzYuOCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI3NC41IDQzLjYgNzEuNSA0My42IDcxLjUgNDEuNyA3OS42IDQxLjcgNzkuNiA0My42IDc2LjYgNDMuNiA3Ni42IDUxLjYgNzQuNSA1MS42IDc0LjUgNDMuNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTgwLjMsNDEuN2gydjMuN2gwYTIuNDQsMi40NCwwLDAsMSwyLjEtMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRIODV2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMmwuMS05LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04OS43LDQ4LjVxLjE1LDEuOCwxLjgsMS44YTEuNjUsMS42NSwwLDAsMCwxLjUtLjloMS43YTMuMjIsMy4yMiwwLDAsMS0zLjMsMi40LDMuNDYsMy40NiwwLDAsMS0zLjYtMy4zdi0uNGEzLjU5LDMuNTksMCwwLDEsMy40LTMuOGguM2MyLjQsMCwzLjYsMiwzLjUsNC4yWm0zLjItMS4yYy0uMi0xLS42LTEuNS0xLjYtMS41YTEuNTUsMS41NSwwLDAsMC0xLjYsMS40di4xaDMuMiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNy42LDQ3LjljMCwyLjctMS42LDQtNC4yLDRzLTQuMi0xLjMtNC4yLTRWNDEuOGgyLjJ2Ni4xYzAsMS4xLjMsMi4xLDIsMi4xLDEuNSwwLDItLjcsMi0yLjFWNDEuOGgyLjJ2Ni4xIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEwOSA0MS43IDExMS4yIDQxLjcgMTE1LjMgNDguMyAxMTUuMyA0OC4zIDExNS4zIDQxLjcgMTE3LjQgNDEuNyAxMTcuNCA1MS42IDExNS4yIDUxLjYgMTExLjEgNDUgMTExLjEgNDUgMTExLjEgNTEuNiAxMDkgNTEuNiAxMDkgNDEuNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUuNCwxLjUsMS40cy0uNSwxLjQtMS41LDEuNGgtMi40Wm0tMi4xLDguMmgyLjJWNDcuOGgyLjJjMS4xLDAsMS41LjUsMS42LDEuNWE2LjcyLDYuNzIsMCwwLDAsLjQsMi40aDIuMmE1Ljg3LDUuODcsMCwwLDEtLjQtMi4zYy0uMS0xLS40LTItMS40LTIuM2gwYTIuNSwyLjUsMCwwLDAsMS42LTIuNSwyLjY5LDIuNjksMCwwLDAtMi43LTIuN2gtNS41bC0uMiw5LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzMuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYy45LDAsMS40LjUsMS42LDEuNVptNS4xLDEuMmMuMS0yLjItMS00LjItMy41LTQuMmEzLjUsMy41LDAsMCwwLTMuNiwzLjVWNDhhMy40LDMuNCwwLDAsMCwzLjIsMy43aC40YTMuMjIsMy4yMiwwLDAsMCwzLjMtMi40aC0xLjdhMS40OSwxLjQ5LDAsMCwxLTEuNS45cS0xLjY1LDAtMS44LTEuOGw1LjIuMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzOS42LDQ1LjhoLTEuMlY0NC41aDEuMlY0NGEyLjA1LDIuMDUsMCwwLDEsMi0yLjJoLjRhMy4wOCwzLjA4LDAsMCwxLDEsLjF2MS41aC0uN2MtLjUsMC0uNy4yLS43Ljh2LjRIMTQzdjEuM2gtMS40djUuOGgtMlY0NS44Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xaDBhMi43NSwyLjc1LDAsMCwxLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOVY0NC41aDJ2NGMwLDEuMi40LDEuOCwxLjMsMS44LDEuMSwwLDEuNS0uNiwxLjUtMlY0NC41aDJ2Ny4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTU0LjcsNDkuOWMtMS4yLDAtMS42LTEuMS0xLjYtMi4xcy41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmExLjczLDEuNzMsMCwwLDEtMS41LDJjLS4xLDAtLjEsMC0uMi0uMW0zLjYtNS40aC0xLjl2MWgwYTIsMiwwLDAsMC0yLjEtMS4xLDMuMjEsMy4yMSwwLDAsMC0zLjEsMy41YzAsMS44LjksMy42LDMsMy42YTIuMzYsMi4zNiwwLDAsMCwyLjEtMS4xaDB2LjljMCwxLS41LDEuOC0xLjYsMS44YTEuMzMsMS4zMywwLDAsMS0xLjUtMWgtMS45Yy4xLDEuNiwxLjcsMi4zLDMuMSwyLjMsMy4zLDAsMy43LTIsMy43LTMuMmwuMi02LjciLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjEuMiw0Ny4zYTEuNTQsMS41NCwwLDAsMSwxLjUtMS41aC4xYzEsMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4yMiwzLjIyLDAsMCwwLDMuMy0yLjRoLTEuN2ExLjQ5LDEuNDksMCwwLDEtMS41LjlxLTEuNjUsMC0xLjgtMS44bDUuMi4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjEsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNSwzLjUsMCwwLDAtMy42LDMuNVY0OGEzLjQsMy40LDAsMCwwLDMuMiwzLjdoLjRhMy4xNSwzLjE1LDAsMCwwLDMuMy0yLjRoLTEuN2ExLjU0LDEuNTQsMCwwLDEtMS42LjlxLTEuNjUsMC0xLjgtMS44bDUuMy4xIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgzLDQ0LjJoMGwxLjIsMy42aC0yLjZabS00LjgsNy40aDIuMmwuOC0yLjJoMy43bC43LDIuMmgyLjNsLTMuNy05LjhIMTgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5MS41LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMuNS0yLDEuNi0yYzEuMywwLDEuNywxLDEuNywyLjJhMS44LDEuOCwwLDAsMS0xLjUsMmMtLjEsMC0uMiwwLS4yLS4xbTMuNS01LjRoLTEuOXYxaDBhMi4wOSwyLjA5LDAsMCwwLTIuMS0xLjEsMy4yMSwzLjIxLDAsMCwwLTMuMSwzLjVjMCwxLjguOSwzLjYsMy4xLDMuNmEyLjM2LDIuMzYsMCwwLDAsMi4xLTEuMWgwdi45YzAsMS0uNSwxLjgtMS42LDEuOGExLjMzLDEuMzMsMCwwLDEtMS41LTFoLTEuOWMuMSwxLjYsMS43LDIuMywzLjEsMi4zLDMuMywwLDMuNy0yLDMuNy0zLjJsLjEtNi43Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk3LjksNDcuM2ExLjUsMS41LDAsMCwxLDEuNi0xLjVoLjFjLjksMCwxLjQuNSwxLjYsMS41Wm01LjIsMS4yYy4xLTIuMi0xLTQuMi0zLjUtNC4yYTMuNTYsMy41NiwwLDAsMC0zLjYsMy41VjQ4YTMuNCwzLjQsMCwwLDAsMy4yLDMuN2guNGEzLjIyLDMuMjIsMCwwLDAsMy4zLTIuNGgtMS43YTEuNTQsMS41NCwwLDAsMS0xLjYuOXEtMS42NSwwLTEuOC0xLjhsNS4zLjEiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMDMuOSw0NC41aDEuOXYxaC4xYTIuNzUsMi43NSwwLDAsMSwyLjItMS4yYzIuMSwwLDIuNiwxLjIsMi42LDIuOXY0LjRoLTJ2LTRjMC0xLjItLjMtMS44LTEuMy0xLjhzLTEuNS42LTEuNSwydjMuN2gtMnYtNyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxNi42LDQ3YTEuMzIsMS4zMiwwLDAsMC0xLjQtMS4yaDBjLTEuMywwLTEuNywxLjMtMS43LDIuM3MuNCwyLjIsMS42LDIuMmExLjYyLDEuNjIsMCwwLDAsMS42LTEuNGgxLjlhMy4wOCwzLjA4LDAsMCwxLTMuNCwyLjloMGEzLjQ2LDMuNDYsMCwwLDEtMy42LTMuM3YtLjNhMy40MywzLjQzLDAsMCwxLDMuMi0zLjhoLjVhMy4xMiwzLjEyLDAsMCwxLDMuNCwyLjdsLTIuMS0uMSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIyMyw1Mi41YTIuMjEsMi4yMSwwLDAsMS0yLjUsMS42LDQuODcsNC44NywwLDAsMS0xLjItLjFWNTIuNGMuNCwwLC44LjEsMS4xLjFhMS4wOCwxLjA4LDAsMCwwLC44LTEuMS4zNy4zNywwLDAsMC0uMS0uM2wtMi41LTYuN2gyLjFsMS42LDQuOWgwbDEuNi00LjloMkwyMjMsNTIuNSIvPjwvc3ZnPg=="); +--unhcr-logowhite: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyMjUuOSA1NC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMjUuOSA1NC4zOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zMywzNi43YzAuNiwwLDAuNi0wLjQsMC42LTF2LTMuM2MwLTAuNy0wLjEtMC45LDAuMy0wLjljMS40LDAsMS43LTAuMSwxLjctMS4zVjE3LjljMC0zLjMtMi40LTIuOC0zLTQKCWMtMS0xLjYsMS44LTEuNiwwLjgtNS4yYy0wLjMtMC45LTEuMi0xLjQtMi4xLTEuM2MtMC45LTAuMS0xLjgsMC40LTIuMSwxLjNjLTEsMy42LDEuNywzLjYsMC44LDUuMmMtMC43LDEuMi0zLDAuNy0zLDR2MTIuMwoJYzAsMS4yLDAuNCwxLjMsMS43LDEuM2MwLjQsMCwwLjMsMC4yLDAuMywwLjl2My4zYzAsMC43LTAuMSwxLDAuNiwxSDMzIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMi4zLDEwLjFjLTEuMiwxLjMtMy4xLDQuMy0xLjksNi44YzIuNSwxLDIuMy04LDUuNS03LjljMS42LDEuNC0wLjUsNS43LTEuMSw3LjVjLTAuOCwyLjMtMS40LDcuMS0yLjksOS41CgljLTEuMiwyLTAuMyw4LjEtMC43LDEwLjJjLTEsMS0zLjksMC4zLTUuMSwwLjFjLTAuMS0yLjctMC4zLTUuNS0wLjctOC4yYzAtMC44LTAuOS0xMi43LTAuMi0xNC4xYzEuNC0zLDguOC04LjcsOS44LTkuOAoJUzI5LDAsMzAuMywwYzAuOSwwLjYsMC40LDIsMC4yLDIuNUMyOS4zLDUuNSwyNCw4LjUsMjIuMywxMC4xIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MC40LDEwLjFjMS4yLDEuMywzLjEsNC4zLDEuOSw2LjhjLTIuNiwxLTIuNC04LTUuNS03LjljLTEuNSwxLjQsMC41LDUuNywxLjEsNy41YzAuOCwyLjMsMS40LDcuMSwyLjksOS41CgljMS4yLDIsMC4zLDguMSwwLjcsMTAuMmMxLjEsMSwzLjksMC4zLDUuMSwwLjFjMC4xLTIuNywwLjMtNS41LDAuNy04LjJjMC4xLTAuOCwwLjktMTIuNywwLjItMTQuMWMtMS40LTMtOC44LTguNy05LjgtOS44CglTMzMuNiwwLDMyLjQsMGMtMC45LDAuNi0wLjMsMi0wLjIsMi41QzMzLjUsNS41LDM4LjcsOC41LDQwLjQsMTAuMSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEuNSw2LjFjLTAuNywwLjYtMi4xLDEuMS0zLjIsMi40QzcuOSw3LjgsOC45LDYsMTAuMSw0LjljMS0wLjgsMi4xLTEuNSwzLjItMi4xQzEzLjcsMy43LDEyLjMsNS4xLDExLjUsNi4xIgoJLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkuNCwxMWMtMS4xLDEtMi4zLDEuNS0zLjksMy40QzUsMTIuNSw0LjksMTAuNiw1LjMsOC43YzAuNi0xLjgsMS41LTMuOCwzLTQuNEM3LjgsNS43LDcuNSw3LjEsNy40LDguNgoJYy0wLjcsMi42LTEsMi43LTAuOSwzYzAuMiwwLDEtMS40LDIuMS0yLjRjMS4yLTEuMiwyLjgtMS41LDMuOC0yLjNDMTEuNiw4LjQsMTAuNiw5LjgsOS40LDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjksMjEuOGMtMS4yLTIuMS0xLjgtNC42LTEuOC03YzAuMS0xLjYsMC45LTUuMywyLTUuOWMtMC4zLDMuNCwwLjYsMy43LDAuMiw2LjRjMCwwLjEtMC40LDMtMC40LDMuMgoJYzAuNS0wLjEsMC0yLjYsNS40LTYuNGMtMS4yLDItMC42LDIuNi0yLjcsNS4zQzUuNCwxOC42LDQuNCwyMC4xLDMuOSwyMS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02LjEsMjQuM2MtMC43LDAuOS0xLjEsMi0xLjIsMy4yQzIuMiwyNi0wLjksMTkuOCwwLjIsMTYuN2MwLjcsMi4zLDEuNywyLjksMi40LDQuOGMxLjIsMi45LDEsMy44LDEuOCw0LjUKCWMtMC4xLTEuNiwwLjItMy4yLDAuOS00LjZjMC42LTEuMSwxLjItMi4xLDEuOS0zLjFDNy43LDIwLjQsNy4zLDIyLjEsNi4xLDI0LjMiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTguNSwyOS42Yy0wLjEsMS43LTAuMywzLjUtMC42LDUuMmMtNC42LTEuNS03LjEtNi44LTcuMS05LjRjMS40LDMuMiwzLjUsMy4yLDYuMiw3LjdjMC4yLTEuNy0wLjUtMC40LTAuNi0zLjcKCWMwLjEtMy40LDAuOC0zLjUsMC45LTUuNkM4LjIsMjQuNyw4LjUsMjguNSw4LjUsMjkuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTIuMywzNi40YzAuNCwxLjgsMC41LDMuOCwwLjgsNS4zYy0yLjctMS0zLjMtMC4yLTYuNS0yLjJjLTEuNC0wLjgtNC00LjEtMy45LTYuNGMzLjEsMy41LDMuNywzLjEsNS4yLDQuNAoJYzEuNCwxLjEsMi41LDIuOCwzLjYsMi42YzAuMS0wLjktMi4zLTMtMi04LjhDMTAuOCwzMi44LDExLjcsMzQuNSwxMi4zLDM2LjQiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3LjYsNDAuOGMwLjgsMS4yLDAuNiwxLjcsMi43LDQuMWMtMS44LDAuNi0zLjYsMC45LTUuNSwxLjFjLTEuMywwLTYtMS4yLTcuNi00LjRjMi43LDEuNCwyLjcsMS4xLDYuMywxLjkKCWMyLjYsMC42LDQuNCwxLjQsNS4xLDEuM2MtMC4xLTAuMy0yLjEtMS4yLTMuNS0yLjlzLTEtMy45LTIuMy01LjRDMTMuNywzNi4xLDE2LjksMzkuOSwxNy42LDQwLjgiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxLDYuMWMwLjYsMC42LDIuMiwxLjEsMy4xLDIuNGMwLjQtMC43LTAuNi0yLjUtMS44LTMuNmMtMS0wLjgtMi0xLjUtMy4yLTIuMUM0OC43LDMuNyw1MC4xLDUuMSw1MSw2LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUzLjEsMTFjMS4xLDEsMi4zLDEuNSwzLjksMy40YzAuNS0xLjksMC42LTMuOCwwLjItNS43Yy0wLjUtMS44LTEuNS0zLjgtMy00LjRjMC41LDEuNCwwLjgsMi44LDAuOSw0LjMKCWMwLjcsMi42LDEsMi43LDAuOSwzYy0wLjIsMC0xLTEuNC0yLjEtMi40Yy0xLjItMS4yLTIuNy0xLjUtMy44LTIuM0M1MC45LDguNCw1MS45LDkuOCw1My4xLDExIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01OC41LDIxLjhjMS4yLTIuMSwxLjgtNC41LDEuOC03Yy0wLjEtMS42LTAuOS01LjMtMi01LjljMC4zLDMuNC0wLjYsMy43LTAuMiw2LjRjMCwwLjEsMC4zLDMsMC4zLDMuMgoJYy0wLjQtMC4xLDAtMi42LTUuMy02LjRjMS4xLDIsMC42LDIuNiwyLjcsNS4zQzU3LjEsMTguNiw1OCwyMC4xLDU4LjUsMjEuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTYuNCwyNC4zYzAuNiwxLDEsMi4xLDEuMiwzLjJjMi43LTEuNiw1LjgtNy44LDQuNi0xMC44Yy0wLjcsMi4zLTEuNywyLjktMi4zLDQuOGMtMS4zLDIuOS0xLjEsMy44LTEuOCw0LjUKCWMwLTEuNi0wLjMtMy4xLTAuOS00LjZjLTAuNS0xLjEtMS4yLTIuMS0xLjktMy4xQzU0LjgsMjAuNCw1NS4yLDIyLjUsNTYuNCwyNC4zIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01NCwyOS42YzAuMSwxLjgsMC4zLDMuNSwwLjcsNS4yYzQuNi0xLjUsNy4xLTYuOCw3LjEtOS40Yy0xLjUsMy4yLTMuNSwzLjItNi4yLDcuN2MtMC4yLTEuNywwLjUtMC40LDAuNS0zLjcKCXMtMC44LTMuNS0wLjktNS42QzU0LjMsMjQuNyw1NCwyOC41LDU0LDI5LjYiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTUwLjEsMzYuNGMtMC40LDEuOC0wLjUsMy44LTAuNyw1LjNjMi42LTEsMy4zLTAuMiw2LjQtMi4yYzEuNC0wLjgsNC4xLTQuMSwzLjktNi40Yy0zLjEsMy41LTMuNywzLjEtNS4yLDQuNAoJYy0xLjQsMS4xLTIuNiwyLjgtMy42LDIuNmMtMC4xLTAuOSwyLjMtMywyLTguOEM1MS43LDMyLjgsNTAuNywzNC41LDUwLjEsMzYuNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDQuOSw0MC44Yy0wLjcsMS41LTEuNiwyLjktMi43LDQuMWMxLjgsMC42LDMuNiwwLjksNS41LDEuMWMxLjMsMCw2LTEuMiw3LjUtNC40Yy0yLjcsMS40LTIuNywxLjEtNi4zLDEuOQoJYy0yLjYsMC42LTQuNCwxLjQtNS4xLDEuM2MwLjItMC4zLDIuMi0xLjIsMy41LTIuOXMxLTMuOSwyLjMtNS40QzQ4LjcsMzYuMSw0NS42LDM5LjksNDQuOSw0MC44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC42LDUxLjhsLTAuOC0wLjRjMy40LTMuOCw4LjQtNS44LDEzLjUtNS42YzguNSwwLjUsNy45LDIuNSwxMi41LDIuMWMwLjUsMC0wLjQsMC42LTAuNCwwLjYKCWMtMy4zLDEtNi44LDEtMTAtMC4yQzMzLjksNDYuNSwzMC4zLDQ1LjQsMjQuNiw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zOCw1MS44bDAuOC0wLjRjLTMuNC0zLjgtOC4zLTUuOC0xMy40LTUuNmMtOC41LDAuNS03LjksMi41LTEyLjUsMi4xYy0wLjUsMCwwLjQsMC42LDAuNCwwLjYKCWMzLjMsMSw2LjgsMSwxMC0wLjJDMjguOCw0Ni41LDMyLjMsNDUuNCwzOCw1MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05OC4zLDI1LjVjMCw4LjEtNC40LDEyLjEtMTMuNCwxMi4xcy0xMy40LTMuOS0xMy40LTEyLjF2LTE4aDl2MTZjMCwzLDAsNi44LDQuNCw2LjhzNC4zLTMuOCw0LjMtNi44di0xNmg5LjEKCVYyNS41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTAzLjcsNy40IDExMyw3LjQgMTIxLjYsMjMuMSAxMjEuNiwyMy4xIDEyMS42LDcuNCAxMzAuMiw3LjQgMTMwLjIsMzYuOCAxMjEuNCwzNi44IDExMi40LDIwLjggCgkxMTIuMywyMC44IDExMi4zLDM2LjggMTAzLjcsMzYuOCAiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMzUuOCw3LjQgMTQ0LjgsNy40IDE0NC44LDE3LjYgMTUzLjMsMTcuNiAxNTMuMyw3LjQgMTYyLjMsNy40IDE2Mi4zLDM2LjggMTUzLjMsMzYuOCAxNTMuMywyNS4yIAoJMTQ0LjgsMjUuMiAxNDQuOCwzNi44IDEzNS44LDM2LjggIi8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODUuNSwxOC40Yy0wLjItMi40LTIuMy00LjMtNC43LTQuM2MtNC4yLDAtNS42LDQuMS01LjYsOC4xczEuNCw4LjEsNS42LDguMWMzLDAsNC4yLTIuMSw0LjgtNC45aDguOQoJYzAsNS45LTQuOCwxMi4yLTEzLjQsMTIuMmMtOS41LDAtMTQuOS02LjctMTQuOS0xNS40YzAtOS4zLDUuOC0xNS40LDE0LjktMTUuNGM4LjEsMCwxMi41LDQuMywxMy4zLDExLjZMMTg1LjUsMTguNCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA3LjMsMTQuNGg0LjJjMy41LDAsNC41LDEuMSw0LjUsMi45YzAsMi42LTIuMywyLjktNCwyLjloLTQuN1YxNC40eiBNMTk4LjIsMzYuOGg5LjFWMjYuNmg0LjgKCWMzLjYsMCwzLjgsMi45LDQuMSw1LjdjMC4xLDEuNSwwLjMsMywwLjcsNC41aDljLTAuOC0xLjQtMC45LTQuOS0xLTYuM2MtMC4zLTMuNy0xLjktNi40LTQuMy03LjNjMy0xLjEsNC40LTQuMyw0LjQtNy40CgljMC01LjYtNC40LTguNC05LjYtOC40aC0xNy4yVjM2LjgiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI3NC41LDQzLjYgNzEuNSw0My42IDcxLjUsNDEuNyA3OS42LDQxLjcgNzkuNiw0My42IDc2LjYsNDMuNiA3Ni42LDUxLjYgNzQuNSw1MS42ICIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNODAuMyw0MS43aDJ2My43bDAsMGMwLjQtMC43LDEuMi0xLjIsMi4xLTEuMmMyLjEsMCwyLjYsMS4yLDIuNiwyLjl2NC40aC0ydi00YzAtMS4yLTAuMy0xLjgtMS4zLTEuOAoJcy0xLjUsMC42LTEuNSwydjMuN2gtMkw4MC4zLDQxLjciLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTg5LjcsNDguNWMwLjEsMS4yLDAuNywxLjgsMS44LDEuOGMwLjYsMCwxLjItMC4zLDEuNS0wLjloMS43Yy0wLjQsMS41LTEuOCwyLjUtMy4zLDIuNAoJYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC40Yy0wLjEtMiwxLjQtMy43LDMuNC0zLjhjMCwwLDAsMCwwLDBoMC4zYzIuNCwwLDMuNiwyLDMuNSw0LjJIODkuN3ogTTkyLjksNDcuMwoJYy0wLjItMS0wLjYtMS41LTEuNi0xLjVjLTAuOCwwLTEuNSwwLjYtMS42LDEuNHYwLjFIOTIuOSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTA3LjYsNDcuOWMwLDIuNy0xLjYsNC00LjIsNHMtNC4yLTEuMy00LjItNHYtNi4xaDIuMnY2LjFjMCwxLjEsMC4zLDIuMSwyLDIuMWMxLjUsMCwyLTAuNywyLTIuMXYtNi4xaDIuMgoJVjQ3LjkiLz4KPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSIxMDksNDEuNyAxMTEuMiw0MS43IDExNS4zLDQ4LjMgMTE1LjMsNDguMyAxMTUuMyw0MS43IDExNy40LDQxLjcgMTE3LjQsNTEuNiAxMTUuMiw1MS42IDExMS4xLDQ1IAoJMTExLjEsNDUgMTExLjEsNTEuNiAxMDksNTEuNiAiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNC4yLDQzLjRoMi40YzEsMCwxLjUsMC40LDEuNSwxLjRzLTAuNSwxLjQtMS41LDEuNGgtMi40TDEyNC4yLDQzLjR6IE0xMjIuMSw1MS42aDIuMnYtMy44aDIuMgoJYzEuMSwwLDEuNSwwLjUsMS42LDEuNWMwLDAuOCwwLjEsMS42LDAuNCwyLjRoMi4yYy0wLjMtMC43LTAuNC0xLjUtMC40LTIuM2MtMC4xLTEtMC40LTItMS40LTIuM2wwLDBjMS0wLjQsMS43LTEuNCwxLjYtMi41CgljMC0xLjUtMS4yLTIuNy0yLjctMi43YzAsMCwwLDAsMCwwaC01LjVMMTIyLjEsNTEuNiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMzLjIsNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVoMC4xYzAuOSwwLDEuNCwwLjUsMS42LDEuNUgxMzMuMnogTTEzOC4zLDQ4LjVjMC4xLTIuMi0xLTQuMi0zLjUtNC4yCgljLTEuOS0wLjEtMy41LDEuNS0zLjYsMy40YzAsMCwwLDAuMSwwLDAuMVY0OGMtMC4yLDEuOSwxLjIsMy41LDMuMSwzLjdjMCwwLDAuMSwwLDAuMSwwaDAuNGMxLjUsMC4xLDIuOS0wLjksMy4zLTIuNGgtMS43CgljLTAuMywwLjYtMC45LDEtMS41LDAuOWMtMS4xLDAtMS43LTAuNi0xLjgtMS44TDEzOC4zLDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEzOS42LDQ1LjhoLTEuMnYtMS4zaDEuMlY0NGMtMC4xLTEuMSwwLjgtMi4xLDEuOS0yLjJjMCwwLDAuMSwwLDAuMSwwaDAuNGMwLjMsMCwwLjcsMCwxLDAuMXYxLjVoLTAuNwoJYy0wLjUsMC0wLjcsMC4yLTAuNywwLjh2MC40aDEuNHYxLjNoLTEuNHY1LjhoLTJWNDUuOCIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTUwLjIsNTEuNmgtMS45di0xbDAsMGMtMC41LDAuNy0xLjMsMS4yLTIuMiwxLjJjLTIuMSwwLTIuNi0xLjItMi42LTIuOXYtNC40aDJ2NGMwLDEuMiwwLjQsMS44LDEuMywxLjgKCWMxLjEsMCwxLjUtMC42LDEuNS0ydi0zLjhoMnY3LjEiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1NC43LDQ5LjljLTEuMiwwLTEuNi0xLjEtMS42LTIuMXMwLjUtMiwxLjYtMmMxLjMsMCwxLjcsMSwxLjcsMi4yYzAuMiwwLjktMC41LDEuOC0xLjQsMmMwLDAtMC4xLDAtMC4xLDAKCUMxNTQuOCw1MCwxNTQuOCw1MCwxNTQuNyw0OS45IE0xNTguMyw0NC41aC0xLjl2MWwwLDBjLTAuNC0wLjgtMS4yLTEuMi0yLjEtMS4xYy0xLjgsMC4xLTMuMiwxLjUtMy4xLDMuM2MwLDAuMSwwLDAuMSwwLDAuMgoJYzAsMS44LDAuOSwzLjYsMywzLjZjMC44LDAsMS42LTAuNCwyLjEtMS4xbDAsMHYwLjljMCwxLTAuNSwxLjgtMS42LDEuOGMtMC43LDAuMS0xLjMtMC4zLTEuNS0xaC0xLjljMC4xLDEuNiwxLjcsMi4zLDMuMSwyLjMKCWMzLjMsMCwzLjctMiwzLjctMy4yTDE1OC4zLDQ0LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2MS4yLDQ3LjNjMC0wLjgsMC43LTEuNSwxLjUtMS41aDAuMWMxLDAsMS40LDAuNSwxLjYsMS41SDE2MS4yeiBNMTY2LjMsNDguNWMwLjEtMi4yLTEtNC4yLTMuNS00LjIKCWMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjUsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTY2LjMsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY4LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTY4Ljl6IE0xNzQsNDguNQoJYzAuMS0yLjItMS00LjItMy41LTQuMmMtMS45LTAuMS0zLjUsMS41LTMuNiwzLjRjMCwwLDAsMC4xLDAsMC4xVjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40CgljMS41LDAuMSwyLjktMC45LDMuMy0yLjRoLTEuN2MtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMTc0LDQ4LjUiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE4Myw0NC4yTDE4Myw0NC4ybDEuMiwzLjZoLTIuNkwxODMsNDQuMnogTTE3OC4yLDUxLjZoMi4ybDAuOC0yLjJoMy43bDAuNywyLjJoMi4zbC0zLjctOS44SDE4MkwxNzguMiw1MS42eiIKCS8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTEuNSw0OS45Yy0xLjIsMC0xLjYtMS4xLTEuNi0yLjFzMC41LTIsMS42LTJjMS4zLDAsMS43LDEsMS43LDIuMmMwLjEsMS0wLjUsMS44LTEuNSwyCglDMTkxLjYsNTAsMTkxLjUsNTAsMTkxLjUsNDkuOSBNMTk1LDQ0LjVoLTEuOXYxbDAsMGMtMC40LTAuOC0xLjItMS4yLTIuMS0xLjFjLTEuOCwwLjEtMy4yLDEuNS0zLjEsMy4zYzAsMC4xLDAsMC4xLDAsMC4yCgljMCwxLjgsMC45LDMuNiwzLjEsMy42YzAuOCwwLDEuNi0wLjQsMi4xLTEuMWwwLDB2MC45YzAsMS0wLjUsMS44LTEuNiwxLjhjLTAuNywwLjEtMS4zLTAuMy0xLjUtMWgtMS45YzAuMSwxLjYsMS43LDIuMywzLjEsMi4zCgljMy4zLDAsMy43LTIsMy43LTMuMkwxOTUsNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTk3LjksNDcuM2MwLTAuOCwwLjctMS41LDEuNS0xLjVjMCwwLDAuMSwwLDAuMSwwaDAuMWMwLjksMCwxLjQsMC41LDEuNiwxLjVIMTk3Ljl6IE0yMDMuMSw0OC41CgljMC4xLTIuMi0xLTQuMi0zLjUtNC4yYy0yLDAtMy42LDEuNS0zLjYsMy41VjQ4Yy0wLjIsMS45LDEuMiwzLjUsMy4xLDMuN2MwLDAsMC4xLDAsMC4xLDBoMC40YzEuNSwwLjEsMi45LTAuOSwzLjMtMi40aC0xLjcKCWMtMC4zLDAuNi0wLjksMS0xLjYsMC45Yy0xLjEsMC0xLjctMC42LTEuOC0xLjhMMjAzLjEsNDguNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjAzLjksNDQuNWgxLjl2MWgwLjFjMC41LTAuNywxLjMtMS4yLDIuMi0xLjJjMi4xLDAsMi42LDEuMiwyLjYsMi45djQuNGgtMnYtNGMwLTEuMi0wLjMtMS44LTEuMy0xLjgKCXMtMS41LDAuNi0xLjUsMnYzLjdoLTJWNDQuNSIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjYsNDdjLTAuMS0wLjctMC43LTEuMi0xLjQtMS4ybDAsMGMtMS4zLDAtMS43LDEuMy0xLjcsMi4zczAuNCwyLjIsMS42LDIuMmMwLjgsMCwxLjUtMC42LDEuNi0xLjRoMS45CgljLTAuMSwxLjctMS41LDMtMy4yLDIuOWMtMC4xLDAtMC4xLDAtMC4yLDBsMCwwYy0xLjksMC4xLTMuNS0xLjQtMy42LTMuM3YtMC4zYy0wLjItMS45LDEuMS0zLjYsMy0zLjhjMC4xLDAsMC4xLDAsMC4yLDBoMC41CgljMS43LTAuMiwzLjIsMSwzLjQsMi43TDIxNi42LDQ3Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjMsNTIuNWMtMC4zLDEuMS0xLjQsMS44LTIuNSwxLjZjLTAuNCwwLTAuOCwwLTEuMi0wLjF2LTEuNmMwLjQsMCwwLjgsMC4xLDEuMSwwLjFjMC41LTAuMSwwLjgtMC42LDAuOC0xLjEKCWMwLTAuMSwwLTAuMi0wLjEtMC4zbC0yLjUtNi43aDIuMWwxLjYsNC45bDAsMGwxLjYtNC45aDJMMjIzLDUyLjUiLz4KPC9zdmc+Cg=="); +}