{"data":{"id":"10.5061/dryad.fj6q57495","type":"dois","attributes":{"doi":"10.5061/dryad.fj6q57495","prefix":"10.5061","suffix":"dryad.fj6q57495","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"Gu, Lina","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0009-0004-7296-9344","nameIdentifierScheme":"ORCID"}]},{"name":"Liu, Buhui","nameType":"Personal","affiliation":["Xuzhou Medical University"],"nameIdentifiers":[]},{"name":"Zhang, Lei","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine","Zhangjiagang TCM Hospital Affiliated with Nanjing University of Chinese Medicine"],"nameIdentifiers":[]},{"name":"Zhao, Jing","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine"],"nameIdentifiers":[]},{"name":"He, Weiming","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine"],"nameIdentifiers":[]},{"name":"Lang, Hong","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine"],"nameIdentifiers":[]},{"name":"Sun, Wei","nameType":"Personal","affiliation":["Affiliated Hospital of Nanjing University of Chinese Medicine"],"nameIdentifiers":[]}],"titles":[{"title":"Data from: SGLT2 inhibition attenuates renal tubular senescence by suppressing CTRP1-mediated glucotoxic stress in diabetic kidney disease"}],"publisher":"Dryad","container":{},"publicationYear":2026,"subjects":[{"subject":"FOS: Biological sciences","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Basic medicine","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"CTRP1"},{"subject":"SGLT2"},{"subject":"tubular senescence"},{"subject":"diabetic kidney disease"},{"subject":"glucotoxicity"},{"subject":"Dapagliflozin"}],"contributors":[],"dates":[{"date":"2026-06-30T12:49:58Z","dateType":"Created"},{"date":"2026-07-13T02:04:44Z","dateType":"Submitted"},{"date":"2026-07-30T00:00:00Z","dateType":"Issued"},{"date":"2026-07-30T00:00:00Z","dateType":"Available"}],"language":"en","types":{"ris":"DATA","bibtex":"misc","citeproc":"dataset","schemaOrg":"Dataset","resourceType":"dataset","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[{"relationType":"IsCitedBy","relatedIdentifier":"10.1096/fj.202601959r","relatedIdentifierType":"DOI"}],"relatedItems":[],"sizes":["632614583 bytes"],"formats":[],"version":"5","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":"Renal tubular senescence is a defining pathological feature of diabetic\n kidney disease (DKD) and a key driver of disease progression. While\n glucotoxic stress is recognized as a major contributor to tubular aging,\n the upstream regulatory mechanisms remain incompletely understood. Here,\n we investigated the role of C1q/TNF-related protein 1 (CTRP1) in\n DKD-associated tubular senescence and its mechanistic link to\n SGLT2-mediated glucose uptake. We conducted a retrospective observational\n case–control analysis of human renal biopsy specimens, complemented by\n mechanistic experiments in NRK-52E cells and a high-fat\n diet/streptozotocin/uninephrectomy (HFD–STZ–UNx) rat model. Renal cortical\n tissues from DKD patients and controls were analyzed via\n immunohistochemistry and Western blotting. CTRP1 expression increased\n progressively with DKD severity and was positively correlated with the\n senescence markers p21 (R = 0.498) and p16 (R = 0.494). Bioinformatic\n analysis of CTRP1-deficient mice revealed consistent SGLT2 downregulation,\n which was validated experimentally in NRK-52E cells, where CTRP1\n overexpression increased SGLT2 expression and glucose uptake, particularly\n under hyperglycemic conditions. In HFD/STZ/UNx-induced DKD rats,\n dapagliflozin (0.1 mg/kg/day) improved metabolic abnormalities and renal\n dysfunction and attenuated tubular senescence. Dapagliflozin suppressed\n CTRP1–SGLT2 axis activation, reduced glucose uptake in renal tubular\n cells, and markedly decreased the proportion of CTRP1⁺SGLT2⁺\n double-positive tubular cells. These findings support the presence of a\n previously unrecognized CTRP1–SGLT2 signaling axis associated with\n glucose-mediated tubular senescence in DKD and provide mechanistic insight\n into SGLT2 inhibitor-mediated renoprotection.","descriptionType":"Abstract"},{"description":"Human tissue collection This retrospective\n observational case–control study included all eligible adults undergoing\n native kidney biopsy at a hospital during the study period. DKD tissues\n were obtained from 18 patients with biopsy-confirmed diabetic kidney\n disease, whereas control tissues were retrospectively identified from 5\n non-DKD patients biopsied during the same period whose renal histology\n showed largely preserved architecture without evidence of DKD and whose\n serum creatinine and blood urea nitrogen levels were within the normal\n range. The cohort comprised 23 participants (18 DKD and 5 controls).\n Patients were classified according to KDIGO staging criteria, with\n representative samples from stages G1–G5 included. Those with other\n primary kidney diseases, active infection, malignancy, or insufficient\n tissue were excluded. Sample size was determined by the\n number of eligible specimens available during the study period; no formal\n a priori sample size or power calculation was performed, and the analysis\n should therefore be considered exploratory. Baseline demographic and\n clinical characteristics are summarized in Supplementary Table 1. Clinical\n data, including age, eGFR, and UACR, were collected at biopsy. Tissue\n samples were fixed in 4% paraformaldehyde for immunohistochemistry or\n snap-frozen for Western blotting. For correlation analyses of CTRP1 with\n p16 and p21, cases with unavailable or unevaluable staining were excluded,\n yielding a final sample size of 18. Ethics approval (2022NL-090-01) was\n obtained, and written informed consent was obtained from all participants.\n Clinical trial number: not applicable. Definition of\n variables The primary exposure was renal cortical CTRP1\n expression, quantified as the percentage of CTRP1-positive tubular cells\n in each biopsy core. Primary outcomes were tubular senescence markers,\n assessed as the percentages of p16-positive and p21-positive tubular\n cells. Secondary outcomes included renal function parameters (estimated\n glomerular filtration rate [eGFR], serum creatinine, and blood urea\n nitrogen), albuminuria (urinary albumin-to-creatinine ratio), and\n histological markers of renal cortical fibrosis. DKD cases were staged\n according to kidney disease: Improving Global Outcomes (KDIGO) criteria.\n Age was categorized as 18–35, 36–64, or ≥ 65 years, and eGFR was\n stratified as 30–89 or \u0026lt;30 mL/min/1.73 m² to reflect clinically\n meaningful categories of renal impairment. Analyses\n were conducted using complete cases; samples with missing or unevaluable\n staining for a given marker were excluded from the corresponding analysis\n without imputation. Immunohistochemistry and\n analysis Paraffin-embedded sections (5 µm) were\n deparaffinized, rehydrated, treated with 3% H₂O₂, and subjected to antigen\n retrieval in citrate buffer (pH 6.0). After being blocked with 10% goat\n serum, the sections were incubated overnight at 4°C with antibodies\n against CTRP1, p21, or p16 (1:100), followed by incubation with\n HRP-conjugated secondary antibodies (1:500) for 1 h at room temperature\n and subsequent DAB development. Whole-slide images were acquired via a\n KFBIO scanner. Each whole-slide image contained one or more renal biopsy\n cores, and the percentage of cells positive for CTRP1, p21, or p16 in each\n biopsy core was quantified using QuPath software (version 0.6.0 ,\n RRID:SCR_018257). Western blotting\n Tissues or cultured cells were lysed in RIPA buffer supplemented\n with protease/phosphatase inhibitors. Proteins (30–50 µg) were separated\n by 10% SDS‒PAGE, transferred to PVDF membranes, blocked with 5% nonfat\n milk, and incubated overnight with primary antibodies (1:1000) against\n CTRP1, SGLT2, p21, Collagen I, α-SMA, or GAPDH (1:5000). After\n HRP-conjugated secondary antibodies were added (1:5000, 1 h), the signals\n were detected via ECL and quantified via ImageJ\n (RRID:SCR_003070). Antibodies and reagents\n The following primary antibodies were used in this study:\n anti-CTRP1 (Abcam, Cat# ab25973, RRID: AB_448937), anti-SGLT2 (mouse\n monoclonal, Santa Cruz Biotechnology, Cat# sc-393350, RRID:AB_2814658),\n anti-p21 (rabbit monoclonal, Cell Signaling Technology, Cat# 2947S,\n RRID:AB_823586), anti-p16INK4a/CDKN2A (rabbit monoclonal, ABclonal, Cat#\n A11651, RRID:AB_2861619), anti-COL1A1 (rabbit monoclonal, Cell Signaling\n Technology, Cat# 91144S, RRID:AB_2800169), anti-α-SMA (rabbit monoclonal,\n Cell Signaling Technology, Cat# 19245S, RRID:AB_2734735), and anti-GAPDH\n (rabbit monoclonal, ABclonal, Cat# A19056, RRID:AB_2862549).\n Bioinformatics analysis Transcriptomic\n datasets of renal tubular epithelial cells from CTRP1-knockout and control\n mice were obtained from the Gene Expression Omnibus (GEO) database\n (GSE127332) [22] to assess glucose transporter expression, with a focus on\n SGLT2. Time-series transcriptomic data over 48 hours (GSE217853) [23] were\n further used to quantify CTRP1 and SGLT2 mRNA levels. A generalized\n additive mixed-effects model was applied to the time-series data to\n characterize their expression trajectories and evaluate parallel changes\n over the 48-hour period. Cell culture and lentiviral\n transduction NRK-52E cells (RRID:CVCL_0468) were\n cultured in DMEM supplemented with 10% FBS and 1%\n penicillin–streptomycin.  The cells were transduced with\n CTRP1-overexpressing (LV-CTRP1-OE) or control (LV-CTRP1-NC) lentivirus;\n GFP positivity confirmed transduction. After transduction, the cells were\n cultured under normal-glucose (5.5 mM) or high-glucose (30 mM) conditions\n for 48 h. These conditions were selected with reference to published in\n vitro models of diabetic hyperglycemic stress in renal tubular epithelial\n cells\u003csup\u003e[24, 25]\u003c/sup\u003e. Glucose uptake\n assay Glucose uptake was measured via a Glucose Uptake\n Assay Kit-Blue (Dojindo, UP01)\u003csup\u003e[26]\u003c/sup\u003e. The cells were\n washed and incubated in glucose-free DMEM (15 min) and then in probe\n solution (1:500, 15 min). The mean fluorescence intensity (MFI) was\n measured via flow cytometry. Animal model\n Male Sprague–Dawley rats (RRID:RGD_70508, 8 weeks old, 200-250 g\n at baseline) were fed a high-fat diet (D12462), subjected to unilateral\n nephrectomy, and injected with streptozotocin (50 mg/kg) to establish DKD.\n The HFD/STZ/UNx protocol was selected because it integrates insulin\n resistance, hyperglycemia, and nephron loss, thereby reproducibly\n accelerating DKD progression and inducing metabolic and renal\n abnormalities that resemble progressive DKD\u003csup\u003e[27,\n 28]\u003c/sup\u003e. Hyperglycemic/proteinuric rats were randomized\n (n=5/group) into the following groups: Sham, DKD, DAPA, and DKD + DAPA.\n The experimental unit was a single animal. Dapagliflozin (0.1 mg/kg/day)\n or saline was administered orally for 12 weeks. The dapagliflozin dose and\n treatment duration were selected with reference to previous experimental\n studies and adapted to the present DKD model\u003csup\u003e[29]\u003c/sup\u003e.\n No unexpected animal deaths or exclusions occurred during the study. All\n animal experiments were approved by the Animal Ethics Committee of Nanjing\n University of Chinese Medicine and carried out in strict accordance with\n the institutional guidelines for the care and use of laboratory animals\n (Approval No. 202308A014). Metabolic and renal function\n assessments After 12 weeks, glucose tolerance tests\n (GTTs) and insulin tolerance tests (ITTs) were performed. Serum\n creatinine, blood urea nitrogen, total cholesterol, and triglycerides were\n measured. Histopathology Sections\n were stained with PAS, HE, Masson's trichrome, and SA-β-gal.\n Transmission electron microscopy (TEM) was used to examine ultrastructural\n changes (Hitachi HT7800, ×7000). Histological image quantification was\n performed by investigators blinded to group allocation.\n Dual immunofluorescence and colocalization analysis\n The sections were incubated with primary antibodies against CTRP1\n (rabbit, 1:100) and SGLT2 (mouse, 1:100), followed by Alexa\n Fluor-conjugated secondary antibodies and DAPI staining. Images were\n acquired (Pannoramic SCAN II) and analyzed (v0.6.0, RRID:SCR_018257) for\n colocalization and MFI. Immunofluorescence image quantification was\n performed by investigators blinded to group allocation.\n Flow cytometry Renal tubular cells were\n isolated via enzymatic digestion. The cells were incubated with a glucose\n uptake probe, fixed, permeabilized, and stained with anti-CTRP1 and\n anti-SGLT2 antibodies, followed by incubation with fluorescent secondary\n antibodies. The signals were analyzed by flow cytometry.\n Statistical analysis Continuous data are\n expressed as the mean ± SEM. Data distribution was assessed using\n Shapiro–Wilk normality tests, and homogeneity of variances was evaluated\n using Brown–Forsythe and Bartlett tests. When appropriate, right‑skewed\n variables were log10‑transformed to better meet model assumptions. In\n particular, serum creatinine, blood urea nitrogen, and serum total\n cholesterol and triglyceride levels were analysed on log10‑transformed\n values, whereas the corresponding figures display the mean ± SEM of the\n untransformed data. For two‑group comparisons, unpaired\n Student’s t tests were used when normality and equal variance assumptions\n were reasonably satisfied. For comparisons among more than two groups,\n one‑way ANOVA followed by Tukey’s post hoc test was applied under the same\n assumptions. Glucose and insulin tolerance curves were analysed by two‑way\n repeated‑measures ANOVA (factors: group and time), and the corresponding\n areas under the curve were compared using one‑way ANOVA. Pearson\n correlation was used to assess associations between continuous variables.\n A two‑sided P value \u0026lt; 0.05 was considered statistically\n significant. Given the limited sample size of the human\n biopsy cohort, multivariable regression modelling was not performed, and\n we focused on unadjusted correlations between CTRP1, senescence markers,\n and clinical variables.","descriptionType":"Methods"},{"description":"# Data from: SGLT2 inhibition attenuates renal tubular senescence by\n suppressing CTRP1-mediated glucotoxic stress in diabetic kidney disease\n Dataset DOI:\n [10.5061/dryad.fj6q57495](https://doi.org/10.5061/dryad.fj6q57495) ##\n Description of the data and file structure This submission contains human,\n animal, and cell datasets generated to study CTRP1, tubular senescence,\n glucose handling, and kidney injury in diabetic kidney disease. The human\n data include de-identified kidney biopsy measurements from\n immunohistochemistry, QuPath-based image analysis, and Western blot\n quantification. The animal data include rat diabetic kidney disease\n experiments, longitudinal metabolic measurements, kidney\n immunofluorescence analysis, flow cytometry-based glucose uptake\n measurements, and associated source files. The cell data include NRK-52E\n flow cytometry-based glucose uptake measurements, Western blot\n densitometry results, and transcriptomic expression datasets used to\n support figure generation and interpretation. ### Files and variables ####\n File: FASEB_Dryad_dataset_.zip **Description:** This submission includes\n multiple related datasets organized by experimental system and assay type.\n File-level documentation is provided in the accompanying README file(s),\n which describe file contents, file relationships, variable definitions,\n abbreviations, units of measurement, and missing-value coding. Across the\n submission, primary files include CSV tables for quantitative\n measurements, ZIP archives containing raw image or FCS files, and PDF\n files containing representative source images or figure panels. Missing\n values are coded as NA unless otherwise specified in the relevant\n file-level documentation. The human tissue datasets in the current Dryad\n repository are provided as group-level summary datasets only. The human\n IHC / QuPath subfolder contains kidney_biopsy_ihc_group_summary.csv and\n its README file, which provide group-level quantitative summary data for\n CTRP1, p16, and p21 in human kidney biopsy samples. The human Western blot\n subfolder contains kidney_biopsy_wb_group_summary.csv,\n wb_uncropped_images_human.zip, and its README file, which provide\n group-level quantitative summary data and uncropped source-image files. No\n ROI-level, sample-level, or participant-level human data are included in\n the current repository. The animal datasets include a rat experiment\n master sheet, GTT and ITT time-course tables, GTT and ITT AUC summary\n tables, animal kidney immunofluorescence files, and animal flow cytometry\n files. Variables in the animal experiment files include identifiers, group\n assignments, metabolic measurements, intervention variables, endpoint\n biochemistry, and sample availability fields such as animal_id, group,\n diet, stz1_mgkg, dapa_mgkgd, bw_g_wk0, glu_mmolL_wk20, crea_umolL, and\n urea_mmolL. Animal immunofluorescence files include cell-level and\n animal-level variables such as classification, ctrp1_intensity,\n sglt2_intensity, pct_double_positive, and mean fluorescence intensity\n summary fields, while animal flow cytometry files include variables such\n as subpopulation, n_events, pct_of_parent, and glucose_uptake_mfi The cell\n datasets include NRK-52E flow cytometry glucose uptake summary tables,\n condition metadata tables, raw FCS archives, representative flow-cytometry\n image PDFs, and Western blot densitometry tables. Cell flow cytometry\n variables include experiment_id, group, glucose_condition, sample_id,\n cell_type, glucose_probe_channel, and glucose_uptake_mfi. Cell Western\n blot files include sample_id, group, target_protein, target_band_raw,\n loading_control_raw, normalized_to_gapdh, and fold_change_vs_control.\n Transcriptomic datasets include expression matrices and sample-metadata\n tables for mouse tubular glucose transporter expression and time-series\n CTRP1/SGLT2 expression, with variables such as gene_symbol, sample_id,\n group, genotype, zeitgeber_time, replicate, and expression_unit. ##\n Code/software Most tabular data files in this submission are provided in\n CSV format and can be viewed using free or open software such as\n LibreOffice Calc, OpenOffice Calc, or any standard text editor. PDF files\n can be viewed with any PDF reader, and ZIP archives can be opened using\n standard archive utilities. Raw flow cytometry files in .fcs format\n require flow cytometry analysis software capable of reading FCS files.\n TIFF image files can be opened with standard image-viewing software such\n as ImageJ/Fiji. Quantitative image analysis for the kidney\n immunohistochemistry and immunofluorescence datasets was performed using\n QuPath, with the README indicating version examples such as  v0.6.0; the\n exact version used for each dataset should be stated in the corresponding\n file-level documentation where applicable. The general workflow was: image\n acquisition, annotation or detection in QuPath where relevant, export of\n measurement tables to CSV where applicable during internal analysis,\n derivation of group-level summary tables for the deposited human dataset\n where applicable, and downstream statistical analysis and figure\n generation using the processed tabular files. If no custom code or scripts\n are included in the submission, this should be stated explicitly in the\n final deposited README. ## Access information Other publicly accessible\n locations of the data: * Dryad submission only for study-generated files.\n Publicly sourced transcriptomic data, if included, are additionally\n available from their original public repositories; source links and\n accession information are provided in the README. Data was derived from\n the following sources: * The human biopsy, animal, and cell experimental\n datasets were generated in the present study. If any transcriptomic\n datasets included in this submission were derived from previously\n published public datasets, the original source identifiers, accession\n numbers or URLs, and license information are documented in the\n corresponding README sections. ## Human subjects data This dataset\n contains de-identified human subject data only. The research dataset\n provided for analysis did not include direct personal identifiers. All\n publicly shared files exclude names, medical record numbers, hospital\n specimen numbers, dates, and other identifying information. Sample\n identifiers in the shared dataset were replaced with study-specific coded\n IDs, and no re-identification key is included in the deposited files. The\n dataset was reviewed and prepared to minimize re-identification risk in\n accordance with applicable ethical and legal requirements.","descriptionType":"TechnicalInfo"}],"geoLocations":[],"fundingReferences":[{"funderName":"National Natural Science Foundation of China","awardNumber":"82374373","funderIdentifier":"https://ror.org/01h0zpd94","funderIdentifierType":"ROR"},{"funderName":"National Natural Science Foundation of China","awardNumber":"82575032","funderIdentifier":"https://ror.org/01h0zpd94","funderIdentifierType":"ROR"},{"funderName":"National Natural Science Foundation of China","awardNumber":"82505536","funderIdentifier":"https://ror.org/01h0zpd94","funderIdentifierType":"ROR"},{"funderName":"Natural Science Foundation of Jiangsu Province","awardNumber":"BK20241042"},{"funderName":"Postgraduate Research \u0026 Practice Innovation Program of Jiangsu Province","awardNumber":"SJCX23_0805"},{"funderName":"Jiangsu Provincial Hospital of Traditional Chinese Medicine","awardNumber":"Y2023CX05","funderIdentifier":"https://ror.org/05sm6p196","funderIdentifierType":"ROR"},{"funderName":"Jiangsu Province Traditional Chinese Medicine Technology Development Plan","awardNumber":"QN202331"},{"funderName":"Affiliated Hospital of Nanjing University of Chinese Medicine","awardNumber":"2024QB024"},{"funderName":"Affiliated Hospital of Nanjing University of Chinese Medicine","awardNumber":"Y25081"}],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTA2MS9EUllBRC5GSjZRNTc0OTU8L2lkZW50aWZpZXI+CiAgPGNyZWF0b3JzPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPkd1LCBMaW5hPC9jcmVhdG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnLyI+MDAwOS0wMDA0LTcyOTYtOTM0NDwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbj5BZmZpbGlhdGVkIEhvc3BpdGFsIG9mIE5hbmppbmcgVW5pdmVyc2l0eSBvZiBDaGluZXNlIE1lZGljaW5lPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5MaXUsIEJ1aHVpPC9jcmVhdG9yTmFtZT4KICAgICAgPGFmZmlsaWF0aW9uPlh1emhvdSBNZWRpY2FsIFVuaXZlcnNpdHk8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlpoYW5nLCBMZWk8L2NyZWF0b3JOYW1lPgogICAgICA8YWZmaWxpYXRpb24+QWZmaWxpYXRlZCBIb3NwaXRhbCBvZiBOYW5qaW5nIFVuaXZlcnNpdHkgb2YgQ2hpbmVzZSBNZWRpY2luZTwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICBaaGFuZ2ppYWdhbmcgVENNIEhvc3BpdGFsIEFmZmlsaWF0ZWQgd2l0aCBOYW5qaW5nIFVuaXZlcnNpdHkgb2YgQ2hpbmVzZQogICAgICAgIE1lZGljaW5lCiAgICAgIDwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lIG5hbWVUeXBlPSJQZXJzb25hbCI+WmhhbywgSmluZzwvY3JlYXRvck5hbWU+CiAgICAgIDxhZmZpbGlhdGlvbj5BZmZpbGlhdGVkIEhvc3BpdGFsIG9mIE5hbmppbmcgVW5pdmVyc2l0eSBvZiBDaGluZXNlIE1lZGljaW5lPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5IZSwgV2VpbWluZzwvY3JlYXRvck5hbWU+CiAgICAgIDxhZmZpbGlhdGlvbj5BZmZpbGlhdGVkIEhvc3BpdGFsIG9mIE5hbmppbmcgVW5pdmVyc2l0eSBvZiBDaGluZXNlIE1lZGljaW5lPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5MYW5nLCBIb25nPC9jcmVhdG9yTmFtZT4KICAgICAgPGFmZmlsaWF0aW9uPkFmZmlsaWF0ZWQgSG9zcGl0YWwgb2YgTmFuamluZyBVbml2ZXJzaXR5IG9mIENoaW5lc2UgTWVkaWNpbmU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlN1biwgV2VpPC9jcmVhdG9yTmFtZT4KICAgICAgPGFmZmlsaWF0aW9uPkFmZmlsaWF0ZWQgSG9zcGl0YWwgb2YgTmFuamluZyBVbml2ZXJzaXR5IG9mIENoaW5lc2UgTWVkaWNpbmU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogIDwvY3JlYXRvcnM+CiAgPHRpdGxlcz4KICAgIDx0aXRsZT4KICAgICAgRGF0YSBmcm9tOiBTR0xUMiBpbmhpYml0aW9uIGF0dGVudWF0ZXMgcmVuYWwgdHVidWxhciBzZW5lc2NlbmNlIGJ5CiAgICAgIHN1cHByZXNzaW5nIENUUlAxLW1lZGlhdGVkIGdsdWNvdG94aWMgc3RyZXNzIGluIGRpYWJldGljIGtpZG5leSBkaXNlYXNlCiAgICA8L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXIgcHVibGlzaGVySWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAweDZoNW45NSIgcHVibGlzaGVySWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZy8iPkRyeWFkPC9wdWJsaXNoZXI+CiAgPHJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVHZW5lcmFsPSJEYXRhc2V0Ij5kYXRhc2V0PC9yZXNvdXJjZVR5cGU+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDI2PC9wdWJsaWNhdGlvblllYXI+CiAgPHN1YmplY3RzPgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iZm9zIiBzY2hlbWVVUkk9Imh0dHBzOi8vd2ViLWFyY2hpdmUub2VjZC5vcmcvMjAxMi0wNi0xNS8xMzg1NzUtMzgyMzUxNDcucGRmIj5GT1M6IEJpb2xvZ2ljYWwgc2NpZW5jZXM8L3N1YmplY3Q+CiAgICA8c3ViamVjdCBzdWJqZWN0U2NoZW1lPSJmb3MiIHNjaGVtZVVSST0iaHR0cHM6Ly93ZWItYXJjaGl2ZS5vZWNkLm9yZy8yMDEyLTA2LTE1LzEzODU3NS0zODIzNTE0Ny5wZGYiPkZPUzogQmFzaWMgbWVkaWNpbmU8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5DVFJQMTwvc3ViamVjdD4KICAgIDxzdWJqZWN0PlNHTFQyPC9zdWJqZWN0PgogICAgPHN1YmplY3Q+dHVidWxhciBzZW5lc2NlbmNlPC9zdWJqZWN0PgogICAgPHN1YmplY3Q+ZGlhYmV0aWMga2lkbmV5IGRpc2Vhc2U8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5nbHVjb3RveGljaXR5PC9zdWJqZWN0PgogICAgPHN1YmplY3Q+RGFwYWdsaWZsb3ppbjwvc3ViamVjdD4KICA8L3N1YmplY3RzPgogIDxmdW5kaW5nUmVmZXJlbmNlcz4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5OYXRpb25hbCBOYXR1cmFsIFNjaWVuY2UgRm91bmRhdGlvbiBvZiBDaGluYTwvZnVuZGVyTmFtZT4KICAgICAgPGZ1bmRlcklkZW50aWZpZXIgZnVuZGVySWRlbnRpZmllclR5cGU9IlJPUiI+aHR0cHM6Ly9yb3Iub3JnLzAxaDB6cGQ5NDwvZnVuZGVySWRlbnRpZmllcj4KICAgICAgPGF3YXJkTnVtYmVyPjgyMzc0MzczPC9hd2FyZE51bWJlcj4KICAgICAgPGF3YXJkVGl0bGUvPgogICAgPC9mdW5kaW5nUmVmZXJlbmNlPgogICAgPGZ1bmRpbmdSZWZlcmVuY2U+CiAgICAgIDxmdW5kZXJOYW1lPk5hdGlvbmFsIE5hdHVyYWwgU2NpZW5jZSBGb3VuZGF0aW9uIG9mIENoaW5hPC9mdW5kZXJOYW1lPgogICAgICA8ZnVuZGVySWRlbnRpZmllciBmdW5kZXJJZGVudGlmaWVyVHlwZT0iUk9SIj5odHRwczovL3Jvci5vcmcvMDFoMHpwZDk0PC9mdW5kZXJJZGVudGlmaWVyPgogICAgICA8YXdhcmROdW1iZXI+ODI1NzUwMzI8L2F3YXJkTnVtYmVyPgogICAgICA8YXdhcmRUaXRsZS8+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+TmF0aW9uYWwgTmF0dXJhbCBTY2llbmNlIEZvdW5kYXRpb24gb2YgQ2hpbmE8L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJST1IiPmh0dHBzOi8vcm9yLm9yZy8wMWgwenBkOTQ8L2Z1bmRlcklkZW50aWZpZXI+CiAgICAgIDxhd2FyZE51bWJlcj44MjUwNTUzNjwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5OYXR1cmFsIFNjaWVuY2UgRm91bmRhdGlvbiBvZiBKaWFuZ3N1IFByb3ZpbmNlPC9mdW5kZXJOYW1lPgogICAgICA8YXdhcmROdW1iZXI+QksyMDI0MTA0MjwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5Qb3N0Z3JhZHVhdGUgUmVzZWFyY2ggJmFtcDsgUHJhY3RpY2UgSW5ub3ZhdGlvbiBQcm9ncmFtIG9mIEppYW5nc3UgUHJvdmluY2U8L2Z1bmRlck5hbWU+CiAgICAgIDxhd2FyZE51bWJlcj5TSkNYMjNfMDgwNTwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5KaWFuZ3N1IFByb3ZpbmNpYWwgSG9zcGl0YWwgb2YgVHJhZGl0aW9uYWwgQ2hpbmVzZSBNZWRpY2luZTwvZnVuZGVyTmFtZT4KICAgICAgPGZ1bmRlcklkZW50aWZpZXIgZnVuZGVySWRlbnRpZmllclR5cGU9IlJPUiI+aHR0cHM6Ly9yb3Iub3JnLzA1c202cDE5NjwvZnVuZGVySWRlbnRpZmllcj4KICAgICAgPGF3YXJkTnVtYmVyPlkyMDIzQ1gwNTwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5KaWFuZ3N1IFByb3ZpbmNlIFRyYWRpdGlvbmFsIENoaW5lc2UgTWVkaWNpbmUgVGVjaG5vbG9neSBEZXZlbG9wbWVudCBQbGFuPC9mdW5kZXJOYW1lPgogICAgICA8YXdhcmROdW1iZXI+UU4yMDIzMzE8L2F3YXJkTnVtYmVyPgogICAgICA8YXdhcmRUaXRsZS8+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+QWZmaWxpYXRlZCBIb3NwaXRhbCBvZiBOYW5qaW5nIFVuaXZlcnNpdHkgb2YgQ2hpbmVzZSBNZWRpY2luZTwvZnVuZGVyTmFtZT4KICAgICAgPGF3YXJkTnVtYmVyPjIwMjRRQjAyNDwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5BZmZpbGlhdGVkIEhvc3BpdGFsIG9mIE5hbmppbmcgVW5pdmVyc2l0eSBvZiBDaGluZXNlIE1lZGljaW5lPC9mdW5kZXJOYW1lPgogICAgICA8YXdhcmROdW1iZXI+WTI1MDgxPC9hd2FyZE51bWJlcj4KICAgICAgPGF3YXJkVGl0bGUvPgogICAgPC9mdW5kaW5nUmVmZXJlbmNlPgogIDwvZnVuZGluZ1JlZmVyZW5jZXM+CiAgPGRhdGVzPgogICAgPGRhdGUgZGF0ZVR5cGU9IkNyZWF0ZWQiPjIwMjYtMDYtMzBUMTI6NDk6NThaPC9kYXRlPgogICAgPGRhdGUgZGF0ZVR5cGU9IlN1Ym1pdHRlZCI+MjAyNi0wNy0xM1QwMjowNDo0NFo8L2RhdGU+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iSXNzdWVkIj4yMDI2LTA3LTMwVDAwOjAwOjAwWjwvZGF0ZT4KICAgIDxkYXRlIGRhdGVUeXBlPSJBdmFpbGFibGUiPjIwMjYtMDctMzBUMDA6MDA6MDBaPC9kYXRlPgogIDwvZGF0ZXM+CiAgPGxhbmd1YWdlPmVuPC9sYW5ndWFnZT4KICA8cmVsYXRlZElkZW50aWZpZXJzPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSXNDaXRlZEJ5IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+aHR0cHM6Ly9kb2kub3JnLzEwLjEwOTYvZmouMjAyNjAxOTU5cjwvcmVsYXRlZElkZW50aWZpZXI+CiAgPC9yZWxhdGVkSWRlbnRpZmllcnM+CiAgPHNpemVzPgogICAgPHNpemU+NjMyNjE0NTgzIGJ5dGVzPC9zaXplPgogIDwvc2l6ZXM+CiAgPHZlcnNpb24+NTwvdmVyc2lvbj4KICA8cmlnaHRzTGlzdD4KICAgIDxyaWdodHMgcmlnaHRzVVJJPSJodHRwczovL3NwZHgub3JnL2xpY2Vuc2VzL0NDMC0xLjAuaHRtbCI+Q3JlYXRpdmUgQ29tbW9ucyBaZXJvIHYxLjAgVW5pdmVyc2FsPC9yaWdodHM+CiAgPC9yaWdodHNMaXN0PgogIDxkZXNjcmlwdGlvbnM+CiAgICA8ZGVzY3JpcHRpb24gZGVzY3JpcHRpb25UeXBlPSJBYnN0cmFjdCI+CiAgICAgIFJlbmFsIHR1YnVsYXIgc2VuZXNjZW5jZSBpcyBhIGRlZmluaW5nIHBhdGhvbG9naWNhbCBmZWF0dXJlIG9mIGRpYWJldGljCiAgICAgIGtpZG5leSBkaXNlYXNlIChES0QpIGFuZCBhIGtleSBkcml2ZXIgb2YgZGlzZWFzZSBwcm9ncmVzc2lvbi4gV2hpbGUKICAgICAgZ2x1Y290b3hpYyBzdHJlc3MgaXMgcmVjb2duaXplZCBhcyBhIG1ham9yIGNvbnRyaWJ1dG9yIHRvIHR1YnVsYXIgYWdpbmcsCiAgICAgIHRoZSB1cHN0cmVhbSByZWd1bGF0b3J5IG1lY2hhbmlzbXMgcmVtYWluIGluY29tcGxldGVseSB1bmRlcnN0b29kLiBIZXJlLAogICAgICB3ZSBpbnZlc3RpZ2F0ZWQgdGhlIHJvbGUgb2YgQzFxL1RORi1yZWxhdGVkIHByb3RlaW4gMSAoQ1RSUDEpIGluCiAgICAgIERLRC1hc3NvY2lhdGVkIHR1YnVsYXIgc2VuZXNjZW5jZSBhbmQgaXRzIG1lY2hhbmlzdGljIGxpbmsgdG8KICAgICAgU0dMVDItbWVkaWF0ZWQgZ2x1Y29zZSB1cHRha2UuIFdlIGNvbmR1Y3RlZCBhIHJldHJvc3BlY3RpdmUgb2JzZXJ2YXRpb25hbAogICAgICBjYXNl4oCTY29udHJvbCBhbmFseXNpcyBvZiBodW1hbiByZW5hbCBiaW9wc3kgc3BlY2ltZW5zLCBjb21wbGVtZW50ZWQgYnkKICAgICAgbWVjaGFuaXN0aWMgZXhwZXJpbWVudHMgaW4gTlJLLTUyRSBjZWxscyBhbmQgYSBoaWdoLWZhdAogICAgICBkaWV0L3N0cmVwdG96b3RvY2luL3VuaW5lcGhyZWN0b215IChIRkTigJNTVFrigJNVTngpIHJhdCBtb2RlbC4gUmVuYWwgY29ydGljYWwKICAgICAgdGlzc3VlcyBmcm9tIERLRCBwYXRpZW50cyBhbmQgY29udHJvbHMgd2VyZSBhbmFseXplZCB2aWEKICAgICAgaW1tdW5vaGlzdG9jaGVtaXN0cnkgYW5kIFdlc3Rlcm4gYmxvdHRpbmcuIENUUlAxIGV4cHJlc3Npb24gaW5jcmVhc2VkCiAgICAgIHByb2dyZXNzaXZlbHkgd2l0aCBES0Qgc2V2ZXJpdHkgYW5kIHdhcyBwb3NpdGl2ZWx5IGNvcnJlbGF0ZWQgd2l0aCB0aGUKICAgICAgc2VuZXNjZW5jZSBtYXJrZXJzIHAyMSAoUiA9IDAuNDk4KSBhbmQgcDE2IChSID0gMC40OTQpLiBCaW9pbmZvcm1hdGljCiAgICAgIGFuYWx5c2lzIG9mIENUUlAxLWRlZmljaWVudCBtaWNlIHJldmVhbGVkIGNvbnNpc3RlbnQgU0dMVDIgZG93bnJlZ3VsYXRpb24sCiAgICAgIHdoaWNoIHdhcyB2YWxpZGF0ZWQgZXhwZXJpbWVudGFsbHkgaW4gTlJLLTUyRSBjZWxscywgd2hlcmUgQ1RSUDEKICAgICAgb3ZlcmV4cHJlc3Npb24gaW5jcmVhc2VkIFNHTFQyIGV4cHJlc3Npb24gYW5kIGdsdWNvc2UgdXB0YWtlLCBwYXJ0aWN1bGFybHkKICAgICAgdW5kZXIgaHlwZXJnbHljZW1pYyBjb25kaXRpb25zLiBJbiBIRkQvU1RaL1VOeC1pbmR1Y2VkIERLRCByYXRzLAogICAgICBkYXBhZ2xpZmxvemluICgwLjEgbWcva2cvZGF5KSBpbXByb3ZlZCBtZXRhYm9saWMgYWJub3JtYWxpdGllcyBhbmQgcmVuYWwKICAgICAgZHlzZnVuY3Rpb24gYW5kIGF0dGVudWF0ZWQgdHVidWxhciBzZW5lc2NlbmNlLiBEYXBhZ2xpZmxvemluIHN1cHByZXNzZWQKICAgICAgQ1RSUDHigJNTR0xUMiBheGlzIGFjdGl2YXRpb24sIHJlZHVjZWQgZ2x1Y29zZSB1cHRha2UgaW4gcmVuYWwgdHVidWxhcgogICAgICBjZWxscywgYW5kIG1hcmtlZGx5IGRlY3JlYXNlZCB0aGUgcHJvcG9ydGlvbiBvZiBDVFJQMeKBulNHTFQy4oG6CiAgICAgIGRvdWJsZS1wb3NpdGl2ZSB0dWJ1bGFyIGNlbGxzLiBUaGVzZSBmaW5kaW5ncyBzdXBwb3J0IHRoZSBwcmVzZW5jZSBvZiBhCiAgICAgIHByZXZpb3VzbHkgdW5yZWNvZ25pemVkIENUUlAx4oCTU0dMVDIgc2lnbmFsaW5nIGF4aXMgYXNzb2NpYXRlZCB3aXRoCiAgICAgIGdsdWNvc2UtbWVkaWF0ZWQgdHVidWxhciBzZW5lc2NlbmNlIGluIERLRCBhbmQgcHJvdmlkZSBtZWNoYW5pc3RpYyBpbnNpZ2h0CiAgICAgIGludG8gU0dMVDIgaW5oaWJpdG9yLW1lZGlhdGVkIHJlbm9wcm90ZWN0aW9uLgogICAgPC9kZXNjcmlwdGlvbj4KICAgIDxkZXNjcmlwdGlvbiBkZXNjcmlwdGlvblR5cGU9Ik1ldGhvZHMiPgogICAgICAmbHQ7cCZndDtIdW1hbiB0aXNzdWUgY29sbGVjdGlvbiZsdDsvcCZndDsgJmx0O3AmZ3Q7VGhpcyByZXRyb3NwZWN0aXZlCiAgICAgIG9ic2VydmF0aW9uYWwgY2FzZeKAk2NvbnRyb2wgc3R1ZHkgaW5jbHVkZWQgYWxsIGVsaWdpYmxlIGFkdWx0cyB1bmRlcmdvaW5nCiAgICAgIG5hdGl2ZSBraWRuZXkgYmlvcHN5IGF0IGEgaG9zcGl0YWwgZHVyaW5nIHRoZSBzdHVkeSBwZXJpb2QuIERLRCB0aXNzdWVzCiAgICAgIHdlcmUgb2J0YWluZWQgZnJvbSAxOCBwYXRpZW50cyB3aXRoIGJpb3BzeS1jb25maXJtZWQgZGlhYmV0aWMga2lkbmV5CiAgICAgIGRpc2Vhc2UsIHdoZXJlYXMgY29udHJvbCB0aXNzdWVzIHdlcmUgcmV0cm9zcGVjdGl2ZWx5IGlkZW50aWZpZWQgZnJvbSA1CiAgICAgIG5vbi1ES0QgcGF0aWVudHMgYmlvcHNpZWQgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZCB3aG9zZSByZW5hbCBoaXN0b2xvZ3kKICAgICAgc2hvd2VkIGxhcmdlbHkgcHJlc2VydmVkIGFyY2hpdGVjdHVyZSB3aXRob3V0IGV2aWRlbmNlIG9mIERLRCBhbmQgd2hvc2UKICAgICAgc2VydW0gY3JlYXRpbmluZSBhbmQgYmxvb2QgdXJlYSBuaXRyb2dlbiBsZXZlbHMgd2VyZSB3aXRoaW4gdGhlIG5vcm1hbAogICAgICByYW5nZS4gVGhlIGNvaG9ydCBjb21wcmlzZWQgMjMgcGFydGljaXBhbnRzICgxOCBES0QgYW5kIDUgY29udHJvbHMpLgogICAgICBQYXRpZW50cyB3ZXJlIGNsYXNzaWZpZWQgYWNjb3JkaW5nIHRvIEtESUdPIHN0YWdpbmcgY3JpdGVyaWEsIHdpdGgKICAgICAgcmVwcmVzZW50YXRpdmUgc2FtcGxlcyBmcm9tIHN0YWdlcyBHMeKAk0c1IGluY2x1ZGVkLiBUaG9zZSB3aXRoIG90aGVyCiAgICAgIHByaW1hcnkga2lkbmV5IGRpc2Vhc2VzLCBhY3RpdmUgaW5mZWN0aW9uLCBtYWxpZ25hbmN5LCBvciBpbnN1ZmZpY2llbnQKICAgICAgdGlzc3VlIHdlcmUgZXhjbHVkZWQuJmx0Oy9wJmd0OyAmbHQ7cCZndDtTYW1wbGUgc2l6ZSB3YXMgZGV0ZXJtaW5lZCBieSB0aGUKICAgICAgbnVtYmVyIG9mIGVsaWdpYmxlIHNwZWNpbWVucyBhdmFpbGFibGUgZHVyaW5nIHRoZSBzdHVkeSBwZXJpb2Q7IG5vIGZvcm1hbAogICAgICBhIHByaW9yaSBzYW1wbGUgc2l6ZSBvciBwb3dlciBjYWxjdWxhdGlvbiB3YXMgcGVyZm9ybWVkLCBhbmQgdGhlIGFuYWx5c2lzCiAgICAgIHNob3VsZCB0aGVyZWZvcmUgYmUgY29uc2lkZXJlZCBleHBsb3JhdG9yeS4gQmFzZWxpbmUgZGVtb2dyYXBoaWMgYW5kCiAgICAgIGNsaW5pY2FsIGNoYXJhY3RlcmlzdGljcyBhcmUgc3VtbWFyaXplZCBpbiBTdXBwbGVtZW50YXJ5IFRhYmxlIDEuIENsaW5pY2FsCiAgICAgIGRhdGEsIGluY2x1ZGluZyBhZ2UsIGVHRlIsIGFuZCBVQUNSLCB3ZXJlIGNvbGxlY3RlZCBhdCBiaW9wc3kuIFRpc3N1ZQogICAgICBzYW1wbGVzIHdlcmUgZml4ZWQgaW4gNCUgcGFyYWZvcm1hbGRlaHlkZSBmb3IgaW1tdW5vaGlzdG9jaGVtaXN0cnkgb3IKICAgICAgc25hcC1mcm96ZW4gZm9yIFdlc3Rlcm4gYmxvdHRpbmcuIEZvciBjb3JyZWxhdGlvbiBhbmFseXNlcyBvZiBDVFJQMSB3aXRoCiAgICAgIHAxNiBhbmQgcDIxLCBjYXNlcyB3aXRoIHVuYXZhaWxhYmxlIG9yIHVuZXZhbHVhYmxlIHN0YWluaW5nIHdlcmUgZXhjbHVkZWQsCiAgICAgIHlpZWxkaW5nIGEgZmluYWwgc2FtcGxlIHNpemUgb2YgMTguIEV0aGljcyBhcHByb3ZhbCAoMjAyMk5MLTA5MC0wMSkgd2FzCiAgICAgIG9idGFpbmVkLCBhbmQgd3JpdHRlbiBpbmZvcm1lZCBjb25zZW50IHdhcyBvYnRhaW5lZCBmcm9tIGFsbCBwYXJ0aWNpcGFudHMuCiAgICAgIENsaW5pY2FsIHRyaWFsIG51bWJlcjogbm90IGFwcGxpY2FibGUuJmx0Oy9wJmd0OyAmbHQ7cCZndDtEZWZpbml0aW9uIG9mCiAgICAgIHZhcmlhYmxlcyZsdDsvcCZndDsgJmx0O3AmZ3Q7VGhlIHByaW1hcnkgZXhwb3N1cmUgd2FzIHJlbmFsIGNvcnRpY2FsIENUUlAxCiAgICAgIGV4cHJlc3Npb24sIHF1YW50aWZpZWQgYXMgdGhlIHBlcmNlbnRhZ2Ugb2YgQ1RSUDEtcG9zaXRpdmUgdHVidWxhciBjZWxscwogICAgICBpbiBlYWNoIGJpb3BzeSBjb3JlLiBQcmltYXJ5IG91dGNvbWVzIHdlcmUgdHVidWxhciBzZW5lc2NlbmNlIG1hcmtlcnMsCiAgICAgIGFzc2Vzc2VkIGFzIHRoZSBwZXJjZW50YWdlcyBvZiBwMTYtcG9zaXRpdmUgYW5kIHAyMS1wb3NpdGl2ZSB0dWJ1bGFyCiAgICAgIGNlbGxzLiBTZWNvbmRhcnkgb3V0Y29tZXMgaW5jbHVkZWQgcmVuYWwgZnVuY3Rpb24gcGFyYW1ldGVycyAoZXN0aW1hdGVkCiAgICAgIGdsb21lcnVsYXIgZmlsdHJhdGlvbiByYXRlIFtlR0ZSXSwgc2VydW0gY3JlYXRpbmluZSwgYW5kIGJsb29kIHVyZWEKICAgICAgbml0cm9nZW4pLCBhbGJ1bWludXJpYSAodXJpbmFyeSBhbGJ1bWluLXRvLWNyZWF0aW5pbmUgcmF0aW8pLCBhbmQKICAgICAgaGlzdG9sb2dpY2FsIG1hcmtlcnMgb2YgcmVuYWwgY29ydGljYWwgZmlicm9zaXMuIERLRCBjYXNlcyB3ZXJlIHN0YWdlZAogICAgICBhY2NvcmRpbmcgdG8ga2lkbmV5IGRpc2Vhc2U6IEltcHJvdmluZyBHbG9iYWwgT3V0Y29tZXMgKEtESUdPKSBjcml0ZXJpYS4KICAgICAgQWdlIHdhcyBjYXRlZ29yaXplZCBhcyAxOOKAkzM1LCAzNuKAkzY0LCBvciDiiaUgNjUgeWVhcnMsIGFuZCBlR0ZSIHdhcwogICAgICBzdHJhdGlmaWVkIGFzIDMw4oCTODkgb3IgJmFtcDtsdDszMCBtTC9taW4vMS43MyBtwrIgdG8gcmVmbGVjdCBjbGluaWNhbGx5CiAgICAgIG1lYW5pbmdmdWwgY2F0ZWdvcmllcyBvZiByZW5hbCBpbXBhaXJtZW50LiZsdDsvcCZndDsgJmx0O3AmZ3Q7QW5hbHlzZXMKICAgICAgd2VyZSBjb25kdWN0ZWQgdXNpbmcgY29tcGxldGUgY2FzZXM7IHNhbXBsZXMgd2l0aCBtaXNzaW5nIG9yIHVuZXZhbHVhYmxlCiAgICAgIHN0YWluaW5nIGZvciBhIGdpdmVuIG1hcmtlciB3ZXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgYW5hbHlzaXMKICAgICAgd2l0aG91dCBpbXB1dGF0aW9uLiZsdDsvcCZndDsgJmx0O3AmZ3Q7SW1tdW5vaGlzdG9jaGVtaXN0cnkgYW5kCiAgICAgIGFuYWx5c2lzJmx0Oy9wJmd0OyAmbHQ7cCZndDtQYXJhZmZpbi1lbWJlZGRlZCBzZWN0aW9ucyAoNSDCtW0pIHdlcmUKICAgICAgZGVwYXJhZmZpbml6ZWQsIHJlaHlkcmF0ZWQsIHRyZWF0ZWQgd2l0aCAzJSBI4oKCT+KCgiwgYW5kIHN1YmplY3RlZCB0byBhbnRpZ2VuCiAgICAgIHJldHJpZXZhbCBpbiBjaXRyYXRlIGJ1ZmZlciAocEggNi4wKS4gQWZ0ZXIgYmVpbmcgYmxvY2tlZCB3aXRoIDEwJSBnb2F0CiAgICAgIHNlcnVtLCB0aGUgc2VjdGlvbnMgd2VyZSBpbmN1YmF0ZWQgb3Zlcm5pZ2h0IGF0IDTCsEMgd2l0aCBhbnRpYm9kaWVzCiAgICAgIGFnYWluc3QgQ1RSUDEsIHAyMSwgb3IgcDE2ICgxOjEwMCksIGZvbGxvd2VkIGJ5IGluY3ViYXRpb24gd2l0aAogICAgICBIUlAtY29uanVnYXRlZCBzZWNvbmRhcnkgYW50aWJvZGllcyAoMTo1MDApIGZvciAxIGggYXQgcm9vbSB0ZW1wZXJhdHVyZQogICAgICBhbmQgc3Vic2VxdWVudCBEQUIgZGV2ZWxvcG1lbnQuIFdob2xlLXNsaWRlIGltYWdlcyB3ZXJlIGFjcXVpcmVkIHZpYSBhCiAgICAgIEtGQklPIHNjYW5uZXIuIEVhY2ggd2hvbGUtc2xpZGUgaW1hZ2UgY29udGFpbmVkIG9uZSBvciBtb3JlIHJlbmFsIGJpb3BzeQogICAgICBjb3JlcywgYW5kIHRoZSBwZXJjZW50YWdlIG9mIGNlbGxzIHBvc2l0aXZlIGZvciBDVFJQMSwgcDIxLCBvciBwMTYgaW4gZWFjaAogICAgICBiaW9wc3kgY29yZSB3YXMgcXVhbnRpZmllZCB1c2luZyBRdVBhdGggc29mdHdhcmUgKHZlcnNpb24gMC42LjAgLAogICAgICBSUklEOlNDUl8wMTgyNTcpLiZsdDsvcCZndDsgJmx0O3AmZ3Q7V2VzdGVybiBibG90dGluZyZsdDsvcCZndDsKICAgICAgJmx0O3AmZ3Q7VGlzc3VlcyBvciBjdWx0dXJlZCBjZWxscyB3ZXJlIGx5c2VkIGluIFJJUEEgYnVmZmVyIHN1cHBsZW1lbnRlZAogICAgICB3aXRoIHByb3RlYXNlL3Bob3NwaGF0YXNlIGluaGliaXRvcnMuIFByb3RlaW5zICgzMOKAkzUwIMK1Zykgd2VyZSBzZXBhcmF0ZWQKICAgICAgYnkgMTAlIFNEU+KAklBBR0UsIHRyYW5zZmVycmVkIHRvIFBWREYgbWVtYnJhbmVzLCBibG9ja2VkIHdpdGggNSUgbm9uZmF0CiAgICAgIG1pbGssIGFuZCBpbmN1YmF0ZWQgb3Zlcm5pZ2h0IHdpdGggcHJpbWFyeSBhbnRpYm9kaWVzICgxOjEwMDApIGFnYWluc3QKICAgICAgQ1RSUDEsIFNHTFQyLCBwMjEsIENvbGxhZ2VuIEksIM6xLVNNQSwgb3IgR0FQREggKDE6NTAwMCkuIEFmdGVyCiAgICAgIEhSUC1jb25qdWdhdGVkIHNlY29uZGFyeSBhbnRpYm9kaWVzIHdlcmUgYWRkZWQgKDE6NTAwMCwgMSBoKSwgdGhlIHNpZ25hbHMKICAgICAgd2VyZSBkZXRlY3RlZCB2aWEgRUNMIGFuZCBxdWFudGlmaWVkIHZpYSBJbWFnZUoKICAgICAgKFJSSUQ6U0NSXzAwMzA3MCkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtBbnRpYm9kaWVzIGFuZCByZWFnZW50cyZsdDsvcCZndDsKICAgICAgJmx0O3AmZ3Q7VGhlIGZvbGxvd2luZyBwcmltYXJ5IGFudGlib2RpZXMgd2VyZSB1c2VkIGluIHRoaXMgc3R1ZHk6CiAgICAgIGFudGktQ1RSUDEgKEFiY2FtLCBDYXQjIGFiMjU5NzMsIFJSSUQ6IEFCXzQ0ODkzNyksIGFudGktU0dMVDIgKG1vdXNlCiAgICAgIG1vbm9jbG9uYWwsIFNhbnRhIENydXogQmlvdGVjaG5vbG9neSwgQ2F0IyBzYy0zOTMzNTAsIFJSSUQ6QUJfMjgxNDY1OCksCiAgICAgIGFudGktcDIxIChyYWJiaXQgbW9ub2Nsb25hbCwgQ2VsbCBTaWduYWxpbmcgVGVjaG5vbG9neSwgQ2F0IyAyOTQ3UywKICAgICAgUlJJRDpBQl84MjM1ODYpLCBhbnRpLXAxNklOSzRhL0NES04yQSAocmFiYml0IG1vbm9jbG9uYWwsIEFCY2xvbmFsLCBDYXQjCiAgICAgIEExMTY1MSwgUlJJRDpBQl8yODYxNjE5KSwgYW50aS1DT0wxQTEgKHJhYmJpdCBtb25vY2xvbmFsLCBDZWxsIFNpZ25hbGluZwogICAgICBUZWNobm9sb2d5LCBDYXQjIDkxMTQ0UywgUlJJRDpBQl8yODAwMTY5KSwgYW50aS3OsS1TTUEgKHJhYmJpdCBtb25vY2xvbmFsLAogICAgICBDZWxsIFNpZ25hbGluZyBUZWNobm9sb2d5LCBDYXQjIDE5MjQ1UywgUlJJRDpBQl8yNzM0NzM1KSwgYW5kIGFudGktR0FQREgKICAgICAgKHJhYmJpdCBtb25vY2xvbmFsLCBBQmNsb25hbCwgQ2F0IyBBMTkwNTYsIFJSSUQ6QUJfMjg2MjU0OSkuJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtCaW9pbmZvcm1hdGljcyBhbmFseXNpcyZsdDsvcCZndDsgJmx0O3AmZ3Q7VHJhbnNjcmlwdG9taWMKICAgICAgZGF0YXNldHMgb2YgcmVuYWwgdHVidWxhciBlcGl0aGVsaWFsIGNlbGxzIGZyb20gQ1RSUDEta25vY2tvdXQgYW5kIGNvbnRyb2wKICAgICAgbWljZSB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIEdlbmUgRXhwcmVzc2lvbiBPbW5pYnVzIChHRU8pIGRhdGFiYXNlCiAgICAgIChHU0UxMjczMzIpIFsyMl0gdG8gYXNzZXNzIGdsdWNvc2UgdHJhbnNwb3J0ZXIgZXhwcmVzc2lvbiwgd2l0aCBhIGZvY3VzIG9uCiAgICAgIFNHTFQyLiBUaW1lLXNlcmllcyB0cmFuc2NyaXB0b21pYyBkYXRhIG92ZXIgNDggaG91cnMgKEdTRTIxNzg1MykgWzIzXSB3ZXJlCiAgICAgIGZ1cnRoZXIgdXNlZCB0byBxdWFudGlmeSBDVFJQMSBhbmQgU0dMVDIgbVJOQSBsZXZlbHMuIEEgZ2VuZXJhbGl6ZWQKICAgICAgYWRkaXRpdmUgbWl4ZWQtZWZmZWN0cyBtb2RlbCB3YXMgYXBwbGllZCB0byB0aGUgdGltZS1zZXJpZXMgZGF0YSB0bwogICAgICBjaGFyYWN0ZXJpemUgdGhlaXIgZXhwcmVzc2lvbiB0cmFqZWN0b3JpZXMgYW5kIGV2YWx1YXRlIHBhcmFsbGVsIGNoYW5nZXMKICAgICAgb3ZlciB0aGUgNDgtaG91ciBwZXJpb2QuJmx0Oy9wJmd0OyAmbHQ7cCZndDtDZWxsIGN1bHR1cmUgYW5kIGxlbnRpdmlyYWwKICAgICAgdHJhbnNkdWN0aW9uJmx0Oy9wJmd0OyAmbHQ7cCZndDtOUkstNTJFIGNlbGxzIChSUklEOkNWQ0xfMDQ2OCkgd2VyZQogICAgICBjdWx0dXJlZCBpbiBETUVNIHN1cHBsZW1lbnRlZCB3aXRoIDEwJSBGQlMgYW5kIDElCiAgICAgIHBlbmljaWxsaW7igJNzdHJlcHRvbXljaW4uwqAgVGhlIGNlbGxzIHdlcmUgdHJhbnNkdWNlZCB3aXRoCiAgICAgIENUUlAxLW92ZXJleHByZXNzaW5nIChMVi1DVFJQMS1PRSkgb3IgY29udHJvbCAoTFYtQ1RSUDEtTkMpIGxlbnRpdmlydXM7CiAgICAgIEdGUCBwb3NpdGl2aXR5IGNvbmZpcm1lZCB0cmFuc2R1Y3Rpb24uIEFmdGVyIHRyYW5zZHVjdGlvbiwgdGhlIGNlbGxzIHdlcmUKICAgICAgY3VsdHVyZWQgdW5kZXIgbm9ybWFsLWdsdWNvc2UgKDUuNSBtTSkgb3IgaGlnaC1nbHVjb3NlICgzMCBtTSkgY29uZGl0aW9ucwogICAgICBmb3IgNDggaC4gVGhlc2UgY29uZGl0aW9ucyB3ZXJlIHNlbGVjdGVkIHdpdGggcmVmZXJlbmNlIHRvIHB1Ymxpc2hlZCBpbgogICAgICB2aXRybyBtb2RlbHMgb2YgZGlhYmV0aWMgaHlwZXJnbHljZW1pYyBzdHJlc3MgaW4gcmVuYWwgdHVidWxhciBlcGl0aGVsaWFsCiAgICAgIGNlbGxzJmx0O3N1cCZndDtbMjQsIDI1XSZsdDsvc3VwJmd0Oy4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O0dsdWNvc2UgdXB0YWtlCiAgICAgIGFzc2F5Jmx0Oy9wJmd0OyAmbHQ7cCZndDtHbHVjb3NlIHVwdGFrZSB3YXMgbWVhc3VyZWQgdmlhIGEgR2x1Y29zZSBVcHRha2UKICAgICAgQXNzYXkgS2l0LUJsdWUgKERvamluZG8sIFVQMDEpJmx0O3N1cCZndDtbMjZdJmx0Oy9zdXAmZ3Q7LiBUaGUgY2VsbHMgd2VyZQogICAgICB3YXNoZWQgYW5kIGluY3ViYXRlZCBpbiBnbHVjb3NlLWZyZWUgRE1FTSAoMTUgbWluKSBhbmQgdGhlbiBpbiBwcm9iZQogICAgICBzb2x1dGlvbiAoMTo1MDAsIDE1IG1pbikuIFRoZSBtZWFuIGZsdW9yZXNjZW5jZSBpbnRlbnNpdHkgKE1GSSkgd2FzCiAgICAgIG1lYXN1cmVkIHZpYSBmbG93IGN5dG9tZXRyeS4mbHQ7L3AmZ3Q7ICZsdDtwJmd0O0FuaW1hbCBtb2RlbCZsdDsvcCZndDsKICAgICAgJmx0O3AmZ3Q7TWFsZSBTcHJhZ3Vl4oCTRGF3bGV5IHJhdHMgKFJSSUQ6UkdEXzcwNTA4LCA4IHdlZWtzIG9sZCwgMjAwLTI1MCBnCiAgICAgIGF0IGJhc2VsaW5lKSB3ZXJlIGZlZCBhIGhpZ2gtZmF0IGRpZXQgKEQxMjQ2MiksIHN1YmplY3RlZCB0byB1bmlsYXRlcmFsCiAgICAgIG5lcGhyZWN0b215LCBhbmQgaW5qZWN0ZWQgd2l0aCBzdHJlcHRvem90b2NpbiAoNTAgbWcva2cpIHRvIGVzdGFibGlzaCBES0QuCiAgICAgIFRoZSBIRkQvU1RaL1VOeCBwcm90b2NvbCB3YXMgc2VsZWN0ZWQgYmVjYXVzZSBpdCBpbnRlZ3JhdGVzIGluc3VsaW4KICAgICAgcmVzaXN0YW5jZSwgaHlwZXJnbHljZW1pYSwgYW5kIG5lcGhyb24gbG9zcywgdGhlcmVieSByZXByb2R1Y2libHkKICAgICAgYWNjZWxlcmF0aW5nIERLRCBwcm9ncmVzc2lvbiBhbmQgaW5kdWNpbmcgbWV0YWJvbGljIGFuZCByZW5hbAogICAgICBhYm5vcm1hbGl0aWVzIHRoYXQgcmVzZW1ibGUgcHJvZ3Jlc3NpdmUgREtEJmx0O3N1cCZndDtbMjcsCiAgICAgIDI4XSZsdDsvc3VwJmd0Oy4gSHlwZXJnbHljZW1pYy9wcm90ZWludXJpYyByYXRzIHdlcmUgcmFuZG9taXplZAogICAgICAobj01L2dyb3VwKSBpbnRvIHRoZSBmb2xsb3dpbmcgZ3JvdXBzOiBTaGFtLCBES0QsIERBUEEsIGFuZCBES0QgKyBEQVBBLgogICAgICBUaGUgZXhwZXJpbWVudGFsIHVuaXQgd2FzIGEgc2luZ2xlIGFuaW1hbC4gRGFwYWdsaWZsb3ppbiAoMC4xIG1nL2tnL2RheSkKICAgICAgb3Igc2FsaW5lIHdhcyBhZG1pbmlzdGVyZWQgb3JhbGx5IGZvciAxMiB3ZWVrcy4gVGhlIGRhcGFnbGlmbG96aW4gZG9zZSBhbmQKICAgICAgdHJlYXRtZW50IGR1cmF0aW9uIHdlcmUgc2VsZWN0ZWQgd2l0aCByZWZlcmVuY2UgdG8gcHJldmlvdXMgZXhwZXJpbWVudGFsCiAgICAgIHN0dWRpZXMgYW5kIGFkYXB0ZWQgdG8gdGhlIHByZXNlbnQgREtEIG1vZGVsJmx0O3N1cCZndDtbMjldJmx0Oy9zdXAmZ3Q7LgogICAgICBObyB1bmV4cGVjdGVkIGFuaW1hbCBkZWF0aHMgb3IgZXhjbHVzaW9ucyBvY2N1cnJlZCBkdXJpbmcgdGhlIHN0dWR5LiBBbGwKICAgICAgYW5pbWFsIGV4cGVyaW1lbnRzIHdlcmUgYXBwcm92ZWQgYnkgdGhlIEFuaW1hbCBFdGhpY3MgQ29tbWl0dGVlIG9mIE5hbmppbmcKICAgICAgVW5pdmVyc2l0eSBvZiBDaGluZXNlIE1lZGljaW5lIGFuZCBjYXJyaWVkIG91dCBpbiBzdHJpY3QgYWNjb3JkYW5jZSB3aXRoCiAgICAgIHRoZSBpbnN0aXR1dGlvbmFsIGd1aWRlbGluZXMgZm9yIHRoZSBjYXJlIGFuZCB1c2Ugb2YgbGFib3JhdG9yeSBhbmltYWxzCiAgICAgIChBcHByb3ZhbCBOby4gMjAyMzA4QTAxNCkuJmx0Oy9wJmd0OyAmbHQ7cCZndDtNZXRhYm9saWMgYW5kIHJlbmFsIGZ1bmN0aW9uCiAgICAgIGFzc2Vzc21lbnRzJmx0Oy9wJmd0OyAmbHQ7cCZndDtBZnRlciAxMiB3ZWVrcywgZ2x1Y29zZSB0b2xlcmFuY2UgdGVzdHMKICAgICAgKEdUVHMpIGFuZCBpbnN1bGluIHRvbGVyYW5jZSB0ZXN0cyAoSVRUcykgd2VyZSBwZXJmb3JtZWQuIFNlcnVtCiAgICAgIGNyZWF0aW5pbmUsIGJsb29kIHVyZWEgbml0cm9nZW4sIHRvdGFsIGNob2xlc3Rlcm9sLCBhbmQgdHJpZ2x5Y2VyaWRlcyB3ZXJlCiAgICAgIG1lYXN1cmVkLiZsdDsvcCZndDsgJmx0O3AmZ3Q7SGlzdG9wYXRob2xvZ3kmbHQ7L3AmZ3Q7ICZsdDtwJmd0O1NlY3Rpb25zCiAgICAgIHdlcmUgc3RhaW5lZCB3aXRoIFBBUywgSEUsIE1hc3NvbidzIHRyaWNocm9tZSwgYW5kIFNBLc6yLWdhbC4KICAgICAgVHJhbnNtaXNzaW9uIGVsZWN0cm9uIG1pY3Jvc2NvcHkgKFRFTSkgd2FzIHVzZWQgdG8gZXhhbWluZSB1bHRyYXN0cnVjdHVyYWwKICAgICAgY2hhbmdlcyAoSGl0YWNoaSBIVDc4MDAsIMOXNzAwMCkuIEhpc3RvbG9naWNhbCBpbWFnZSBxdWFudGlmaWNhdGlvbiB3YXMKICAgICAgcGVyZm9ybWVkIGJ5IGludmVzdGlnYXRvcnMgYmxpbmRlZCB0byBncm91cCBhbGxvY2F0aW9uLiZsdDsvcCZndDsKICAgICAgJmx0O3AmZ3Q7RHVhbCBpbW11bm9mbHVvcmVzY2VuY2UgYW5kIGNvbG9jYWxpemF0aW9uIGFuYWx5c2lzJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtUaGUgc2VjdGlvbnMgd2VyZSBpbmN1YmF0ZWQgd2l0aCBwcmltYXJ5IGFudGlib2RpZXMgYWdhaW5zdCBDVFJQMQogICAgICAocmFiYml0LCAxOjEwMCkgYW5kIFNHTFQyIChtb3VzZSwgMToxMDApLCBmb2xsb3dlZCBieSBBbGV4YQogICAgICBGbHVvci1jb25qdWdhdGVkIHNlY29uZGFyeSBhbnRpYm9kaWVzIGFuZCBEQVBJIHN0YWluaW5nLiBJbWFnZXMgd2VyZQogICAgICBhY3F1aXJlZCAoUGFubm9yYW1pYyBTQ0FOIElJKSBhbmQgYW5hbHl6ZWQgKHYwLjYuMCwgUlJJRDpTQ1JfMDE4MjU3KSBmb3IKICAgICAgY29sb2NhbGl6YXRpb24gYW5kIE1GSS4gSW1tdW5vZmx1b3Jlc2NlbmNlIGltYWdlIHF1YW50aWZpY2F0aW9uIHdhcwogICAgICBwZXJmb3JtZWQgYnkgaW52ZXN0aWdhdG9ycyBibGluZGVkIHRvIGdyb3VwIGFsbG9jYXRpb24uJmx0Oy9wJmd0OwogICAgICAmbHQ7cCZndDtGbG93IGN5dG9tZXRyeSZsdDsvcCZndDsgJmx0O3AmZ3Q7UmVuYWwgdHVidWxhciBjZWxscyB3ZXJlCiAgICAgIGlzb2xhdGVkIHZpYSBlbnp5bWF0aWMgZGlnZXN0aW9uLiBUaGUgY2VsbHMgd2VyZSBpbmN1YmF0ZWQgd2l0aCBhIGdsdWNvc2UKICAgICAgdXB0YWtlIHByb2JlLCBmaXhlZCwgcGVybWVhYmlsaXplZCwgYW5kIHN0YWluZWQgd2l0aCBhbnRpLUNUUlAxIGFuZAogICAgICBhbnRpLVNHTFQyIGFudGlib2RpZXMsIGZvbGxvd2VkIGJ5IGluY3ViYXRpb24gd2l0aCBmbHVvcmVzY2VudCBzZWNvbmRhcnkKICAgICAgYW50aWJvZGllcy4gVGhlIHNpZ25hbHMgd2VyZSBhbmFseXplZCBieSBmbG93IGN5dG9tZXRyeS4mbHQ7L3AmZ3Q7CiAgICAgICZsdDtwJmd0O1N0YXRpc3RpY2FsIGFuYWx5c2lzJmx0Oy9wJmd0OyAmbHQ7cCZndDtDb250aW51b3VzIGRhdGEgYXJlCiAgICAgIGV4cHJlc3NlZCBhcyB0aGUgbWVhbiDCsSBTRU0uIERhdGEgZGlzdHJpYnV0aW9uIHdhcyBhc3Nlc3NlZCB1c2luZwogICAgICBTaGFwaXJv4oCTV2lsayBub3JtYWxpdHkgdGVzdHMsIGFuZCBob21vZ2VuZWl0eSBvZiB2YXJpYW5jZXMgd2FzIGV2YWx1YXRlZAogICAgICB1c2luZyBCcm93buKAk0ZvcnN5dGhlIGFuZCBCYXJ0bGV0dCB0ZXN0cy4gV2hlbiBhcHByb3ByaWF0ZSwgcmlnaHTigJFza2V3ZWQKICAgICAgdmFyaWFibGVzIHdlcmUgbG9nMTDigJF0cmFuc2Zvcm1lZCB0byBiZXR0ZXIgbWVldCBtb2RlbCBhc3N1bXB0aW9ucy4gSW4KICAgICAgcGFydGljdWxhciwgc2VydW0gY3JlYXRpbmluZSwgYmxvb2QgdXJlYSBuaXRyb2dlbiwgYW5kIHNlcnVtIHRvdGFsCiAgICAgIGNob2xlc3Rlcm9sIGFuZCB0cmlnbHljZXJpZGUgbGV2ZWxzIHdlcmUgYW5hbHlzZWQgb24gbG9nMTDigJF0cmFuc2Zvcm1lZAogICAgICB2YWx1ZXMsIHdoZXJlYXMgdGhlIGNvcnJlc3BvbmRpbmcgZmlndXJlcyBkaXNwbGF5IHRoZSBtZWFuIMKxIFNFTSBvZiB0aGUKICAgICAgdW50cmFuc2Zvcm1lZCBkYXRhLiZsdDsvcCZndDsgJmx0O3AmZ3Q7Rm9yIHR3b+KAkWdyb3VwIGNvbXBhcmlzb25zLCB1bnBhaXJlZAogICAgICBTdHVkZW504oCZcyB0IHRlc3RzIHdlcmUgdXNlZCB3aGVuIG5vcm1hbGl0eSBhbmQgZXF1YWwgdmFyaWFuY2UgYXNzdW1wdGlvbnMKICAgICAgd2VyZSByZWFzb25hYmx5IHNhdGlzZmllZC4gRm9yIGNvbXBhcmlzb25zIGFtb25nIG1vcmUgdGhhbiB0d28gZ3JvdXBzLAogICAgICBvbmXigJF3YXkgQU5PVkEgZm9sbG93ZWQgYnkgVHVrZXnigJlzIHBvc3QgaG9jIHRlc3Qgd2FzIGFwcGxpZWQgdW5kZXIgdGhlIHNhbWUKICAgICAgYXNzdW1wdGlvbnMuIEdsdWNvc2UgYW5kIGluc3VsaW4gdG9sZXJhbmNlIGN1cnZlcyB3ZXJlIGFuYWx5c2VkIGJ5IHR3b+KAkXdheQogICAgICByZXBlYXRlZOKAkW1lYXN1cmVzIEFOT1ZBIChmYWN0b3JzOiBncm91cCBhbmQgdGltZSksIGFuZCB0aGUgY29ycmVzcG9uZGluZwogICAgICBhcmVhcyB1bmRlciB0aGUgY3VydmUgd2VyZSBjb21wYXJlZCB1c2luZyBvbmXigJF3YXkgQU5PVkEuIFBlYXJzb24KICAgICAgY29ycmVsYXRpb24gd2FzIHVzZWQgdG8gYXNzZXNzIGFzc29jaWF0aW9ucyBiZXR3ZWVuIGNvbnRpbnVvdXMgdmFyaWFibGVzLgogICAgICBBIHR3b+KAkXNpZGVkIFAgdmFsdWUgJmFtcDtsdDsgMC4wNSB3YXMgY29uc2lkZXJlZCBzdGF0aXN0aWNhbGx5CiAgICAgIHNpZ25pZmljYW50LiZsdDsvcCZndDsgJmx0O3AmZ3Q7R2l2ZW4gdGhlIGxpbWl0ZWQgc2FtcGxlIHNpemUgb2YgdGhlIGh1bWFuCiAgICAgIGJpb3BzeSBjb2hvcnQsIG11bHRpdmFyaWFibGUgcmVncmVzc2lvbiBtb2RlbGxpbmcgd2FzIG5vdCBwZXJmb3JtZWQsIGFuZAogICAgICB3ZSBmb2N1c2VkIG9uIHVuYWRqdXN0ZWQgY29ycmVsYXRpb25zIGJldHdlZW4gQ1RSUDEsIHNlbmVzY2VuY2UgbWFya2VycywKICAgICAgYW5kIGNsaW5pY2FsIHZhcmlhYmxlcy4mbHQ7L3AmZ3Q7CiAgICA8L2Rlc2NyaXB0aW9uPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iVGVjaG5pY2FsSW5mbyI+CiAgICAgICMgRGF0YSBmcm9tOiBTR0xUMiBpbmhpYml0aW9uIGF0dGVudWF0ZXMgcmVuYWwgdHVidWxhciBzZW5lc2NlbmNlIGJ5CiAgICAgIHN1cHByZXNzaW5nIENUUlAxLW1lZGlhdGVkIGdsdWNvdG94aWMgc3RyZXNzIGluIGRpYWJldGljIGtpZG5leSBkaXNlYXNlCiAgICAgIERhdGFzZXQgRE9JOgogICAgICBbMTAuNTA2MS9kcnlhZC5majZxNTc0OTVdKGh0dHBzOi8vZG9pLm9yZy8xMC41MDYxL2RyeWFkLmZqNnE1NzQ5NSkgIyMKICAgICAgRGVzY3JpcHRpb24gb2YgdGhlIGRhdGEgYW5kIGZpbGUgc3RydWN0dXJlIFRoaXMgc3VibWlzc2lvbiBjb250YWlucyBodW1hbiwKICAgICAgYW5pbWFsLCBhbmQgY2VsbCBkYXRhc2V0cyBnZW5lcmF0ZWQgdG8gc3R1ZHkgQ1RSUDEsIHR1YnVsYXIgc2VuZXNjZW5jZSwKICAgICAgZ2x1Y29zZSBoYW5kbGluZywgYW5kIGtpZG5leSBpbmp1cnkgaW4gZGlhYmV0aWMga2lkbmV5IGRpc2Vhc2UuIFRoZSBodW1hbgogICAgICBkYXRhIGluY2x1ZGUgZGUtaWRlbnRpZmllZCBraWRuZXkgYmlvcHN5IG1lYXN1cmVtZW50cyBmcm9tCiAgICAgIGltbXVub2hpc3RvY2hlbWlzdHJ5LCBRdVBhdGgtYmFzZWQgaW1hZ2UgYW5hbHlzaXMsIGFuZCBXZXN0ZXJuIGJsb3QKICAgICAgcXVhbnRpZmljYXRpb24uIFRoZSBhbmltYWwgZGF0YSBpbmNsdWRlIHJhdCBkaWFiZXRpYyBraWRuZXkgZGlzZWFzZQogICAgICBleHBlcmltZW50cywgbG9uZ2l0dWRpbmFsIG1ldGFib2xpYyBtZWFzdXJlbWVudHMsIGtpZG5leQogICAgICBpbW11bm9mbHVvcmVzY2VuY2UgYW5hbHlzaXMsIGZsb3cgY3l0b21ldHJ5LWJhc2VkIGdsdWNvc2UgdXB0YWtlCiAgICAgIG1lYXN1cmVtZW50cywgYW5kIGFzc29jaWF0ZWQgc291cmNlIGZpbGVzLiBUaGUgY2VsbCBkYXRhIGluY2x1ZGUgTlJLLTUyRQogICAgICBmbG93IGN5dG9tZXRyeS1iYXNlZCBnbHVjb3NlIHVwdGFrZSBtZWFzdXJlbWVudHMsIFdlc3Rlcm4gYmxvdAogICAgICBkZW5zaXRvbWV0cnkgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRvbWljIGV4cHJlc3Npb24gZGF0YXNldHMgdXNlZCB0bwogICAgICBzdXBwb3J0IGZpZ3VyZSBnZW5lcmF0aW9uIGFuZCBpbnRlcnByZXRhdGlvbi4gIyMjIEZpbGVzIGFuZCB2YXJpYWJsZXMgIyMjIwogICAgICBGaWxlOiBGQVNFQl9EcnlhZF9kYXRhc2V0Xy56aXAgKipEZXNjcmlwdGlvbjoqKiBUaGlzIHN1Ym1pc3Npb24gaW5jbHVkZXMKICAgICAgbXVsdGlwbGUgcmVsYXRlZCBkYXRhc2V0cyBvcmdhbml6ZWQgYnkgZXhwZXJpbWVudGFsIHN5c3RlbSBhbmQgYXNzYXkgdHlwZS4KICAgICAgRmlsZS1sZXZlbCBkb2N1bWVudGF0aW9uIGlzIHByb3ZpZGVkIGluIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUocyksCiAgICAgIHdoaWNoIGRlc2NyaWJlIGZpbGUgY29udGVudHMsIGZpbGUgcmVsYXRpb25zaGlwcywgdmFyaWFibGUgZGVmaW5pdGlvbnMsCiAgICAgIGFiYnJldmlhdGlvbnMsIHVuaXRzIG9mIG1lYXN1cmVtZW50LCBhbmQgbWlzc2luZy12YWx1ZSBjb2RpbmcuIEFjcm9zcyB0aGUKICAgICAgc3VibWlzc2lvbiwgcHJpbWFyeSBmaWxlcyBpbmNsdWRlIENTViB0YWJsZXMgZm9yIHF1YW50aXRhdGl2ZQogICAgICBtZWFzdXJlbWVudHMsIFpJUCBhcmNoaXZlcyBjb250YWluaW5nIHJhdyBpbWFnZSBvciBGQ1MgZmlsZXMsIGFuZCBQREYKICAgICAgZmlsZXMgY29udGFpbmluZyByZXByZXNlbnRhdGl2ZSBzb3VyY2UgaW1hZ2VzIG9yIGZpZ3VyZSBwYW5lbHMuIE1pc3NpbmcKICAgICAgdmFsdWVzIGFyZSBjb2RlZCBhcyBOQSB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB0aGUgcmVsZXZhbnQKICAgICAgZmlsZS1sZXZlbCBkb2N1bWVudGF0aW9uLiBUaGUgaHVtYW4gdGlzc3VlIGRhdGFzZXRzIGluIHRoZSBjdXJyZW50IERyeWFkCiAgICAgIHJlcG9zaXRvcnkgYXJlIHByb3ZpZGVkIGFzIGdyb3VwLWxldmVsIHN1bW1hcnkgZGF0YXNldHMgb25seS4gVGhlIGh1bWFuCiAgICAgIElIQyAvIFF1UGF0aCBzdWJmb2xkZXIgY29udGFpbnMga2lkbmV5X2Jpb3BzeV9paGNfZ3JvdXBfc3VtbWFyeS5jc3YgYW5kCiAgICAgIGl0cyBSRUFETUUgZmlsZSwgd2hpY2ggcHJvdmlkZSBncm91cC1sZXZlbCBxdWFudGl0YXRpdmUgc3VtbWFyeSBkYXRhIGZvcgogICAgICBDVFJQMSwgcDE2LCBhbmQgcDIxIGluIGh1bWFuIGtpZG5leSBiaW9wc3kgc2FtcGxlcy4gVGhlIGh1bWFuIFdlc3Rlcm4gYmxvdAogICAgICBzdWJmb2xkZXIgY29udGFpbnMga2lkbmV5X2Jpb3BzeV93Yl9ncm91cF9zdW1tYXJ5LmNzdiwKICAgICAgd2JfdW5jcm9wcGVkX2ltYWdlc19odW1hbi56aXAsIGFuZCBpdHMgUkVBRE1FIGZpbGUsIHdoaWNoIHByb3ZpZGUKICAgICAgZ3JvdXAtbGV2ZWwgcXVhbnRpdGF0aXZlIHN1bW1hcnkgZGF0YSBhbmQgdW5jcm9wcGVkIHNvdXJjZS1pbWFnZSBmaWxlcy4gTm8KICAgICAgUk9JLWxldmVsLCBzYW1wbGUtbGV2ZWwsIG9yIHBhcnRpY2lwYW50LWxldmVsIGh1bWFuIGRhdGEgYXJlIGluY2x1ZGVkIGluCiAgICAgIHRoZSBjdXJyZW50IHJlcG9zaXRvcnkuIFRoZSBhbmltYWwgZGF0YXNldHMgaW5jbHVkZSBhIHJhdCBleHBlcmltZW50CiAgICAgIG1hc3RlciBzaGVldCwgR1RUIGFuZCBJVFQgdGltZS1jb3Vyc2UgdGFibGVzLCBHVFQgYW5kIElUVCBBVUMgc3VtbWFyeQogICAgICB0YWJsZXMsIGFuaW1hbCBraWRuZXkgaW1tdW5vZmx1b3Jlc2NlbmNlIGZpbGVzLCBhbmQgYW5pbWFsIGZsb3cgY3l0b21ldHJ5CiAgICAgIGZpbGVzLiBWYXJpYWJsZXMgaW4gdGhlIGFuaW1hbCBleHBlcmltZW50IGZpbGVzIGluY2x1ZGUgaWRlbnRpZmllcnMsIGdyb3VwCiAgICAgIGFzc2lnbm1lbnRzLCBtZXRhYm9saWMgbWVhc3VyZW1lbnRzLCBpbnRlcnZlbnRpb24gdmFyaWFibGVzLCBlbmRwb2ludAogICAgICBiaW9jaGVtaXN0cnksIGFuZCBzYW1wbGUgYXZhaWxhYmlsaXR5IGZpZWxkcyBzdWNoIGFzIGFuaW1hbF9pZCwgZ3JvdXAsCiAgICAgIGRpZXQsIHN0ejFfbWdrZywgZGFwYV9tZ2tnZCwgYndfZ193azAsIGdsdV9tbW9sTF93azIwLCBjcmVhX3Vtb2xMLCBhbmQKICAgICAgdXJlYV9tbW9sTC4gQW5pbWFsIGltbXVub2ZsdW9yZXNjZW5jZSBmaWxlcyBpbmNsdWRlIGNlbGwtbGV2ZWwgYW5kCiAgICAgIGFuaW1hbC1sZXZlbCB2YXJpYWJsZXMgc3VjaCBhcyBjbGFzc2lmaWNhdGlvbiwgY3RycDFfaW50ZW5zaXR5LAogICAgICBzZ2x0Ml9pbnRlbnNpdHksIHBjdF9kb3VibGVfcG9zaXRpdmUsIGFuZCBtZWFuIGZsdW9yZXNjZW5jZSBpbnRlbnNpdHkKICAgICAgc3VtbWFyeSBmaWVsZHMsIHdoaWxlIGFuaW1hbCBmbG93IGN5dG9tZXRyeSBmaWxlcyBpbmNsdWRlIHZhcmlhYmxlcyBzdWNoCiAgICAgIGFzIHN1YnBvcHVsYXRpb24sIG5fZXZlbnRzLCBwY3Rfb2ZfcGFyZW50LCBhbmQgZ2x1Y29zZV91cHRha2VfbWZpIFRoZSBjZWxsCiAgICAgIGRhdGFzZXRzIGluY2x1ZGUgTlJLLTUyRSBmbG93IGN5dG9tZXRyeSBnbHVjb3NlIHVwdGFrZSBzdW1tYXJ5IHRhYmxlcywKICAgICAgY29uZGl0aW9uIG1ldGFkYXRhIHRhYmxlcywgcmF3IEZDUyBhcmNoaXZlcywgcmVwcmVzZW50YXRpdmUgZmxvdy1jeXRvbWV0cnkKICAgICAgaW1hZ2UgUERGcywgYW5kIFdlc3Rlcm4gYmxvdCBkZW5zaXRvbWV0cnkgdGFibGVzLiBDZWxsIGZsb3cgY3l0b21ldHJ5CiAgICAgIHZhcmlhYmxlcyBpbmNsdWRlIGV4cGVyaW1lbnRfaWQsIGdyb3VwLCBnbHVjb3NlX2NvbmRpdGlvbiwgc2FtcGxlX2lkLAogICAgICBjZWxsX3R5cGUsIGdsdWNvc2VfcHJvYmVfY2hhbm5lbCwgYW5kIGdsdWNvc2VfdXB0YWtlX21maS4gQ2VsbCBXZXN0ZXJuCiAgICAgIGJsb3QgZmlsZXMgaW5jbHVkZSBzYW1wbGVfaWQsIGdyb3VwLCB0YXJnZXRfcHJvdGVpbiwgdGFyZ2V0X2JhbmRfcmF3LAogICAgICBsb2FkaW5nX2NvbnRyb2xfcmF3LCBub3JtYWxpemVkX3RvX2dhcGRoLCBhbmQgZm9sZF9jaGFuZ2VfdnNfY29udHJvbC4KICAgICAgVHJhbnNjcmlwdG9taWMgZGF0YXNldHMgaW5jbHVkZSBleHByZXNzaW9uIG1hdHJpY2VzIGFuZCBzYW1wbGUtbWV0YWRhdGEKICAgICAgdGFibGVzIGZvciBtb3VzZSB0dWJ1bGFyIGdsdWNvc2UgdHJhbnNwb3J0ZXIgZXhwcmVzc2lvbiBhbmQgdGltZS1zZXJpZXMKICAgICAgQ1RSUDEvU0dMVDIgZXhwcmVzc2lvbiwgd2l0aCB2YXJpYWJsZXMgc3VjaCBhcyBnZW5lX3N5bWJvbCwgc2FtcGxlX2lkLAogICAgICBncm91cCwgZ2Vub3R5cGUsIHplaXRnZWJlcl90aW1lLCByZXBsaWNhdGUsIGFuZCBleHByZXNzaW9uX3VuaXQuICMjCiAgICAgIENvZGUvc29mdHdhcmUgTW9zdCB0YWJ1bGFyIGRhdGEgZmlsZXMgaW4gdGhpcyBzdWJtaXNzaW9uIGFyZSBwcm92aWRlZCBpbgogICAgICBDU1YgZm9ybWF0IGFuZCBjYW4gYmUgdmlld2VkIHVzaW5nIGZyZWUgb3Igb3BlbiBzb2Z0d2FyZSBzdWNoIGFzCiAgICAgIExpYnJlT2ZmaWNlIENhbGMsIE9wZW5PZmZpY2UgQ2FsYywgb3IgYW55IHN0YW5kYXJkIHRleHQgZWRpdG9yLiBQREYgZmlsZXMKICAgICAgY2FuIGJlIHZpZXdlZCB3aXRoIGFueSBQREYgcmVhZGVyLCBhbmQgWklQIGFyY2hpdmVzIGNhbiBiZSBvcGVuZWQgdXNpbmcKICAgICAgc3RhbmRhcmQgYXJjaGl2ZSB1dGlsaXRpZXMuIFJhdyBmbG93IGN5dG9tZXRyeSBmaWxlcyBpbiAuZmNzIGZvcm1hdAogICAgICByZXF1aXJlIGZsb3cgY3l0b21ldHJ5IGFuYWx5c2lzIHNvZnR3YXJlIGNhcGFibGUgb2YgcmVhZGluZyBGQ1MgZmlsZXMuCiAgICAgIFRJRkYgaW1hZ2UgZmlsZXMgY2FuIGJlIG9wZW5lZCB3aXRoIHN0YW5kYXJkIGltYWdlLXZpZXdpbmcgc29mdHdhcmUgc3VjaAogICAgICBhcyBJbWFnZUovRmlqaS4gUXVhbnRpdGF0aXZlIGltYWdlIGFuYWx5c2lzIGZvciB0aGUga2lkbmV5CiAgICAgIGltbXVub2hpc3RvY2hlbWlzdHJ5IGFuZCBpbW11bm9mbHVvcmVzY2VuY2UgZGF0YXNldHMgd2FzIHBlcmZvcm1lZCB1c2luZwogICAgICBRdVBhdGgsIHdpdGggdGhlIFJFQURNRSBpbmRpY2F0aW5nIHZlcnNpb24gZXhhbXBsZXMgc3VjaCBhc8KgIHYwLjYuMDsgdGhlCiAgICAgIGV4YWN0IHZlcnNpb24gdXNlZCBmb3IgZWFjaCBkYXRhc2V0IHNob3VsZCBiZSBzdGF0ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgZmlsZS1sZXZlbCBkb2N1bWVudGF0aW9uIHdoZXJlIGFwcGxpY2FibGUuIFRoZSBnZW5lcmFsIHdvcmtmbG93IHdhczogaW1hZ2UKICAgICAgYWNxdWlzaXRpb24sIGFubm90YXRpb24gb3IgZGV0ZWN0aW9uIGluIFF1UGF0aCB3aGVyZSByZWxldmFudCwgZXhwb3J0IG9mCiAgICAgIG1lYXN1cmVtZW50IHRhYmxlcyB0byBDU1Ygd2hlcmUgYXBwbGljYWJsZSBkdXJpbmcgaW50ZXJuYWwgYW5hbHlzaXMsCiAgICAgIGRlcml2YXRpb24gb2YgZ3JvdXAtbGV2ZWwgc3VtbWFyeSB0YWJsZXMgZm9yIHRoZSBkZXBvc2l0ZWQgaHVtYW4gZGF0YXNldAogICAgICB3aGVyZSBhcHBsaWNhYmxlLCBhbmQgZG93bnN0cmVhbSBzdGF0aXN0aWNhbCBhbmFseXNpcyBhbmQgZmlndXJlCiAgICAgIGdlbmVyYXRpb24gdXNpbmcgdGhlIHByb2Nlc3NlZCB0YWJ1bGFyIGZpbGVzLiBJZiBubyBjdXN0b20gY29kZSBvciBzY3JpcHRzCiAgICAgIGFyZSBpbmNsdWRlZCBpbiB0aGUgc3VibWlzc2lvbiwgdGhpcyBzaG91bGQgYmUgc3RhdGVkIGV4cGxpY2l0bHkgaW4gdGhlCiAgICAgIGZpbmFsIGRlcG9zaXRlZCBSRUFETUUuICMjIEFjY2VzcyBpbmZvcm1hdGlvbiBPdGhlciBwdWJsaWNseSBhY2Nlc3NpYmxlCiAgICAgIGxvY2F0aW9ucyBvZiB0aGUgZGF0YTogKiBEcnlhZCBzdWJtaXNzaW9uIG9ubHkgZm9yIHN0dWR5LWdlbmVyYXRlZCBmaWxlcy4KICAgICAgUHVibGljbHkgc291cmNlZCB0cmFuc2NyaXB0b21pYyBkYXRhLCBpZiBpbmNsdWRlZCwgYXJlIGFkZGl0aW9uYWxseQogICAgICBhdmFpbGFibGUgZnJvbSB0aGVpciBvcmlnaW5hbCBwdWJsaWMgcmVwb3NpdG9yaWVzOyBzb3VyY2UgbGlua3MgYW5kCiAgICAgIGFjY2Vzc2lvbiBpbmZvcm1hdGlvbiBhcmUgcHJvdmlkZWQgaW4gdGhlIFJFQURNRS4gRGF0YSB3YXMgZGVyaXZlZCBmcm9tCiAgICAgIHRoZSBmb2xsb3dpbmcgc291cmNlczogKiBUaGUgaHVtYW4gYmlvcHN5LCBhbmltYWwsIGFuZCBjZWxsIGV4cGVyaW1lbnRhbAogICAgICBkYXRhc2V0cyB3ZXJlIGdlbmVyYXRlZCBpbiB0aGUgcHJlc2VudCBzdHVkeS4gSWYgYW55IHRyYW5zY3JpcHRvbWljCiAgICAgIGRhdGFzZXRzIGluY2x1ZGVkIGluIHRoaXMgc3VibWlzc2lvbiB3ZXJlIGRlcml2ZWQgZnJvbSBwcmV2aW91c2x5CiAgICAgIHB1Ymxpc2hlZCBwdWJsaWMgZGF0YXNldHMsIHRoZSBvcmlnaW5hbCBzb3VyY2UgaWRlbnRpZmllcnMsIGFjY2Vzc2lvbgogICAgICBudW1iZXJzIG9yIFVSTHMsIGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uIGFyZSBkb2N1bWVudGVkIGluIHRoZQogICAgICBjb3JyZXNwb25kaW5nIFJFQURNRSBzZWN0aW9ucy4gIyMgSHVtYW4gc3ViamVjdHMgZGF0YSBUaGlzIGRhdGFzZXQKICAgICAgY29udGFpbnMgZGUtaWRlbnRpZmllZCBodW1hbiBzdWJqZWN0IGRhdGEgb25seS4gVGhlIHJlc2VhcmNoIGRhdGFzZXQKICAgICAgcHJvdmlkZWQgZm9yIGFuYWx5c2lzIGRpZCBub3QgaW5jbHVkZSBkaXJlY3QgcGVyc29uYWwgaWRlbnRpZmllcnMuIEFsbAogICAgICBwdWJsaWNseSBzaGFyZWQgZmlsZXMgZXhjbHVkZSBuYW1lcywgbWVkaWNhbCByZWNvcmQgbnVtYmVycywgaG9zcGl0YWwKICAgICAgc3BlY2ltZW4gbnVtYmVycywgZGF0ZXMsIGFuZCBvdGhlciBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gU2FtcGxlCiAgICAgIGlkZW50aWZpZXJzIGluIHRoZSBzaGFyZWQgZGF0YXNldCB3ZXJlIHJlcGxhY2VkIHdpdGggc3R1ZHktc3BlY2lmaWMgY29kZWQKICAgICAgSURzLCBhbmQgbm8gcmUtaWRlbnRpZmljYXRpb24ga2V5IGlzIGluY2x1ZGVkIGluIHRoZSBkZXBvc2l0ZWQgZmlsZXMuIFRoZQogICAgICBkYXRhc2V0IHdhcyByZXZpZXdlZCBhbmQgcHJlcGFyZWQgdG8gbWluaW1pemUgcmUtaWRlbnRpZmljYXRpb24gcmlzayBpbgogICAgICBhY2NvcmRhbmNlIHdpdGggYXBwbGljYWJsZSBldGhpY2FsIGFuZCBsZWdhbCByZXF1aXJlbWVudHMuCiAgICA8L2Rlc2NyaXB0aW9uPgogIDwvZGVzY3JpcHRpb25zPgo8L3Jlc291cmNlPg==","url":"https://datadryad.org/dataset/doi:10.5061/dryad.fj6q57495","contentUrl":null,"metadataVersion":0,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"mds","isActive":true,"state":"findable","reason":null,"viewCount":27,"viewsOverTime":[{"yearMonth":"2026-08","total":13},{"yearMonth":"2026-09","total":14}],"downloadCount":6,"downloadsOverTime":[{"yearMonth":"2026-08","total":2},{"yearMonth":"2026-09","total":4}],"referenceCount":0,"citationCount":1,"citationsOverTime":[{"year":"2026","total":1}],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2026-07-30T12:01:51.000Z","registered":"2026-07-30T12:01:52.000Z","published":"2026","updated":"2026-07-30T12:01:52.000Z"},"relationships":{"client":{"data":{"id":"dryad.dryad","type":"clients"}},"provider":{"data":{"id":"dryad","type":"providers"}},"media":{"data":{"id":"10.5061/dryad.fj6q57495","type":"media"}},"references":{"data":[]},"citations":{"data":[{"id":"10.1096/fj.202601959r","type":"dois"}]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}}}