{"data":{"id":"10.5061/dryad.xgxd254vh","type":"dois","attributes":{"doi":"10.5061/dryad.xgxd254vh","prefix":"10.5061","suffix":"dryad.xgxd254vh","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"Sierra, Catalina","nameType":"Personal","givenName":"Catalina","familyName":"Sierra","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales. Departamento de Fisiología, Biología Molecular y Celular. Instituto de Biociencias, Biotecnología y Biología Traslacional (iB3). Buenos Aires, Argentina."],"nameIdentifiers":[]},{"name":"Maxwell, Julian","nameType":"Personal","givenName":"Julian","familyName":"Maxwell","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales, Departamento de Física, Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas","Instituto de Fisiología, Biología Molecular y Neurociencias (IFIBYNE), Buenos Aires, Argentina."],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0009-0004-1044-8236","nameIdentifierScheme":"ORCID"}]},{"name":"Flaibani, Nicolás","nameType":"Personal","givenName":"Nicolás","familyName":"Flaibani","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales, Departamento de Ecología, Genética y Evolución, Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas","Instituto de Ecología, Genética y Evolución de Buenos Aires (IEGEBA), Buenos Aires, Argentina."],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0002-2638-516X","nameIdentifierScheme":"ORCID"}]},{"name":"Sánchez de la Vega, Constanza","nameType":"Personal","givenName":"Constanza","familyName":"Sánchez de la Vega","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales, Departamento de Matemática, Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas","Instituto de Cálculo (IC), Buenos Aires, Argentina."],"nameIdentifiers":[]},{"name":"Ventura, Alejandra C.","nameType":"Personal","givenName":"Alejandra C.","familyName":"Ventura","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales, Departamento de Física, Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas","Instituto de Fisiología, Biología Molecular y Neurociencias (IFIBYNE), Buenos Aires, Argentina."],"nameIdentifiers":[]},{"name":"Lavagnino, Nicolás J.","nameType":"Personal","givenName":"Nicolás J.","familyName":"Lavagnino","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales, Departamento de Ecología, Genética y Evolución, Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas","Instituto de Ecología, Genética y Evolución de Buenos Aires (IEGEBA), Buenos Aires, Argentina."],"nameIdentifiers":[]},{"name":"Blaustein, Matías","nameType":"Personal","givenName":"Matías","familyName":"Blaustein","affiliation":["Universidad de Buenos Aires","Facultad de Ciencias Exactas y Naturales. Departamento de Fisiología, Biología Molecular y Celular. Instituto de Biociencias, Biotecnología y Biología Traslacional (iB3). Buenos Aires, Argentina.","Consejo Nacional de Investigaciones Científicas y Técnicas"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0001-6309-6888","nameIdentifierScheme":"ORCID"}]}],"titles":[{"title":"Data from: Coevolution of cooperative lifestyles and reduced cancer prevalence in mammals"}],"publisher":"Dryad","container":{},"publicationYear":2025,"subjects":[{"subject":"FOS: Biological sciences","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Biological sciences","schemeUri":"http://www.oecd.org/science/inno/38235147.pdf","subjectScheme":"Fields of Science and Technology (FOS)"},{"subject":"FOS: Natural sciences","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Natural sciences","schemeUri":"http://www.oecd.org/science/inno/38235147.pdf","subjectScheme":"Fields of Science and Technology (FOS)"},{"subject":"FOS: Mathematics","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Mathematics","schemeUri":"http://www.oecd.org/science/inno/38235147.pdf","subjectScheme":"Fields of Science and Technology (FOS)"},{"subject":"FOS: Basic medicine","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Basic medicine","schemeUri":"http://www.oecd.org/science/inno/38235147.pdf","subjectScheme":"Fields of Science and Technology (FOS)"},{"subject":"Cancer evolution","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Evolutionary ecology","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Population modeling","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"}],"contributors":[],"dates":[{"date":"2025-10-27T17:51:53Z","dateType":"Created"},{"date":"2025-10-27T17:51:54Z","dateType":"Submitted"},{"date":"2025-10-30T00:00:00Z","dateType":"Issued"},{"date":"2025-10-30T00:00:00Z","dateType":"Available"}],"language":"en","types":{"ris":"DATA","bibtex":"misc","citeproc":"dataset","schemaOrg":"Dataset","resourceType":"dataset","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[{"relationType":"IsCitedBy","relatedIdentifier":"https://www.researchsquare.com/article/rs-5241807/v2","relatedIdentifierType":"URL"},{"relationType":"IsCitedBy","relatedIdentifier":"\n      https://github.com/Flaiba/Coevolution_of_cooperative_lifestyles_and_reduced_cancer_prevalence_in_mammals\n    ","relatedIdentifierType":"URL"},{"relationType":"IsCitedBy","relatedIdentifier":"10.1126/sciadv.adw0685","relatedIdentifierType":"DOI"}],"relatedItems":[],"sizes":["11829801 bytes"],"formats":[],"version":"4","rightsList":[{"rights":"Creative Commons Zero v1.0 Universal","rightsUri":"https://creativecommons.org/publicdomain/zero/1.0/legalcode","schemeUri":"https://spdx.org/licenses/","rightsIdentifier":"cc0-1.0","rightsIdentifierScheme":"SPDX"}],"descriptions":[{"description":"Why cancer is so prevalent among mammals, despite the fact that some\n species evolved resistance mechanisms, remains an open question. We\n hypothesized that cancer prevalence and mortality risk might have been\n fine-tuned by evolution. Using public databases, we show that species with\n cooperative habits have lower cancer prevalence and mortality risk. By\n developing a mathematical model, we provide a mechanistic explanation: an\n oncogenic variant that elicits higher cancer mortality in older and less\n reproductive individuals is detrimental to cooperative mammalian societies\n but can lead to a counterintuitive overcompensation in population size and\n fitness within competitive contexts. The phenomenon of a population\n increasing in response to a decrease in its per capita survival rate is\n called the hydra effect, a process never explored in the field of cancer\n before. Therefore, cancer can be considered as a selected mechanism of\n biological obsolescence in competitive species.","descriptionType":"Abstract"},{"description":"See the following DOI: 10.1126/sciadv.adw0685 (available on\n November 12, 2025) \u003cstrong\u003eCMR, neoplasia and\n malignancy prevalence in mammalian species\u003c/strong\u003e\n First dataset: Cancer Mortality Risk (CMR) was calculated for\n each species as the proportion of cancer-related deaths out of the total\n number of records, based on post-mortem pathological records (n=11,840).\n This information was sourced from \u003cem\u003eSpecies360\u003c/em\u003e and\n \u003cem\u003eThe Zoological Information Management System\u003c/em\u003e (ZIMS).\n The dataset initially included 191 species, but \u003cem\u003eD.\n byrnei\u003c/em\u003e was removed due to its extremely high CMR, which was\n considered an outlier. This CMR data was gathered from mammals in zoos\n worldwide, providing high-resolution cause-of-death data. CMR was\n estimated from neoplastic samples that substantially contributed to the\n animal death, as confirmed by necropsies. The CMR estimated for each and\n every species included in this dataset is based on more than 20 necropsies\n per species (mean = 62). Second dataset: Prevalence of\n neoplasia was estimated as the prevalence of any neoplasm in mammalian\n species from San Diego's zoos. The dataset initially included 37\n species, but \u003cem\u003eL. africana\u003c/em\u003e was removed due to\n incongruences with other publications reporting lower cancer rates. The\n prevalence of neoplasia estimated for the species included in this dataset\n is based on an average of 23 necropsies per species. \u003cem\u003eVulpes\n zerda\u003c/em\u003e, \u003cem\u003ePuma concolor\u003c/em\u003e, \u003cem\u003eCanis\n mesomelas\u003c/em\u003e, \u003cem\u003eLama glama,\u003c/em\u003e \u003cem\u003eLycaon\n pictus\u003c/em\u003e, \u003cem\u003eTarsius syrichta\u003c/em\u003e,\n \u003cem\u003eMacropus rufus\u003c/em\u003e and \u003cem\u003eEquus asinus\u003c/em\u003e\n are the only species with less than 10 necropsies analyzed.\n Third dataset: We used a recently curated and standardized\n dataset of malignancy prevalence across mammalian species that is based on\n more than 20 necropsies per species. This resource includes additional\n species not considered in the other datasets. In this analysis, a list of\n archetypal species with very high or very low malignancy prevalence was\n constructed: all species were ranked according to their malignancy\n prevalence, and three subsets were defined using different cut-offs:\n Rank10, Rank15, and Rank20, each including the 10, 15, or 20 species with\n the highest and lowest malignancy prevalence, respectively. These ranked\n groups consisting of 20, 30 and 40 species, respectively, were then used\n for downstream comparative analyses. The total dataset comprised 102\n mammalian species. \u003cstrong\u003eMorpho-physiological,\n life history and lifestyle traits\u003c/strong\u003e Data\n on Body Mass (kg) and Life Expectancy (days) used for the first dataset\n have been extracted from Vincze et al. (n=190 species). Data on Adult Mass\n (kg,) and Maximum Lifespan (days) used for the second (n=32 and n=36\n species, respectively) and third databases (n=94 species, in both cases)\n was obtained from the COMBINE database. Data on Metabolic Rate (n=52 for\n the first dataset, n=31 for the second dataset and n=52 for the third\n dataset) was obtained from the AnAge database and expressed in Watts (W).\n For the third database, a categorization was made for variables Adult\n Mass, Metabolic Rate and Maximum Lifespan, in order to divide the species\n into two categories, with a threshold such as to have two groups with a\n comparable number of species. We defined life history\n traits (Litter Size, Litters, Gestation Length, Life Expectancy and\n Maximum Lifespan) as those that depend on the history of the individual\n but are not clearly behavioral like lifestyle traits (Group Living,\n Breeding System). We chose litter size, gestation time and life expectancy\n as three classic life history traits. In particular, life expectancy is a\n well-determined variable in many species, which helps to have a larger\n sample size. Data on Litter Size (mean number of\n descendants per female, n=190 species for the first dataset, n=32 for the\n second dataset and n=94 for the third dataset) and Gestation Length (days,\n n=190 for the first dataset and n=32 for the second dataset) was obtained\n from the COMBINE database. The variable \"Litters\" was used to\n classify species as either monotocous or polytocous, using a litter size\n of 1.5 as threshold. Transforming Litter Size into a dichotomous variable\n allowed us to statistically test its interaction with body mass, similarly\n to what we did with dichotomous variables such as Group Living. Total\n Litters was calculated as the number of litters per year multiplied by\n litter size and the difference between the maximum longevity and female\n sexual maturity for each species. All the data for the calculations were\n obtained from the COMBINE database. Group Living (n=144 species for the\n first dataset, n=24 for the second dataset and n=77 for the third dataset)\n was determined by integrating data from two sources: Pérez-Barberia et al.\n and Lukas \u0026amp; Clutton-Brock. The variable is dichotomous, indicating\n whether a species engages in group living based on regular associations\n among individuals. A species was classified as Group Living if it showed\n sociality or was listed as group living by either source. Conversely, it\n was classified as not having Group Living if it exhibited no sociality or\n was listed as solitary or socially monogamous by either source. When data\n from both sources were available, a species was included only if both\n sources agreed, otherwise it was either excluded, or a choice was made\n based on available literature. Data on Breeding System (singular breeders\n or plural breeders, n=147 species for the first dataset, n=28 for the\n second dataset and n=79 for the third dataset) was gathered from Lukas\n \u0026amp; Clutton-Brock. The category of singular or plural breeders was\n assigned if the females occupy a separate or common territory or range\n during the breeding season, respectively. Data on the dichotomous variable\n Paternal Care (n=157 species for first dataset and n=29 for second\n dataset) was also obtained from Lukas \u0026amp; Clutton-Brock.\n Data on Animal Diet (consumption of animals, including\n vertebrates and invertebrates) was sourced from Vincze et al., who\n compiled the information from a global mammalian diet database. This\n dataset categorizes dietary components into four hierarchical levels:\n never consumed, occasionally consumed, secondary food item, and primary\n food item. For our analysis, we focused solely on whether animal matter\n was present in the diet, without differentiating between specific types.\n Since the intermediate categories (occasional and secondary consumption)\n included relatively few species, Vincze et al. consolidated the dietary\n classifications into two broader levels: rarely/never consumed and\n regularly consumed (i.e., as a primary or secondary food source). Diet\n information was included only for the first dataset, due to the strength\n of the analysis and the sample size available.\n \u003cstrong\u003eStatistical analysis\u003c/strong\u003e\n Correlations of CMR and neoplasia with the different traits were\n performed employing phylogeny-corrected generalized linear mixed models\n (phylGLMM) using \u003cem\u003ephyr\u003c/em\u003e in R Statistical and\n Programming Environment, version 4.2.3. Previous investigations with the\n species included in these datasets showed there is a phylogenetic signal\n for CMR and neoplasia among mammal species. To control for phylogenetic\n relatedness among species we performed phylGLMM models using the original\n robust phylogeny by Vincze et al. phylGLMMs used a binomial error\n distribution and a logit link function, adding a random variable at the\n level of observations to avoid overdispersion problems. This random\n variable, called “Species”, was constructed with the identity of each\n species analyzed. Not all analyses using CMR data were performed with the\n full set of species, since the information for some of the traits analyzed\n was not available for all species. All models performed were evaluated for\n overdispersion and zero-inflation using DHARMa package. All model tests\n showed p-values \u0026gt; 0.05, which indicates that no fit problems were\n detected and therefore, unlike previous investigations, we chose to\n perform the analyses using species with both zero and non-zero CMR.\n \u003cbr\u003e Models used: \u003cbr\u003e (1) An additive phylGLMM was performed\n with CMR as response variable and log transformed continuous variables of\n covariate traits Body Mass, Litter Size, Life Expectancy and Gestation\n Length. Log transformed variables were used as fixed effects, and Species\n as a random variable at the observation level. The physiological trait\n Metabolic Rate was also log transformed and analyzed in a separate model\n to avoid collinearity problems with Log Body Mass. \u003cbr\u003e (2) A simple\n model for dichotomous variable Litters was performed to test for CMR\n differences in monotocous or polytocous species. This dichotomous variable\n was tested in a model with continuous variables Log Life Expectancy and\n Log Body Mass to evaluate interaction. \u003cbr\u003e (3) For lifestyle\n dichotomous variables Group Living, Breeding System and Paternal Care we\n performed separate analyses to avoid collinearity problems, in all cases\n with CMR as the response variable, and Species as a random variable at the\n level of observations. For Group Living and Breeding System variables we\n also performed models with the continuous variables (Log Body Mass, Log\n Litter Size, and Log Life Expectancy) and tested the interaction with Log\n Body Mass. \u003cbr\u003e (4) Animal Diet as a dichotomous variable was\n analyzed using CMR as the response variable, and Species as a random\n variable at the level of observations. The association between Animal Diet\n and CMR was also assessed in relation to the other life history and\n lifestyle traits using four different models that include species of\n Animal Diet and Group Living (gregarious/solitary) and Breeding System\n (singular/plural). \u003cbr\u003e (5) To perform an order level analysis, mean\n CMR for all the species belonging to each order with at least 15 species\n (i.e. Artiodactyla, Carnivora, Primates, Rodentia) was calculated. We also\n built indexes for each trait of interest: (a) Litters Index: ratio between\n monotocous and polytocous species within each order, (b) Group Living\n Index: ratio between the species with and without Group Living within each\n order, and (c) Breeding System Index: ratio between plural and singular\n breeding species within each order. The analysis was performed with GLMs\n employing a binomial error distribution and a logit link function, using\n the glmmTMB package (table S4). The total set of p-values derived from\n analysis using CMR data was corrected for multiple testing using FDR\n correction. \u003cbr\u003e (6) Neoplasia data on 36 species from the second\n dataset was analyzed using the same phylGLMM simple models with one\n variable per model as before, but with a different phylogeny of the 36\n mammal species constructed from the updated mammalian super-tree. The same\n data for the different morpho-physiological, life history and lifestyle\n traits as before was used, with the exception of Log Body Mass and Log\n Maximum Lifespan where the analyses were performed with Adult Mass (kg)\n and Maximum Lifespan (days) from Boddy et al. The total set of p-values\n derived from analysis using this dataset was corrected for multiple\n testing using FDR correction. Statistical analyses for dichotomous\n variables were not performed on this data set because the power of the\n model is not strong enough to test small samples. \u003cbr\u003e The analyses\n of the archetypal species with the highest or lowest levels of malignancy\n prevalence from the third database were performed qualitatively. For each\n dichotomous variable, a group was judged to be more enriched in species\n with a high prevalence of malignancies if we observed differences greater\n than 50% in each and every one of the three ranks (cut-offs 10, 15, and\n 20) and only if these differences became larger as we narrowed the rank\n (which is expected to occur if there is a direct relationship between both\n variables). Mathematical modeling and\n simulation We developed a system of ordinary\n differential equations (ODEs) representing a consumer population of any\n mammal species depending on its resources for subsistence.\n The population is stage-structured based on age: pre-reproductive\n juveniles (\u003cem\u003eJ\u003c/em\u003e), reproductive adults\n (\u003cem\u003eA\u003c/em\u003e), and senior post-reproductive adults\n (\u003cem\u003eS\u003c/em\u003e). This emphasizes the reproductive capacity of\n individuals depending on age. Resources (\u003cem\u003eR\u003c/em\u003e) are kept\n unstructured, and their dynamics are governed by a production function and\n by consumer foraging \u003cem\u003ef\u003c/em\u003e. The function does not\n increase with the resource density \u003cem\u003eR\u003c/em\u003e and is therefore\n independent of it. This allows the system to reach a steady state of\n non-negative values. Furthermore, consumer foraging is organized in\n stage-specific functions, \u003cem\u003ef\u003c/em\u003e\u003csub\u003eJ\u003c/sub\u003e ,\n \u003cem\u003ef\u003c/em\u003e\u003csub\u003eA\u003c/sub\u003e and\n \u003cem\u003ef\u003c/em\u003e\u003csub\u003eS\u003c/sub\u003e (all of which depend on\n \u003cem\u003eR\u003c/em\u003e) associated with the age of the consumer group. The\n resulting resource intake is translated into physiological processes with\n an efficiency given by non-negative and non-decreasing functions\n \u003cem\u003eg\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e (fertility rate) and\n \u003cem\u003eg\u003csub\u003eJ\u003c/sub\u003e\u003c/em\u003e (rate of juvenile sexual\n maturation to become reproductive adults). The senescence process, given\n by \u003cem\u003eσ \u0026gt; 0\u003c/em\u003e, represents a fixed quantity by which\n adults age into senior individuals. Likewise, all per-capita mortality\n rates (\u003cem\u003eμ\u003csub\u003eJ\u003c/sub\u003e,\n μ\u003csub\u003eA,\u003c/sub\u003e\u003c/em\u003e\n \u003cem\u003eμ\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e) are positive constants.\n Changes in cancer mortality were modeled through the value of the\n \u003cem\u003eμ\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e parameter. Dependence on\n resources (\u003cem\u003eR\u003c/em\u003e) for vital processes (e.g., transition\n rates between life stages) conveys non-social intraspecific competition\n between life stages. Effects of non-social competition are focused on\n changes in stage density distribution, as the lack of resources limits\n population growth by preventing juveniles from reaching adult stage and\n the latter from having further offspring. Such life history processes\n govern transition rates between life stages. In this model,\n \u003cem\u003eα\u003c/em\u003e represents the strength of social intraspecific\n cooperation. Positive values of \u003cem\u003eα\u003c/em\u003e are interpreted as\n supportive or caring interactions of older individuals towards juveniles.\n Increasing \u003cem\u003eα\u003c/em\u003e values result in a decrease of juvenile\n mortality, while \u003cem\u003eα = 0\u003c/em\u003e does not take into account\n these phenomena (\u003cem\u003eα\u003c/em\u003e cannot adopt negative values).\n Similarly, \u003cem\u003eω \u0026gt; 0\u003c/em\u003e stands for the strength of\n social intraspecific competition between seniors and other individuals.\n Increasing \u003cem\u003eω\u003c/em\u003e values result in higher juvenile\n mortality (Eq. 1b). In our model, when \u003cem\u003eα\u003c/em\u003e adopts\n positive values, we set \u003cem\u003eω\u003c/em\u003e to zero, and vice versa.\n Intraspecific competition may also be associated with resource density, in\n which case \u003cem\u003eρ \u0026gt; 0\u003c/em\u003e. Abundance of resources (high\n values of \u003cem\u003eρ\u003c/em\u003e) diminishes the effect of direct\n competition. The social parameters \u003cem\u003eα\u003c/em\u003e and\n \u003cem\u003eω\u003c/em\u003e control the non-transitional processes of\n competitive and cooperative interaction between life stages of the\n consumer population, respectively. Alternative cooperative or competitive\n interactions have been also modeled in which the parameter\n \u003cem\u003eα\u003c/em\u003e /\u003cem\u003eω\u003c/em\u003e is the ability of senior\n individuals (\u003cem\u003eS\u003c/em\u003e) to influence juvenile\n (\u003cem\u003eJ\u003c/em\u003e) access to resources, juvenile's development\n into adults (\u003cem\u003eA\u003c/em\u003e), or adult's reproductive\n output. By mathematical analysis of the ODE system we\n were able to find necessary and sufficient conditions for the model to\n display a hydra effect when \u003cem\u003eα, ω = 0\u003c/em\u003e, that is to\n ensure an increase in the carrying capacity of the population\n (\u003cem\u003eN\u003c/em\u003e = \u003cem\u003eJ\u003c/em\u003e + \u003cem\u003eA\u003c/em\u003e\n + \u003cem\u003eS\u003c/em\u003e, the population density at dynamical equilibrium)\n as a result of increasing the value of the parameter\n \u003cem\u003eμ\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e (interpreted as higher\n CMR). If the senior stage has the largest consuming rate value at\n equilibrium, then, for this model, the specific increase in mortality\n among seniors will lead to the hydra effect. Conversely, if the senior\n consumption rate is the smallest one, the intuitive effect of a decreasing\n population equilibrium with increasing mortality of part of their\n individuals ensues. Considering the per-capita consumption rate of senior\n adults lower than that of reproductive adults but higher than that of\n juveniles (\u003cem\u003ef\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e\n \u003cem\u003e\u0026gt; f\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e * \u0026gt;*\n \u003cem\u003e\u003csub\u003eJ\u003c/sub\u003e\u003c/em\u003e) due to age-related size\n differences, then the hydra effect is indeed conditioned upon the life\n history trait parameter values (at equilibrium).\n Expressed in this way, we can see that a larger fertility rate\n value at the system equilibrium\n \u003cem\u003eg\u003csub\u003eA\u003c/sub\u003e(f\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e\n \u003cem\u003e(R\u003c/em\u003e)) is positively associated with the existence of a\n hydra effect (all else being equal). For the purposes\n of simulations, we employed a linearized version of the model to\n numerically obtain time courses by integration with Python (using Scipy,\n Numpy, Pandas and Matplotlib). For this end, we chose a semi-chemostat\n model for the resources dynamics, where the resource production function\n remains constant, \u003cem\u003ep(R) = π\u003c/em\u003e. We also considered linear\n consuming relations, weighted by different constants associated with a\n characteristic size and age of the consuming stage, that is\n \u003cem\u003ef\u003csub\u003eJ\u003c/sub\u003e\u003c/em\u003e \u003cem\u003e(R) =\n κ\u003csub\u003eJ\u003c/sub\u003e\u003c/em\u003e \u003cem\u003eR,\n f\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e \u003cem\u003e(R) =\n κ\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e \u003cem\u003eR,\n f\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e \u003cem\u003e(R) =\n κ\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e \u003cem\u003eR\u003c/em\u003e. The resulting\n resource intake is converted into physiological processes of reproduction\n and maturation linearly with an efficiency given by the\n \u003cem\u003eβ\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e (i.e.,\n \u003cem\u003eg\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e \u003cem\u003e(x\u003c/em\u003e) =\n \u003cem\u003eβ\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e \u003cem\u003ex\u003c/em\u003e) and\n \u003cem\u003e𝛾\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e (i.e.,\n \u003cem\u003eg\u003csub\u003eJ\u003c/sub\u003e\u003c/em\u003e \u003cem\u003e(x\u003c/em\u003e) =\n \u003cem\u003e𝛾\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e \u003cem\u003ex\u003c/em\u003e)\n parameters, respectively (\u003cem\u003e𝛾\u003csub\u003eA\u003c/sub\u003e\u003c/em\u003e\n refers to the maturation of juveniles originating from adults, to\n differentiate them from those originating from seniors,\n \u003cem\u003e𝛾\u003csub\u003eS\u003c/sub\u003e\u003c/em\u003e).\n Extended versions of these models that allow other processes to\n occur, such as reproduction of senior adults, distinct survival rates for\n the senior born juveniles, and finally, the spread of a higher CMR genetic\n variant on the population were also implemented. For\n the model with mixed populations, we started with a population in\n equilibrium before the introduction of the oncogenic variant (both\n subpopulations had the same senior mortality rates\n \u003cem\u003eμ\u003csub\u003eS1 =\u003c/sub\u003e\u003c/em\u003e\n \u003cem\u003eμ\u003csub\u003eS2\u003c/sub\u003e\u003c/em\u003e). We performed two types\n of tests in this initial state. A) We introduced the oncogenic variant by\n increasing \u003cem\u003eμ\u003csub\u003eS2\u003c/sub\u003e\u003c/em\u003e in half of the\n population in equilibrium (a process of migration or subpopulation\n mixing), and we evolved the system to its equilibrium frequencies. B) We\n introduced the variant as a mutation (low initial frequency), transferring\n 5% of the juveniles from subpopulation 1 to subpopulation 2 (higher\n \u003cem\u003eμ\u003csub\u003eS2\u003c/sub\u003e\u003c/em\u003e) and monitored relative\n frequency time evolution as well.  The direct fitness\n of a genotype \u003cem\u003eGx\u003c/em\u003e was calculated as\n \u003cem\u003eN\u003csub\u003eGx\u003c/sub\u003e(t)/N\u003csub\u003eGx\u003c/sub\u003e(0)\u003c/em\u003e, where \u003cem\u003eN\u003csub\u003eGx\u003c/sub\u003e(t)\u003c/em\u003e is the density over time of subpopulation with the genotype \u003cem\u003eGx\u003c/em\u003e, and \u003cem\u003eN(0)\u003c/em\u003e is its density at time \u003cem\u003et\u003c/em\u003e = 0. The indirect fitness of the metapopulation was calculated as \u003cem\u003e(N\u003csub\u003eG1\u003c/sub\u003e(t)+N\u003csub\u003eG2\u003c/sub\u003e(t))/(N\u003csub\u003eG1\u003c/sub\u003e(0)+N\u003csub\u003eG2\u003c/sub\u003e(0))\u003c/em\u003e. The relative frequency of each gene variant over time was calculated as \u003cem\u003eN\u003csub\u003eGx\u003c/sub\u003e(t)/(N\u003csub\u003eG1\u003c/sub\u003e(t)+N\u003csub\u003eG2\u003c/sub\u003e(t))\u003c/em\u003e. \u003cstrong\u003eReferences\u003c/strong\u003e O. Vincze, F. Colchero, J.-F. Lemaître, D. A. Conde, S. Pavard, M. Bieuville, A. O. Urrutia, B. Ujvari, A. M. Boddy, C. C. Maley, Cancer risk across mammals. Nature 601, 263–267 (2022). A. M. Boddy, L. M. Abegglen, A. P. Pessier, A. Aktipis, J. D. Schiffman, C. C. Maley, C. Witte, Lifetime cancer prevalence and life history traits in mammals. Evolution, medicine, and public health 2020, 187–195 (2020). Z. T. Compton, W. Mellon, V. K. Harris, S. Rupp, D. Mallo, S. E. Kapsetaki, M. Wilmot, R. Kennington, K. Noble, C. Baciu, Cancer prevalence across vertebrates. Cancer discovery 15, 227–244 (2025). D. Lukas, T. Clutton-Brock, Monotocy and the evolution of plural breeding in mammals. Behav Ecol 31, 943–949 (2020). F. J. Pérez‐Barbería, S. Shultz, R. I. Dunbar, Evidence for coevolution of sociality and relative brain size in three orders of mammals. Evolution 61, 2811–2821 (2007). D. Lukas, T. H. Clutton-Brock, The evolution of social monogamy in mammals. Science 341, 526–530 (2013). W. D. Kissling, L. Dalby, C. Fløjgaard, J. Lenoir, B. Sandel, C. Sandom, K. Trøjelsgaard, J. Svenning, Establishing macroecological trait datasets: digitalization, extrapolation, and validation of diet preferences in terrestrial mammals worldwide. Ecology and Evolution 4, 2913–2930 (2014). D. Li, R. Dinnage, L. A. Nell, M. R. Helmus, A. R. Ives, phyr: an R package for phylogenetic species‐distribution modelling in ecological communities. Methods in Ecology and Evolution 11, 1455–1463 (2020). R. C. Team, R: A language and environment for statistical computing. R Foundation for Statistical Computing. (No Title) (2013). A. F. Zuur, E. N. Ieno, N. J. Walker, A. A. Saveliev, G. M. Smith, Mixed Effects Models and Extensions in Ecology with R (Springer, 2009)vol. 574. X. A. Harrison, Using observation-level random effects to model overdispersion in count data in ecology and evolution. PeerJ 2, e616 (2014). F. Hartig, L. Lohse, DHARMa: Residual Diagnostics for Hierarchical (Multi-Level/Mixed) Regression Models. 2022. R package version 0.4 6. M. E. Brooks, K. Kristensen, K. J. Van Benthem, A. Magnusson, C. W. Berg, A. Nielsen, H. J. Skaug, M. Machler, B. M. Bolker, glmmTMB balances speed and flexibility among packages for zero-inflated generalized linear mixed modeling. The R journal 9, 378–400 (2017). Y. Benjamini, Y. Hochberg, Controlling the false discovery rate: a practical and powerful approach to multiple testing. Journal of the Royal statistical society: series B (Methodological) 57, 289–300 (1995). O. R. Bininda-Emonds, M. Cardillo, K. E. Jones, R. D. MacPhee, R. M. Beck, R. Grenyer, S. A. Price, R. A. Vos, J. L. Gittleman, A. Purvis, The delayed rise of present-day mammals. Nature 446, 507–512 (2007). A. M. de Roos, When individual life history matters: conditions for juvenile-adult stage structure effects on population dynamics. Theoretical Ecology 11, 397–416 (2018). P. Virtanen, R. Gommers, T. E. Oliphant, M. Haberland, T. Reddy, D. Cournapeau, E. Burovski, P. Peterson, W. Weckesser, J. Bright, SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature methods 17, 261–272 (2020). C. R. Harris, K. J. Millman, S. J. Van Der Walt, R. Gommers, P. Virtanen, D. Cournapeau, E. Wieser, J. Taylor, S. Berg, N. J. Smith, Array programming with NumPy. Nature 585, 357–362 (2020).  J. D. Hunter, Matplotlib: A 2D graphics environment. Computing in science \u0026amp; engineering 9, 90–95 (2007). G. Van Rossum, F. L. Drake, Python/C Api Manual-Python 3 (CreateSpace, 2009). W. McKinney, “Data structures for statistical computing in Python.” (2010)vol. 445, pp. 51–56.","descriptionType":"Methods"},{"description":"# Data from: Coevolution of cooperative lifestyles and reduced cancer\n prevalence in mammals Dataset DOI:\n [10.5061/dryad.xgxd254vh](https://doi.org/10.5061/dryad.xgxd254vh) ##\n Description of the data and file structure Dataset1.csv Cancer mortality\n risk (CMR) was calculated for each species as the proportion of\n cancer-related deaths among the total number of records, based on\n post-mortem pathological records (n = 11,840, Vincze et al., 2022). This\n information was sourced from Species360 and The Zoological Information\n Management System. The dataset initially included 191 species, but\n Dasyuroides byrnei was removed because of its extremely high CMR, which\n was considered an outlier. This CMR data were gathered from mammals in\n zoos worldwide, providing high-resolution cause-of-death data. CMR was\n estimated from neoplastic samples that substantially contributed to the\n animal death, as confirmed by necropsies. The CMR estimated for every\n species included in this dataset is based on more than 20 necropsies per\n species (mean = 62). Dataset2.csv Prevalence of neoplasia was estimated as\n the prevalence of any neoplasm in mammalian species from San Diegos zoos\n (Boddy et al., 2020). The dataset initially included 37 species, but\n Loxodonta africana was removed because of incongruences with other\n publications reporting lower cancer rates. The prevalence of neoplasia\n estimated for the species included in this dataset is based on an average\n of 23 necropsies per species. Vulpes zerda, Puma concolor, Canis\n mesomelas, Lama glama, Lycaon pictus, Tarsius syrichta, Macropus rufus,\n and Equus asinus are the only species with less than 10 necropsies\n analyzed. Dataset3.csv\\ \\ We used a recently curated and standardized\n dataset of malignancy prevalence across mammalian species that is based on\n more than 20 necropsies per species (Compton et al., 2025). This resource\n includes additional species not considered in the other datasets. In this\n analysis, a list of archetypal species with very high or very low\n malignancy prevalence was constructed: All species were ranked according\n to their malignancy prevalence, and three subsets were defined using\n different cutoffs: rank10, rank15, and rank20, each including the 10, 15,\n or 20 species with the highest and lowest malignancy prevalence,\n respectively. These ranked groups consisting of 20, 30 and 40 species,\n respectively, were then used for downstream comparative analyses. The\n total dataset comprised 102 mammalian species. Dataset4.csv This is an\n accesory dataset, that is a summary of the main content of Dataset 1. This\n dataset (dataset 4) was employed to perform an order level analysis, mean\n CMR for all the species belonging to each order with at least 15 species\n (Artiodactyla, Carnivora, Primates, and Rodentia) was calculated. ###\n Files and variables #### File: Dataset_1.csv | \n \n | \n \n | \n \n | \n \n | | :---------------------------------------------------- |\n :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Variable | Definition | Data type | Reference | | species | Binomial scientific name of the species. | Character | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | order | Order name of the species. | Character | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | CMR | Adult cancer mortality risk. Takes values between 0 and 1. | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | n\\_dead\\_ind | Total number of dead individuals per species in the database. | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | known\\_deaths | Total number of dead individuals whose pathological records were identified. | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | n\\_neoplasia | Total number of neoplasia cases recorded in each species, that were considered to be significant contributors to the death of the animals. | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | n\\_no\\_neoplasia | Total number of dead individuals with pathological records (\"known\\_deaths\") substracting the total number of neoplasia cases (\"n\\_neoplasia\") | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | life\\_expectancy\\_d | Average number of days lived after sexual maturity was reached, i.e. remaining life expectancy. | Numeric | [https://doi.org/10.1038/s41586-021-04224-5 ](https://doi.org/10.1038/s41586-021-04224-5 ) | | body\\_mass\\_kg | Average female and male body mass in kilograms. | Numeric | [https://doi.org/10.1093/nar/gkx1042 ](https://doi.org/10.1093/nar/gkx1042 ) | | metabolic\\_rate | Metabolic rate of the species in Watts (W). | Numeric | [https://doi.org/10.1002/ecy.3344](https://doi.org/10.1002/ecy.3344) | | litter\\_size\\_n | Number of offspring born per litter per female. | Numeric | [https://doi.org/10.1002/ecy.3344](https://doi.org/10.1002/ecy.3344) | | gestation\\_length\\_d | Duration of fetal growth in days. | Numeric | - | | total\\_litters | Total Litters born per female in a lifetime. Calculated as the number of litters per year multiplied by litter size and the difference between the maximum longevity and female sexual maturity for each species. | Numeric | - | | litters | A classification variable that distinguishes species based on their litter size. It categorizes species as either \"monotocous\" (typically producing one offspring per litter) or \"polytocous\" (producing more than one offspring per litter), with a litter size threshold of 1.5. | Binary (monotocous, polytocous) | [https://doi.org/10.1093/beheco/araa039](https://doi.org/10.1093/beheco/araa039) | | breeding\\_system | A variable indicating whether females occupy a shared territory or separate territories during the breeding season. It is categorized as either SingularBreeder (females in separate territories) or PluralBreeder (females in a common territory). | Binary (SingularBreeder, PluralBreeder) | [https://doi.org/10.1093/beheco/araa039](https://doi.org/10.1093/beheco/araa039) | | paternal\\_care | A variable indicating whether males provide care or assistance to offspring. It is categorized as either \"Yes\" (males provide paternal care) or \"No\" (males do not provide paternal care). | Binary (Yes, No) | [https://doi.org/10.1111/j.1558-5646.2007.00229.x ](https://doi.org/10.1111/j.1558-5646.2007.00229.x ) / [https://doi.org/10.1126/science.1238677 ](https://doi.org/10.1126/science.1238677 ) | | group\\_living | A variable indicating whether a species lives in social groups with regular interactions among individuals. It is categorized as either \"yes\" (the species engages in group living) or \"no\" (the species does not). | Binary (yes, no) | \n \n | | \n \n | \n \n | \n \n | \n \n | | \\*Values referred to as NA mean data is not available | \n \n | \n \n | \n \n | #### File: Dataset_2.csv | \n \n | \n \n | \n \n | \n \n | | :---------------------------------------------------- |\n :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Variable | Definition | Data type | Reference | | species | Binomial scientific name of the species. | Character | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | common\\_name | Widely recognized or vernacular name of a species, used to identify it in everyday language, as opposed to its scientific name. | Character | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | order | Order name of the species. | Character | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | family | Family name of the species. | Character | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | genus | Genus name of the species. | Character | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | total\\_necropsies | Total number of individuals necropsied. | Numeric | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | any\\_neoplasia | Total number of neoplasia diagnosed (malignant and benign). | Numeric | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | any\\_no\\_neoplasia | Total number of individuals necropsied (\"total\\_necropsies\") substracting the total number of neoplasia. (\"any\\_neoplasia\") | Numeric | - | | any\\_malignant | Number of malignant neoplasia diagnosed. | Numeric | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | prop\\_neoplasia | Proportion of number of neoplasia diagnosed (any\\_neoplasia) and the total number of necropsies (total\\_necropsies) | Numeric | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | prop\\_malignant | Proportion of number of neoplasia diagnosed (any\\_malignant) and the total number of necropsies (total\\_necropsies) | Numeric | [https://doi.org/10.1093/emph/eoaa015 ](https://doi.org/10.1093/emph/eoaa015 ) | | adult\\_mass\\_kg | Body mass of an adult individual in kilograms. | Numeric | [https://doi.org/10.1002/ecy.3344 ](https://doi.org/10.1002/ecy.3344 ) | | metabolic\\_rate | Metabolic rate of the species in Watts (W). | Numeric | [https://doi.org/10.1093/nar/gkx1042 ](https://doi.org/10.1093/nar/gkx1042 ) | | max\\_lifespan\\_yr | Maximum reported age at death for the species in years. | Numeric | [https://doi.org/10.1002/ecy.3344](https://doi.org/10.1002/ecy.3344) | | gestation\\_length\\_d | Duration of fetal growth in days. | Numeric | [https://doi.org/10.1002/ecy.3344](https://doi.org/10.1002/ecy.3344) | | litter\\_size\\_n | Number of offspring born per litter per female. | Numeric | [https://doi.org/10.1002/ecy.3344](https://doi.org/10.1002/ecy.3344) | | litters | A classification variable that distinguishes species based on their litter size. It categorizes species as either \"monotocous\" (typically producing one offspring per litter) or \"polytocous\" (producing more than one offspring per litter), with a litter size threshold of 1.5. | Binary (monotocous, polytocous) | - | | total\\_litters | Total Litters born per female in a lifetime. Calculated as the number of litters per year multiplied by litter size and the difference between the maximum longevity and female sexual maturity for each species. | Numeric | - | | breeding\\_system | A variable indicating whether females occupy a shared territory or separate territories during the breeding season. It is categorized as either SingularBreeder (females in separate territories) or PluralBreeder (females in a common territory). | Binary (SingularBreeder, PluralBreeder) | [https://doi.org/10.1093/beheco/araa039](https://doi.org/10.1093/beheco/araa039) | | paternal\\_care | A variable indicating whether males provide care or assistance to offspring. It is categorized as either \"Yes\" (males provide paternal care) or \"No\" (males do not provide paternal care). | Binary (Yes, No) | [https://doi.org/10.1093/beheco/araa039](https://doi.org/10.1093/beheco/araa039) | | group\\_living | A variable indicating whether a species lives in social groups with regular interactions among individuals. It is categorized as either \"yes\" (the species engages in group living) or \"no\" (the species does not). | Binary (yes, no) | [https://doi.org/10.1111/j.1558-5646.2007.00229.x ](https://doi.org/10.1111/j.1558-5646.2007.00229.x ) / [https://doi.org/10.1126/science.1238677 ](https://doi.org/10.1126/science.1238677 ) | | \n \n | \n \n | \n \n | \n \n | | \\*Values referred to as NA mean data is not available | \n \n | \n \n | \n \n | #### File: Dataset_3.csv | \n \n | \n \n | \n \n | | :---------------------------------------------------- |\n :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | | Variable | Definition | Data type | | common\\_name | Widely recognized or vernacular name of a species, used to identify it in everyday language, as opposed to its scientific name. | Character | | species | Binomial scientific name of the species. | Character | | malignancy\\_prevalence | A variable indicating whether a species has reported low or high cancer incidence. This classification is based on a review of available literature and reflects the frequency of cancer occurrences within that species. | Numeric | | malignancy\\_prevalence\\_reference | A reference indicating the source of information regarding malignancy prevalence. | Character | | adult\\_mass\\_kg | Body mass of an adult individual in kilograms. | Numeric | | log\\_adult\\_mass\\_kg | The natural logarithm of the adult mass in kilograms. | Numeric | | log\\_adult\\_mass\\_kg\\_category | Categorization of adult mass based on logarithmic values: \u0026lt;1 (small) or \u0026gt;1 (large). | Binary (\u0026lt;1, \u0026gt;1) | | max\\_lifespan\\_d | Maximum reported age at death for the species in days. | Numeric | | log\\_max\\_lifespan\\_d | The natural logarithm of the maximum lifespan in days. | Numeric | | log\\_max\\_lifespan\\_d\\_category | Categorization of lifespan based on logarithmic values: \u0026lt;9 (short-lived) or \u0026gt;9 (long-lived). | Binary (\u0026lt;9, \u0026gt;9) | | litter\\_size | Number of offspring born per litter per female. | Numeric | | metabolic\\_rate\\_W | Metabolic rate of the species in Watts (W). | Numeric | | log\\_metabolic\\_rate\\_W | The natural logarithm of the metabolic rate in Watts. | Numeric | | log\\_metabolic\\_rate\\_W\\_category | Categorization of metabolic rate based on logarithmic values: \u0026lt;1 (low) or \u0026gt;1 (high). | Binary (\u0026lt;1, \u0026gt;1) | | metabolic\\_rate\\_reference | A reference indicating the source of information regarding metabolic rate. | Character | | breeding\\_system | A variable indicating whether females occupy a shared territory or separate territories during the breeding season. It is categorized as either SingularBreeder (females in separate territories) or PluralBreeder (females in a common territory). | Binary (SingularBreeder, PluralBreeder) | | litters | A classification variable that distinguishes species based on their litter size. It categorizes species as either \"monotocous\" (typically producing one offspring per litter) or \"polytocous\" (producing more than one offspring per litter), with a litter size threshold of 1.5. | Binary (monotocous, polytocous) | | group\\_living | A variable indicating whether a species lives in social groups with regular interactions among individuals. It is categorized as either \"yes\" (the species engages in group living) or \"no\" (the species does not). | Binary (yes, no) | | group\\_living\\_reference | A reference indicating the source of information regarding group living behavior. | Character | | \n \n | \n \n | \n \n | | \\*Values referred to as NA mean data is not available | \n \n | \n \n | #### File: Dataset_4.csv | \n \n | \n \n | \n \n | | :------------- |\n :--------------------------------------------------------------------------------------------------------------------------------------- | :--------- | | Variable | Definition | Data type | | order | Order name of the species grouped for the analysis. Only orders with more than 15 species were included. | Character  | | CMR\\_mean | Mean of the Adult cancer mortality risk. | Numeric | | CMR\\_median | Median of the Adult cancer mortality risk. | Numeric | | index\\_gl | Ratio between the species with and without Group Living within each order. | Numeric | | index\\_litters | Ratio between monotocous and polytocous species within each order. | Numeric | | index\\_BS | Ratio between plural and singular breeding species within each order. | Numeric | | n\\_cancer | Total number of neoplasia cases recorded in each order, that were considered to be significant contributors to the death of the animals. | Numeric | | n\\_no\\_cancer | Total number of dead individuals with pathological records (\"n\\_total\") substracting the total number of neoplasia cases (\"n\\_cancer\"). | Numeric | | n\\_total | Total number of dead individuals in the order whose pathological records were identified. | Numeric | * SCRIPT_Coevolution_of_cooperative_lifestyles_and_reduced_cancer_prevalence_in_mammals.R Statistical analysis code for correlations between cancer prevalence and mortality risk with different phenotypic traits Correlations of CMR and neoplasia with the different traits were performed using phylGLMMs using phyr in R Statistical and Programming Environment, version 4.2.3. Previous investigations with the species included in these datasets showed that there is a phylogenetic signal for CMR and neoplasia among mammal species (Vincze et al. 2022). To control for phylogenetic relatedness among species, we performed phylGLMMs using the original robust phylogeny by Vincze et al. (2022) (consensus_phylogeny.tre). phylGLMMs used a binomial error distribution and a logit link function, adding a random variable at the level of observations to avoid overdispersion problems. This random variable, called “species,” was constructed with the identity of each species analyzed. Not all analyses using CMR data were performed with the full set of species, since the information for some of the traits analyzed was not available for all species. All modelsperformed were evaluated for overdispersion and zero inflation using DHARMa package. All model tests showed P \u0026gt; 0.05, which indicates that no fit problems were detected, and therefore, unlike previous investigations, we chose to perform the analyses using species with both zero and nonzero CMR. **Models used:** **For Dataset1.csv** 1\\) An additive phylGLMM was performed with CMR as response variable and log transformed continuous variables of covariate traits body mass, litter size, life expectancy, and gestation length. Log- transformed variables were used as fixed effects, as well as species as a random variable at the observation level ( n = 190). The physiological trait metabolic rate was also log transformed and analyzed in a separate model to avoid collinearity problems with log body mass (n = 52). 2\\) A simple model for dichotomous variable litters was performed (n = 190) to test for CMR differences in monotocous or polytocous species. This dichotomous variable was tested in a model with continuous variables log life expectancy and log body mass to evaluate interaction ( n = 190). 3\\) For lifestyle dichotomous variables group living, breeding system, and paternal care, we performed separate analyses to avoid collinearity problems, in all cases with CMR as the response variable, as well as species as a random variable at the level of observations. For group living and breeding system variables, we also performed models with the continuous variables (log body mass, log litter size, and log life expectancy) and tested the interaction with log body mass ( n = 146). 4\\) Animal diet as a dichotomous variable was analyzed using CMR as the response variable, as well as species as a random variable at the level of observations. The association between animal diet and CMR was also assessed in relation to the other life history and lifestyle traits using four different models that include species of animal diet and group living (gregarious/solitary) and breeding system (singular/plural). **For the Dataset2.csv** Neoplasia data on 36 species from the second dataset were analyzed using the same phylGLMM simple models with one variable per model as before but with a different phylogeny of the 36 mammal species constructed from the updated mammalian supertree (tree_for_database2). The same data for the different morphophysiological, life history, and lifestyle traits as before were used, with the exception of log body mass and log maximum lifespan where the analyses were performed with adult mass (in kilograms) and maximum lifespan (in days) from Boddy et al. (2020). **For Dataset4.csv** To perform an order level analysis, mean CMR for all the species belonging to each order with at least 15 species (i.e., Artiodactyla, Carnivora, Primates, and Rodentia) was calculated. We also built indexes for each trait of interest: (i) litter index, ratio between monotocous and polytocous species within each order; (ii) group living index, ratio between the species with and without group living within each order; and (iii) breeding system index, ratio between plural and singular breeding species within eachorder. The analysis was performed with GLMs using a binomial error distribution and a logit link function, using the glmmTMB package. The total set of P values derived from analysis using CMR data was corrected for multiple testing using FDR correction. The total set of P values derived from analysis using each dataset was corrected for multiple testing using FDR correction. **For Math_Models_Simulation_Results.ipynb** All code used to simulate population dynamics including parameters chosen and generation of plots are in this python notebook file. Reading and executing this code will give results shown on the paper. No further statistical analysis was included in the paper regarding this section. **References** O. Vincze, F. Colchero, J.-F. Lemaître, D. A. Conde, S. Pavard, M. Bieuville, A. O. Urrutia, B. Ujvari, A. M. Boddy, C. C. Maley, Cancer risk across mammals. Nature 601, 263–267 (2022). A. M. Boddy, L. M. Abegglen, A. P. Pessier, A. Aktipis, J. D. Schiffman, C. C. Maley, C. Witte, Lifetime cancer prevalence and life history traits in mammals. Evol. Med. Public Health 2020, 187–195 (2020). Z. T. Compton, W. Mellon, V. K. Harris, S. Rupp, D. Mallo, S. E. Kapsetaki, M. Wilmot, R. Kennington, K. Noble, C. Baciu, Cancer prevalence across vertebrates. Cancer discovery 15, 227–244 (2025). **Phylogenetic Trees**\\ consensus_phylogeny.tre tree_for_database2.txt","descriptionType":"TechnicalInfo"}],"geoLocations":[],"fundingReferences":[{"schemeUri":"https://ror.org","funderName":"Universidad de Buenos Aires","awardNumber":"UBACyT 20020220100113BA","funderIdentifier":"https://ror.org/0081fs513","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"Universidad de Buenos Aires","awardNumber":"PIUBAS","funderIdentifier":"https://ror.org/0081fs513","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"\n        Agencia Nacional de Promoción de la Investigación, el Desarrollo\n        Tecnológico y la Innovación\n      ","awardNumber":"PICT-2021-I-A-00459","funderIdentifier":"https://ror.org/03stxzb56","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"\n        Agencia Nacional de Promoción de la Investigación, el Desarrollo\n        Tecnológico y la Innovación\n      ","awardNumber":"PICT-2020-01227","funderIdentifier":"https://ror.org/03stxzb56","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"Consejo Nacional de Investigaciones Científicas y Técnicas","awardNumber":"PIP 11220210100758CO","funderIdentifier":"https://ror.org/03cqe8w59","funderIdentifierType":"ROR"}],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTA2MS9EUllBRC5YR1hEMjU0Vkg8L2lkZW50aWZpZXI+CiAgPGNyZWF0b3JzPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlNpZXJyYSwgQ2F0YWxpbmE8L2NyZWF0b3JOYW1lPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDA4MWZzNTEzIiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmciPlVuaXZlcnNpZGFkIGRlIEJ1ZW5vcyBBaXJlczwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICBGYWN1bHRhZCBkZSBDaWVuY2lhcyBFeGFjdGFzIHkgTmF0dXJhbGVzLiBEZXBhcnRhbWVudG8gZGUgRmlzaW9sb2fDrWEsCiAgICAgICAgQmlvbG9nw61hIE1vbGVjdWxhciB5IENlbHVsYXIuIEluc3RpdHV0byBkZSBCaW9jaWVuY2lhcywgQmlvdGVjbm9sb2fDrWEgeQogICAgICAgIEJpb2xvZ8OtYSBUcmFzbGFjaW9uYWwgKGlCMykuIEJ1ZW5vcyBBaXJlcywgQXJnZW50aW5hLgogICAgICA8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPk1heHdlbGwsIEp1bGlhbjwvY3JlYXRvck5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZy8iPjAwMDktMDAwNC0xMDQ0LTgyMzY8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDA4MWZzNTEzIiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmciPlVuaXZlcnNpZGFkIGRlIEJ1ZW5vcyBBaXJlczwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICBGYWN1bHRhZCBkZSBDaWVuY2lhcyBFeGFjdGFzIHkgTmF0dXJhbGVzLCBEZXBhcnRhbWVudG8gZGUgRsOtc2ljYSwgQnVlbm9zCiAgICAgICAgQWlyZXMsIEFyZ2VudGluYS4KICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAzY3FlOHc1OSIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Db25zZWpvIE5hY2lvbmFsIGRlIEludmVzdGlnYWNpb25lcyBDaWVudMOtZmljYXMgeSBUw6ljbmljYXM8L2FmZmlsaWF0aW9uPgogICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgSW5zdGl0dXRvIGRlIEZpc2lvbG9nw61hLCBCaW9sb2fDrWEgTW9sZWN1bGFyIHkgTmV1cm9jaWVuY2lhcyAoSUZJQllORSksCiAgICAgICAgQnVlbm9zIEFpcmVzLCBBcmdlbnRpbmEuCiAgICAgIDwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lIG5hbWVUeXBlPSJQZXJzb25hbCI+RmxhaWJhbmksIE5pY29sw6FzPC9jcmVhdG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnLyI+MDAwMC0wMDAyLTI2MzgtNTE2WDwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wMDgxZnM1MTMiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+VW5pdmVyc2lkYWQgZGUgQnVlbm9zIEFpcmVzPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgIEZhY3VsdGFkIGRlIENpZW5jaWFzIEV4YWN0YXMgeSBOYXR1cmFsZXMsIERlcGFydGFtZW50byBkZSBFY29sb2fDrWEsCiAgICAgICAgR2Vuw6l0aWNhIHkgRXZvbHVjacOzbiwgQnVlbm9zIEFpcmVzLCBBcmdlbnRpbmEuCiAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wM2NxZTh3NTkiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+Q29uc2VqbyBOYWNpb25hbCBkZSBJbnZlc3RpZ2FjaW9uZXMgQ2llbnTDrWZpY2FzIHkgVMOpY25pY2FzPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgIEluc3RpdHV0byBkZSBFY29sb2fDrWEsIEdlbsOpdGljYSB5IEV2b2x1Y2nDs24gZGUgQnVlbm9zIEFpcmVzIChJRUdFQkEpLAogICAgICAgIEJ1ZW5vcyBBaXJlcywgQXJnZW50aW5hLgogICAgICA8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlPDoW5jaGV6IGRlIGxhIFZlZ2EsIENvbnN0YW56YTwvY3JlYXRvck5hbWU+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wMDgxZnM1MTMiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+VW5pdmVyc2lkYWQgZGUgQnVlbm9zIEFpcmVzPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgIEZhY3VsdGFkIGRlIENpZW5jaWFzIEV4YWN0YXMgeSBOYXR1cmFsZXMsIERlcGFydGFtZW50byBkZSBNYXRlbcOhdGljYSwKICAgICAgICBCdWVub3MgQWlyZXMsIEFyZ2VudGluYS4KICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAzY3FlOHc1OSIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Db25zZWpvIE5hY2lvbmFsIGRlIEludmVzdGlnYWNpb25lcyBDaWVudMOtZmljYXMgeSBUw6ljbmljYXM8L2FmZmlsaWF0aW9uPgogICAgICA8YWZmaWxpYXRpb24+SW5zdGl0dXRvIGRlIEPDoWxjdWxvIChJQyksIEJ1ZW5vcyBBaXJlcywgQXJnZW50aW5hLjwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lIG5hbWVUeXBlPSJQZXJzb25hbCI+VmVudHVyYSwgQWxlamFuZHJhIEMuPC9jcmVhdG9yTmFtZT4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAwODFmczUxMyIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Vbml2ZXJzaWRhZCBkZSBCdWVub3MgQWlyZXM8L2FmZmlsaWF0aW9uPgogICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgRmFjdWx0YWQgZGUgQ2llbmNpYXMgRXhhY3RhcyB5IE5hdHVyYWxlcywgRGVwYXJ0YW1lbnRvIGRlIEbDrXNpY2EsIEJ1ZW5vcwogICAgICAgIEFpcmVzLCBBcmdlbnRpbmEuCiAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wM2NxZTh3NTkiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+Q29uc2VqbyBOYWNpb25hbCBkZSBJbnZlc3RpZ2FjaW9uZXMgQ2llbnTDrWZpY2FzIHkgVMOpY25pY2FzPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgIEluc3RpdHV0byBkZSBGaXNpb2xvZ8OtYSwgQmlvbG9nw61hIE1vbGVjdWxhciB5IE5ldXJvY2llbmNpYXMgKElGSUJZTkUpLAogICAgICAgIEJ1ZW5vcyBBaXJlcywgQXJnZW50aW5hLgogICAgICA8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPkxhdmFnbmlubywgTmljb2zDoXMgSi48L2NyZWF0b3JOYW1lPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDA4MWZzNTEzIiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmciPlVuaXZlcnNpZGFkIGRlIEJ1ZW5vcyBBaXJlczwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICBGYWN1bHRhZCBkZSBDaWVuY2lhcyBFeGFjdGFzIHkgTmF0dXJhbGVzLCBEZXBhcnRhbWVudG8gZGUgRWNvbG9nw61hLAogICAgICAgIEdlbsOpdGljYSB5IEV2b2x1Y2nDs24sIEJ1ZW5vcyBBaXJlcywgQXJnZW50aW5hLgogICAgICA8L2FmZmlsaWF0aW9uPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDNjcWU4dzU5IiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmciPkNvbnNlam8gTmFjaW9uYWwgZGUgSW52ZXN0aWdhY2lvbmVzIENpZW50w61maWNhcyB5IFTDqWNuaWNhczwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICBJbnN0aXR1dG8gZGUgRWNvbG9nw61hLCBHZW7DqXRpY2EgeSBFdm9sdWNpw7NuIGRlIEJ1ZW5vcyBBaXJlcyAoSUVHRUJBKSwKICAgICAgICBCdWVub3MgQWlyZXMsIEFyZ2VudGluYS4KICAgICAgPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5CbGF1c3RlaW4sIE1hdMOtYXM8L2NyZWF0b3JOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmcvIj4wMDAwLTAwMDEtNjMwOS02ODg4PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAwODFmczUxMyIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Vbml2ZXJzaWRhZCBkZSBCdWVub3MgQWlyZXM8L2FmZmlsaWF0aW9uPgogICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgRmFjdWx0YWQgZGUgQ2llbmNpYXMgRXhhY3RhcyB5IE5hdHVyYWxlcy4gRGVwYXJ0YW1lbnRvIGRlIEZpc2lvbG9nw61hLAogICAgICAgIEJpb2xvZ8OtYSBNb2xlY3VsYXIgeSBDZWx1bGFyLiBJbnN0aXR1dG8gZGUgQmlvY2llbmNpYXMsIEJpb3RlY25vbG9nw61hIHkKICAgICAgICBCaW9sb2fDrWEgVHJhc2xhY2lvbmFsIChpQjMpLiBCdWVub3MgQWlyZXMsIEFyZ2VudGluYS4KICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAzY3FlOHc1OSIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Db25zZWpvIE5hY2lvbmFsIGRlIEludmVzdGlnYWNpb25lcyBDaWVudMOtZmljYXMgeSBUw6ljbmljYXM8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogIDwvY3JlYXRvcnM+CiAgPHRpdGxlcz4KICAgIDx0aXRsZT4KICAgICAgRGF0YSBmcm9tOiBDb2V2b2x1dGlvbiBvZiBjb29wZXJhdGl2ZSBsaWZlc3R5bGVzIGFuZCByZWR1Y2VkIGNhbmNlcgogICAgICBwcmV2YWxlbmNlIGluIG1hbW1hbHMKICAgIDwvdGl0bGU+CiAgPC90aXRsZXM+CiAgPHB1Ymxpc2hlciBwdWJsaXNoZXJJZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDB4Nmg1bjk1IiBwdWJsaXNoZXJJZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnLyI+RHJ5YWQ8L3B1Ymxpc2hlcj4KICA8cmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUdlbmVyYWw9IkRhdGFzZXQiPmRhdGFzZXQ8L3Jlc291cmNlVHlwZT4KICA8cHVibGljYXRpb25ZZWFyPjIwMjU8L3B1YmxpY2F0aW9uWWVhcj4KICA8c3ViamVjdHM+CiAgICA8c3ViamVjdCBzdWJqZWN0U2NoZW1lPSJmb3MiIHNjaGVtZVVSST0iaHR0cHM6Ly93ZWItYXJjaGl2ZS5vZWNkLm9yZy8yMDEyLTA2LTE1LzEzODU3NS0zODIzNTE0Ny5wZGYiPkZPUzogQmlvbG9naWNhbCBzY2llbmNlczwvc3ViamVjdD4KICAgIDxzdWJqZWN0IHN1YmplY3RTY2hlbWU9ImZvcyIgc2NoZW1lVVJJPSJodHRwczovL3dlYi1hcmNoaXZlLm9lY2Qub3JnLzIwMTItMDYtMTUvMTM4NTc1LTM4MjM1MTQ3LnBkZiI+Rk9TOiBOYXR1cmFsIHNjaWVuY2VzPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iZm9zIiBzY2hlbWVVUkk9Imh0dHBzOi8vd2ViLWFyY2hpdmUub2VjZC5vcmcvMjAxMi0wNi0xNS8xMzg1NzUtMzgyMzUxNDcucGRmIj5GT1M6IE1hdGhlbWF0aWNzPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iZm9zIiBzY2hlbWVVUkk9Imh0dHBzOi8vd2ViLWFyY2hpdmUub2VjZC5vcmcvMjAxMi0wNi0xNS8xMzg1NzUtMzgyMzUxNDcucGRmIj5GT1M6IEJhc2ljIG1lZGljaW5lPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iUExPUyBTdWJqZWN0IEFyZWEgVGhlc2F1cnVzIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ2l0aHViLmNvbS9QTE9TL3Bsb3MtdGhlc2F1cnVzIj5DYW5jZXIgZXZvbHV0aW9uPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iUExPUyBTdWJqZWN0IEFyZWEgVGhlc2F1cnVzIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ2l0aHViLmNvbS9QTE9TL3Bsb3MtdGhlc2F1cnVzIj5Fdm9sdXRpb25hcnkgZWNvbG9neTwvc3ViamVjdD4KICAgIDxzdWJqZWN0IHN1YmplY3RTY2hlbWU9IlBMT1MgU3ViamVjdCBBcmVhIFRoZXNhdXJ1cyIgc2NoZW1lVVJJPSJodHRwczovL2dpdGh1Yi5jb20vUExPUy9wbG9zLXRoZXNhdXJ1cyI+UG9wdWxhdGlvbiBtb2RlbGluZzwvc3ViamVjdD4KICA8L3N1YmplY3RzPgogIDxmdW5kaW5nUmVmZXJlbmNlcz4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5Vbml2ZXJzaWRhZCBkZSBCdWVub3MgQWlyZXM8L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJST1IiPmh0dHBzOi8vcm9yLm9yZy8wMDgxZnM1MTM8L2Z1bmRlcklkZW50aWZpZXI+CiAgICAgIDxhd2FyZE51bWJlcj5VQkFDeVQgMjAwMjAyMjAxMDAxMTNCQTwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5Vbml2ZXJzaWRhZCBkZSBCdWVub3MgQWlyZXM8L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJST1IiPmh0dHBzOi8vcm9yLm9yZy8wMDgxZnM1MTM8L2Z1bmRlcklkZW50aWZpZXI+CiAgICAgIDxhd2FyZE51bWJlcj5QSVVCQVM8L2F3YXJkTnVtYmVyPgogICAgICA8YXdhcmRUaXRsZS8+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+CiAgICAgICAgQWdlbmNpYSBOYWNpb25hbCBkZSBQcm9tb2Npw7NuIGRlIGxhIEludmVzdGlnYWNpw7NuLCBlbCBEZXNhcnJvbGxvCiAgICAgICAgVGVjbm9sw7NnaWNvIHkgbGEgSW5ub3ZhY2nDs24KICAgICAgPC9mdW5kZXJOYW1lPgogICAgICA8ZnVuZGVySWRlbnRpZmllciBmdW5kZXJJZGVudGlmaWVyVHlwZT0iUk9SIj5odHRwczovL3Jvci5vcmcvMDNzdHh6YjU2PC9mdW5kZXJJZGVudGlmaWVyPgogICAgICA8YXdhcmROdW1iZXI+UElDVC0yMDIxLUktQS0wMDQ1OTwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT4KICAgICAgICBBZ2VuY2lhIE5hY2lvbmFsIGRlIFByb21vY2nDs24gZGUgbGEgSW52ZXN0aWdhY2nDs24sIGVsIERlc2Fycm9sbG8KICAgICAgICBUZWNub2zDs2dpY28geSBsYSBJbm5vdmFjacOzbgogICAgICA8L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJST1IiPmh0dHBzOi8vcm9yLm9yZy8wM3N0eHpiNTY8L2Z1bmRlcklkZW50aWZpZXI+CiAgICAgIDxhd2FyZE51bWJlcj5QSUNULTIwMjAtMDEyMjc8L2F3YXJkTnVtYmVyPgogICAgICA8YXdhcmRUaXRsZS8+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+Q29uc2VqbyBOYWNpb25hbCBkZSBJbnZlc3RpZ2FjaW9uZXMgQ2llbnTDrWZpY2FzIHkgVMOpY25pY2FzPC9mdW5kZXJOYW1lPgogICAgICA8ZnVuZGVySWRlbnRpZmllciBmdW5kZXJJZGVudGlmaWVyVHlwZT0iUk9SIj5odHRwczovL3Jvci5vcmcvMDNjcWU4dzU5PC9mdW5kZXJJZGVudGlmaWVyPgogICAgICA8YXdhcmROdW1iZXI+UElQIDExMjIwMjEwMTAwNzU4Q088L2F3YXJkTnVtYmVyPgogICAgICA8YXdhcmRUaXRsZS8+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgPC9mdW5kaW5nUmVmZXJlbmNlcz4KICA8ZGF0ZXM+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iQ3JlYXRlZCI+MjAyNS0xMC0yN1QxNzo1MTo1M1o8L2RhdGU+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iU3VibWl0dGVkIj4yMDI1LTEwLTI3VDE3OjUxOjU0WjwvZGF0ZT4KICAgIDxkYXRlIGRhdGVUeXBlPSJJc3N1ZWQiPjIwMjUtMTAtMzBUMDA6MDA6MDBaPC9kYXRlPgogICAgPGRhdGUgZGF0ZVR5cGU9IkF2YWlsYWJsZSI+MjAyNS0xMC0zMFQwMDowMDowMFo8L2RhdGU+CiAgPC9kYXRlcz4KICA8bGFuZ3VhZ2U+ZW48L2xhbmd1YWdlPgogIDxyZWxhdGVkSWRlbnRpZmllcnM+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRpb25UeXBlPSJJc0NpdGVkQnkiIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iVVJMIj5odHRwczovL3d3dy5yZXNlYXJjaHNxdWFyZS5jb20vYXJ0aWNsZS9ycy01MjQxODA3L3YyPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9IklzQ2l0ZWRCeSIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJVUkwiPgogICAgICBodHRwczovL2dpdGh1Yi5jb20vRmxhaWJhL0NvZXZvbHV0aW9uX29mX2Nvb3BlcmF0aXZlX2xpZmVzdHlsZXNfYW5kX3JlZHVjZWRfY2FuY2VyX3ByZXZhbGVuY2VfaW5fbWFtbWFscwogICAgPC9yZWxhdGVkSWRlbnRpZmllcj4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9IklzQ2l0ZWRCeSIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiPmh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2L3NjaWFkdi5hZHcwNjg1PC9yZWxhdGVkSWRlbnRpZmllcj4KICA8L3JlbGF0ZWRJZGVudGlmaWVycz4KICA8c2l6ZXM+CiAgICA8c2l6ZT4xMTgyOTgwMSBieXRlczwvc2l6ZT4KICA8L3NpemVzPgogIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+CiAgPHJpZ2h0c0xpc3Q+CiAgICA8cmlnaHRzIHJpZ2h0c1VSST0iaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9DQzAtMS4wLmh0bWwiPkNyZWF0aXZlIENvbW1vbnMgWmVybyB2MS4wIFVuaXZlcnNhbDwvcmlnaHRzPgogIDwvcmlnaHRzTGlzdD4KICA8ZGVzY3JpcHRpb25zPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iQWJzdHJhY3QiPgogICAgICBXaHkgY2FuY2VyIGlzIHNvIHByZXZhbGVudCBhbW9uZyBtYW1tYWxzLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgc29tZQogICAgICBzcGVjaWVzIGV2b2x2ZWQgcmVzaXN0YW5jZSBtZWNoYW5pc21zLCByZW1haW5zIGFuIG9wZW4gcXVlc3Rpb24uIFdlCiAgICAgIGh5cG90aGVzaXplZCB0aGF0IGNhbmNlciBwcmV2YWxlbmNlIGFuZCBtb3J0YWxpdHkgcmlzayBtaWdodCBoYXZlIGJlZW4KICAgICAgZmluZS10dW5lZCBieSBldm9sdXRpb24uIFVzaW5nIHB1YmxpYyBkYXRhYmFzZXMsIHdlIHNob3cgdGhhdCBzcGVjaWVzIHdpdGgKICAgICAgY29vcGVyYXRpdmUgaGFiaXRzIGhhdmUgbG93ZXIgY2FuY2VyIHByZXZhbGVuY2UgYW5kIG1vcnRhbGl0eSByaXNrLiBCeQogICAgICBkZXZlbG9waW5nIGEgbWF0aGVtYXRpY2FsIG1vZGVsLCB3ZSBwcm92aWRlIGEgbWVjaGFuaXN0aWMgZXhwbGFuYXRpb246IGFuCiAgICAgIG9uY29nZW5pYyB2YXJpYW50IHRoYXQgZWxpY2l0cyBoaWdoZXIgY2FuY2VyIG1vcnRhbGl0eSBpbiBvbGRlciBhbmQgbGVzcwogICAgICByZXByb2R1Y3RpdmUgaW5kaXZpZHVhbHMgaXMgZGV0cmltZW50YWwgdG8gY29vcGVyYXRpdmUgbWFtbWFsaWFuIHNvY2lldGllcwogICAgICBidXQgY2FuIGxlYWQgdG8gYSBjb3VudGVyaW50dWl0aXZlIG92ZXJjb21wZW5zYXRpb24gaW4gcG9wdWxhdGlvbiBzaXplIGFuZAogICAgICBmaXRuZXNzIHdpdGhpbiBjb21wZXRpdGl2ZSBjb250ZXh0cy4gVGhlIHBoZW5vbWVub24gb2YgYSBwb3B1bGF0aW9uCiAgICAgIGluY3JlYXNpbmcgaW4gcmVzcG9uc2UgdG8gYSBkZWNyZWFzZSBpbiBpdHMgcGVyIGNhcGl0YSBzdXJ2aXZhbCByYXRlIGlzCiAgICAgIGNhbGxlZCB0aGUgaHlkcmEgZWZmZWN0LCBhIHByb2Nlc3MgbmV2ZXIgZXhwbG9yZWQgaW4gdGhlIGZpZWxkIG9mIGNhbmNlcgogICAgICBiZWZvcmUuIFRoZXJlZm9yZSwgY2FuY2VyIGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgc2VsZWN0ZWQgbWVjaGFuaXNtIG9mCiAgICAgIGJpb2xvZ2ljYWwgb2Jzb2xlc2NlbmNlIGluIGNvbXBldGl0aXZlIHNwZWNpZXMuCiAgICA8L2Rlc2NyaXB0aW9uPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iTWV0aG9kcyI+CiAgICAgICZsdDtwJmd0O1NlZSB0aGUgZm9sbG93aW5nIERPSTogMTAuMTEyNi9zY2lhZHYuYWR3MDY4NSAoYXZhaWxhYmxlIG9uCiAgICAgIE5vdmVtYmVyIDEyLCAyMDI1KSZsdDsvcCZndDsgJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtDTVIsIG5lb3BsYXNpYSBhbmQKICAgICAgbWFsaWduYW5jeSBwcmV2YWxlbmNlIGluIG1hbW1hbGlhbiBzcGVjaWVzJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtGaXJzdCBkYXRhc2V0OiBDYW5jZXIgTW9ydGFsaXR5IFJpc2sgKENNUikgd2FzIGNhbGN1bGF0ZWQgZm9yCiAgICAgIGVhY2ggc3BlY2llcyBhcyB0aGUgcHJvcG9ydGlvbiBvZiBjYW5jZXItcmVsYXRlZCBkZWF0aHMgb3V0IG9mIHRoZSB0b3RhbAogICAgICBudW1iZXIgb2YgcmVjb3JkcywgYmFzZWQgb24gcG9zdC1tb3J0ZW0gcGF0aG9sb2dpY2FsIHJlY29yZHMgKG49MTEsODQwKS4KICAgICAgVGhpcyBpbmZvcm1hdGlvbiB3YXMgc291cmNlZCBmcm9tICZsdDtlbSZndDtTcGVjaWVzMzYwJmx0Oy9lbSZndDsgYW5kCiAgICAgICZsdDtlbSZndDtUaGUgWm9vbG9naWNhbCBJbmZvcm1hdGlvbiBNYW5hZ2VtZW50IFN5c3RlbSZsdDsvZW0mZ3Q7IChaSU1TKS4KICAgICAgVGhlIGRhdGFzZXQgaW5pdGlhbGx5IGluY2x1ZGVkIDE5MSBzcGVjaWVzLCBidXQgJmx0O2VtJmd0O0QuCiAgICAgIGJ5cm5laSZsdDsvZW0mZ3Q7IHdhcyByZW1vdmVkIGR1ZSB0byBpdHMgZXh0cmVtZWx5IGhpZ2ggQ01SLCB3aGljaCB3YXMKICAgICAgY29uc2lkZXJlZCBhbiBvdXRsaWVyLiBUaGlzIENNUiBkYXRhIHdhcyBnYXRoZXJlZCBmcm9tIG1hbW1hbHMgaW4gem9vcwogICAgICB3b3JsZHdpZGUsIHByb3ZpZGluZyBoaWdoLXJlc29sdXRpb24gY2F1c2Utb2YtZGVhdGggZGF0YS4gQ01SIHdhcwogICAgICBlc3RpbWF0ZWQgZnJvbSBuZW9wbGFzdGljIHNhbXBsZXMgdGhhdCBzdWJzdGFudGlhbGx5IGNvbnRyaWJ1dGVkIHRvIHRoZQogICAgICBhbmltYWwgZGVhdGgsIGFzIGNvbmZpcm1lZCBieSBuZWNyb3BzaWVzLiBUaGUgQ01SIGVzdGltYXRlZCBmb3IgZWFjaCBhbmQKICAgICAgZXZlcnkgc3BlY2llcyBpbmNsdWRlZCBpbiB0aGlzIGRhdGFzZXQgaXMgYmFzZWQgb24gbW9yZSB0aGFuIDIwIG5lY3JvcHNpZXMKICAgICAgcGVyIHNwZWNpZXMgKG1lYW4gPSA2MikuJmx0Oy9wJmd0OyAmbHQ7cCZndDtTZWNvbmQgZGF0YXNldDogUHJldmFsZW5jZSBvZgogICAgICBuZW9wbGFzaWEgd2FzIGVzdGltYXRlZCBhcyB0aGUgcHJldmFsZW5jZSBvZiBhbnkgbmVvcGxhc20gaW4gbWFtbWFsaWFuCiAgICAgIHNwZWNpZXMgZnJvbSBTYW4gRGllZ28ncyB6b29zLiBUaGUgZGF0YXNldCBpbml0aWFsbHkgaW5jbHVkZWQgMzcKICAgICAgc3BlY2llcywgYnV0ICZsdDtlbSZndDtMLiBhZnJpY2FuYSZsdDsvZW0mZ3Q7IHdhcyByZW1vdmVkIGR1ZSB0bwogICAgICBpbmNvbmdydWVuY2VzIHdpdGggb3RoZXIgcHVibGljYXRpb25zIHJlcG9ydGluZyBsb3dlciBjYW5jZXIgcmF0ZXMuIFRoZQogICAgICBwcmV2YWxlbmNlIG9mIG5lb3BsYXNpYSBlc3RpbWF0ZWQgZm9yIHRoZSBzcGVjaWVzIGluY2x1ZGVkIGluIHRoaXMgZGF0YXNldAogICAgICBpcyBiYXNlZCBvbiBhbiBhdmVyYWdlIG9mIDIzIG5lY3JvcHNpZXMgcGVyIHNwZWNpZXMuICZsdDtlbSZndDtWdWxwZXMKICAgICAgemVyZGEmbHQ7L2VtJmd0OywgJmx0O2VtJmd0O1B1bWEgY29uY29sb3ImbHQ7L2VtJmd0OywgJmx0O2VtJmd0O0NhbmlzCiAgICAgIG1lc29tZWxhcyZsdDsvZW0mZ3Q7LCAmbHQ7ZW0mZ3Q7TGFtYSBnbGFtYSwmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7THljYW9uCiAgICAgIHBpY3R1cyZsdDsvZW0mZ3Q7LCAmbHQ7ZW0mZ3Q7VGFyc2l1cyBzeXJpY2h0YSZsdDsvZW0mZ3Q7LAogICAgICAmbHQ7ZW0mZ3Q7TWFjcm9wdXMgcnVmdXMmbHQ7L2VtJmd0OyBhbmQgJmx0O2VtJmd0O0VxdXVzIGFzaW51cyZsdDsvZW0mZ3Q7CiAgICAgIGFyZSB0aGUgb25seSBzcGVjaWVzIHdpdGggbGVzcyB0aGFuIDEwIG5lY3JvcHNpZXMgYW5hbHl6ZWQuJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtUaGlyZCBkYXRhc2V0OiBXZSB1c2VkIGEgcmVjZW50bHkgY3VyYXRlZCBhbmQgc3RhbmRhcmRpemVkCiAgICAgIGRhdGFzZXQgb2YgbWFsaWduYW5jeSBwcmV2YWxlbmNlIGFjcm9zcyBtYW1tYWxpYW4gc3BlY2llcyB0aGF0IGlzIGJhc2VkIG9uCiAgICAgIG1vcmUgdGhhbiAyMCBuZWNyb3BzaWVzIHBlciBzcGVjaWVzLiBUaGlzIHJlc291cmNlIGluY2x1ZGVzIGFkZGl0aW9uYWwKICAgICAgc3BlY2llcyBub3QgY29uc2lkZXJlZCBpbiB0aGUgb3RoZXIgZGF0YXNldHMuIEluIHRoaXMgYW5hbHlzaXMsIGEgbGlzdCBvZgogICAgICBhcmNoZXR5cGFsIHNwZWNpZXMgd2l0aCB2ZXJ5IGhpZ2ggb3IgdmVyeSBsb3cgbWFsaWduYW5jeSBwcmV2YWxlbmNlIHdhcwogICAgICBjb25zdHJ1Y3RlZDogYWxsIHNwZWNpZXMgd2VyZSByYW5rZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG1hbGlnbmFuY3kKICAgICAgcHJldmFsZW5jZSwgYW5kIHRocmVlIHN1YnNldHMgd2VyZSBkZWZpbmVkIHVzaW5nIGRpZmZlcmVudCBjdXQtb2ZmczoKICAgICAgUmFuazEwLCBSYW5rMTUsIGFuZCBSYW5rMjAsIGVhY2ggaW5jbHVkaW5nIHRoZSAxMCwgMTUsIG9yIDIwIHNwZWNpZXMgd2l0aAogICAgICB0aGUgaGlnaGVzdCBhbmQgbG93ZXN0IG1hbGlnbmFuY3kgcHJldmFsZW5jZSwgcmVzcGVjdGl2ZWx5LiBUaGVzZSByYW5rZWQKICAgICAgZ3JvdXBzIGNvbnNpc3Rpbmcgb2YgMjAsIDMwIGFuZCA0MCBzcGVjaWVzLCByZXNwZWN0aXZlbHksIHdlcmUgdGhlbiB1c2VkCiAgICAgIGZvciBkb3duc3RyZWFtIGNvbXBhcmF0aXZlIGFuYWx5c2VzLiBUaGUgdG90YWwgZGF0YXNldCBjb21wcmlzZWQgMTAyCiAgICAgIG1hbW1hbGlhbiBzcGVjaWVzLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtNb3JwaG8tcGh5c2lvbG9naWNhbCwKICAgICAgbGlmZSBoaXN0b3J5IGFuZCBsaWZlc3R5bGUgdHJhaXRzJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9wJmd0OyAmbHQ7cCZndDtEYXRhCiAgICAgIG9uIEJvZHkgTWFzcyAoa2cpIGFuZCBMaWZlIEV4cGVjdGFuY3kgKGRheXMpIHVzZWQgZm9yIHRoZSBmaXJzdCBkYXRhc2V0CiAgICAgIGhhdmUgYmVlbiBleHRyYWN0ZWQgZnJvbSBWaW5jemUgZXQgYWwuIChuPTE5MCBzcGVjaWVzKS4gRGF0YSBvbiBBZHVsdCBNYXNzCiAgICAgIChrZywpIGFuZCBNYXhpbXVtIExpZmVzcGFuIChkYXlzKSB1c2VkIGZvciB0aGUgc2Vjb25kIChuPTMyIGFuZCBuPTM2CiAgICAgIHNwZWNpZXMsIHJlc3BlY3RpdmVseSkgYW5kIHRoaXJkIGRhdGFiYXNlcyAobj05NCBzcGVjaWVzLCBpbiBib3RoIGNhc2VzKQogICAgICB3YXMgb2J0YWluZWQgZnJvbSB0aGUgQ09NQklORSBkYXRhYmFzZS4gRGF0YSBvbiBNZXRhYm9saWMgUmF0ZSAobj01MiBmb3IKICAgICAgdGhlIGZpcnN0IGRhdGFzZXQsIG49MzEgZm9yIHRoZSBzZWNvbmQgZGF0YXNldCBhbmQgbj01MiBmb3IgdGhlIHRoaXJkCiAgICAgIGRhdGFzZXQpIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBBbkFnZSBkYXRhYmFzZSBhbmQgZXhwcmVzc2VkIGluIFdhdHRzIChXKS4KICAgICAgRm9yIHRoZSB0aGlyZCBkYXRhYmFzZSwgYSBjYXRlZ29yaXphdGlvbiB3YXMgbWFkZSBmb3IgdmFyaWFibGVzIEFkdWx0CiAgICAgIE1hc3MsIE1ldGFib2xpYyBSYXRlIGFuZCBNYXhpbXVtIExpZmVzcGFuLCBpbiBvcmRlciB0byBkaXZpZGUgdGhlIHNwZWNpZXMKICAgICAgaW50byB0d28gY2F0ZWdvcmllcywgd2l0aCBhIHRocmVzaG9sZCBzdWNoIGFzIHRvIGhhdmUgdHdvIGdyb3VwcyB3aXRoIGEKICAgICAgY29tcGFyYWJsZSBudW1iZXIgb2Ygc3BlY2llcy4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O1dlIGRlZmluZWQgbGlmZSBoaXN0b3J5CiAgICAgIHRyYWl0cyAoTGl0dGVyIFNpemUsIExpdHRlcnMsIEdlc3RhdGlvbiBMZW5ndGgsIExpZmUgRXhwZWN0YW5jeSBhbmQKICAgICAgTWF4aW11bSBMaWZlc3BhbikgYXMgdGhvc2UgdGhhdCBkZXBlbmQgb24gdGhlIGhpc3Rvcnkgb2YgdGhlIGluZGl2aWR1YWwKICAgICAgYnV0IGFyZSBub3QgY2xlYXJseSBiZWhhdmlvcmFsIGxpa2UgbGlmZXN0eWxlIHRyYWl0cyAoR3JvdXAgTGl2aW5nLAogICAgICBCcmVlZGluZyBTeXN0ZW0pLiBXZSBjaG9zZSBsaXR0ZXIgc2l6ZSwgZ2VzdGF0aW9uIHRpbWUgYW5kIGxpZmUgZXhwZWN0YW5jeQogICAgICBhcyB0aHJlZSBjbGFzc2ljIGxpZmUgaGlzdG9yeSB0cmFpdHMuIEluIHBhcnRpY3VsYXIsIGxpZmUgZXhwZWN0YW5jeSBpcyBhCiAgICAgIHdlbGwtZGV0ZXJtaW5lZCB2YXJpYWJsZSBpbiBtYW55IHNwZWNpZXMsIHdoaWNoIGhlbHBzIHRvIGhhdmUgYSBsYXJnZXIKICAgICAgc2FtcGxlIHNpemUuJmx0Oy9wJmd0OyAmbHQ7cCZndDtEYXRhIG9uIExpdHRlciBTaXplIChtZWFuIG51bWJlciBvZgogICAgICBkZXNjZW5kYW50cyBwZXIgZmVtYWxlLCBuPTE5MCBzcGVjaWVzIGZvciB0aGUgZmlyc3QgZGF0YXNldCwgbj0zMiBmb3IgdGhlCiAgICAgIHNlY29uZCBkYXRhc2V0IGFuZCBuPTk0IGZvciB0aGUgdGhpcmQgZGF0YXNldCkgYW5kIEdlc3RhdGlvbiBMZW5ndGggKGRheXMsCiAgICAgIG49MTkwIGZvciB0aGUgZmlyc3QgZGF0YXNldCBhbmQgbj0zMiBmb3IgdGhlIHNlY29uZCBkYXRhc2V0KSB3YXMgb2J0YWluZWQKICAgICAgZnJvbSB0aGUgQ09NQklORSBkYXRhYmFzZS4gVGhlIHZhcmlhYmxlICJMaXR0ZXJzIiB3YXMgdXNlZCB0bwogICAgICBjbGFzc2lmeSBzcGVjaWVzIGFzIGVpdGhlciBtb25vdG9jb3VzIG9yIHBvbHl0b2NvdXMsIHVzaW5nIGEgbGl0dGVyIHNpemUKICAgICAgb2YgMS41IGFzIHRocmVzaG9sZC4gVHJhbnNmb3JtaW5nIExpdHRlciBTaXplIGludG8gYSBkaWNob3RvbW91cyB2YXJpYWJsZQogICAgICBhbGxvd2VkIHVzIHRvIHN0YXRpc3RpY2FsbHkgdGVzdCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBib2R5IG1hc3MsIHNpbWlsYXJseQogICAgICB0byB3aGF0IHdlIGRpZCB3aXRoIGRpY2hvdG9tb3VzIHZhcmlhYmxlcyBzdWNoIGFzIEdyb3VwIExpdmluZy4gVG90YWwKICAgICAgTGl0dGVycyB3YXMgY2FsY3VsYXRlZCBhcyB0aGUgbnVtYmVyIG9mIGxpdHRlcnMgcGVyIHllYXIgbXVsdGlwbGllZCBieQogICAgICBsaXR0ZXIgc2l6ZSBhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWF4aW11bSBsb25nZXZpdHkgYW5kIGZlbWFsZQogICAgICBzZXh1YWwgbWF0dXJpdHkgZm9yIGVhY2ggc3BlY2llcy4gQWxsIHRoZSBkYXRhIGZvciB0aGUgY2FsY3VsYXRpb25zIHdlcmUKICAgICAgb2J0YWluZWQgZnJvbSB0aGUgQ09NQklORSBkYXRhYmFzZS4gR3JvdXAgTGl2aW5nIChuPTE0NCBzcGVjaWVzIGZvciB0aGUKICAgICAgZmlyc3QgZGF0YXNldCwgbj0yNCBmb3IgdGhlIHNlY29uZCBkYXRhc2V0IGFuZCBuPTc3IGZvciB0aGUgdGhpcmQgZGF0YXNldCkKICAgICAgd2FzIGRldGVybWluZWQgYnkgaW50ZWdyYXRpbmcgZGF0YSBmcm9tIHR3byBzb3VyY2VzOiBQw6lyZXotQmFyYmVyaWEgZXQgYWwuCiAgICAgIGFuZCBMdWthcyAmYW1wO2FtcDsgQ2x1dHRvbi1Ccm9jay4gVGhlIHZhcmlhYmxlIGlzIGRpY2hvdG9tb3VzLCBpbmRpY2F0aW5nCiAgICAgIHdoZXRoZXIgYSBzcGVjaWVzIGVuZ2FnZXMgaW4gZ3JvdXAgbGl2aW5nIGJhc2VkIG9uIHJlZ3VsYXIgYXNzb2NpYXRpb25zCiAgICAgIGFtb25nIGluZGl2aWR1YWxzLiBBIHNwZWNpZXMgd2FzIGNsYXNzaWZpZWQgYXMgR3JvdXAgTGl2aW5nIGlmIGl0IHNob3dlZAogICAgICBzb2NpYWxpdHkgb3Igd2FzIGxpc3RlZCBhcyBncm91cCBsaXZpbmcgYnkgZWl0aGVyIHNvdXJjZS4gQ29udmVyc2VseSwgaXQKICAgICAgd2FzIGNsYXNzaWZpZWQgYXMgbm90IGhhdmluZyBHcm91cCBMaXZpbmcgaWYgaXQgZXhoaWJpdGVkIG5vIHNvY2lhbGl0eSBvcgogICAgICB3YXMgbGlzdGVkIGFzIHNvbGl0YXJ5IG9yIHNvY2lhbGx5IG1vbm9nYW1vdXMgYnkgZWl0aGVyIHNvdXJjZS4gV2hlbiBkYXRhCiAgICAgIGZyb20gYm90aCBzb3VyY2VzIHdlcmUgYXZhaWxhYmxlLCBhIHNwZWNpZXMgd2FzIGluY2x1ZGVkIG9ubHkgaWYgYm90aAogICAgICBzb3VyY2VzIGFncmVlZCwgb3RoZXJ3aXNlIGl0IHdhcyBlaXRoZXIgZXhjbHVkZWQsIG9yIGEgY2hvaWNlIHdhcyBtYWRlCiAgICAgIGJhc2VkIG9uIGF2YWlsYWJsZSBsaXRlcmF0dXJlLiBEYXRhIG9uIEJyZWVkaW5nIFN5c3RlbSAoc2luZ3VsYXIgYnJlZWRlcnMKICAgICAgb3IgcGx1cmFsIGJyZWVkZXJzLCBuPTE0NyBzcGVjaWVzIGZvciB0aGUgZmlyc3QgZGF0YXNldCwgbj0yOCBmb3IgdGhlCiAgICAgIHNlY29uZCBkYXRhc2V0IGFuZCBuPTc5IGZvciB0aGUgdGhpcmQgZGF0YXNldCkgd2FzIGdhdGhlcmVkIGZyb20gTHVrYXMKICAgICAgJmFtcDthbXA7IENsdXR0b24tQnJvY2suIFRoZSBjYXRlZ29yeSBvZiBzaW5ndWxhciBvciBwbHVyYWwgYnJlZWRlcnMgd2FzCiAgICAgIGFzc2lnbmVkIGlmIHRoZSBmZW1hbGVzIG9jY3VweSBhIHNlcGFyYXRlIG9yIGNvbW1vbiB0ZXJyaXRvcnkgb3IgcmFuZ2UKICAgICAgZHVyaW5nIHRoZSBicmVlZGluZyBzZWFzb24sIHJlc3BlY3RpdmVseS4gRGF0YSBvbiB0aGUgZGljaG90b21vdXMgdmFyaWFibGUKICAgICAgUGF0ZXJuYWwgQ2FyZSAobj0xNTcgc3BlY2llcyBmb3IgZmlyc3QgZGF0YXNldCBhbmQgbj0yOSBmb3Igc2Vjb25kCiAgICAgIGRhdGFzZXQpIHdhcyBhbHNvIG9idGFpbmVkIGZyb20gTHVrYXMgJmFtcDthbXA7IENsdXR0b24tQnJvY2suJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtEYXRhIG9uIEFuaW1hbCBEaWV0IChjb25zdW1wdGlvbiBvZiBhbmltYWxzLCBpbmNsdWRpbmcKICAgICAgdmVydGVicmF0ZXMgYW5kIGludmVydGVicmF0ZXMpIHdhcyBzb3VyY2VkIGZyb20gVmluY3plIGV0IGFsLiwgd2hvCiAgICAgIGNvbXBpbGVkIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2xvYmFsIG1hbW1hbGlhbiBkaWV0IGRhdGFiYXNlLiBUaGlzCiAgICAgIGRhdGFzZXQgY2F0ZWdvcml6ZXMgZGlldGFyeSBjb21wb25lbnRzIGludG8gZm91ciBoaWVyYXJjaGljYWwgbGV2ZWxzOgogICAgICBuZXZlciBjb25zdW1lZCwgb2NjYXNpb25hbGx5IGNvbnN1bWVkLCBzZWNvbmRhcnkgZm9vZCBpdGVtLCBhbmQgcHJpbWFyeQogICAgICBmb29kIGl0ZW0uIEZvciBvdXIgYW5hbHlzaXMsIHdlIGZvY3VzZWQgc29sZWx5IG9uIHdoZXRoZXIgYW5pbWFsIG1hdHRlcgogICAgICB3YXMgcHJlc2VudCBpbiB0aGUgZGlldCwgd2l0aG91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzcGVjaWZpYyB0eXBlcy4KICAgICAgU2luY2UgdGhlIGludGVybWVkaWF0ZSBjYXRlZ29yaWVzIChvY2Nhc2lvbmFsIGFuZCBzZWNvbmRhcnkgY29uc3VtcHRpb24pCiAgICAgIGluY2x1ZGVkIHJlbGF0aXZlbHkgZmV3IHNwZWNpZXMsIFZpbmN6ZSBldCBhbC4gY29uc29saWRhdGVkIHRoZSBkaWV0YXJ5CiAgICAgIGNsYXNzaWZpY2F0aW9ucyBpbnRvIHR3byBicm9hZGVyIGxldmVsczogcmFyZWx5L25ldmVyIGNvbnN1bWVkIGFuZAogICAgICByZWd1bGFybHkgY29uc3VtZWQgKGkuZS4sIGFzIGEgcHJpbWFyeSBvciBzZWNvbmRhcnkgZm9vZCBzb3VyY2UpLiBEaWV0CiAgICAgIGluZm9ybWF0aW9uIHdhcyBpbmNsdWRlZCBvbmx5IGZvciB0aGUgZmlyc3QgZGF0YXNldCwgZHVlIHRvIHRoZSBzdHJlbmd0aAogICAgICBvZiB0aGUgYW5hbHlzaXMgYW5kIHRoZSBzYW1wbGUgc2l6ZSBhdmFpbGFibGUuJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDsmbHQ7c3Ryb25nJmd0O1N0YXRpc3RpY2FsIGFuYWx5c2lzJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtDb3JyZWxhdGlvbnMgb2YgQ01SIGFuZCBuZW9wbGFzaWEgd2l0aCB0aGUgZGlmZmVyZW50IHRyYWl0cyB3ZXJlCiAgICAgIHBlcmZvcm1lZCBlbXBsb3lpbmcgcGh5bG9nZW55LWNvcnJlY3RlZCBnZW5lcmFsaXplZCBsaW5lYXIgbWl4ZWQgbW9kZWxzCiAgICAgIChwaHlsR0xNTSkgdXNpbmcgJmx0O2VtJmd0O3BoeXImbHQ7L2VtJmd0OyBpbiBSIFN0YXRpc3RpY2FsIGFuZAogICAgICBQcm9ncmFtbWluZyBFbnZpcm9ubWVudCwgdmVyc2lvbiA0LjIuMy4gUHJldmlvdXMgaW52ZXN0aWdhdGlvbnMgd2l0aCB0aGUKICAgICAgc3BlY2llcyBpbmNsdWRlZCBpbiB0aGVzZSBkYXRhc2V0cyBzaG93ZWQgdGhlcmUgaXMgYSBwaHlsb2dlbmV0aWMgc2lnbmFsCiAgICAgIGZvciBDTVIgYW5kIG5lb3BsYXNpYSBhbW9uZyBtYW1tYWwgc3BlY2llcy4gVG8gY29udHJvbCBmb3IgcGh5bG9nZW5ldGljCiAgICAgIHJlbGF0ZWRuZXNzIGFtb25nIHNwZWNpZXMgd2UgcGVyZm9ybWVkIHBoeWxHTE1NIG1vZGVscyB1c2luZyB0aGUgb3JpZ2luYWwKICAgICAgcm9idXN0IHBoeWxvZ2VueSBieSBWaW5jemUgZXQgYWwuIHBoeWxHTE1NcyB1c2VkIGEgYmlub21pYWwgZXJyb3IKICAgICAgZGlzdHJpYnV0aW9uIGFuZCBhIGxvZ2l0IGxpbmsgZnVuY3Rpb24sIGFkZGluZyBhIHJhbmRvbSB2YXJpYWJsZSBhdCB0aGUKICAgICAgbGV2ZWwgb2Ygb2JzZXJ2YXRpb25zIHRvIGF2b2lkIG92ZXJkaXNwZXJzaW9uIHByb2JsZW1zLiBUaGlzIHJhbmRvbQogICAgICB2YXJpYWJsZSwgY2FsbGVkIOKAnFNwZWNpZXPigJ0sIHdhcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBpZGVudGl0eSBvZiBlYWNoCiAgICAgIHNwZWNpZXMgYW5hbHl6ZWQuIE5vdCBhbGwgYW5hbHlzZXMgdXNpbmcgQ01SIGRhdGEgd2VyZSBwZXJmb3JtZWQgd2l0aCB0aGUKICAgICAgZnVsbCBzZXQgb2Ygc3BlY2llcywgc2luY2UgdGhlIGluZm9ybWF0aW9uIGZvciBzb21lIG9mIHRoZSB0cmFpdHMgYW5hbHl6ZWQKICAgICAgd2FzIG5vdCBhdmFpbGFibGUgZm9yIGFsbCBzcGVjaWVzLiBBbGwgbW9kZWxzIHBlcmZvcm1lZCB3ZXJlIGV2YWx1YXRlZCBmb3IKICAgICAgb3ZlcmRpc3BlcnNpb24gYW5kIHplcm8taW5mbGF0aW9uIHVzaW5nIERIQVJNYSBwYWNrYWdlLiBBbGwgbW9kZWwgdGVzdHMKICAgICAgc2hvd2VkIHAtdmFsdWVzICZhbXA7Z3Q7IDAuMDUsIHdoaWNoIGluZGljYXRlcyB0aGF0IG5vIGZpdCBwcm9ibGVtcyB3ZXJlCiAgICAgIGRldGVjdGVkIGFuZCB0aGVyZWZvcmUsIHVubGlrZSBwcmV2aW91cyBpbnZlc3RpZ2F0aW9ucywgd2UgY2hvc2UgdG8KICAgICAgcGVyZm9ybSB0aGUgYW5hbHlzZXMgdXNpbmcgc3BlY2llcyB3aXRoIGJvdGggemVybyBhbmQgbm9uLXplcm8gQ01SLgogICAgICAmbHQ7YnImZ3Q7IE1vZGVscyB1c2VkOiAmbHQ7YnImZ3Q7ICgxKSBBbiBhZGRpdGl2ZSBwaHlsR0xNTSB3YXMgcGVyZm9ybWVkCiAgICAgIHdpdGggQ01SIGFzIHJlc3BvbnNlIHZhcmlhYmxlIGFuZCBsb2cgdHJhbnNmb3JtZWQgY29udGludW91cyB2YXJpYWJsZXMgb2YKICAgICAgY292YXJpYXRlIHRyYWl0cyBCb2R5IE1hc3MsIExpdHRlciBTaXplLCBMaWZlIEV4cGVjdGFuY3kgYW5kIEdlc3RhdGlvbgogICAgICBMZW5ndGguIExvZyB0cmFuc2Zvcm1lZCB2YXJpYWJsZXMgd2VyZSB1c2VkIGFzIGZpeGVkIGVmZmVjdHMsIGFuZCBTcGVjaWVzCiAgICAgIGFzIGEgcmFuZG9tIHZhcmlhYmxlIGF0IHRoZSBvYnNlcnZhdGlvbiBsZXZlbC4gVGhlIHBoeXNpb2xvZ2ljYWwgdHJhaXQKICAgICAgTWV0YWJvbGljIFJhdGUgd2FzIGFsc28gbG9nIHRyYW5zZm9ybWVkIGFuZCBhbmFseXplZCBpbiBhIHNlcGFyYXRlIG1vZGVsCiAgICAgIHRvIGF2b2lkIGNvbGxpbmVhcml0eSBwcm9ibGVtcyB3aXRoIExvZyBCb2R5IE1hc3MuICZsdDticiZndDsgKDIpIEEgc2ltcGxlCiAgICAgIG1vZGVsIGZvciBkaWNob3RvbW91cyB2YXJpYWJsZSBMaXR0ZXJzIHdhcyBwZXJmb3JtZWQgdG8gdGVzdCBmb3IgQ01SCiAgICAgIGRpZmZlcmVuY2VzIGluIG1vbm90b2NvdXMgb3IgcG9seXRvY291cyBzcGVjaWVzLiBUaGlzIGRpY2hvdG9tb3VzIHZhcmlhYmxlCiAgICAgIHdhcyB0ZXN0ZWQgaW4gYSBtb2RlbCB3aXRoIGNvbnRpbnVvdXMgdmFyaWFibGVzIExvZyBMaWZlIEV4cGVjdGFuY3kgYW5kCiAgICAgIExvZyBCb2R5IE1hc3MgdG8gZXZhbHVhdGUgaW50ZXJhY3Rpb24uICZsdDticiZndDsgKDMpIEZvciBsaWZlc3R5bGUKICAgICAgZGljaG90b21vdXMgdmFyaWFibGVzIEdyb3VwIExpdmluZywgQnJlZWRpbmcgU3lzdGVtIGFuZCBQYXRlcm5hbCBDYXJlIHdlCiAgICAgIHBlcmZvcm1lZCBzZXBhcmF0ZSBhbmFseXNlcyB0byBhdm9pZCBjb2xsaW5lYXJpdHkgcHJvYmxlbXMsIGluIGFsbCBjYXNlcwogICAgICB3aXRoIENNUiBhcyB0aGUgcmVzcG9uc2UgdmFyaWFibGUsIGFuZCBTcGVjaWVzIGFzIGEgcmFuZG9tIHZhcmlhYmxlIGF0IHRoZQogICAgICBsZXZlbCBvZiBvYnNlcnZhdGlvbnMuIEZvciBHcm91cCBMaXZpbmcgYW5kIEJyZWVkaW5nIFN5c3RlbSB2YXJpYWJsZXMgd2UKICAgICAgYWxzbyBwZXJmb3JtZWQgbW9kZWxzIHdpdGggdGhlIGNvbnRpbnVvdXMgdmFyaWFibGVzIChMb2cgQm9keSBNYXNzLCBMb2cKICAgICAgTGl0dGVyIFNpemUsIGFuZCBMb2cgTGlmZSBFeHBlY3RhbmN5KSBhbmQgdGVzdGVkIHRoZSBpbnRlcmFjdGlvbiB3aXRoIExvZwogICAgICBCb2R5IE1hc3MuICZsdDticiZndDsgKDQpIEFuaW1hbCBEaWV0IGFzIGEgZGljaG90b21vdXMgdmFyaWFibGUgd2FzCiAgICAgIGFuYWx5emVkIHVzaW5nIENNUiBhcyB0aGUgcmVzcG9uc2UgdmFyaWFibGUsIGFuZCBTcGVjaWVzIGFzIGEgcmFuZG9tCiAgICAgIHZhcmlhYmxlIGF0IHRoZSBsZXZlbCBvZiBvYnNlcnZhdGlvbnMuIFRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIEFuaW1hbCBEaWV0CiAgICAgIGFuZCBDTVIgd2FzIGFsc28gYXNzZXNzZWQgaW4gcmVsYXRpb24gdG8gdGhlIG90aGVyIGxpZmUgaGlzdG9yeSBhbmQKICAgICAgbGlmZXN0eWxlIHRyYWl0cyB1c2luZyBmb3VyIGRpZmZlcmVudCBtb2RlbHMgdGhhdCBpbmNsdWRlIHNwZWNpZXMgb2YKICAgICAgQW5pbWFsIERpZXQgYW5kIEdyb3VwIExpdmluZyAoZ3JlZ2FyaW91cy9zb2xpdGFyeSkgYW5kIEJyZWVkaW5nIFN5c3RlbQogICAgICAoc2luZ3VsYXIvcGx1cmFsKS4gJmx0O2JyJmd0OyAoNSkgVG8gcGVyZm9ybSBhbiBvcmRlciBsZXZlbCBhbmFseXNpcywgbWVhbgogICAgICBDTVIgZm9yIGFsbCB0aGUgc3BlY2llcyBiZWxvbmdpbmcgdG8gZWFjaCBvcmRlciB3aXRoIGF0IGxlYXN0IDE1IHNwZWNpZXMKICAgICAgKGkuZS4gQXJ0aW9kYWN0eWxhLCBDYXJuaXZvcmEsIFByaW1hdGVzLCBSb2RlbnRpYSkgd2FzIGNhbGN1bGF0ZWQuIFdlIGFsc28KICAgICAgYnVpbHQgaW5kZXhlcyBmb3IgZWFjaCB0cmFpdCBvZiBpbnRlcmVzdDogKGEpIExpdHRlcnMgSW5kZXg6IHJhdGlvIGJldHdlZW4KICAgICAgbW9ub3RvY291cyBhbmQgcG9seXRvY291cyBzcGVjaWVzIHdpdGhpbiBlYWNoIG9yZGVyLCAoYikgR3JvdXAgTGl2aW5nCiAgICAgIEluZGV4OiByYXRpbyBiZXR3ZWVuIHRoZSBzcGVjaWVzIHdpdGggYW5kIHdpdGhvdXQgR3JvdXAgTGl2aW5nIHdpdGhpbiBlYWNoCiAgICAgIG9yZGVyLCBhbmQgKGMpIEJyZWVkaW5nIFN5c3RlbSBJbmRleDogcmF0aW8gYmV0d2VlbiBwbHVyYWwgYW5kIHNpbmd1bGFyCiAgICAgIGJyZWVkaW5nIHNwZWNpZXMgd2l0aGluIGVhY2ggb3JkZXIuIFRoZSBhbmFseXNpcyB3YXMgcGVyZm9ybWVkIHdpdGggR0xNcwogICAgICBlbXBsb3lpbmcgYSBiaW5vbWlhbCBlcnJvciBkaXN0cmlidXRpb24gYW5kIGEgbG9naXQgbGluayBmdW5jdGlvbiwgdXNpbmcKICAgICAgdGhlIGdsbW1UTUIgcGFja2FnZSAodGFibGUgUzQpLiBUaGUgdG90YWwgc2V0IG9mIHAtdmFsdWVzIGRlcml2ZWQgZnJvbQogICAgICBhbmFseXNpcyB1c2luZyBDTVIgZGF0YSB3YXMgY29ycmVjdGVkIGZvciBtdWx0aXBsZSB0ZXN0aW5nIHVzaW5nIEZEUgogICAgICBjb3JyZWN0aW9uLiAmbHQ7YnImZ3Q7ICg2KSBOZW9wbGFzaWEgZGF0YSBvbiAzNiBzcGVjaWVzIGZyb20gdGhlIHNlY29uZAogICAgICBkYXRhc2V0IHdhcyBhbmFseXplZCB1c2luZyB0aGUgc2FtZSBwaHlsR0xNTSBzaW1wbGUgbW9kZWxzIHdpdGggb25lCiAgICAgIHZhcmlhYmxlIHBlciBtb2RlbCBhcyBiZWZvcmUsIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHBoeWxvZ2VueSBvZiB0aGUgMzYKICAgICAgbWFtbWFsIHNwZWNpZXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgdXBkYXRlZCBtYW1tYWxpYW4gc3VwZXItdHJlZS4gVGhlIHNhbWUKICAgICAgZGF0YSBmb3IgdGhlIGRpZmZlcmVudCBtb3JwaG8tcGh5c2lvbG9naWNhbCwgbGlmZSBoaXN0b3J5IGFuZCBsaWZlc3R5bGUKICAgICAgdHJhaXRzIGFzIGJlZm9yZSB3YXMgdXNlZCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIExvZyBCb2R5IE1hc3MgYW5kIExvZwogICAgICBNYXhpbXVtIExpZmVzcGFuIHdoZXJlIHRoZSBhbmFseXNlcyB3ZXJlIHBlcmZvcm1lZCB3aXRoIEFkdWx0IE1hc3MgKGtnKQogICAgICBhbmQgTWF4aW11bSBMaWZlc3BhbiAoZGF5cykgZnJvbSBCb2RkeSBldCBhbC4gVGhlIHRvdGFsIHNldCBvZiBwLXZhbHVlcwogICAgICBkZXJpdmVkIGZyb20gYW5hbHlzaXMgdXNpbmcgdGhpcyBkYXRhc2V0IHdhcyBjb3JyZWN0ZWQgZm9yIG11bHRpcGxlCiAgICAgIHRlc3RpbmcgdXNpbmcgRkRSIGNvcnJlY3Rpb24uIFN0YXRpc3RpY2FsIGFuYWx5c2VzIGZvciBkaWNob3RvbW91cwogICAgICB2YXJpYWJsZXMgd2VyZSBub3QgcGVyZm9ybWVkIG9uIHRoaXMgZGF0YSBzZXQgYmVjYXVzZSB0aGUgcG93ZXIgb2YgdGhlCiAgICAgIG1vZGVsIGlzIG5vdCBzdHJvbmcgZW5vdWdoIHRvIHRlc3Qgc21hbGwgc2FtcGxlcy4gJmx0O2JyJmd0OyBUaGUgYW5hbHlzZXMKICAgICAgb2YgdGhlIGFyY2hldHlwYWwgc3BlY2llcyB3aXRoIHRoZSBoaWdoZXN0IG9yIGxvd2VzdCBsZXZlbHMgb2YgbWFsaWduYW5jeQogICAgICBwcmV2YWxlbmNlIGZyb20gdGhlIHRoaXJkIGRhdGFiYXNlIHdlcmUgcGVyZm9ybWVkIHF1YWxpdGF0aXZlbHkuIEZvciBlYWNoCiAgICAgIGRpY2hvdG9tb3VzIHZhcmlhYmxlLCBhIGdyb3VwIHdhcyBqdWRnZWQgdG8gYmUgbW9yZSBlbnJpY2hlZCBpbiBzcGVjaWVzCiAgICAgIHdpdGggYSBoaWdoIHByZXZhbGVuY2Ugb2YgbWFsaWduYW5jaWVzIGlmIHdlIG9ic2VydmVkIGRpZmZlcmVuY2VzIGdyZWF0ZXIKICAgICAgdGhhbiA1MCUgaW4gZWFjaCBhbmQgZXZlcnkgb25lIG9mIHRoZSB0aHJlZSByYW5rcyAoY3V0LW9mZnMgMTAsIDE1LCBhbmQKICAgICAgMjApIGFuZCBvbmx5IGlmIHRoZXNlIGRpZmZlcmVuY2VzIGJlY2FtZSBsYXJnZXIgYXMgd2UgbmFycm93ZWQgdGhlIHJhbmsKICAgICAgKHdoaWNoIGlzIGV4cGVjdGVkIHRvIG9jY3VyIGlmIHRoZXJlIGlzIGEgZGlyZWN0IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGJvdGgKICAgICAgdmFyaWFibGVzKS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O01hdGhlbWF0aWNhbCBtb2RlbGluZyBhbmQKICAgICAgc2ltdWxhdGlvbiZsdDsvcCZndDsgJmx0O3AmZ3Q7V2UgZGV2ZWxvcGVkIGEgc3lzdGVtIG9mIG9yZGluYXJ5CiAgICAgIGRpZmZlcmVudGlhbCBlcXVhdGlvbnMgKE9ERXMpIHJlcHJlc2VudGluZyBhIGNvbnN1bWVyIHBvcHVsYXRpb24gb2YgYW55CiAgICAgIG1hbW1hbCBzcGVjaWVzIGRlcGVuZGluZyBvbiBpdHMgcmVzb3VyY2VzIGZvciBzdWJzaXN0ZW5jZS4mbHQ7L3AmZ3Q7CiAgICAgICZsdDtwJmd0O1RoZSBwb3B1bGF0aW9uIGlzIHN0YWdlLXN0cnVjdHVyZWQgYmFzZWQgb24gYWdlOiBwcmUtcmVwcm9kdWN0aXZlCiAgICAgIGp1dmVuaWxlcyAoJmx0O2VtJmd0O0ombHQ7L2VtJmd0OyksIHJlcHJvZHVjdGl2ZSBhZHVsdHMKICAgICAgKCZsdDtlbSZndDtBJmx0Oy9lbSZndDspLCBhbmQgc2VuaW9yIHBvc3QtcmVwcm9kdWN0aXZlIGFkdWx0cwogICAgICAoJmx0O2VtJmd0O1MmbHQ7L2VtJmd0OykuIFRoaXMgZW1waGFzaXplcyB0aGUgcmVwcm9kdWN0aXZlIGNhcGFjaXR5IG9mCiAgICAgIGluZGl2aWR1YWxzIGRlcGVuZGluZyBvbiBhZ2UuIFJlc291cmNlcyAoJmx0O2VtJmd0O1ImbHQ7L2VtJmd0OykgYXJlIGtlcHQKICAgICAgdW5zdHJ1Y3R1cmVkLCBhbmQgdGhlaXIgZHluYW1pY3MgYXJlIGdvdmVybmVkIGJ5IGEgcHJvZHVjdGlvbiBmdW5jdGlvbiBhbmQKICAgICAgYnkgY29uc3VtZXIgZm9yYWdpbmcgJmx0O2VtJmd0O2YmbHQ7L2VtJmd0Oy4gVGhlIGZ1bmN0aW9uIGRvZXMgbm90CiAgICAgIGluY3JlYXNlIHdpdGggdGhlIHJlc291cmNlIGRlbnNpdHkgJmx0O2VtJmd0O1ImbHQ7L2VtJmd0OyBhbmQgaXMgdGhlcmVmb3JlCiAgICAgIGluZGVwZW5kZW50IG9mIGl0LiBUaGlzIGFsbG93cyB0aGUgc3lzdGVtIHRvIHJlYWNoIGEgc3RlYWR5IHN0YXRlIG9mCiAgICAgIG5vbi1uZWdhdGl2ZSB2YWx1ZXMuIEZ1cnRoZXJtb3JlLCBjb25zdW1lciBmb3JhZ2luZyBpcyBvcmdhbml6ZWQgaW4KICAgICAgc3RhZ2Utc3BlY2lmaWMgZnVuY3Rpb25zLCAmbHQ7ZW0mZ3Q7ZiZsdDsvZW0mZ3Q7Jmx0O3N1YiZndDtKJmx0Oy9zdWImZ3Q7ICwKICAgICAgJmx0O2VtJmd0O2YmbHQ7L2VtJmd0OyZsdDtzdWImZ3Q7QSZsdDsvc3ViJmd0OyBhbmQKICAgICAgJmx0O2VtJmd0O2YmbHQ7L2VtJmd0OyZsdDtzdWImZ3Q7UyZsdDsvc3ViJmd0OyAoYWxsIG9mIHdoaWNoIGRlcGVuZCBvbgogICAgICAmbHQ7ZW0mZ3Q7UiZsdDsvZW0mZ3Q7KSBhc3NvY2lhdGVkIHdpdGggdGhlIGFnZSBvZiB0aGUgY29uc3VtZXIgZ3JvdXAuIFRoZQogICAgICByZXN1bHRpbmcgcmVzb3VyY2UgaW50YWtlIGlzIHRyYW5zbGF0ZWQgaW50byBwaHlzaW9sb2dpY2FsIHByb2Nlc3NlcyB3aXRoCiAgICAgIGFuIGVmZmljaWVuY3kgZ2l2ZW4gYnkgbm9uLW5lZ2F0aXZlIGFuZCBub24tZGVjcmVhc2luZyBmdW5jdGlvbnMKICAgICAgJmx0O2VtJmd0O2cmbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAoZmVydGlsaXR5IHJhdGUpIGFuZAogICAgICAmbHQ7ZW0mZ3Q7ZyZsdDtzdWImZ3Q7SiZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7IChyYXRlIG9mIGp1dmVuaWxlIHNleHVhbAogICAgICBtYXR1cmF0aW9uIHRvIGJlY29tZSByZXByb2R1Y3RpdmUgYWR1bHRzKS4gVGhlIHNlbmVzY2VuY2UgcHJvY2VzcywgZ2l2ZW4KICAgICAgYnkgJmx0O2VtJmd0O8+DICZhbXA7Z3Q7IDAmbHQ7L2VtJmd0OywgcmVwcmVzZW50cyBhIGZpeGVkIHF1YW50aXR5IGJ5IHdoaWNoCiAgICAgIGFkdWx0cyBhZ2UgaW50byBzZW5pb3IgaW5kaXZpZHVhbHMuIExpa2V3aXNlLCBhbGwgcGVyLWNhcGl0YSBtb3J0YWxpdHkKICAgICAgcmF0ZXMgKCZsdDtlbSZndDvOvCZsdDtzdWImZ3Q7SiZsdDsvc3ViJmd0OywKICAgICAgzrwmbHQ7c3ViJmd0O0EsJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsKICAgICAgJmx0O2VtJmd0O868Jmx0O3N1YiZndDtTJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDspIGFyZSBwb3NpdGl2ZSBjb25zdGFudHMuCiAgICAgIENoYW5nZXMgaW4gY2FuY2VyIG1vcnRhbGl0eSB3ZXJlIG1vZGVsZWQgdGhyb3VnaCB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICZsdDtlbSZndDvOvCZsdDtzdWImZ3Q7UyZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7IHBhcmFtZXRlci4gRGVwZW5kZW5jZSBvbgogICAgICByZXNvdXJjZXMgKCZsdDtlbSZndDtSJmx0Oy9lbSZndDspIGZvciB2aXRhbCBwcm9jZXNzZXMgKGUuZy4sIHRyYW5zaXRpb24KICAgICAgcmF0ZXMgYmV0d2VlbiBsaWZlIHN0YWdlcykgY29udmV5cyBub24tc29jaWFsIGludHJhc3BlY2lmaWMgY29tcGV0aXRpb24KICAgICAgYmV0d2VlbiBsaWZlIHN0YWdlcy4gRWZmZWN0cyBvZiBub24tc29jaWFsIGNvbXBldGl0aW9uIGFyZSBmb2N1c2VkIG9uCiAgICAgIGNoYW5nZXMgaW4gc3RhZ2UgZGVuc2l0eSBkaXN0cmlidXRpb24sIGFzIHRoZSBsYWNrIG9mIHJlc291cmNlcyBsaW1pdHMKICAgICAgcG9wdWxhdGlvbiBncm93dGggYnkgcHJldmVudGluZyBqdXZlbmlsZXMgZnJvbSByZWFjaGluZyBhZHVsdCBzdGFnZSBhbmQKICAgICAgdGhlIGxhdHRlciBmcm9tIGhhdmluZyBmdXJ0aGVyIG9mZnNwcmluZy4gU3VjaCBsaWZlIGhpc3RvcnkgcHJvY2Vzc2VzCiAgICAgIGdvdmVybiB0cmFuc2l0aW9uIHJhdGVzIGJldHdlZW4gbGlmZSBzdGFnZXMuIEluIHRoaXMgbW9kZWwsCiAgICAgICZsdDtlbSZndDvOsSZsdDsvZW0mZ3Q7IHJlcHJlc2VudHMgdGhlIHN0cmVuZ3RoIG9mIHNvY2lhbCBpbnRyYXNwZWNpZmljCiAgICAgIGNvb3BlcmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgb2YgJmx0O2VtJmd0O86xJmx0Oy9lbSZndDsgYXJlIGludGVycHJldGVkIGFzCiAgICAgIHN1cHBvcnRpdmUgb3IgY2FyaW5nIGludGVyYWN0aW9ucyBvZiBvbGRlciBpbmRpdmlkdWFscyB0b3dhcmRzIGp1dmVuaWxlcy4KICAgICAgSW5jcmVhc2luZyAmbHQ7ZW0mZ3Q7zrEmbHQ7L2VtJmd0OyB2YWx1ZXMgcmVzdWx0IGluIGEgZGVjcmVhc2Ugb2YganV2ZW5pbGUKICAgICAgbW9ydGFsaXR5LCB3aGlsZSAmbHQ7ZW0mZ3Q7zrEgPSAwJmx0Oy9lbSZndDsgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQKICAgICAgdGhlc2UgcGhlbm9tZW5hICgmbHQ7ZW0mZ3Q7zrEmbHQ7L2VtJmd0OyBjYW5ub3QgYWRvcHQgbmVnYXRpdmUgdmFsdWVzKS4KICAgICAgU2ltaWxhcmx5LCAmbHQ7ZW0mZ3Q7z4kgJmFtcDtndDsgMCZsdDsvZW0mZ3Q7IHN0YW5kcyBmb3IgdGhlIHN0cmVuZ3RoIG9mCiAgICAgIHNvY2lhbCBpbnRyYXNwZWNpZmljIGNvbXBldGl0aW9uIGJldHdlZW4gc2VuaW9ycyBhbmQgb3RoZXIgaW5kaXZpZHVhbHMuCiAgICAgIEluY3JlYXNpbmcgJmx0O2VtJmd0O8+JJmx0Oy9lbSZndDsgdmFsdWVzIHJlc3VsdCBpbiBoaWdoZXIganV2ZW5pbGUKICAgICAgbW9ydGFsaXR5IChFcS4gMWIpLiBJbiBvdXIgbW9kZWwsIHdoZW4gJmx0O2VtJmd0O86xJmx0Oy9lbSZndDsgYWRvcHRzCiAgICAgIHBvc2l0aXZlIHZhbHVlcywgd2Ugc2V0ICZsdDtlbSZndDvPiSZsdDsvZW0mZ3Q7IHRvIHplcm8sIGFuZCB2aWNlIHZlcnNhLgogICAgICBJbnRyYXNwZWNpZmljIGNvbXBldGl0aW9uIG1heSBhbHNvIGJlIGFzc29jaWF0ZWQgd2l0aCByZXNvdXJjZSBkZW5zaXR5LCBpbgogICAgICB3aGljaCBjYXNlICZsdDtlbSZndDvPgSAmYW1wO2d0OyAwJmx0Oy9lbSZndDsuIEFidW5kYW5jZSBvZiByZXNvdXJjZXMgKGhpZ2gKICAgICAgdmFsdWVzIG9mICZsdDtlbSZndDvPgSZsdDsvZW0mZ3Q7KSBkaW1pbmlzaGVzIHRoZSBlZmZlY3Qgb2YgZGlyZWN0CiAgICAgIGNvbXBldGl0aW9uLiBUaGUgc29jaWFsIHBhcmFtZXRlcnMgJmx0O2VtJmd0O86xJmx0Oy9lbSZndDsgYW5kCiAgICAgICZsdDtlbSZndDvPiSZsdDsvZW0mZ3Q7IGNvbnRyb2wgdGhlIG5vbi10cmFuc2l0aW9uYWwgcHJvY2Vzc2VzIG9mCiAgICAgIGNvbXBldGl0aXZlIGFuZCBjb29wZXJhdGl2ZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGxpZmUgc3RhZ2VzIG9mIHRoZQogICAgICBjb25zdW1lciBwb3B1bGF0aW9uLCByZXNwZWN0aXZlbHkuIEFsdGVybmF0aXZlIGNvb3BlcmF0aXZlIG9yIGNvbXBldGl0aXZlCiAgICAgIGludGVyYWN0aW9ucyBoYXZlIGJlZW4gYWxzbyBtb2RlbGVkIGluIHdoaWNoIHRoZSBwYXJhbWV0ZXIKICAgICAgJmx0O2VtJmd0O86xJmx0Oy9lbSZndDsgLyZsdDtlbSZndDvPiSZsdDsvZW0mZ3Q7IGlzIHRoZSBhYmlsaXR5IG9mIHNlbmlvcgogICAgICBpbmRpdmlkdWFscyAoJmx0O2VtJmd0O1MmbHQ7L2VtJmd0OykgdG8gaW5mbHVlbmNlIGp1dmVuaWxlCiAgICAgICgmbHQ7ZW0mZ3Q7SiZsdDsvZW0mZ3Q7KSBhY2Nlc3MgdG8gcmVzb3VyY2VzLCBqdXZlbmlsZSdzIGRldmVsb3BtZW50CiAgICAgIGludG8gYWR1bHRzICgmbHQ7ZW0mZ3Q7QSZsdDsvZW0mZ3Q7KSwgb3IgYWR1bHQncyByZXByb2R1Y3RpdmUKICAgICAgb3V0cHV0LiZsdDsvcCZndDsgJmx0O3AmZ3Q7QnkgbWF0aGVtYXRpY2FsIGFuYWx5c2lzIG9mIHRoZSBPREUgc3lzdGVtIHdlCiAgICAgIHdlcmUgYWJsZSB0byBmaW5kIG5lY2Vzc2FyeSBhbmQgc3VmZmljaWVudCBjb25kaXRpb25zIGZvciB0aGUgbW9kZWwgdG8KICAgICAgZGlzcGxheSBhIGh5ZHJhIGVmZmVjdCB3aGVuICZsdDtlbSZndDvOsSwgz4kgPSAwJmx0Oy9lbSZndDssIHRoYXQgaXMgdG8KICAgICAgZW5zdXJlIGFuIGluY3JlYXNlIGluIHRoZSBjYXJyeWluZyBjYXBhY2l0eSBvZiB0aGUgcG9wdWxhdGlvbgogICAgICAoJmx0O2VtJmd0O04mbHQ7L2VtJmd0OyA9ICZsdDtlbSZndDtKJmx0Oy9lbSZndDsgKyAmbHQ7ZW0mZ3Q7QSZsdDsvZW0mZ3Q7CiAgICAgICsgJmx0O2VtJmd0O1MmbHQ7L2VtJmd0OywgdGhlIHBvcHVsYXRpb24gZGVuc2l0eSBhdCBkeW5hbWljYWwgZXF1aWxpYnJpdW0pCiAgICAgIGFzIGEgcmVzdWx0IG9mIGluY3JlYXNpbmcgdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIKICAgICAgJmx0O2VtJmd0O868Jmx0O3N1YiZndDtTJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsgKGludGVycHJldGVkIGFzIGhpZ2hlcgogICAgICBDTVIpLiBJZiB0aGUgc2VuaW9yIHN0YWdlIGhhcyB0aGUgbGFyZ2VzdCBjb25zdW1pbmcgcmF0ZSB2YWx1ZSBhdAogICAgICBlcXVpbGlicml1bSwgdGhlbiwgZm9yIHRoaXMgbW9kZWwsIHRoZSBzcGVjaWZpYyBpbmNyZWFzZSBpbiBtb3J0YWxpdHkKICAgICAgYW1vbmcgc2VuaW9ycyB3aWxsIGxlYWQgdG8gdGhlIGh5ZHJhIGVmZmVjdC4gQ29udmVyc2VseSwgaWYgdGhlIHNlbmlvcgogICAgICBjb25zdW1wdGlvbiByYXRlIGlzIHRoZSBzbWFsbGVzdCBvbmUsIHRoZSBpbnR1aXRpdmUgZWZmZWN0IG9mIGEgZGVjcmVhc2luZwogICAgICBwb3B1bGF0aW9uIGVxdWlsaWJyaXVtIHdpdGggaW5jcmVhc2luZyBtb3J0YWxpdHkgb2YgcGFydCBvZiB0aGVpcgogICAgICBpbmRpdmlkdWFscyBlbnN1ZXMuIENvbnNpZGVyaW5nIHRoZSBwZXItY2FwaXRhIGNvbnN1bXB0aW9uIHJhdGUgb2Ygc2VuaW9yCiAgICAgIGFkdWx0cyBsb3dlciB0aGFuIHRoYXQgb2YgcmVwcm9kdWN0aXZlIGFkdWx0cyBidXQgaGlnaGVyIHRoYW4gdGhhdCBvZgogICAgICBqdXZlbmlsZXMgKCZsdDtlbSZndDtmJmx0O3N1YiZndDtBJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsKICAgICAgJmx0O2VtJmd0OyZhbXA7Z3Q7wqBmJmx0O3N1YiZndDtTJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsgKsKgJmFtcDtndDsqCiAgICAgICZsdDtlbSZndDsmbHQ7c3ViJmd0O0ombHQ7L3N1YiZndDsmbHQ7L2VtJmd0OykgZHVlIHRvIGFnZS1yZWxhdGVkIHNpemUKICAgICAgZGlmZmVyZW5jZXMsIHRoZW4gdGhlIGh5ZHJhIGVmZmVjdCBpcyBpbmRlZWQgY29uZGl0aW9uZWQgdXBvbiB0aGUgbGlmZQogICAgICBoaXN0b3J5IHRyYWl0IHBhcmFtZXRlciB2YWx1ZXMgKGF0IGVxdWlsaWJyaXVtKS4mbHQ7L3AmZ3Q7CiAgICAgICZsdDtwJmd0O0V4cHJlc3NlZCBpbiB0aGlzIHdheSwgd2UgY2FuIHNlZSB0aGF0IGEgbGFyZ2VyIGZlcnRpbGl0eSByYXRlCiAgICAgIHZhbHVlIGF0IHRoZSBzeXN0ZW0gZXF1aWxpYnJpdW0KICAgICAgJmx0O2VtJmd0O2cmbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsoZiZsdDtzdWImZ3Q7QSZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7CiAgICAgICZsdDtlbSZndDsoUiZsdDsvZW0mZ3Q7KSkgaXMgcG9zaXRpdmVseSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4aXN0ZW5jZSBvZiBhCiAgICAgIGh5ZHJhIGVmZmVjdCAoYWxsIGVsc2UgYmVpbmcgZXF1YWwpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Rm9yIHRoZSBwdXJwb3NlcwogICAgICBvZiBzaW11bGF0aW9ucywgd2UgZW1wbG95ZWQgYSBsaW5lYXJpemVkIHZlcnNpb24gb2YgdGhlIG1vZGVsIHRvCiAgICAgIG51bWVyaWNhbGx5IG9idGFpbiB0aW1lIGNvdXJzZXMgYnkgaW50ZWdyYXRpb24gd2l0aCBQeXRob24gKHVzaW5nIFNjaXB5LAogICAgICBOdW1weSwgUGFuZGFzIGFuZCBNYXRwbG90bGliKS4gRm9yIHRoaXMgZW5kLCB3ZSBjaG9zZSBhIHNlbWktY2hlbW9zdGF0CiAgICAgIG1vZGVsIGZvciB0aGUgcmVzb3VyY2VzIGR5bmFtaWNzLCB3aGVyZSB0aGUgcmVzb3VyY2UgcHJvZHVjdGlvbiBmdW5jdGlvbgogICAgICByZW1haW5zIGNvbnN0YW50LCAmbHQ7ZW0mZ3Q7cChSKSA9IM+AJmx0Oy9lbSZndDsuIFdlIGFsc28gY29uc2lkZXJlZCBsaW5lYXIKICAgICAgY29uc3VtaW5nIHJlbGF0aW9ucywgd2VpZ2h0ZWQgYnkgZGlmZmVyZW50IGNvbnN0YW50cyBhc3NvY2lhdGVkIHdpdGggYQogICAgICBjaGFyYWN0ZXJpc3RpYyBzaXplIGFuZCBhZ2Ugb2YgdGhlIGNvbnN1bWluZyBzdGFnZSwgdGhhdCBpcwogICAgICAmbHQ7ZW0mZ3Q7ZiZsdDtzdWImZ3Q7SiZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7ICZsdDtlbSZndDsoUikgPQogICAgICDOuiZsdDtzdWImZ3Q7SiZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7ICZsdDtlbSZndDtSLAogICAgICBmJmx0O3N1YiZndDtBJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsgJmx0O2VtJmd0OyhSKSA9CiAgICAgIM66Jmx0O3N1YiZndDtBJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDsgJmx0O2VtJmd0O1IsCiAgICAgIGYmbHQ7c3ViJmd0O1MmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7KFIpID0KICAgICAgzrombHQ7c3ViJmd0O1MmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7UiZsdDsvZW0mZ3Q7LiBUaGUgcmVzdWx0aW5nCiAgICAgIHJlc291cmNlIGludGFrZSBpcyBjb252ZXJ0ZWQgaW50byBwaHlzaW9sb2dpY2FsIHByb2Nlc3NlcyBvZiByZXByb2R1Y3Rpb24KICAgICAgYW5kIG1hdHVyYXRpb24gbGluZWFybHkgd2l0aCBhbiBlZmZpY2llbmN5IGdpdmVuIGJ5IHRoZQogICAgICAmbHQ7ZW0mZ3Q7zrImbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAoaS5lLiwKICAgICAgJmx0O2VtJmd0O2cmbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7KHgmbHQ7L2VtJmd0OykgPQogICAgICAmbHQ7ZW0mZ3Q7zrImbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7eCZsdDsvZW0mZ3Q7KSBhbmQKICAgICAgJmx0O2VtJmd0O/Cdm74mbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAoaS5lLiwKICAgICAgJmx0O2VtJmd0O2cmbHQ7c3ViJmd0O0ombHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyAmbHQ7ZW0mZ3Q7KHgmbHQ7L2VtJmd0OykgPQogICAgICAmbHQ7ZW0mZ3Q78J2bviZsdDtzdWImZ3Q7QSZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7ICZsdDtlbSZndDt4Jmx0Oy9lbSZndDspCiAgICAgIHBhcmFtZXRlcnMsIHJlc3BlY3RpdmVseSAoJmx0O2VtJmd0O/Cdm74mbHQ7c3ViJmd0O0EmbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OwogICAgICByZWZlcnMgdG8gdGhlIG1hdHVyYXRpb24gb2YganV2ZW5pbGVzIG9yaWdpbmF0aW5nIGZyb20gYWR1bHRzLCB0bwogICAgICBkaWZmZXJlbnRpYXRlIHRoZW0gZnJvbSB0aG9zZSBvcmlnaW5hdGluZyBmcm9tIHNlbmlvcnMsCiAgICAgICZsdDtlbSZndDvwnZu+Jmx0O3N1YiZndDtTJmx0Oy9zdWImZ3Q7Jmx0Oy9lbSZndDspLiZsdDsvcCZndDsKICAgICAgJmx0O3AmZ3Q7RXh0ZW5kZWQgdmVyc2lvbnMgb2YgdGhlc2UgbW9kZWxzIHRoYXQgYWxsb3cgb3RoZXIgcHJvY2Vzc2VzIHRvCiAgICAgIG9jY3VyLCBzdWNoIGFzIHJlcHJvZHVjdGlvbiBvZiBzZW5pb3IgYWR1bHRzLCBkaXN0aW5jdCBzdXJ2aXZhbCByYXRlcyBmb3IKICAgICAgdGhlIHNlbmlvciBib3JuIGp1dmVuaWxlcywgYW5kIGZpbmFsbHksIHRoZSBzcHJlYWQgb2YgYSBoaWdoZXIgQ01SIGdlbmV0aWMKICAgICAgdmFyaWFudCBvbiB0aGUgcG9wdWxhdGlvbiB3ZXJlIGFsc28gaW1wbGVtZW50ZWQuJmx0Oy9wJmd0OyAmbHQ7cCZndDtGb3IKICAgICAgdGhlIG1vZGVsIHdpdGggbWl4ZWQgcG9wdWxhdGlvbnMsIHdlIHN0YXJ0ZWQgd2l0aCBhIHBvcHVsYXRpb24gaW4KICAgICAgZXF1aWxpYnJpdW0gYmVmb3JlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIG9uY29nZW5pYyB2YXJpYW50IChib3RoCiAgICAgIHN1YnBvcHVsYXRpb25zIGhhZCB0aGUgc2FtZSBzZW5pb3IgbW9ydGFsaXR5IHJhdGVzCiAgICAgICZsdDtlbSZndDvOvCZsdDtzdWImZ3Q7UzEgPSZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7CiAgICAgICZsdDtlbSZndDvOvCZsdDtzdWImZ3Q7UzImbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OykuIFdlIHBlcmZvcm1lZCB0d28gdHlwZXMKICAgICAgb2YgdGVzdHMgaW4gdGhpcyBpbml0aWFsIHN0YXRlLiBBKSBXZSBpbnRyb2R1Y2VkIHRoZSBvbmNvZ2VuaWMgdmFyaWFudCBieQogICAgICBpbmNyZWFzaW5nICZsdDtlbSZndDvOvCZsdDtzdWImZ3Q7UzImbHQ7L3N1YiZndDsmbHQ7L2VtJmd0OyBpbiBoYWxmIG9mIHRoZQogICAgICBwb3B1bGF0aW9uIGluIGVxdWlsaWJyaXVtIChhIHByb2Nlc3Mgb2YgbWlncmF0aW9uIG9yIHN1YnBvcHVsYXRpb24KICAgICAgbWl4aW5nKSwgYW5kIHdlIGV2b2x2ZWQgdGhlIHN5c3RlbSB0byBpdHMgZXF1aWxpYnJpdW0gZnJlcXVlbmNpZXMuIEIpIFdlCiAgICAgIGludHJvZHVjZWQgdGhlIHZhcmlhbnQgYXMgYSBtdXRhdGlvbiAobG93IGluaXRpYWwgZnJlcXVlbmN5KSwgdHJhbnNmZXJyaW5nCiAgICAgIDUlIG9mIHRoZSBqdXZlbmlsZXMgZnJvbSBzdWJwb3B1bGF0aW9uIDEgdG8gc3VicG9wdWxhdGlvbiAyIChoaWdoZXIKICAgICAgJmx0O2VtJmd0O868Jmx0O3N1YiZndDtTMiZsdDsvc3ViJmd0OyZsdDsvZW0mZ3Q7KSBhbmQgbW9uaXRvcmVkIHJlbGF0aXZlCiAgICAgIGZyZXF1ZW5jeSB0aW1lIGV2b2x1dGlvbiBhcyB3ZWxsLsKgJmx0Oy9wJmd0OyAmbHQ7cCZndDtUaGUgZGlyZWN0IGZpdG5lc3MKICAgICAgb2YgYSBnZW5vdHlwZSAmbHQ7ZW0mZ3Q7R3gmbHQ7L2VtJmd0OyB3YXMgY2FsY3VsYXRlZCBhcwogICAgICAmbHQ7ZW0mZ3Q7TiZsdDtzdWImZ3Q7R3gmbHQ7L3N1YiZndDsodCkvTiZsdDtzdWImZ3Q7R3gmbHQ7L3N1YiZndDsoMCkmbHQ7L2VtJmd0Oywgd2hlcmUgJmx0O2VtJmd0O04mbHQ7c3ViJmd0O0d4Jmx0Oy9zdWImZ3Q7KHQpJmx0Oy9lbSZndDsgaXMgdGhlIGRlbnNpdHkgb3ZlciB0aW1lIG9mIHN1YnBvcHVsYXRpb24gd2l0aCB0aGUgZ2Vub3R5cGUgJmx0O2VtJmd0O0d4Jmx0Oy9lbSZndDssIGFuZCAmbHQ7ZW0mZ3Q7TigwKSZsdDsvZW0mZ3Q7IGlzIGl0cyBkZW5zaXR5IGF0IHRpbWUgJmx0O2VtJmd0O3QmbHQ7L2VtJmd0OyA9IDAuIFRoZSBpbmRpcmVjdCBmaXRuZXNzIG9mIHRoZSBtZXRhcG9wdWxhdGlvbiB3YXMgY2FsY3VsYXRlZCBhcyAmbHQ7ZW0mZ3Q7KE4mbHQ7c3ViJmd0O0cxJmx0Oy9zdWImZ3Q7KHQpK04mbHQ7c3ViJmd0O0cyJmx0Oy9zdWImZ3Q7KHQpKS8oTiZsdDtzdWImZ3Q7RzEmbHQ7L3N1YiZndDsoMCkrTiZsdDtzdWImZ3Q7RzImbHQ7L3N1YiZndDsoMCkpJmx0Oy9lbSZndDsuIFRoZSByZWxhdGl2ZSBmcmVxdWVuY3kgb2YgZWFjaCBnZW5lIHZhcmlhbnQgb3ZlciB0aW1lIHdhcyBjYWxjdWxhdGVkIGFzICZsdDtlbSZndDtOJmx0O3N1YiZndDtHeCZsdDsvc3ViJmd0Oyh0KS8oTiZsdDtzdWImZ3Q7RzEmbHQ7L3N1YiZndDsodCkrTiZsdDtzdWImZ3Q7RzImbHQ7L3N1YiZndDsodCkpJmx0Oy9lbSZndDsuJmx0Oy9wJmd0OyAmbHQ7cCZndDsmbHQ7c3Ryb25nJmd0O1JlZmVyZW5jZXMmbHQ7L3N0cm9uZyZndDsmbHQ7L3AmZ3Q7ICZsdDtwJmd0O08uIFZpbmN6ZSwgRi4gQ29sY2hlcm8sIEouLUYuIExlbWHDrnRyZSwgRC4gQS4gQ29uZGUsIFMuIFBhdmFyZCwgTS4gQmlldXZpbGxlLCBBLiBPLiBVcnJ1dGlhLCBCLiBVanZhcmksIEEuIE0uIEJvZGR5LCBDLiBDLiBNYWxleSwgQ2FuY2VyIHJpc2sgYWNyb3NzIG1hbW1hbHMuIE5hdHVyZSA2MDEsIDI2M+KAkzI2NyAoMjAyMikuJmx0Oy9wJmd0OyAmbHQ7cCZndDtBLiBNLiBCb2RkeSwgTC4gTS4gQWJlZ2dsZW4sIEEuIFAuIFBlc3NpZXIsIEEuIEFrdGlwaXMsIEouIEQuIFNjaGlmZm1hbiwgQy4gQy4gTWFsZXksIEMuIFdpdHRlLCBMaWZldGltZSBjYW5jZXIgcHJldmFsZW5jZSBhbmQgbGlmZSBoaXN0b3J5IHRyYWl0cyBpbiBtYW1tYWxzLiBFdm9sdXRpb24sIG1lZGljaW5lLCBhbmQgcHVibGljIGhlYWx0aCAyMDIwLCAxODfigJMxOTUgKDIwMjApLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Wi4gVC4gQ29tcHRvbiwgVy4gTWVsbG9uLCBWLiBLLiBIYXJyaXMsIFMuIFJ1cHAsIEQuIE1hbGxvLCBTLiBFLiBLYXBzZXRha2ksIE0uIFdpbG1vdCwgUi4gS2VubmluZ3RvbiwgSy4gTm9ibGUsIEMuIEJhY2l1LCBDYW5jZXIgcHJldmFsZW5jZSBhY3Jvc3MgdmVydGVicmF0ZXMuIENhbmNlciBkaXNjb3ZlcnkgMTUsIDIyN+KAkzI0NCAoMjAyNSkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtELiBMdWthcywgVC4gQ2x1dHRvbi1Ccm9jaywgTW9ub3RvY3kgYW5kIHRoZSBldm9sdXRpb24gb2YgcGx1cmFsIGJyZWVkaW5nIGluIG1hbW1hbHMuIEJlaGF2IEVjb2wgMzEsIDk0M+KAkzk0OSAoMjAyMCkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtGLiBKLiBQw6lyZXrigJBCYXJiZXLDrWEsIFMuIFNodWx0eiwgUi4gSS4gRHVuYmFyLCBFdmlkZW5jZSBmb3IgY29ldm9sdXRpb24gb2Ygc29jaWFsaXR5IGFuZCByZWxhdGl2ZSBicmFpbiBzaXplIGluIHRocmVlIG9yZGVycyBvZiBtYW1tYWxzLiBFdm9sdXRpb24gNjEsIDI4MTHigJMyODIxICgyMDA3KS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O0QuIEx1a2FzLCBULiBILiBDbHV0dG9uLUJyb2NrLCBUaGUgZXZvbHV0aW9uIG9mIHNvY2lhbCBtb25vZ2FteSBpbiBtYW1tYWxzLiBTY2llbmNlIDM0MSwgNTI24oCTNTMwICgyMDEzKS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O1cuIEQuIEtpc3NsaW5nLCBMLiBEYWxieSwgQy4gRmzDuGpnYWFyZCwgSi4gTGVub2lyLCBCLiBTYW5kZWwsIEMuIFNhbmRvbSwgSy4gVHLDuGplbHNnYWFyZCwgSi4gU3Zlbm5pbmcsIEVzdGFibGlzaGluZyBtYWNyb2Vjb2xvZ2ljYWwgdHJhaXQgZGF0YXNldHM6IGRpZ2l0YWxpemF0aW9uLCBleHRyYXBvbGF0aW9uLCBhbmQgdmFsaWRhdGlvbiBvZiBkaWV0IHByZWZlcmVuY2VzIGluIHRlcnJlc3RyaWFsIG1hbW1hbHMgd29ybGR3aWRlLiBFY29sb2d5IGFuZCBFdm9sdXRpb24gNCwgMjkxM+KAkzI5MzAgKDIwMTQpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7RC4gTGksIFIuIERpbm5hZ2UsIEwuIEEuIE5lbGwsIE0uIFIuIEhlbG11cywgQS4gUi4gSXZlcywgcGh5cjogYW4gUiBwYWNrYWdlIGZvciBwaHlsb2dlbmV0aWMgc3BlY2llc+KAkGRpc3RyaWJ1dGlvbiBtb2RlbGxpbmcgaW4gZWNvbG9naWNhbCBjb21tdW5pdGllcy4gTWV0aG9kcyBpbiBFY29sb2d5IGFuZCBFdm9sdXRpb24gMTEsIDE0NTXigJMxNDYzICgyMDIwKS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O1IuIEMuIFRlYW0sIFI6IEEgbGFuZ3VhZ2UgYW5kIGVudmlyb25tZW50IGZvciBzdGF0aXN0aWNhbCBjb21wdXRpbmcuIFIgRm91bmRhdGlvbiBmb3IgU3RhdGlzdGljYWwgQ29tcHV0aW5nLiAoTm8gVGl0bGUpICgyMDEzKS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O0EuIEYuIFp1dXIsIEUuIE4uIEllbm8sIE4uIEouIFdhbGtlciwgQS4gQS4gU2F2ZWxpZXYsIEcuIE0uIFNtaXRoLCBNaXhlZCBFZmZlY3RzIE1vZGVscyBhbmQgRXh0ZW5zaW9ucyBpbiBFY29sb2d5IHdpdGggUiAoU3ByaW5nZXIsIDIwMDkpdm9sLiA1NzQuJmx0Oy9wJmd0OyAmbHQ7cCZndDtYLiBBLiBIYXJyaXNvbiwgVXNpbmcgb2JzZXJ2YXRpb24tbGV2ZWwgcmFuZG9tIGVmZmVjdHMgdG8gbW9kZWwgb3ZlcmRpc3BlcnNpb24gaW4gY291bnQgZGF0YSBpbiBlY29sb2d5IGFuZCBldm9sdXRpb24uIFBlZXJKIDIsIGU2MTYgKDIwMTQpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Ri4gSGFydGlnLCBMLiBMb2hzZSwgREhBUk1hOiBSZXNpZHVhbCBEaWFnbm9zdGljcyBmb3IgSGllcmFyY2hpY2FsIChNdWx0aS1MZXZlbC9NaXhlZCkgUmVncmVzc2lvbiBNb2RlbHMuIDIwMjIuIFIgcGFja2FnZSB2ZXJzaW9uIDAuNCA2LiZsdDsvcCZndDsgJmx0O3AmZ3Q7TS4gRS4gQnJvb2tzLCBLLiBLcmlzdGVuc2VuLCBLLiBKLiBWYW4gQmVudGhlbSwgQS4gTWFnbnVzc29uLCBDLiBXLiBCZXJnLCBBLiBOaWVsc2VuLCBILiBKLiBTa2F1ZywgTS4gTWFjaGxlciwgQi4gTS4gQm9sa2VyLCBnbG1tVE1CIGJhbGFuY2VzIHNwZWVkIGFuZCBmbGV4aWJpbGl0eSBhbW9uZyBwYWNrYWdlcyBmb3IgemVyby1pbmZsYXRlZCBnZW5lcmFsaXplZCBsaW5lYXIgbWl4ZWQgbW9kZWxpbmcuIFRoZSBSIGpvdXJuYWwgOSwgMzc44oCTNDAwICgyMDE3KS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O1kuIEJlbmphbWluaSwgWS4gSG9jaGJlcmcsIENvbnRyb2xsaW5nIHRoZSBmYWxzZSBkaXNjb3ZlcnkgcmF0ZTogYSBwcmFjdGljYWwgYW5kIHBvd2VyZnVsIGFwcHJvYWNoIHRvIG11bHRpcGxlIHRlc3RpbmcuIEpvdXJuYWwgb2YgdGhlIFJveWFsIHN0YXRpc3RpY2FsIHNvY2lldHk6IHNlcmllcyBCIChNZXRob2RvbG9naWNhbCkgNTcsIDI4OeKAkzMwMCAoMTk5NSkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtPLiBSLiBCaW5pbmRhLUVtb25kcywgTS4gQ2FyZGlsbG8sIEsuIEUuIEpvbmVzLCBSLiBELiBNYWNQaGVlLCBSLiBNLiBCZWNrLCBSLiBHcmVueWVyLCBTLiBBLiBQcmljZSwgUi4gQS4gVm9zLCBKLiBMLiBHaXR0bGVtYW4sIEEuIFB1cnZpcywgVGhlIGRlbGF5ZWQgcmlzZSBvZiBwcmVzZW50LWRheSBtYW1tYWxzLiBOYXR1cmUgNDQ2LCA1MDfigJM1MTIgKDIwMDcpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7QS4gTS4gZGUgUm9vcywgV2hlbiBpbmRpdmlkdWFsIGxpZmUgaGlzdG9yeSBtYXR0ZXJzOiBjb25kaXRpb25zIGZvciBqdXZlbmlsZS1hZHVsdCBzdGFnZSBzdHJ1Y3R1cmUgZWZmZWN0cyBvbiBwb3B1bGF0aW9uIGR5bmFtaWNzLiBUaGVvcmV0aWNhbCBFY29sb2d5IDExLCAzOTfigJM0MTYgKDIwMTgpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7UC4gVmlydGFuZW4sIFIuIEdvbW1lcnMsIFQuIEUuIE9saXBoYW50LCBNLiBIYWJlcmxhbmQsIFQuIFJlZGR5LCBELiBDb3VybmFwZWF1LCBFLiBCdXJvdnNraSwgUC4gUGV0ZXJzb24sIFcuIFdlY2tlc3NlciwgSi4gQnJpZ2h0LCBTY2lQeSAxLjA6IGZ1bmRhbWVudGFsIGFsZ29yaXRobXMgZm9yIHNjaWVudGlmaWMgY29tcHV0aW5nIGluIFB5dGhvbi4gTmF0dXJlIG1ldGhvZHMgMTcsIDI2MeKAkzI3MiAoMjAyMCkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtDLiBSLiBIYXJyaXMsIEsuIEouIE1pbGxtYW4sIFMuIEouIFZhbiBEZXIgV2FsdCwgUi4gR29tbWVycywgUC4gVmlydGFuZW4sIEQuIENvdXJuYXBlYXUsIEUuIFdpZXNlciwgSi4gVGF5bG9yLCBTLiBCZXJnLCBOLiBKLiBTbWl0aCwgQXJyYXkgcHJvZ3JhbW1pbmcgd2l0aCBOdW1QeS4gTmF0dXJlIDU4NSwgMzU34oCTMzYyICgyMDIwKS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O8KgSi4gRC4gSHVudGVyLCBNYXRwbG90bGliOiBBIDJEIGdyYXBoaWNzIGVudmlyb25tZW50LiBDb21wdXRpbmcgaW4gc2NpZW5jZSAmYW1wO2FtcDsgZW5naW5lZXJpbmcgOSwgOTDigJM5NSAoMjAwNykuJmx0Oy9wJmd0OyAmbHQ7cCZndDtHLiBWYW4gUm9zc3VtLCBGLiBMLiBEcmFrZSwgUHl0aG9uL0MgQXBpIE1hbnVhbC1QeXRob24gMyAoQ3JlYXRlU3BhY2UsIDIwMDkpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Vy4gTWNLaW5uZXksIOKAnERhdGEgc3RydWN0dXJlcyBmb3Igc3RhdGlzdGljYWwgY29tcHV0aW5nIGluIFB5dGhvbi7igJ0gKDIwMTApdm9sLiA0NDUsIHBwLiA1MeKAkzU2LiZsdDsvcCZndDsKICAgIDwvZGVzY3JpcHRpb24+CiAgICA8ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJUZWNobmljYWxJbmZvIj4KICAgICAgIyBEYXRhIGZyb206IENvZXZvbHV0aW9uIG9mIGNvb3BlcmF0aXZlIGxpZmVzdHlsZXMgYW5kIHJlZHVjZWQgY2FuY2VyCiAgICAgIHByZXZhbGVuY2UgaW4gbWFtbWFscyBEYXRhc2V0IERPSToKICAgICAgWzEwLjUwNjEvZHJ5YWQueGd4ZDI1NHZoXShodHRwczovL2RvaS5vcmcvMTAuNTA2MS9kcnlhZC54Z3hkMjU0dmgpICMjCiAgICAgIERlc2NyaXB0aW9uIG9mIHRoZSBkYXRhIGFuZCBmaWxlIHN0cnVjdHVyZSBEYXRhc2V0MS5jc3YgQ2FuY2VyIG1vcnRhbGl0eQogICAgICByaXNrIChDTVIpIHdhcyBjYWxjdWxhdGVkIGZvciBlYWNoIHNwZWNpZXMgYXMgdGhlIHByb3BvcnRpb24gb2YKICAgICAgY2FuY2VyLXJlbGF0ZWQgZGVhdGhzIGFtb25nIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcywgYmFzZWQgb24KICAgICAgcG9zdC1tb3J0ZW0gcGF0aG9sb2dpY2FsIHJlY29yZHMgKG4gPSAxMSw4NDAsIFZpbmN6ZSBldCBhbC4sIDIwMjIpLiBUaGlzCiAgICAgIGluZm9ybWF0aW9uIHdhcyBzb3VyY2VkIGZyb20gU3BlY2llczM2MCBhbmQgVGhlIFpvb2xvZ2ljYWwgSW5mb3JtYXRpb24KICAgICAgTWFuYWdlbWVudCBTeXN0ZW0uIFRoZSBkYXRhc2V0IGluaXRpYWxseSBpbmNsdWRlZCAxOTEgc3BlY2llcywgYnV0CiAgICAgIERhc3l1cm9pZGVzIGJ5cm5laSB3YXMgcmVtb3ZlZCBiZWNhdXNlIG9mIGl0cyBleHRyZW1lbHkgaGlnaCBDTVIsIHdoaWNoCiAgICAgIHdhcyBjb25zaWRlcmVkIGFuIG91dGxpZXIuIFRoaXMgQ01SIGRhdGEgd2VyZSBnYXRoZXJlZCBmcm9tIG1hbW1hbHMgaW4KICAgICAgem9vcyB3b3JsZHdpZGUsIHByb3ZpZGluZyBoaWdoLXJlc29sdXRpb24gY2F1c2Utb2YtZGVhdGggZGF0YS4gQ01SIHdhcwogICAgICBlc3RpbWF0ZWQgZnJvbSBuZW9wbGFzdGljIHNhbXBsZXMgdGhhdCBzdWJzdGFudGlhbGx5IGNvbnRyaWJ1dGVkIHRvIHRoZQogICAgICBhbmltYWwgZGVhdGgsIGFzIGNvbmZpcm1lZCBieSBuZWNyb3BzaWVzLiBUaGUgQ01SIGVzdGltYXRlZCBmb3IgZXZlcnkKICAgICAgc3BlY2llcyBpbmNsdWRlZCBpbiB0aGlzIGRhdGFzZXQgaXMgYmFzZWQgb24gbW9yZSB0aGFuIDIwIG5lY3JvcHNpZXMgcGVyCiAgICAgIHNwZWNpZXMgKG1lYW4gPSA2MikuIERhdGFzZXQyLmNzdiBQcmV2YWxlbmNlIG9mIG5lb3BsYXNpYSB3YXMgZXN0aW1hdGVkIGFzCiAgICAgIHRoZSBwcmV2YWxlbmNlIG9mIGFueSBuZW9wbGFzbSBpbiBtYW1tYWxpYW4gc3BlY2llcyBmcm9tIFNhbiBEaWVnb3Mgem9vcwogICAgICAoQm9kZHkgZXQgYWwuLCAyMDIwKS4gVGhlIGRhdGFzZXQgaW5pdGlhbGx5IGluY2x1ZGVkIDM3IHNwZWNpZXMsIGJ1dAogICAgICBMb3hvZG9udGEgYWZyaWNhbmEgd2FzIHJlbW92ZWQgYmVjYXVzZSBvZiBpbmNvbmdydWVuY2VzIHdpdGggb3RoZXIKICAgICAgcHVibGljYXRpb25zIHJlcG9ydGluZyBsb3dlciBjYW5jZXIgcmF0ZXMuIFRoZSBwcmV2YWxlbmNlIG9mIG5lb3BsYXNpYQogICAgICBlc3RpbWF0ZWQgZm9yIHRoZSBzcGVjaWVzIGluY2x1ZGVkIGluIHRoaXMgZGF0YXNldCBpcyBiYXNlZCBvbiBhbiBhdmVyYWdlCiAgICAgIG9mIDIzIG5lY3JvcHNpZXMgcGVyIHNwZWNpZXMuIFZ1bHBlcyB6ZXJkYSwgUHVtYSBjb25jb2xvciwgQ2FuaXMKICAgICAgbWVzb21lbGFzLCBMYW1hIGdsYW1hLCBMeWNhb24gcGljdHVzLCBUYXJzaXVzIHN5cmljaHRhLCBNYWNyb3B1cyBydWZ1cywKICAgICAgYW5kIEVxdXVzIGFzaW51cyBhcmUgdGhlIG9ubHkgc3BlY2llcyB3aXRoIGxlc3MgdGhhbiAxMCBuZWNyb3BzaWVzCiAgICAgIGFuYWx5emVkLiBEYXRhc2V0My5jc3ZcIFwgV2UgdXNlZCBhIHJlY2VudGx5IGN1cmF0ZWQgYW5kIHN0YW5kYXJkaXplZAogICAgICBkYXRhc2V0IG9mIG1hbGlnbmFuY3kgcHJldmFsZW5jZSBhY3Jvc3MgbWFtbWFsaWFuIHNwZWNpZXMgdGhhdCBpcyBiYXNlZCBvbgogICAgICBtb3JlIHRoYW4gMjAgbmVjcm9wc2llcyBwZXIgc3BlY2llcyAoQ29tcHRvbiBldCBhbC4sIDIwMjUpLiBUaGlzIHJlc291cmNlCiAgICAgIGluY2x1ZGVzIGFkZGl0aW9uYWwgc3BlY2llcyBub3QgY29uc2lkZXJlZCBpbiB0aGUgb3RoZXIgZGF0YXNldHMuIEluIHRoaXMKICAgICAgYW5hbHlzaXMsIGEgbGlzdCBvZiBhcmNoZXR5cGFsIHNwZWNpZXMgd2l0aCB2ZXJ5IGhpZ2ggb3IgdmVyeSBsb3cKICAgICAgbWFsaWduYW5jeSBwcmV2YWxlbmNlIHdhcyBjb25zdHJ1Y3RlZDogQWxsIHNwZWNpZXMgd2VyZSByYW5rZWQgYWNjb3JkaW5nCiAgICAgIHRvIHRoZWlyIG1hbGlnbmFuY3kgcHJldmFsZW5jZSwgYW5kIHRocmVlIHN1YnNldHMgd2VyZSBkZWZpbmVkIHVzaW5nCiAgICAgIGRpZmZlcmVudCBjdXRvZmZzOiByYW5rMTAsIHJhbmsxNSwgYW5kIHJhbmsyMCwgZWFjaCBpbmNsdWRpbmcgdGhlIDEwLCAxNSwKICAgICAgb3IgMjAgc3BlY2llcyB3aXRoIHRoZSBoaWdoZXN0IGFuZCBsb3dlc3QgbWFsaWduYW5jeSBwcmV2YWxlbmNlLAogICAgICByZXNwZWN0aXZlbHkuIFRoZXNlIHJhbmtlZCBncm91cHMgY29uc2lzdGluZyBvZiAyMCwgMzAgYW5kIDQwIHNwZWNpZXMsCiAgICAgIHJlc3BlY3RpdmVseSwgd2VyZSB0aGVuIHVzZWQgZm9yIGRvd25zdHJlYW0gY29tcGFyYXRpdmUgYW5hbHlzZXMuIFRoZQogICAgICB0b3RhbCBkYXRhc2V0IGNvbXByaXNlZCAxMDIgbWFtbWFsaWFuIHNwZWNpZXMuIERhdGFzZXQ0LmNzdiBUaGlzIGlzIGFuCiAgICAgIGFjY2Vzb3J5IGRhdGFzZXQsIHRoYXQgaXMgYSBzdW1tYXJ5IG9mIHRoZSBtYWluIGNvbnRlbnQgb2YgRGF0YXNldCAxLiBUaGlzCiAgICAgIGRhdGFzZXQgKGRhdGFzZXQgNCkgd2FzIGVtcGxveWVkIHRvIHBlcmZvcm0gYW4gb3JkZXIgbGV2ZWwgYW5hbHlzaXMsIG1lYW4KICAgICAgQ01SIGZvciBhbGwgdGhlIHNwZWNpZXMgYmVsb25naW5nIHRvIGVhY2ggb3JkZXIgd2l0aCBhdCBsZWFzdCAxNSBzcGVjaWVzCiAgICAgIChBcnRpb2RhY3R5bGEsIENhcm5pdm9yYSwgUHJpbWF0ZXMsIGFuZCBSb2RlbnRpYSkgd2FzIGNhbGN1bGF0ZWQuICMjIwogICAgICBGaWxlcyBhbmQgdmFyaWFibGVzICMjIyMgRmlsZTogRGF0YXNldF8xLmNzdiB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IHwgVmFyaWFibGUgfCBEZWZpbml0aW9uIHwgRGF0YSB0eXBlIHwgUmVmZXJlbmNlIHwgfCBzcGVjaWVzIHwgQmlub21pYWwgc2NpZW50aWZpYyBuYW1lIG9mIHRoZSBzcGVjaWVzLiB8IENoYXJhY3RlciB8IFtodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTg2LTAyMS0wNDIyNC01wqApIHwgfCBvcmRlciB8IE9yZGVyIG5hbWUgb2YgdGhlIHNwZWNpZXMuIHwgQ2hhcmFjdGVyIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMjEtMDQyMjQtNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoCkgfCB8IENNUiB8IEFkdWx0IGNhbmNlciBtb3J0YWxpdHkgcmlzay4gVGFrZXMgdmFsdWVzIGJldHdlZW4gMCBhbmQgMS4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMjEtMDQyMjQtNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoCkgfCB8IG5cX2RlYWRcX2luZCB8IFRvdGFsIG51bWJlciBvZiBkZWFkIGluZGl2aWR1YWxzIHBlciBzcGVjaWVzIGluIHRoZSBkYXRhYmFzZS4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMjEtMDQyMjQtNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoCkgfCB8IGtub3duXF9kZWF0aHMgfCBUb3RhbCBudW1iZXIgb2YgZGVhZCBpbmRpdmlkdWFscyB3aG9zZSBwYXRob2xvZ2ljYWwgcmVjb3JkcyB3ZXJlIGlkZW50aWZpZWQuIHwgTnVtZXJpYyB8IFtodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTg2LTAyMS0wNDIyNC01wqApIHwgfCBuXF9uZW9wbGFzaWEgfCBUb3RhbCBudW1iZXIgb2YgbmVvcGxhc2lhIGNhc2VzIHJlY29yZGVkIGluIGVhY2ggc3BlY2llcywgdGhhdCB3ZXJlIGNvbnNpZGVyZWQgdG8gYmUgc2lnbmlmaWNhbnQgY29udHJpYnV0b3JzIHRvIHRoZSBkZWF0aCBvZiB0aGUgYW5pbWFscy4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMjEtMDQyMjQtNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoCkgfCB8IG5cX25vXF9uZW9wbGFzaWEgfCBUb3RhbCBudW1iZXIgb2YgZGVhZCBpbmRpdmlkdWFscyB3aXRoIHBhdGhvbG9naWNhbCByZWNvcmRzICgia25vd25cX2RlYXRocyIpIHN1YnN0cmFjdGluZyB0aGUgdG90YWwgbnVtYmVyIG9mIG5lb3BsYXNpYSBjYXNlcyAoIm5cX25lb3BsYXNpYSIpIHwgTnVtZXJpYyB8IFtodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTg2LTAyMS0wNDIyNC01wqApIHwgfCBsaWZlXF9leHBlY3RhbmN5XF9kIHwgQXZlcmFnZSBudW1iZXIgb2YgZGF5cyBsaXZlZCBhZnRlciBzZXh1YWwgbWF0dXJpdHkgd2FzIHJlYWNoZWQsIGkuZS4gcmVtYWluaW5nIGxpZmUgZXhwZWN0YW5jeS4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3M0MTU4Ni0wMjEtMDQyMjQtNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zNDE1ODYtMDIxLTA0MjI0LTXCoCkgfCB8IGJvZHlcX21hc3NcX2tnIHwgQXZlcmFnZSBmZW1hbGUgYW5kIG1hbGUgYm9keSBtYXNzIGluIGtpbG9ncmFtcy4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL25hci9na3gxMDQywqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL25hci9na3gxMDQywqApIHwgfCBtZXRhYm9saWNcX3JhdGUgfCBNZXRhYm9saWMgcmF0ZSBvZiB0aGUgc3BlY2llcyBpbiBXYXR0cyAoVykuIHwgTnVtZXJpYyB8IFtodHRwczovL2RvaS5vcmcvMTAuMTAwMi9lY3kuMzM0NF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDIvZWN5LjMzNDQpIHwgfCBsaXR0ZXJcX3NpemVcX24gfCBOdW1iZXIgb2Ygb2Zmc3ByaW5nIGJvcm4gcGVyIGxpdHRlciBwZXIgZmVtYWxlLiB8IE51bWVyaWMgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDIvZWN5LjMzNDRdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDAyL2VjeS4zMzQ0KSB8IHwgZ2VzdGF0aW9uXF9sZW5ndGhcX2QgfCBEdXJhdGlvbiBvZiBmZXRhbCBncm93dGggaW4gZGF5cy4gfCBOdW1lcmljIHwgLSB8IHwgdG90YWxcX2xpdHRlcnMgfCBUb3RhbCBMaXR0ZXJzIGJvcm4gcGVyIGZlbWFsZSBpbiBhIGxpZmV0aW1lLiBDYWxjdWxhdGVkIGFzIHRoZSBudW1iZXIgb2YgbGl0dGVycyBwZXIgeWVhciBtdWx0aXBsaWVkIGJ5IGxpdHRlciBzaXplIGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBtYXhpbXVtIGxvbmdldml0eSBhbmQgZmVtYWxlIHNleHVhbCBtYXR1cml0eSBmb3IgZWFjaCBzcGVjaWVzLiB8IE51bWVyaWMgfCAtIHwgfCBsaXR0ZXJzIHwgQSBjbGFzc2lmaWNhdGlvbiB2YXJpYWJsZSB0aGF0IGRpc3Rpbmd1aXNoZXMgc3BlY2llcyBiYXNlZCBvbiB0aGVpciBsaXR0ZXIgc2l6ZS4gSXQgY2F0ZWdvcml6ZXMgc3BlY2llcyBhcyBlaXRoZXIgIm1vbm90b2NvdXMiICh0eXBpY2FsbHkgcHJvZHVjaW5nIG9uZSBvZmZzcHJpbmcgcGVyIGxpdHRlcikgb3IgInBvbHl0b2NvdXMiIChwcm9kdWNpbmcgbW9yZSB0aGFuIG9uZSBvZmZzcHJpbmcgcGVyIGxpdHRlciksIHdpdGggYSBsaXR0ZXIgc2l6ZSB0aHJlc2hvbGQgb2YgMS41LiB8IEJpbmFyeSAobW9ub3RvY291cywgcG9seXRvY291cykgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvYmVoZWNvL2FyYWEwMzldKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2JlaGVjby9hcmFhMDM5KSB8IHwgYnJlZWRpbmdcX3N5c3RlbSB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIGZlbWFsZXMgb2NjdXB5IGEgc2hhcmVkIHRlcnJpdG9yeSBvciBzZXBhcmF0ZSB0ZXJyaXRvcmllcyBkdXJpbmcgdGhlIGJyZWVkaW5nIHNlYXNvbi4gSXQgaXMgY2F0ZWdvcml6ZWQgYXMgZWl0aGVyIFNpbmd1bGFyQnJlZWRlciAoZmVtYWxlcyBpbiBzZXBhcmF0ZSB0ZXJyaXRvcmllcykgb3IgUGx1cmFsQnJlZWRlciAoZmVtYWxlcyBpbiBhIGNvbW1vbiB0ZXJyaXRvcnkpLiB8IEJpbmFyeSAoU2luZ3VsYXJCcmVlZGVyLCBQbHVyYWxCcmVlZGVyKSB8IFtodHRwczovL2RvaS5vcmcvMTAuMTA5My9iZWhlY28vYXJhYTAzOV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvYmVoZWNvL2FyYWEwMzkpIHwgfCBwYXRlcm5hbFxfY2FyZSB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIG1hbGVzIHByb3ZpZGUgY2FyZSBvciBhc3Npc3RhbmNlIHRvIG9mZnNwcmluZy4gSXQgaXMgY2F0ZWdvcml6ZWQgYXMgZWl0aGVyICJZZXMiIChtYWxlcyBwcm92aWRlIHBhdGVybmFsIGNhcmUpIG9yICJObyIgKG1hbGVzIGRvIG5vdCBwcm92aWRlIHBhdGVybmFsIGNhcmUpLiB8IEJpbmFyeSAoWWVzLCBObykgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjExMTEvai4xNTU4LTU2NDYuMjAwNy4wMDIyOS54wqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMTExL2ouMTU1OC01NjQ2LjIwMDcuMDAyMjkueMKgKSAvIFtodHRwczovL2RvaS5vcmcvMTAuMTEyNi9zY2llbmNlLjEyMzg2NzfCoF0oaHR0cHM6Ly9kb2kub3JnLzEwLjExMjYvc2NpZW5jZS4xMjM4Njc3wqApIHwgfCBncm91cFxfbGl2aW5nIHwgQSB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgYSBzcGVjaWVzIGxpdmVzIGluIHNvY2lhbCBncm91cHMgd2l0aCByZWd1bGFyIGludGVyYWN0aW9ucyBhbW9uZyBpbmRpdmlkdWFscy4gSXQgaXMgY2F0ZWdvcml6ZWQgYXMgZWl0aGVyICJ5ZXMiICh0aGUgc3BlY2llcyBlbmdhZ2VzIGluIGdyb3VwIGxpdmluZykgb3IgIm5vIiAodGhlIHNwZWNpZXMgZG9lcyBub3QpLiB8IEJpbmFyeSAoeWVzLCBubykgfCAKICAgICAgPGJyLz4KICAgICAgIHwgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgfCBcKlZhbHVlcyByZWZlcnJlZCB0byBhcyBOQSBtZWFuIGRhdGEgaXMgbm90IGF2YWlsYWJsZSB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8ICMjIyMgRmlsZTogRGF0YXNldF8yLmNzdiB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IHwgVmFyaWFibGUgfCBEZWZpbml0aW9uIHwgRGF0YSB0eXBlIHwgUmVmZXJlbmNlIHwgfCBzcGVjaWVzIHwgQmlub21pYWwgc2NpZW50aWZpYyBuYW1lIG9mIHRoZSBzcGVjaWVzLiB8IENoYXJhY3RlciB8IFtodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvZW1waC9lb2FhMDE1wqApIHwgfCBjb21tb25cX25hbWUgfCBXaWRlbHkgcmVjb2duaXplZCBvciB2ZXJuYWN1bGFyIG5hbWUgb2YgYSBzcGVjaWVzLCB1c2VkIHRvIGlkZW50aWZ5IGl0IGluIGV2ZXJ5ZGF5IGxhbmd1YWdlLCBhcyBvcHBvc2VkIHRvIGl0cyBzY2llbnRpZmljIG5hbWUuIHwgQ2hhcmFjdGVyIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IG9yZGVyIHwgT3JkZXIgbmFtZSBvZiB0aGUgc3BlY2llcy4gfCBDaGFyYWN0ZXIgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvZW1waC9lb2FhMDE1wqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgKSB8IHwgZmFtaWx5IHwgRmFtaWx5IG5hbWUgb2YgdGhlIHNwZWNpZXMuIHwgQ2hhcmFjdGVyIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IGdlbnVzIHwgR2VudXMgbmFtZSBvZiB0aGUgc3BlY2llcy4gfCBDaGFyYWN0ZXIgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvZW1waC9lb2FhMDE1wqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgKSB8IHwgdG90YWxcX25lY3JvcHNpZXMgfCBUb3RhbCBudW1iZXIgb2YgaW5kaXZpZHVhbHMgbmVjcm9wc2llZC4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IGFueVxfbmVvcGxhc2lhIHwgVG90YWwgbnVtYmVyIG9mIG5lb3BsYXNpYSBkaWFnbm9zZWQgKG1hbGlnbmFudCBhbmQgYmVuaWduKS4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IGFueVxfbm9cX25lb3BsYXNpYSB8IFRvdGFsIG51bWJlciBvZiBpbmRpdmlkdWFscyBuZWNyb3BzaWVkICgidG90YWxcX25lY3JvcHNpZXMiKSBzdWJzdHJhY3RpbmcgdGhlIHRvdGFsIG51bWJlciBvZiBuZW9wbGFzaWEuICgiYW55XF9uZW9wbGFzaWEiKSB8IE51bWVyaWMgfCAtIHwgfCBhbnlcX21hbGlnbmFudCB8IE51bWJlciBvZiBtYWxpZ25hbnQgbmVvcGxhc2lhIGRpYWdub3NlZC4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IHByb3BcX25lb3BsYXNpYSB8IFByb3BvcnRpb24gb2YgbnVtYmVyIG9mIG5lb3BsYXNpYSBkaWFnbm9zZWQgKGFueVxfbmVvcGxhc2lhKSBhbmQgdGhlIHRvdGFsIG51bWJlciBvZiBuZWNyb3BzaWVzICh0b3RhbFxfbmVjcm9wc2llcykgfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IHByb3BcX21hbGlnbmFudCB8IFByb3BvcnRpb24gb2YgbnVtYmVyIG9mIG5lb3BsYXNpYSBkaWFnbm9zZWQgKGFueVxfbWFsaWduYW50KSBhbmQgdGhlIHRvdGFsIG51bWJlciBvZiBuZWNyb3BzaWVzICh0b3RhbFxfbmVjcm9wc2llcykgfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2VtcGgvZW9hYTAxNcKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9lbXBoL2VvYWEwMTXCoCkgfCB8IGFkdWx0XF9tYXNzXF9rZyB8IEJvZHkgbWFzcyBvZiBhbiBhZHVsdCBpbmRpdmlkdWFsIGluIGtpbG9ncmFtcy4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDAyL2VjeS4zMzQ0wqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDAyL2VjeS4zMzQ0wqApIHwgfCBtZXRhYm9saWNcX3JhdGUgfCBNZXRhYm9saWMgcmF0ZSBvZiB0aGUgc3BlY2llcyBpbiBXYXR0cyAoVykuIHwgTnVtZXJpYyB8IFtodHRwczovL2RvaS5vcmcvMTAuMTA5My9uYXIvZ2t4MTA0MsKgXShodHRwczovL2RvaS5vcmcvMTAuMTA5My9uYXIvZ2t4MTA0MsKgKSB8IHwgbWF4XF9saWZlc3BhblxfeXIgfCBNYXhpbXVtIHJlcG9ydGVkIGFnZSBhdCBkZWF0aCBmb3IgdGhlIHNwZWNpZXMgaW4geWVhcnMuIHwgTnVtZXJpYyB8IFtodHRwczovL2RvaS5vcmcvMTAuMTAwMi9lY3kuMzM0NF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDIvZWN5LjMzNDQpIHwgfCBnZXN0YXRpb25cX2xlbmd0aFxfZCB8IER1cmF0aW9uIG9mIGZldGFsIGdyb3d0aCBpbiBkYXlzLiB8IE51bWVyaWMgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDIvZWN5LjMzNDRdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDAyL2VjeS4zMzQ0KSB8IHwgbGl0dGVyXF9zaXplXF9uIHwgTnVtYmVyIG9mIG9mZnNwcmluZyBib3JuIHBlciBsaXR0ZXIgcGVyIGZlbWFsZS4gfCBOdW1lcmljIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMDAyL2VjeS4zMzQ0XShodHRwczovL2RvaS5vcmcvMTAuMTAwMi9lY3kuMzM0NCkgfCB8IGxpdHRlcnMgfCBBIGNsYXNzaWZpY2F0aW9uIHZhcmlhYmxlIHRoYXQgZGlzdGluZ3Vpc2hlcyBzcGVjaWVzIGJhc2VkIG9uIHRoZWlyIGxpdHRlciBzaXplLiBJdCBjYXRlZ29yaXplcyBzcGVjaWVzIGFzIGVpdGhlciAibW9ub3RvY291cyIgKHR5cGljYWxseSBwcm9kdWNpbmcgb25lIG9mZnNwcmluZyBwZXIgbGl0dGVyKSBvciAicG9seXRvY291cyIgKHByb2R1Y2luZyBtb3JlIHRoYW4gb25lIG9mZnNwcmluZyBwZXIgbGl0dGVyKSwgd2l0aCBhIGxpdHRlciBzaXplIHRocmVzaG9sZCBvZiAxLjUuIHwgQmluYXJ5IChtb25vdG9jb3VzLCBwb2x5dG9jb3VzKSB8IC0gfCB8IHRvdGFsXF9saXR0ZXJzIHwgVG90YWwgTGl0dGVycyBib3JuIHBlciBmZW1hbGUgaW4gYSBsaWZldGltZS4gQ2FsY3VsYXRlZCBhcyB0aGUgbnVtYmVyIG9mIGxpdHRlcnMgcGVyIHllYXIgbXVsdGlwbGllZCBieSBsaXR0ZXIgc2l6ZSBhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWF4aW11bSBsb25nZXZpdHkgYW5kIGZlbWFsZSBzZXh1YWwgbWF0dXJpdHkgZm9yIGVhY2ggc3BlY2llcy4gfCBOdW1lcmljIHwgLSB8IHwgYnJlZWRpbmdcX3N5c3RlbSB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIGZlbWFsZXMgb2NjdXB5IGEgc2hhcmVkIHRlcnJpdG9yeSBvciBzZXBhcmF0ZSB0ZXJyaXRvcmllcyBkdXJpbmcgdGhlIGJyZWVkaW5nIHNlYXNvbi4gSXQgaXMgY2F0ZWdvcml6ZWQgYXMgZWl0aGVyIFNpbmd1bGFyQnJlZWRlciAoZmVtYWxlcyBpbiBzZXBhcmF0ZSB0ZXJyaXRvcmllcykgb3IgUGx1cmFsQnJlZWRlciAoZmVtYWxlcyBpbiBhIGNvbW1vbiB0ZXJyaXRvcnkpLiB8IEJpbmFyeSAoU2luZ3VsYXJCcmVlZGVyLCBQbHVyYWxCcmVlZGVyKSB8IFtodHRwczovL2RvaS5vcmcvMTAuMTA5My9iZWhlY28vYXJhYTAzOV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvYmVoZWNvL2FyYWEwMzkpIHwgfCBwYXRlcm5hbFxfY2FyZSB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIG1hbGVzIHByb3ZpZGUgY2FyZSBvciBhc3Npc3RhbmNlIHRvIG9mZnNwcmluZy4gSXQgaXMgY2F0ZWdvcml6ZWQgYXMgZWl0aGVyICJZZXMiIChtYWxlcyBwcm92aWRlIHBhdGVybmFsIGNhcmUpIG9yICJObyIgKG1hbGVzIGRvIG5vdCBwcm92aWRlIHBhdGVybmFsIGNhcmUpLiB8IEJpbmFyeSAoWWVzLCBObykgfCBbaHR0cHM6Ly9kb2kub3JnLzEwLjEwOTMvYmVoZWNvL2FyYWEwMzldKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDkzL2JlaGVjby9hcmFhMDM5KSB8IHwgZ3JvdXBcX2xpdmluZyB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BlY2llcyBsaXZlcyBpbiBzb2NpYWwgZ3JvdXBzIHdpdGggcmVndWxhciBpbnRlcmFjdGlvbnMgYW1vbmcgaW5kaXZpZHVhbHMuIEl0IGlzIGNhdGVnb3JpemVkIGFzIGVpdGhlciAieWVzIiAodGhlIHNwZWNpZXMgZW5nYWdlcyBpbiBncm91cCBsaXZpbmcpIG9yICJubyIgKHRoZSBzcGVjaWVzIGRvZXMgbm90KS4gfCBCaW5hcnkgKHllcywgbm8pIHwgW2h0dHBzOi8vZG9pLm9yZy8xMC4xMTExL2ouMTU1OC01NjQ2LjIwMDcuMDAyMjkueMKgXShodHRwczovL2RvaS5vcmcvMTAuMTExMS9qLjE1NTgtNTY0Ni4yMDA3LjAwMjI5LnjCoCkgLyBbaHR0cHM6Ly9kb2kub3JnLzEwLjExMjYvc2NpZW5jZS4xMjM4Njc3wqBdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2L3NjaWVuY2UuMTIzODY3N8KgKSB8IHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IHwgXCpWYWx1ZXMgcmVmZXJyZWQgdG8gYXMgTkEgbWVhbiBkYXRhIGlzIG5vdCBhdmFpbGFibGUgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCAjIyMjIEZpbGU6IERhdGFzZXRfMy5jc3YgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IAogICAgICA8YnIvPgogICAgICAgfCB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IHwgVmFyaWFibGUgfCBEZWZpbml0aW9uIHwgRGF0YSB0eXBlIHwgfCBjb21tb25cX25hbWUgfCBXaWRlbHkgcmVjb2duaXplZCBvciB2ZXJuYWN1bGFyIG5hbWUgb2YgYSBzcGVjaWVzLCB1c2VkIHRvIGlkZW50aWZ5IGl0IGluIGV2ZXJ5ZGF5IGxhbmd1YWdlLCBhcyBvcHBvc2VkIHRvIGl0cyBzY2llbnRpZmljIG5hbWUuIHwgQ2hhcmFjdGVyIHwgfCBzcGVjaWVzIHwgQmlub21pYWwgc2NpZW50aWZpYyBuYW1lIG9mIHRoZSBzcGVjaWVzLiB8IENoYXJhY3RlciB8IHwgbWFsaWduYW5jeVxfcHJldmFsZW5jZSB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BlY2llcyBoYXMgcmVwb3J0ZWQgbG93IG9yIGhpZ2ggY2FuY2VyIGluY2lkZW5jZS4gVGhpcyBjbGFzc2lmaWNhdGlvbiBpcyBiYXNlZCBvbiBhIHJldmlldyBvZiBhdmFpbGFibGUgbGl0ZXJhdHVyZSBhbmQgcmVmbGVjdHMgdGhlIGZyZXF1ZW5jeSBvZiBjYW5jZXIgb2NjdXJyZW5jZXMgd2l0aGluIHRoYXQgc3BlY2llcy4gfCBOdW1lcmljIHwgfCBtYWxpZ25hbmN5XF9wcmV2YWxlbmNlXF9yZWZlcmVuY2UgfCBBIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHRoZSBzb3VyY2Ugb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIG1hbGlnbmFuY3kgcHJldmFsZW5jZS4gfCBDaGFyYWN0ZXIgfCB8IGFkdWx0XF9tYXNzXF9rZyB8IEJvZHkgbWFzcyBvZiBhbiBhZHVsdCBpbmRpdmlkdWFsIGluIGtpbG9ncmFtcy4gfCBOdW1lcmljIHwgfCBsb2dcX2FkdWx0XF9tYXNzXF9rZyB8IFRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGUgYWR1bHQgbWFzcyBpbiBraWxvZ3JhbXMuIHwgTnVtZXJpYyB8IHwgbG9nXF9hZHVsdFxfbWFzc1xfa2dcX2NhdGVnb3J5IHwgQ2F0ZWdvcml6YXRpb24gb2YgYWR1bHQgbWFzcyBiYXNlZCBvbiBsb2dhcml0aG1pYyB2YWx1ZXM6ICZsdDsxIChzbWFsbCkgb3IgJmd0OzEgKGxhcmdlKS4gfCBCaW5hcnkgKCZsdDsxLCAmZ3Q7MSkgfCB8IG1heFxfbGlmZXNwYW5cX2QgfCBNYXhpbXVtIHJlcG9ydGVkIGFnZSBhdCBkZWF0aCBmb3IgdGhlIHNwZWNpZXMgaW4gZGF5cy4gfCBOdW1lcmljIHwgfCBsb2dcX21heFxfbGlmZXNwYW5cX2QgfCBUaGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgdGhlIG1heGltdW0gbGlmZXNwYW4gaW4gZGF5cy4gfCBOdW1lcmljIHwgfCBsb2dcX21heFxfbGlmZXNwYW5cX2RcX2NhdGVnb3J5IHwgQ2F0ZWdvcml6YXRpb24gb2YgbGlmZXNwYW4gYmFzZWQgb24gbG9nYXJpdGhtaWMgdmFsdWVzOiAmbHQ7OSAoc2hvcnQtbGl2ZWQpIG9yICZndDs5IChsb25nLWxpdmVkKS4gfCBCaW5hcnkgKCZsdDs5LCAmZ3Q7OSkgfCB8IGxpdHRlclxfc2l6ZSB8IE51bWJlciBvZiBvZmZzcHJpbmcgYm9ybiBwZXIgbGl0dGVyIHBlciBmZW1hbGUuIHwgTnVtZXJpYyB8IHwgbWV0YWJvbGljXF9yYXRlXF9XIHwgTWV0YWJvbGljIHJhdGUgb2YgdGhlIHNwZWNpZXMgaW4gV2F0dHMgKFcpLiB8IE51bWVyaWMgfCB8IGxvZ1xfbWV0YWJvbGljXF9yYXRlXF9XIHwgVGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIHRoZSBtZXRhYm9saWMgcmF0ZSBpbiBXYXR0cy4gfCBOdW1lcmljIHwgfCBsb2dcX21ldGFib2xpY1xfcmF0ZVxfV1xfY2F0ZWdvcnkgfCBDYXRlZ29yaXphdGlvbiBvZiBtZXRhYm9saWMgcmF0ZSBiYXNlZCBvbiBsb2dhcml0aG1pYyB2YWx1ZXM6ICZsdDsxIChsb3cpIG9yICZndDsxIChoaWdoKS4gfCBCaW5hcnkgKCZsdDsxLCAmZ3Q7MSkgfCB8IG1ldGFib2xpY1xfcmF0ZVxfcmVmZXJlbmNlIHwgQSByZWZlcmVuY2UgaW5kaWNhdGluZyB0aGUgc291cmNlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBtZXRhYm9saWMgcmF0ZS4gfCBDaGFyYWN0ZXIgfCB8IGJyZWVkaW5nXF9zeXN0ZW0gfCBBIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciBmZW1hbGVzIG9jY3VweSBhIHNoYXJlZCB0ZXJyaXRvcnkgb3Igc2VwYXJhdGUgdGVycml0b3JpZXMgZHVyaW5nIHRoZSBicmVlZGluZyBzZWFzb24uIEl0IGlzIGNhdGVnb3JpemVkIGFzIGVpdGhlciBTaW5ndWxhckJyZWVkZXIgKGZlbWFsZXMgaW4gc2VwYXJhdGUgdGVycml0b3JpZXMpIG9yIFBsdXJhbEJyZWVkZXIgKGZlbWFsZXMgaW4gYSBjb21tb24gdGVycml0b3J5KS4gfCBCaW5hcnkgKFNpbmd1bGFyQnJlZWRlciwgUGx1cmFsQnJlZWRlcikgfCB8IGxpdHRlcnMgfCBBIGNsYXNzaWZpY2F0aW9uIHZhcmlhYmxlIHRoYXQgZGlzdGluZ3Vpc2hlcyBzcGVjaWVzIGJhc2VkIG9uIHRoZWlyIGxpdHRlciBzaXplLiBJdCBjYXRlZ29yaXplcyBzcGVjaWVzIGFzIGVpdGhlciAibW9ub3RvY291cyIgKHR5cGljYWxseSBwcm9kdWNpbmcgb25lIG9mZnNwcmluZyBwZXIgbGl0dGVyKSBvciAicG9seXRvY291cyIgKHByb2R1Y2luZyBtb3JlIHRoYW4gb25lIG9mZnNwcmluZyBwZXIgbGl0dGVyKSwgd2l0aCBhIGxpdHRlciBzaXplIHRocmVzaG9sZCBvZiAxLjUuIHwgQmluYXJ5IChtb25vdG9jb3VzLCBwb2x5dG9jb3VzKSB8IHwgZ3JvdXBcX2xpdmluZyB8IEEgdmFyaWFibGUgaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BlY2llcyBsaXZlcyBpbiBzb2NpYWwgZ3JvdXBzIHdpdGggcmVndWxhciBpbnRlcmFjdGlvbnMgYW1vbmcgaW5kaXZpZHVhbHMuIEl0IGlzIGNhdGVnb3JpemVkIGFzIGVpdGhlciAieWVzIiAodGhlIHNwZWNpZXMgZW5nYWdlcyBpbiBncm91cCBsaXZpbmcpIG9yICJubyIgKHRoZSBzcGVjaWVzIGRvZXMgbm90KS4gfCBCaW5hcnkgKHllcywgbm8pIHwgfCBncm91cFxfbGl2aW5nXF9yZWZlcmVuY2UgfCBBIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHRoZSBzb3VyY2Ugb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGdyb3VwIGxpdmluZyBiZWhhdmlvci4gfCBDaGFyYWN0ZXIgfCB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IHwgXCpWYWx1ZXMgcmVmZXJyZWQgdG8gYXMgTkEgbWVhbiBkYXRhIGlzIG5vdCBhdmFpbGFibGUgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8ICMjIyMgRmlsZTogRGF0YXNldF80LmNzdiB8IAogICAgICA8YnIvPgogICAgICAgfCAKICAgICAgPGJyLz4KICAgICAgIHwgCiAgICAgIDxici8+CiAgICAgICB8IHwgOi0tLS0tLS0tLS0tLS0gfAogICAgICA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLSB8IHwgVmFyaWFibGUgfCBEZWZpbml0aW9uIHwgRGF0YSB0eXBlIHwgfCBvcmRlciB8IE9yZGVyIG5hbWUgb2YgdGhlIHNwZWNpZXMgZ3JvdXBlZCBmb3IgdGhlIGFuYWx5c2lzLiBPbmx5IG9yZGVycyB3aXRoIG1vcmUgdGhhbiAxNSBzcGVjaWVzIHdlcmUgaW5jbHVkZWQuIHwgQ2hhcmFjdGVywqAgfCB8IENNUlxfbWVhbiB8IE1lYW4gb2YgdGhlIEFkdWx0IGNhbmNlciBtb3J0YWxpdHkgcmlzay4gfCBOdW1lcmljIHwgfCBDTVJcX21lZGlhbiB8IE1lZGlhbiBvZiB0aGUgQWR1bHQgY2FuY2VyIG1vcnRhbGl0eSByaXNrLiB8IE51bWVyaWMgfCB8IGluZGV4XF9nbCB8IFJhdGlvIGJldHdlZW4gdGhlIHNwZWNpZXMgd2l0aCBhbmQgd2l0aG91dCBHcm91cCBMaXZpbmcgd2l0aGluIGVhY2ggb3JkZXIuIHwgTnVtZXJpYyB8IHwgaW5kZXhcX2xpdHRlcnMgfCBSYXRpbyBiZXR3ZWVuIG1vbm90b2NvdXMgYW5kIHBvbHl0b2NvdXMgc3BlY2llcyB3aXRoaW4gZWFjaCBvcmRlci4gfCBOdW1lcmljIHwgfCBpbmRleFxfQlMgfCBSYXRpbyBiZXR3ZWVuIHBsdXJhbCBhbmQgc2luZ3VsYXIgYnJlZWRpbmcgc3BlY2llcyB3aXRoaW4gZWFjaCBvcmRlci4gfCBOdW1lcmljIHwgfCBuXF9jYW5jZXIgfCBUb3RhbCBudW1iZXIgb2YgbmVvcGxhc2lhIGNhc2VzIHJlY29yZGVkIGluIGVhY2ggb3JkZXIsIHRoYXQgd2VyZSBjb25zaWRlcmVkIHRvIGJlIHNpZ25pZmljYW50IGNvbnRyaWJ1dG9ycyB0byB0aGUgZGVhdGggb2YgdGhlIGFuaW1hbHMuIHwgTnVtZXJpYyB8IHwgblxfbm9cX2NhbmNlciB8IFRvdGFsIG51bWJlciBvZiBkZWFkIGluZGl2aWR1YWxzIHdpdGggcGF0aG9sb2dpY2FsIHJlY29yZHMgKCJuXF90b3RhbCIpIHN1YnN0cmFjdGluZyB0aGUgdG90YWwgbnVtYmVyIG9mIG5lb3BsYXNpYSBjYXNlcyAoIm5cX2NhbmNlciIpLiB8IE51bWVyaWMgfCB8IG5cX3RvdGFsIHwgVG90YWwgbnVtYmVyIG9mIGRlYWQgaW5kaXZpZHVhbHMgaW4gdGhlIG9yZGVyIHdob3NlIHBhdGhvbG9naWNhbCByZWNvcmRzIHdlcmUgaWRlbnRpZmllZC4gfCBOdW1lcmljIHwgKiBTQ1JJUFRfQ29ldm9sdXRpb25fb2ZfY29vcGVyYXRpdmVfbGlmZXN0eWxlc19hbmRfcmVkdWNlZF9jYW5jZXJfcHJldmFsZW5jZV9pbl9tYW1tYWxzLlIgU3RhdGlzdGljYWwgYW5hbHlzaXMgY29kZSBmb3IgY29ycmVsYXRpb25zIGJldHdlZW4gY2FuY2VyIHByZXZhbGVuY2UgYW5kIG1vcnRhbGl0eSByaXNrIHdpdGggZGlmZmVyZW50IHBoZW5vdHlwaWMgdHJhaXRzIENvcnJlbGF0aW9ucyBvZiBDTVIgYW5kIG5lb3BsYXNpYSB3aXRoIHRoZSBkaWZmZXJlbnQgdHJhaXRzIHdlcmUgcGVyZm9ybWVkIHVzaW5nIHBoeWxHTE1NcyB1c2luZyBwaHlyIGluIFIgU3RhdGlzdGljYWwgYW5kIFByb2dyYW1taW5nIEVudmlyb25tZW50LCB2ZXJzaW9uIDQuMi4zLiBQcmV2aW91cyBpbnZlc3RpZ2F0aW9ucyB3aXRoIHRoZSBzcGVjaWVzIGluY2x1ZGVkIGluIHRoZXNlIGRhdGFzZXRzIHNob3dlZCB0aGF0IHRoZXJlIGlzIGEgcGh5bG9nZW5ldGljIHNpZ25hbCBmb3IgQ01SIGFuZCBuZW9wbGFzaWEgYW1vbmcgbWFtbWFsIHNwZWNpZXMgKFZpbmN6ZSBldCBhbC4gMjAyMikuIFRvIGNvbnRyb2wgZm9yIHBoeWxvZ2VuZXRpYyByZWxhdGVkbmVzcyBhbW9uZyBzcGVjaWVzLCB3ZSBwZXJmb3JtZWQgcGh5bEdMTU1zIHVzaW5nIHRoZSBvcmlnaW5hbCByb2J1c3QgcGh5bG9nZW55IGJ5IFZpbmN6ZSBldCBhbC4gKDIwMjIpIChjb25zZW5zdXNfcGh5bG9nZW55LnRyZSkuIHBoeWxHTE1NcyB1c2VkIGEgYmlub21pYWwgZXJyb3IgZGlzdHJpYnV0aW9uIGFuZCBhIGxvZ2l0IGxpbmsgZnVuY3Rpb24sIGFkZGluZyBhIHJhbmRvbSB2YXJpYWJsZSBhdCB0aGUgbGV2ZWwgb2Ygb2JzZXJ2YXRpb25zIHRvIGF2b2lkIG92ZXJkaXNwZXJzaW9uIHByb2JsZW1zLiBUaGlzIHJhbmRvbSB2YXJpYWJsZSwgY2FsbGVkIOKAnHNwZWNpZXMs4oCdIHdhcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBpZGVudGl0eSBvZiBlYWNoIHNwZWNpZXMgYW5hbHl6ZWQuIE5vdCBhbGwgYW5hbHlzZXMgdXNpbmcgQ01SIGRhdGEgd2VyZSBwZXJmb3JtZWQgd2l0aCB0aGUgZnVsbCBzZXQgb2Ygc3BlY2llcywgc2luY2UgdGhlIGluZm9ybWF0aW9uIGZvciBzb21lIG9mIHRoZSB0cmFpdHMgYW5hbHl6ZWQgd2FzIG5vdCBhdmFpbGFibGUgZm9yIGFsbCBzcGVjaWVzLiBBbGwgbW9kZWxzcGVyZm9ybWVkIHdlcmUgZXZhbHVhdGVkIGZvciBvdmVyZGlzcGVyc2lvbiBhbmQgemVybyBpbmZsYXRpb24gdXNpbmcgREhBUk1hIHBhY2thZ2UuIEFsbCBtb2RlbCB0ZXN0cyBzaG93ZWQgUCAmZ3Q7IDAuMDUsIHdoaWNoIGluZGljYXRlcyB0aGF0IG5vIGZpdCBwcm9ibGVtcyB3ZXJlIGRldGVjdGVkLCBhbmQgdGhlcmVmb3JlLCB1bmxpa2UgcHJldmlvdXMgaW52ZXN0aWdhdGlvbnMsIHdlIGNob3NlIHRvIHBlcmZvcm0gdGhlIGFuYWx5c2VzIHVzaW5nIHNwZWNpZXMgd2l0aCBib3RoIHplcm8gYW5kIG5vbnplcm8gQ01SLiAqKk1vZGVscyB1c2VkOioqICoqRm9yIERhdGFzZXQxLmNzdioqIDFcKSBBbiBhZGRpdGl2ZSBwaHlsR0xNTSB3YXMgcGVyZm9ybWVkIHdpdGggQ01SIGFzIHJlc3BvbnNlIHZhcmlhYmxlIGFuZCBsb2cgdHJhbnNmb3JtZWQgY29udGludW91cyB2YXJpYWJsZXMgb2YgY292YXJpYXRlIHRyYWl0cyBib2R5IG1hc3MsIGxpdHRlciBzaXplLCBsaWZlIGV4cGVjdGFuY3ksIGFuZCBnZXN0YXRpb24gbGVuZ3RoLiBMb2ctIHRyYW5zZm9ybWVkIHZhcmlhYmxlcyB3ZXJlIHVzZWQgYXMgZml4ZWQgZWZmZWN0cywgYXMgd2VsbCBhcyBzcGVjaWVzIGFzIGEgcmFuZG9tIHZhcmlhYmxlIGF0IHRoZSBvYnNlcnZhdGlvbiBsZXZlbCAoIG4gPSAxOTApLiBUaGUgcGh5c2lvbG9naWNhbCB0cmFpdCBtZXRhYm9saWMgcmF0ZSB3YXMgYWxzbyBsb2cgdHJhbnNmb3JtZWQgYW5kIGFuYWx5emVkIGluIGEgc2VwYXJhdGUgbW9kZWwgdG8gYXZvaWQgY29sbGluZWFyaXR5IHByb2JsZW1zIHdpdGggbG9nIGJvZHkgbWFzcyAobiA9IDUyKS4gMlwpIEEgc2ltcGxlIG1vZGVsIGZvciBkaWNob3RvbW91cyB2YXJpYWJsZSBsaXR0ZXJzIHdhcyBwZXJmb3JtZWQgKG4gPSAxOTApIHRvIHRlc3QgZm9yIENNUiBkaWZmZXJlbmNlcyBpbiBtb25vdG9jb3VzIG9yIHBvbHl0b2NvdXMgc3BlY2llcy4gVGhpcyBkaWNob3RvbW91cyB2YXJpYWJsZSB3YXMgdGVzdGVkIGluIGEgbW9kZWwgd2l0aCBjb250aW51b3VzIHZhcmlhYmxlcyBsb2cgbGlmZSBleHBlY3RhbmN5IGFuZCBsb2cgYm9keSBtYXNzIHRvIGV2YWx1YXRlIGludGVyYWN0aW9uICggbiA9IDE5MCkuIDNcKSBGb3IgbGlmZXN0eWxlIGRpY2hvdG9tb3VzIHZhcmlhYmxlcyBncm91cCBsaXZpbmcsIGJyZWVkaW5nIHN5c3RlbSwgYW5kIHBhdGVybmFsIGNhcmUsIHdlIHBlcmZvcm1lZCBzZXBhcmF0ZSBhbmFseXNlcyB0byBhdm9pZCBjb2xsaW5lYXJpdHkgcHJvYmxlbXMsIGluIGFsbCBjYXNlcyB3aXRoIENNUiBhcyB0aGUgcmVzcG9uc2UgdmFyaWFibGUsIGFzIHdlbGwgYXMgc3BlY2llcyBhcyBhIHJhbmRvbSB2YXJpYWJsZSBhdCB0aGUgbGV2ZWwgb2Ygb2JzZXJ2YXRpb25zLiBGb3IgZ3JvdXAgbGl2aW5nIGFuZCBicmVlZGluZyBzeXN0ZW0gdmFyaWFibGVzLCB3ZSBhbHNvIHBlcmZvcm1lZCBtb2RlbHMgd2l0aCB0aGUgY29udGludW91cyB2YXJpYWJsZXMgKGxvZyBib2R5IG1hc3MsIGxvZyBsaXR0ZXIgc2l6ZSwgYW5kIGxvZyBsaWZlIGV4cGVjdGFuY3kpIGFuZCB0ZXN0ZWQgdGhlIGludGVyYWN0aW9uIHdpdGggbG9nIGJvZHkgbWFzcyAoIG4gPSAxNDYpLiA0XCkgQW5pbWFsIGRpZXQgYXMgYSBkaWNob3RvbW91cyB2YXJpYWJsZSB3YXMgYW5hbHl6ZWQgdXNpbmcgQ01SIGFzIHRoZSByZXNwb25zZSB2YXJpYWJsZSwgYXMgd2VsbCBhcyBzcGVjaWVzIGFzIGEgcmFuZG9tIHZhcmlhYmxlIGF0IHRoZSBsZXZlbCBvZiBvYnNlcnZhdGlvbnMuIFRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGFuaW1hbCBkaWV0IGFuZCBDTVIgd2FzIGFsc28gYXNzZXNzZWQgaW4gcmVsYXRpb24gdG8gdGhlIG90aGVyIGxpZmUgaGlzdG9yeSBhbmQgbGlmZXN0eWxlIHRyYWl0cyB1c2luZyBmb3VyIGRpZmZlcmVudCBtb2RlbHMgdGhhdCBpbmNsdWRlIHNwZWNpZXMgb2YgYW5pbWFsIGRpZXQgYW5kIGdyb3VwIGxpdmluZyAoZ3JlZ2FyaW91cy9zb2xpdGFyeSkgYW5kIGJyZWVkaW5nIHN5c3RlbSAoc2luZ3VsYXIvcGx1cmFsKS4gKipGb3IgdGhlIERhdGFzZXQyLmNzdioqIE5lb3BsYXNpYSBkYXRhIG9uIDM2IHNwZWNpZXMgZnJvbSB0aGUgc2Vjb25kIGRhdGFzZXQgd2VyZSBhbmFseXplZCB1c2luZyB0aGUgc2FtZSBwaHlsR0xNTSBzaW1wbGUgbW9kZWxzIHdpdGggb25lIHZhcmlhYmxlIHBlciBtb2RlbCBhcyBiZWZvcmUgYnV0IHdpdGggYSBkaWZmZXJlbnQgcGh5bG9nZW55IG9mIHRoZSAzNiBtYW1tYWwgc3BlY2llcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSB1cGRhdGVkIG1hbW1hbGlhbiBzdXBlcnRyZWUgKHRyZWVfZm9yX2RhdGFiYXNlMikuIFRoZSBzYW1lIGRhdGEgZm9yIHRoZSBkaWZmZXJlbnQgbW9ycGhvcGh5c2lvbG9naWNhbCwgbGlmZSBoaXN0b3J5LCBhbmQgbGlmZXN0eWxlIHRyYWl0cyBhcyBiZWZvcmUgd2VyZSB1c2VkLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgbG9nIGJvZHkgbWFzcyBhbmQgbG9nIG1heGltdW0gbGlmZXNwYW4gd2hlcmUgdGhlIGFuYWx5c2VzIHdlcmUgcGVyZm9ybWVkIHdpdGggYWR1bHQgbWFzcyAoaW4ga2lsb2dyYW1zKSBhbmQgbWF4aW11bSBsaWZlc3BhbiAoaW4gZGF5cykgZnJvbSBCb2RkeSBldCBhbC4gKDIwMjApLiAqKkZvciBEYXRhc2V0NC5jc3YqKiBUbyBwZXJmb3JtIGFuIG9yZGVyIGxldmVsIGFuYWx5c2lzLCBtZWFuIENNUiBmb3IgYWxsIHRoZSBzcGVjaWVzIGJlbG9uZ2luZyB0byBlYWNoIG9yZGVyIHdpdGggYXQgbGVhc3QgMTUgc3BlY2llcyAoaS5lLiwgQXJ0aW9kYWN0eWxhLCBDYXJuaXZvcmEsIFByaW1hdGVzLCBhbmQgUm9kZW50aWEpIHdhcyBjYWxjdWxhdGVkLiBXZSBhbHNvIGJ1aWx0IGluZGV4ZXMgZm9yIGVhY2ggdHJhaXQgb2YgaW50ZXJlc3Q6IChpKSBsaXR0ZXIgaW5kZXgsIHJhdGlvIGJldHdlZW4gbW9ub3RvY291cyBhbmQgcG9seXRvY291cyBzcGVjaWVzIHdpdGhpbiBlYWNoIG9yZGVyOyAoaWkpIGdyb3VwIGxpdmluZyBpbmRleCwgcmF0aW8gYmV0d2VlbiB0aGUgc3BlY2llcyB3aXRoIGFuZCB3aXRob3V0IGdyb3VwIGxpdmluZyB3aXRoaW4gZWFjaCBvcmRlcjsgYW5kIChpaWkpIGJyZWVkaW5nIHN5c3RlbSBpbmRleCwgcmF0aW8gYmV0d2VlbiBwbHVyYWwgYW5kIHNpbmd1bGFyIGJyZWVkaW5nIHNwZWNpZXMgd2l0aGluIGVhY2hvcmRlci4gVGhlIGFuYWx5c2lzIHdhcyBwZXJmb3JtZWQgd2l0aCBHTE1zIHVzaW5nIGEgYmlub21pYWwgZXJyb3IgZGlzdHJpYnV0aW9uIGFuZCBhIGxvZ2l0IGxpbmsgZnVuY3Rpb24sIHVzaW5nIHRoZSBnbG1tVE1CIHBhY2thZ2UuIFRoZSB0b3RhbCBzZXQgb2YgUCB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFuYWx5c2lzIHVzaW5nIENNUiBkYXRhIHdhcyBjb3JyZWN0ZWQgZm9yIG11bHRpcGxlIHRlc3RpbmcgdXNpbmcgRkRSIGNvcnJlY3Rpb24uIFRoZSB0b3RhbCBzZXQgb2YgUCB2YWx1ZXMgZGVyaXZlZCBmcm9tIGFuYWx5c2lzIHVzaW5nIGVhY2ggZGF0YXNldCB3YXMgY29ycmVjdGVkIGZvciBtdWx0aXBsZSB0ZXN0aW5nIHVzaW5nIEZEUiBjb3JyZWN0aW9uLiAqKkZvciBNYXRoX01vZGVsc19TaW11bGF0aW9uX1Jlc3VsdHMuaXB5bmIqKiBBbGwgY29kZSB1c2VkIHRvIHNpbXVsYXRlIHBvcHVsYXRpb24gZHluYW1pY3MgaW5jbHVkaW5nIHBhcmFtZXRlcnMgY2hvc2VuIGFuZCBnZW5lcmF0aW9uIG9mIHBsb3RzIGFyZSBpbiB0aGlzIHB5dGhvbiBub3RlYm9vayBmaWxlLiBSZWFkaW5nIGFuZCBleGVjdXRpbmcgdGhpcyBjb2RlIHdpbGwgZ2l2ZSByZXN1bHRzIHNob3duIG9uIHRoZSBwYXBlci4gTm8gZnVydGhlciBzdGF0aXN0aWNhbCBhbmFseXNpcyB3YXMgaW5jbHVkZWQgaW4gdGhlIHBhcGVyIHJlZ2FyZGluZyB0aGlzIHNlY3Rpb24uICoqUmVmZXJlbmNlcyoqIE8uIFZpbmN6ZSwgRi4gQ29sY2hlcm8sIEouLUYuIExlbWHDrnRyZSwgRC4gQS4gQ29uZGUsIFMuIFBhdmFyZCwgTS4gQmlldXZpbGxlLCBBLiBPLiBVcnJ1dGlhLCBCLiBVanZhcmksIEEuIE0uIEJvZGR5LCBDLiBDLiBNYWxleSwgQ2FuY2VyIHJpc2sgYWNyb3NzIG1hbW1hbHMuIE5hdHVyZSA2MDEsIDI2M+KAkzI2NyAoMjAyMikuIEEuIE0uIEJvZGR5LCBMLiBNLiBBYmVnZ2xlbiwgQS4gUC4gUGVzc2llciwgQS4gQWt0aXBpcywgSi4gRC4gU2NoaWZmbWFuLCBDLiBDLiBNYWxleSwgQy4gV2l0dGUsIExpZmV0aW1lIGNhbmNlciBwcmV2YWxlbmNlIGFuZCBsaWZlIGhpc3RvcnkgdHJhaXRzIGluIG1hbW1hbHMuIEV2b2wuIE1lZC4gUHVibGljIEhlYWx0aCAyMDIwLCAxODfigJMxOTUgKDIwMjApLiBaLiBULiBDb21wdG9uLCBXLiBNZWxsb24sIFYuIEsuIEhhcnJpcywgUy4gUnVwcCwgRC4gTWFsbG8sIFMuIEUuIEthcHNldGFraSwgTS4gV2lsbW90LCBSLiBLZW5uaW5ndG9uLCBLLiBOb2JsZSwgQy4gQmFjaXUsIENhbmNlciBwcmV2YWxlbmNlIGFjcm9zcyB2ZXJ0ZWJyYXRlcy4gQ2FuY2VyIGRpc2NvdmVyeSAxNSwgMjI34oCTMjQ0ICgyMDI1KS4gKipQaHlsb2dlbmV0aWMgVHJlZXMqKlwgY29uc2Vuc3VzX3BoeWxvZ2VueS50cmUgdHJlZV9mb3JfZGF0YWJhc2UyLnR4dAogICAgPC9kZXNjcmlwdGlvbj4KICA8L2Rlc2NyaXB0aW9ucz4KPC9yZXNvdXJjZT4=","url":"https://datadryad.org/dataset/doi:10.5061/dryad.xgxd254vh","contentUrl":null,"metadataVersion":0,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"mds","isActive":true,"state":"findable","reason":null,"viewCount":22,"viewsOverTime":[{"yearMonth":"2025-10","total":1},{"yearMonth":"2025-11","total":6},{"yearMonth":"2025-12","total":5},{"yearMonth":"2026-01","total":2},{"yearMonth":"2026-02","total":7},{"yearMonth":"2026-05","total":1}],"downloadCount":4,"downloadsOverTime":[{"yearMonth":"2025-10","total":1},{"yearMonth":"2025-11","total":0},{"yearMonth":"2025-12","total":0},{"yearMonth":"2026-01","total":1},{"yearMonth":"2026-02","total":2},{"yearMonth":"2026-05","total":0}],"referenceCount":0,"citationCount":1,"citationsOverTime":[{"year":"2025","total":2}],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2025-10-30T17:13:47.000Z","registered":"2025-10-30T17:13:48.000Z","published":"2025","updated":"2026-01-29T01:27:24.000Z"},"relationships":{"client":{"data":{"id":"dryad.dryad","type":"clients"}},"provider":{"data":{"id":"dryad","type":"providers"}},"media":{"data":{"id":"10.5061/dryad.xgxd254vh","type":"media"}},"references":{"data":[]},"citations":{"data":[{"id":"10.1126/sciadv.adw0685","type":"dois"}]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}}}