{"data":{"id":"10.5061/dryad.7sqv9s56b","type":"dois","attributes":{"doi":"10.5061/dryad.7sqv9s56b","prefix":"10.5061","suffix":"dryad.7sqv9s56b","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"Zakeri, Khalil","nameType":"Personal","givenName":"Khalil","familyName":"Zakeri","affiliation":["Karlsruhe Institute of Technology"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0002-4674-3446","nameIdentifierScheme":"ORCID"}]},{"name":"Hins, Christopher","nameType":"Personal","givenName":"Christopher","familyName":"Hins","affiliation":["Karlsruhe Institute of Technology"],"nameIdentifiers":[]},{"name":"Neumann, Robin R.","nameType":"Personal","givenName":"Robin R.","familyName":"Neumann","affiliation":["Martin Luther University Halle-Wittenberg","Johannes Gutenberg University Mainz"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0002-9711-3479","nameIdentifierScheme":"ORCID"}]},{"name":"Mook, Alexander","nameType":"Personal","givenName":"Alexander","familyName":"Mook","affiliation":["University of Münster","Johannes Gutenberg University Mainz"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0002-8599-9209","nameIdentifierScheme":"ORCID"}]},{"name":"Ernst, Arthur","nameType":"Personal","givenName":"Arthur","familyName":"Ernst","affiliation":["Johannes Kepler University of Linz","Max Planck Institute of Microstructure Physics","Donostia International Physics Center"],"nameIdentifiers":[{"schemeUri":"https://orcid.org","nameIdentifier":"https://orcid.org/0000-0003-4005-6781","nameIdentifierScheme":"ORCID"}]}],"titles":[{"title":"Data from: Dirac magnons in a thin elemental itinerant ferromagnet"}],"publisher":"Dryad","container":{},"publicationYear":2026,"subjects":[{"subject":"FOS: Physical sciences","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"FOS: Physical sciences","schemeUri":"http://www.oecd.org/science/inno/38235147.pdf","subjectScheme":"Fields of Science and Technology (FOS)"},{"subject":"FOS: Nano-technology","schemeUri":"https://web-archive.oecd.org/2012-06-15/138575-38235147.pdf","subjectScheme":"fos"},{"subject":"Condensed matter","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Magnetism","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Magnetic materials","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Thin films","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"},{"subject":"Magnons","schemeUri":"https://github.com/PLOS/plos-thesaurus","subjectScheme":"PLOS Subject Area Thesaurus"}],"contributors":[],"dates":[{"date":"2025-11-17T11:09:30Z","dateType":"Created"},{"date":"2026-06-02T12:17:17Z","dateType":"Submitted"},{"date":"2026-06-15T00:00:00Z","dateType":"Issued"},{"date":"2026-06-15T00:00:00Z","dateType":"Available"}],"language":"en","types":{"ris":"DATA","bibtex":"misc","citeproc":"dataset","schemaOrg":"Dataset","resourceType":"dataset","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[{"relationType":"IsDerivedFrom","relatedIdentifier":"10.5281/zenodo.17193538","relatedIdentifierType":"DOI"},{"relationType":"IsCitedBy","relatedIdentifier":"10.1126/sciadv.aed9835","relatedIdentifierType":"DOI"}],"relatedItems":[],"sizes":["299349821 bytes"],"formats":[],"version":"6","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":"A distinct difference between graphene---an atomic layer of carbon---and\n conventional semiconductors is that its electrons behave as massless Dirac\n fermions, giving rise to unprecedented physical properties. Magnetically\n ordered solids host magnons, quasiparticles associated with magnetic\n degrees of freedom. While Dirac magnons have recently been predicted in\n specific insulating or rare-earth magnets, their existence in thin 3d\n magnets remains elusive due to the complex nature of itinerant magnetism\n and dimensionality effects. Here, we demonstrate the presence of Dirac\n magnons in a thin itinerant elemental ferromagnet. By investigating\n atomically designed hexagonal close-packed cobalt films, we establish that\n magnons in such structures resemble the Dirac electrons in graphene. We\n explain the physical nature of these Dirac magnons and discuss the\n consequences of symmetry, dimensionality, magnetic interactions, the\n number of atomic layers, and cobalt's itinerant magnetism on the\n properties of the Dirac points. Our results pave the way for discovering\n and engineering Dirac magnons in a variety of low-dimensional layered 3d\n ferromagnets and metamaterials.","descriptionType":"Abstract"},{"description":"# Data from: Dirac magnons in a thin elemental itinerant ferromagnet\n Dataset DOI:\n [10.5061/dryad.7sqv9s56b](https://doi.org/10.5061/dryad.7sqv9s56b) ##\n Description of the data and file structure The data are organized in the\n order they appear in the manuscript \"Dirac magnons in a thin\n elemental itinerant ferromagnet\" (Science Advances, 2026), DOI:\n 10.1126/sciadv.aed9835. The datasets are supplied in .dat, .csv, and .xlsx\n formats. To maximize accessibility, in most cases, the same data is\n available in multiple formats for user convenience. The plain-text files\n (.dat and .csv) can be accessed via standard text editors, while the .xlsx\n files are compatible with Microsoft Excel. All data can be visualized\n using standard graphing software, including open-source options like\n Gnuplot. Comprehensive details of the experimental and theoretical\n methodologies can be found in the Materials and Methods section of the\n manuscript \"Dirac magnons in a thin elemental itinerant\n ferromagnet\" (Science Advances, 2026), DOI: 10.1126/sciadv.aed9835.\n ### Files and variables #### File: Figure1.zip **Description:** The zip\n file includes all the data for Fig. 1, where the results of calculations\n for bulk hcp Co are presented This \".zip\" file contains the\n following files: * **Magnon_Bands_Bulk_Co.xlsx** Q: Magnon wavevector,\n given in inverse Bohr radii (Bohr⁻¹). The path through the Brillouin zone\n follows the high-symmetry points: Γ–M–K–Γ–A–L–H–A–H–K–H–L. Energy: Magnon\n energy, given in meV. * **Magnon_Bands_Bulk_Co.csv** Identical to the data\n in \"Magnon_Bands_Bulk_Co.xlsx\". Q: Magnon wavevector, given in\n inverse Bohr radii (Bohr⁻¹). The path through the Brillouin zone follows\n the high-symmetry points: Γ–M–K–Γ–A–L–H–A–H–K–H–L. Energy: Magnon energy,\n given in meV. * **Spectral_Function_Bulk_Co.dat** Q: Magnon wavevector,\n given in inverse Bohr radii (Bohr⁻¹). The path through the Brillouin zone\n follows the high-symmetry points: Γ–M–K–Γ–A–L–H–A–H–K–H–L. Energy: Magnon\n energy, given in meV. MBSF: Magnonic Bloch spectral function. TotalMBSF:\n The total magnonic Bloch spectral function (arbitrary units).\n MBSFSublattice1: Magnonic Bloch spectral function projected onto the\n sublattice 1 (arbitrary units). MBSFSublattice2: Magnonic Bloch spectral\n function projected onto the sublattice 2 (arbitrary units). *\n **Energy_Cut_520meV_Bulk_Co.dat** Qx: x component of the magnon\n wavevector, given in inverse Bohr radii (Bohr⁻¹). Qy: y component of the\n magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon\n energy, given in meV. MBSF: Magnonic Bloch spectral function (arbitrary\n units). * **Energy_Cut_550meV_Bulk_Co.dat** Qx: x component of the magnon\n wavevector given in inverse Bohr radii (Bohr⁻¹). Qy: y component of the\n magnon wavevector given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon\n energy, given in meV. MBSF: Magnonic Bloch spectral function (arbitrary\n units). * **Energy_Cut_580meV_Bulk_Co** Qx: x component of the magnon\n wavevector given in inverse Bohr radii (Bohr⁻¹). Qy: y component of the\n magnon wavevector given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon\n energy, given in meV. MBSF: Magnonic Bloch spectral function (arbitrary\n units). #### File: Figure2.zip **Description:**  The zip file includes all\n the data for Fig. 2, where typical spectra recorded at specific\n wavevectors are provided. This \".zip\" file contains the\n following files: * **SPHREELS_Spectra_20ML.xlsx** Sheet 1: SPHREELS\n spectra recorded at a wavevector of 0.5 Å⁻¹ along the Γ–K direction. Sheet\n 2: SPHREELS spectra recorded at a wavevector of 0.6 Å⁻¹ along the Γ–K\n direction. Total: The sum of spin-up and spin-down intensities, given in\n counts per second. Difference: Spin-down intensity minus spin-up\n intensity, given in counts per second. Asymmetry: Difference divided by\n total (dimensionless quantity). Errorbar : Error bars. *\n **SPHREELS_Spectra_20ML_1.csv** Identical to the data in sheet 1 of\n \"SPHREELS_Spectra_20ML.xlsx\". SPHREELS spectra recorded at a\n wavevector of 0.5 Å⁻¹ along the Γ–K direction. Total: The sum of spin-up\n and spin-down intensities, given in counts per second. Difference:\n Spin-down intensity minus spin-up intensity, given in counts per second.\n Asymmetry: Difference divided by total (dimensionless quantity). Errorbar\n : Error bars. * **SPHREELS_Spectra_20ML_2.csv** Identical to the data in\n sheet 2 of \"SPHREELS_Spectra_20ML.xlsx\". SPHREELS spectra\n recorded at a wavevector of 0.6 Å⁻¹ along the Γ–K direction. Total: The\n sum of spin-up and spin-down intensities, given in counts per second.\n Difference: Spin-down intensity minus spin-up intensity, given in counts\n per second. Asymmetry: Difference divided by total (dimensionless\n quantity). Errorbar : Error bars. * **Spectral_Function_20ML Co.xlsx**\n Sheet 1: Magnonic Bloch spectral function calculated for Q=0.5 Å⁻¹ along\n the Γ–K direction. Sheet 2: Magnonic Bloch spectral function calculated\n for Q=0.6 Å⁻¹ along the Γ–K direction. Energy: Energy, given in meV.\n Spectral function: Magnonic Bloch spectral function (arbitrary units). *\n **Spectral_Function_20ML Co_1.csv** Identical to the data in sheet 1 of\n \"Spectral_Function_20ML Co.xlsx\". Magnonic Bloch spectral\n function calculated for Q=0.5 Å⁻¹ along the Γ–K direction. Energy: Energy,\n given in meV. Spectral function: Magnonic Bloch spectral function\n (arbitrary units). * **Spectral_Function_20ML Co_2.csv** Identical to the\n data in sheet 2 of \"Spectral_Function_20ML Co.xlsx\". Magnonic\n Bloch spectral function calculated for Q=0.6 Å⁻¹ along the Γ–K direction.\n Energy: Energy, given in meV. Spectral function: Magnonic Bloch spectral\n function (arbitrary units). * **DifferenceSpectra.dat** The Difference\n spectra for various wavevectors. Energy loss: Energy-Loss, given in meV.\n Intensity: Difference intencity, given in counts per second. Q: Magnon\n wavevector, given in inverse angstroms (Å⁻¹). #### File: Figure3.zip\n **Description:**  The zip file includes all the data for Fig. 3, where the\n intensity maps and the dispersion relation are provided. This\n \".zip\" file contains the following files: *\n **Calculated_Bands.dat** The calculated magnonic band structure of a 20 ML\n film. Q: Magnon wavevector, given in inverse angstroms (Å⁻¹).\n Band1_Energy: Energy dispersion of the first band, given in meV.\n Band2_Energy: Energy dispersion of the first band, given in meV . . . .\n Band20_Energy: Energy dispersion of the 20th band, given in meV. *\n **Experimental_Datapoints.dat** The experimental magnonic band structure\n of a 20 ML film, provided as discrete data points. Q: Magnon wavevector,\n given in inverse angstroms (Å⁻¹). Energy: Magnon energy, given in meV.\n Error: Error bars of the magnon energy, given in meV. *\n **Experimental_Intensity_map_Gamma-K-M_20ML.dat** The experimental\n intensity map of a 20 ML film along the Γ–K–M direction. Q: Magnon\n wavevector, given in inverse angstroms (Å⁻¹). Energy-Loss: Experimental\n energy loss, given in meV. Intensity: The normalized intensity of the\n difference spectra. * **Experimental_Intensity_map_Gama-M_20ML.dat** The\n experimental intensity map of a 20 ML film along the Γ–M direction. Q:\n Magnon wavevector, given in inverse angstroms (Å⁻¹). Energy-Loss:\n Experimental energy loss, given in meV. Intensity: The normalized\n intensity of the difference spectra. *\n **Experimental_Intensity_map_Gama-M_15ML.dat** The experimental intensity\n map of a 15 ML film along the Γ–M direction. Q: Magnon wavevector, given\n in inverse angstroms (Å⁻¹). Energy-Loss: Experimental energy loss, given\n in meV. Intensity: The normalized intensity of the difference spectra.\n #### File: Figure4.zip **Description:** The zip file includes all the data\n for Fig. 4. Both the experimental and calculated constant-energy maps are\n provided. This \".zip\" file contains the following files: *\n **Exp-EnergyCut_200meV_20ML_Co.dat** The experimental intensity map at a\n magnon energy of 200 meV for a 20 ML film. Qx: The x-component of the\n magnon wavevector, given in inverse angstroms (Å⁻¹). Qy: The y-component\n of the magnon wavevector, given in inverse angstroms (Å⁻¹). Intensity: The\n normalized difference intensity. * **Exp-EnergyCut_380meV_20ML_Co.dat**\n The experimental intensity map at a magnon energy of 380 meV for a 20 ML\n film. Qx: The x-component of the magnon wavevector, given in inverse\n angstroms (Å⁻¹). Qy: The y-component of the magnon wavevector, given in\n inverse angstroms (Å⁻¹). Intensity: The normalized difference intensity. *\n **Theo-EnergyCut_200meV_Nodamping_20ML_Co.dat** The calculated spectral\n function map at a magnon energy of 200 meV for a 20 ML film, without\n considering damping. Qx: The x-component of the magnon wavevector, given\n in inverse Bohr radii (Bohr⁻¹). Qy: The y-component of the magnon\n wavevector, given in inverse Bohr radii (Bohr⁻¹). Total: The total\n magnonic Bloch spectral function (arbitrary units). Layer1: The magnonic\n Bloch spectral function projected onto the topmost layer(arbitrary units).\n Layer2: The magnonic Bloch spectral function projected onto the second\n topmost layer (arbitrary units). *\n **Theo-EnergyCut_380meV_Nodamping_20ML_Co.dat** The calculated spectral\n function map at a magnon energy of 380 meV for a 20 ML film, without\n considering damping. Qx: The x-component of the magnon wavevector, given\n in inverse Bohr radii (Bohr⁻¹). Qy: The y-component of the magnon\n wavevector, given in inverse Bohr radii (Bohr⁻¹). Total: The total\n magnonic Bloch spectral function (arbitrary units). Layer1: The magnonic\n Bloch spectral function projected onto the topmost layer (arbitrary\n units). Layer2: The magnonic Bloch spectral function projected onto the\n second topmost layer (arbitrary units). *\n **Theo-EnergyCut_200meV_DeltaE=42meV_20ML_Co.dat** The calculated spectral\n function map at a magnon energy of 200 meV for a 20 ML film, considering\n an energy broadening of 42 meV. Qx: The x-component of the magnon\n wavevector, given in inverse Bohr radii (Bohr⁻¹). Qy: The y-component of\n the magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Total: The\n total magnonic Bloch spectral function (arbitrary units). Layer1: The\n magnonic Bloch spectral function projected onto the topmost layer\n (arbitrary units). Layer2: The magnonic Bloch spectral function projected\n onto the second topmost layer (arbitrary units). *\n **Theo-EnergyCut_380meV_DeltaE=80meV_20ML_Co.dat** The calculated spectral\n function map at a magnon energy of 380 meV for a 20 ML film, considering\n an energy broadening of 80 meV. Qx: The x-component of the magnon\n wavevector, given in inverse Bohr radii (Bohr⁻¹). Qy: The y-component of\n the magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Total: The\n total magnonic Bloch spectral function (arbitrary units). Layer1: The\n magnonic Bloch spectral function projected onto the topmost layer\n (arbitrary units). Layer2: The magnonic Bloch spectral function projected\n onto the second topmost layer (arbitrary units). #### File: Figure5.zip\n **Description:** The zip file includes all the data for Fig. 5, which\n presents the calculated magnonic band structure of a 20 ML film. The data\n are identical to those used in Figure 3. This \".zip\" file\n contains the following files: * **Magnon_Bands_20ML_Co.xlsx** The\n calculated magnonic band structure of a 20 ML film. Q: Magnon wavevector,\n given in inverse angstroms (Å⁻¹). Energy: Magnon energy, given in meV. *\n **Magnon_Bands_20ML_Co.dat** Identical to the data in\n \"Magnon_Bands_20ML_Co.xlsx\". The calculated magnonic band\n structure of a 20 ML film. Q: Magnon wavevector, given in inverse\n angstroms (Å⁻¹). Energy: Magnon energy, given in meV. #### File:\n FigureS01.zip **Description:** The zip file includes all the data for Fig.\n S1. The experimental difference spectra are provided for Co films of\n various thicknesses. This \".zip\" file contains the following\n files: * **Experimental_Spectra_Different_Thicknesses.xlsx** Energy:\n Experimental energy loss, given in meV. Difference (Normalized) n ML: The\n normalized difference intensity for a film with a thickness of n ML.\n Results are provided for n = 2, 3, 15, and 20 ML. *\n **Experimental_Spectra_Different_Thicknesses.dat** Identical to the data\n in \"Experimental_Spectra_Different_Thicknesses.xlsx\". Energy:\n Experimental energy loss, given in meV. Difference (Normalized) n ML: The\n normalized difference intensity for a film with a thickness of n ML.\n Results are provided for n = 2, 3, 15, and 20 ML. #### File: FigureS02.zip\n **Description:** The zip file includes all the data for Fig. S2. The\n experimental and simulated spectra in the vicinity of the K-point are\n provided. This \".zip\" file contains the following files: *\n **Experimental_Difference-spectra-near-K-point.dat** In this file the\n experimental spectra are provided. Energy loss: Energy loss, given in meV.\n Intensity(Q = ...): The normalized difference intensity for different Q\n values, where Q is given in inverse angstroms (Å⁻¹). *\n **Simulated-spectra-near-K-point.dat** In this file the simulated spectra\n are provided. Energy: Magnon energy, given in meV. Columns represented by\n Q_n.nn: The simulated normalized intensity for different Q values, where\n n.nn represents the value of Q in inverse angstroms (Å⁻¹). #### File:\n FigureS03.zip **Description:** The zip file includes all the data for Fig.\n S3. The intensity maps and the dispersion relation are provided. The data\n are the same as those of Figure 3. This \".zip\" file contains the\n following files: * **Calculated_Bands.dat** The calculated magnonic band\n structure of a 20 ML film. Q: Magnon wavevector, given in inverse\n angstroms (Å⁻¹). Band1_Energy: Energy dispersion of the 1st band, given in\n meV. Band2_Energy: Energy dispersion of the 2nd band, given in meV . . . .\n Band20_Energy: Energy dispersion of the 20th band, given in meV. *\n **Experimental_Datapoints.dat** The experimental magnonic band structure\n of a 20 ML film, provided as discrete data points. Q: Magnon wavevector,\n given in inverse angstroms (Å⁻¹). Energy: Magnon energy, given in meV.\n Error: Error bars for the magnon energy, given in meV. *\n **Experimental_Intensity_map_Gamma-K-M_20ML.dat** The experimental\n intensity map of a 20 ML film along the Γ–K–M direction. Q: Magnon\n wavevector, given in inverse angstroms (Å⁻¹). Energy-Loss: Experimental\n energy loss, given in meV. Intensity: The normalized difference intensity.\n * **Experimental_Intensity_map_Gamma-M_20ML.dat** The experimental\n intensity map of a 20 ML film along the Γ–M direction. Q: Magnon\n wavevector, given in inverse angstroms (Å⁻¹). Energy-Loss: Experimental\n energy loss, given in meV. Intensity: The normalized difference intensity.\n #### File: FigureS04.zip **Description:** The zip file includes all the\n data for Fig. S4. Typical spectra recorded on a 15 ML film are provided.\n This \".zip\" file contains the following files: *\n **SPHREELS_Spectra_15ML_Co.xlsx** Sheet 1: SPHREELS spectra recorded at a\n wavevector of 0.5 Å⁻¹ along the Γ–M direction. Sheet 2: SPHREELS spectra\n recorded at a wavevector of 0.6 Å⁻¹ along the Γ–M direction. Sheet 3:\n SPHREELS spectra recorded at a wavevector of 0.7 Å⁻¹ along the Γ–M\n direction. Total: The sum of spin-up and spin-down intensities, given in\n counts per second. Difference: Spin-down intensity minus spin-up\n intensity, given in counts per second. Asymmetry: Difference divided by\n total (dimensionless quantity). * **Difference_Spectra_15ML_Co.xlsx**\n Difference spectra recorded on a 15 ML Co film. The data for Q \u0026lt; 1.3\n Å⁻¹ were recorded at an incident energy of E_i = 4 eV, while the data for\n Q ≥ 1.3 Å⁻¹ were recorded at E_i = 7 eV. Energy-Loss: Energy loss, given\n in meV. Q: Magnon wavevector, given in inverse angstroms (Å⁻¹). Diff.:\n Difference intensity, given in counts per second. *\n **Difference_Spectra_15ML_Co.csv** Identical to the data in Sheet 1 of\n \"Difference_Spectra_15ML_Co.xlsx\". Difference spectra recorded\n on a 15 ML Co film; data for Q \u0026lt; 1.3 Å⁻¹ were recorded at an incident\n energy of E_i = 4 eV, while data for Q ≥ 1.3 Å⁻¹ were recorded at E_i = 7\n eV. Energy-Loss: Energy loss, given in meV. Q: Magnon wavevector, given in\n inverse angstroms (Å⁻¹). Diff.: Difference intensity, given in counts per\n second. * **Spectral_Function_15ML_Co.xlsx** Calculated magnonic Bloch\n spectral function along the Γ–M direction for a 15 ML Co film. Sheet 1:\n Magnonic Bloch spectral function calculated for Q = 0.5 Å⁻¹ along the Γ–M\n direction. Sheet 2: Magnonic Bloch spectral function calculated for Q =\n 0.6 Å⁻¹ along the Γ–M direction. Sheet 3: Magnonic Bloch spectral function\n calculated for Q = 0.7 Å⁻¹ along the Γ–M direction. Q: Magnon wavevector,\n given in inverse angstroms (Å⁻¹). Energy: Energy, given in meV. Spectral\n function: Magnonic Bloch spectral function (arbitrary units). *\n **Spectral_Function_15ML_Co_1.csv** Identical to the data in sheet 1 of\n \"Spectral_Function_15ML_Co.xlsx\". Magnonic Bloch spectral\n function calculated for Q=0.5 Å⁻¹ along the Γ–M direction. Energy: Energy,\n given in meV. Spectral function: Magnonic Bloch spectral function\n (arbitrary units). * **Spectral_Function_15ML_Co_2.csv** Identical to the\n data in sheet 2 of \"Spectral_Function_15ML_Co.xlsx\". Magnonic\n Bloch spectral function calculated for Q=0.6 Å⁻¹ along the Γ–M direction.\n Energy: Energy, given in meV. Spectral function: Magnonic Bloch spectral\n function (arbitrary units). * **Spectral_Function_15ML_Co_3.csv**\n Identical to the data in sheet 3 of\n \"Spectral_Function_15ML_Co.xlsx\". Magnonic Bloch spectral\n function calculated for Q=0.7 Å⁻¹ along the Γ–M direction. Energy: Energy,\n given in meV. Spectral function: Magnonic Bloch spectral function\n (arbitrary units). #### File: FigureS05.zip **Description:** The zip file\n includes all the data for Fig. S5. The calculated layer-resolved Bloch\n spectral function and layer-resolved magnonic density of states of a 20 ML\n film are provided. This \".zip\" file contains the following\n files: * **Layer_resolved_Spectral_function_20ML_Co.dat** Energy: Magnon\n energy, given in meV. Q: Magnon wavevector, given in inverse Bohr radii\n (Bohr⁻¹). Total: The total magnonic Bloch spectral function. Layer 1: The\n magnonic Bloch spectral function projected onto the 1st layer (arbitrary\n units). Layer 2: The magnonic Bloch spectral function projected onto the\n 2nd layer (arbitrary units). . . . Layer 20: The magnonic Bloch spectral\n function projected onto the 20th layer (arbitrary units). *\n **Magnon_DOS_20ML_Co.xlsx** Calculated layer-resolved magnonic density of\n states for a 20 ML Co film. Sheet 1: Total magnonic density of states,\n alongside the magnonic density of states of odd-numbered and even-numbered\n layers. Total MDOS: Total magnonic density of states (arbitrary units).\n MDOS Odd Layers: Magnonic density of states projected onto odd-numbered\n layers (1, 3, 5, ..., 19). MDOS Even Layers: Magnonic density of states\n projected onto even-numbered layers (2, 4, 6, ..., 20). Sheet 2: Magnonic\n density of states of layers 1 and 2. MDOS Layer1+Layer2: Magnonic density\n of states projected onto layers 1 and 2. MDOS Layer1: Magnonic density of\n states projected onto layer 1. MDOS Layer2: Magnonic density of states\n projected onto layer 2. * **Magnon_DOS_20ML_Co_1.csv** Identical to the\n data in sheet 1 of \"Magnon_DOS_20ML_Co.xlsx\". Total MDOS: Total\n magnonic density of states (arbitrary units). MDOS Odd Layers: Magnonic\n density of states projected onto odd-numbered layers (1, 3, 5, ..., 19).\n MDOS Even Layers: Magnonic density of states projected onto even-numbered\n layers (2, 4, 6, ..., 20). * **Magnon_DOS_20ML_Co_2.csv** Identical to the\n data in sheet 2 of \"Magnon_DOS_20ML_Co.xlsx\". MDOS\n Layer1+Layer2: Magnonic density of states projected onto layers 1 and 2.\n MDOS Layer1: Magnonic density of states projected onto layer 1. MDOS\n Layer2: Magnonic density of states projected onto layer 2. #### File:\n FigureS06.zip **Description:** The zip file includes all the data for Fig.\n S6, which presents the experimental magnon dispersion relation for films\n of different thicknesses. This \".zip\" file contains the\n following files: *\n **Experimental_Magnon_Dispersion_Relation_Different_Thicknesses.xlsx** Q:\n Magnon wavevector, given in inverse angstroms (Å⁻¹). Energy: Magnon\n energy, given in meV. Errorbar: Error bars for the magnon energy, given in\n meV. *\n **Experimental_Magnon_Dispersion_Relation_Different_Thicknesses.csv**\n Identical to the data in\n \"Experimental_Magnon_Dispersion_Relation_Different_Thicknesses.xlsx\". Q: Magnon wavevector, given in inverse angstroms (Å⁻¹). Energy: Magnon energy, given in meV. Errorbar: Error bars for the magnon energy, given in meV. #### File: FigureS07.zip **Description:** The zip file includes all the data for Fig. S7, which presents the calculated magnonic Bloch spectral function for a 15 ML film. This \".zip\" file contains the following files: * **MagnonicSpectralFunction_15ML_Co.dat** Energy: Magnon energy, given in meV. Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Layer1: The magnonic Bloch spectral function projected onto the 1st layer (arbitrary units). Layer2: The magnonic Bloch spectral function projected onto the 2nd layer (arbitrary units). #### File: FigureS08.zip **Description:** The zip file includes all the data for Fig. S8, which presents the calculated magnonic band structure for films of 15 and 20 ML thicknesses. In the calculations only the nearest neighbors up to the 4th shell were considered. This \".zip\" file contains the following files: * **Magnon_Bands_20ML_Co_Only_4Shells.xlsx** The results for a 20 ML film. Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **Magnon_Bands_20ML_Co_Only_4Shells.csv** Identical to the data in \"Magnon_Bands_20ML_Co_Only_4Shells.xlsx\". Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **Magnon_Bands_15ML_Co_Only_4Shells.xlsx** The results for a 15 ML film. Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **Magnon_Bands_15ML_Co_Only_4Shells.csv** Identical to the data in \"Magnon_Bands_15ML_Co_Only_4Shells.xlsx\". Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **SpectralFunction-Bulk_Co_Only_4Shells** Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). The path through the Brillouin zone follows the high-symmetry points: Γ–M–K–Γ–A–L–H–A–H–K–H–L. Energy: Magnon energy, given in meV. MBSF: Magnonic Bloch spectral function. TotalMBSF: The total magnonic Bloch spectral function (arbitrary units). MBSFSublattice1: Magnonic Bloch spectral function projected onto the sublattice 1 (arbitrary units). MBSFSublattice2: Magnonic Bloch spectral function projected onto the sublattice 2 (arbitrary units). #### File: FigureS09.zip **Description:** The zip file includes all the data for Fig. S9, which presents the intensity winding around the K-point. This \".zip\" file contains the following files: * **DifferenceSpectra_Kpm0.35.dat** Energy Loss: Energy loss, given in meV. Intensity_(K-0.35): Difference intensity, given in counts per second for the wavevector 0.35 Å⁻¹ before the K-point (small q = -0.35 Å⁻¹). Intensity_(K+0.35): Difference intensity, given in counts per second for the wavevector 0.35 Å⁻¹ after the K-point (small q = +0.35 Å⁻¹). * **IntensityMap-about-K-point.dat** Qx: The x-component of the wavevector, given in inverse angstroms (Å⁻¹). Qy: The y-component of the wavevector, given in inverse angstroms (Å⁻¹). R: The ratio of the difference intensity of the two modes (dimensionless quantity). * **Intensity-sides_of_K-point.dat** \\phi: Azimuthal angle of small q. The small q represents the wavevector measured with respect to the K-point. R: Intensity ratio of the difference intensity of the two modes for different values of small q (dimensionless quantity). Error: Error bars of R. #### File: FigureS10.zip **Description:** The zip file includes all the data for Fig. S10, which presents the sample characterization data. This \".zip\" file contains the following files: * **LEED_Pattern_20ML_Co.png** The low-energy electron diffraction (LEED) pattern taken at an incident electron energy of 80.2 eV for a 20 ML thick Co film. * **MOKE_Hysteresis_Loops_20_and_15_ML_Co.xlsx** The MOKE results for 20 ML and 15 ML Co films. Sheet 1: Results for a 20 ML Co film with the magnetic field applied along the Co[1–100] direction. Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). Sheet 2: Results for a 20 ML Co film with the magnetic field applied along the Co[11–20] direction. Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). Sheet 3: Results for a 15 ML Co film with the magnetic field applied along the Co[11–20] direction. Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). * **MOKE_Hysteresis_Loops_20_and_15_ML_Co_1.csv** Identical to the data in Sheet 1 of \"MOKE_Hysteresis_Loops_20_and_15_ML_Co.xlsx\". Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). * **MOKE_Hysteresis_Loops_20_and_15_ML_Co_2.csv** Identical to the data in Sheet 2 of \"MOKE_Hysteresis_Loops_20_and_15_ML_Co.xlsx\". Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). * **MOKE_Hysteresis_Loops_20_and_15_ML_Co_3.csv** Identical to the data in Sheet 3 of \"MOKE_Hysteresis_Loops_20_and_15_ML_Co.xlsx\". Magnetic field: Applied magnetic field, given in Oe. Kerr rotation: Kerr rotation, given in mrad, for the upward and downward field sweeps (provided in separate columns). #### File: FigureS11.zip **Description:** The zip file includes all the data for Fig. S11, which provides the results of the calculations when spin-dependent correlation effects are neglected. This \".zip\" file contains the following files: * **Magnon_Bands_20ML_Co_Without_Correlations.xlsx** The magnonic band structure of a 20 ML film, neglecting correlation effects. Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **Magnon_Bands_20ML_Co_Without_Correlations.csv** Identical to the data in \"Magnon_Bands_20ML_Co_Without_Correlations.xlsx\". Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). Energy: Magnon energy, given in meV. * **Calculated_MBSF_20ML_Co_Without_Correlations.dat** Energy: Magnon energy, given in meV. Q: Magnon wavevector, given in inverse Bohr radii (Bohr⁻¹). TotalMBSF: Total magnonic Bloch spectral function (arbitrary units). ## Code/Software The datasets are provided in .dat, .csv, and .xlsx formats to ensure compatibility with a wide range of analytical software. In most cases, the same data is available in multiple formats for user convenience: Plain-Text Files (.dat and .csv): These are lightweight and can be opened using any standard text editor or data analysis environment (e.g., Python, MATLAB, or Gnuplot). Excel Files (.xlsx): These are formatted for direct compatibility with Microsoft Excel, making them ideal for quick viewing and manual data manipulation. All datasets can be visualized using standard graphing and plotting software. For those preferring open-source tools, these files are fully compatible with environments such as Gnuplot or Python (Matplotlib/Pandas).","descriptionType":"TechnicalInfo"}],"geoLocations":[],"fundingReferences":[{"schemeUri":"https://ror.org","funderName":"Deutsche Forschungsgemeinschaft","awardNumber":"ZA~902/8-1","funderIdentifier":"https://ror.org/018mejw64","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"Deutsche Forschungsgemeinschaft","awardNumber":"ZA~902/9-1","funderIdentifier":"https://ror.org/018mejw64","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"Deutsche Forschungsgemeinschaft","awardNumber":"504261060","funderIdentifier":"https://ror.org/018mejw64","funderIdentifierType":"ROR"},{"schemeUri":"https://ror.org","funderName":"FWF Austrian Science Fund","awardNumber":"I 5384","funderIdentifier":"https://ror.org/013tf3c58","funderIdentifierType":"ROR"}],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTA2MS9EUllBRC43U1FWOVM1NkI8L2lkZW50aWZpZXI+CiAgPGNyZWF0b3JzPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlpha2VyaSwgS2hhbGlsPC9jcmVhdG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnLyI+MDAwMC0wMDAyLTQ2NzQtMzQ0NjwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wNHQzZW40NzkiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+S2FybHNydWhlIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5PC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5IaW5zLCBDaHJpc3RvcGhlcjwvY3JlYXRvck5hbWU+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wNHQzZW40NzkiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+S2FybHNydWhlIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5PC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5OZXVtYW5uLCBSb2JpbiBSLjwvY3JlYXRvck5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cDovL29yY2lkLm9yZy8iPjAwMDAtMDAwMi05NzExLTM0Nzk8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDVncWFrYTMzIiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmciPk1hcnRpbiBMdXRoZXIgVW5pdmVyc2l0eSBIYWxsZS1XaXR0ZW5iZXJnPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAyM2IweDQ4NSIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Kb2hhbm5lcyBHdXRlbmJlcmcgVW5pdmVyc2l0eSBNYWluejwvYWZmaWxpYXRpb24+CiAgICA8L2NyZWF0b3I+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lIG5hbWVUeXBlPSJQZXJzb25hbCI+TW9vaywgQWxleGFuZGVyPC9jcmVhdG9yTmFtZT4KICAgICAgPG5hbWVJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyU2NoZW1lPSJPUkNJRCIgc2NoZW1lVVJJPSJodHRwOi8vb3JjaWQub3JnLyI+MDAwMC0wMDAyLTg1OTktOTIwOTwvbmFtZUlkZW50aWZpZXI+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wMHBkNzRlMDgiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+VW5pdmVyc2l0eSBvZiBNw7xuc3RlcjwvYWZmaWxpYXRpb24+CiAgICAgIDxhZmZpbGlhdGlvbiBhZmZpbGlhdGlvbklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wMjNiMHg0ODUiIGFmZmlsaWF0aW9uSWRlbnRpZmllclNjaGVtZT0iUk9SIiBzY2hlbWVVUkk9Imh0dHBzOi8vcm9yLm9yZyI+Sm9oYW5uZXMgR3V0ZW5iZXJnIFVuaXZlcnNpdHkgTWFpbno8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPkVybnN0LCBBcnRodXI8L2NyZWF0b3JOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHA6Ly9vcmNpZC5vcmcvIj4wMDAwLTAwMDMtNDAwNS02NzgxPC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzA1MnIyeG42MCIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Kb2hhbm5lcyBLZXBsZXIgVW5pdmVyc2l0eSBvZiBMaW56PC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAwOTV4d3IyMyIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5NYXggUGxhbmNrIEluc3RpdHV0ZSBvZiBNaWNyb3N0cnVjdHVyZSBQaHlzaWNzPC9hZmZpbGlhdGlvbj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzAyZTI0eXc0MCIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiIHNjaGVtZVVSST0iaHR0cHM6Ly9yb3Iub3JnIj5Eb25vc3RpYSBJbnRlcm5hdGlvbmFsIFBoeXNpY3MgQ2VudGVyPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICA8L2NyZWF0b3JzPgogIDx0aXRsZXM+CiAgICA8dGl0bGU+RGF0YSBmcm9tOiBEaXJhYyBtYWdub25zIGluIGEgdGhpbiBlbGVtZW50YWwgaXRpbmVyYW50IGZlcnJvbWFnbmV0PC90aXRsZT4KICA8L3RpdGxlcz4KICA8cHVibGlzaGVyIHB1Ymxpc2hlcklkZW50aWZpZXI9Imh0dHBzOi8vcm9yLm9yZy8wMHg2aDVuOTUiIHB1Ymxpc2hlcklkZW50aWZpZXJTY2hlbWU9IlJPUiIgc2NoZW1lVVJJPSJodHRwczovL3Jvci5vcmcvIj5EcnlhZDwvcHVibGlzaGVyPgogIDxyZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlR2VuZXJhbD0iRGF0YXNldCI+ZGF0YXNldDwvcmVzb3VyY2VUeXBlPgogIDxwdWJsaWNhdGlvblllYXI+MjAyNjwvcHVibGljYXRpb25ZZWFyPgogIDxzdWJqZWN0cz4KICAgIDxzdWJqZWN0IHN1YmplY3RTY2hlbWU9ImZvcyIgc2NoZW1lVVJJPSJodHRwczovL3dlYi1hcmNoaXZlLm9lY2Qub3JnLzIwMTItMDYtMTUvMTM4NTc1LTM4MjM1MTQ3LnBkZiI+Rk9TOiBQaHlzaWNhbCBzY2llbmNlczwvc3ViamVjdD4KICAgIDxzdWJqZWN0IHN1YmplY3RTY2hlbWU9ImZvcyIgc2NoZW1lVVJJPSJodHRwczovL3dlYi1hcmNoaXZlLm9lY2Qub3JnLzIwMTItMDYtMTUvMTM4NTc1LTM4MjM1MTQ3LnBkZiI+Rk9TOiBOYW5vLXRlY2hub2xvZ3k8L3N1YmplY3Q+CiAgICA8c3ViamVjdCBzdWJqZWN0U2NoZW1lPSJQTE9TIFN1YmplY3QgQXJlYSBUaGVzYXVydXMiIHNjaGVtZVVSST0iaHR0cHM6Ly9naXRodWIuY29tL1BMT1MvcGxvcy10aGVzYXVydXMiPkNvbmRlbnNlZCBtYXR0ZXI8L3N1YmplY3Q+CiAgICA8c3ViamVjdCBzdWJqZWN0U2NoZW1lPSJQTE9TIFN1YmplY3QgQXJlYSBUaGVzYXVydXMiIHNjaGVtZVVSST0iaHR0cHM6Ly9naXRodWIuY29tL1BMT1MvcGxvcy10aGVzYXVydXMiPk1hZ25ldGlzbTwvc3ViamVjdD4KICAgIDxzdWJqZWN0IHN1YmplY3RTY2hlbWU9IlBMT1MgU3ViamVjdCBBcmVhIFRoZXNhdXJ1cyIgc2NoZW1lVVJJPSJodHRwczovL2dpdGh1Yi5jb20vUExPUy9wbG9zLXRoZXNhdXJ1cyI+TWFnbmV0aWMgbWF0ZXJpYWxzPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iUExPUyBTdWJqZWN0IEFyZWEgVGhlc2F1cnVzIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ2l0aHViLmNvbS9QTE9TL3Bsb3MtdGhlc2F1cnVzIj5UaGluIGZpbG1zPC9zdWJqZWN0PgogICAgPHN1YmplY3Qgc3ViamVjdFNjaGVtZT0iUExPUyBTdWJqZWN0IEFyZWEgVGhlc2F1cnVzIiBzY2hlbWVVUkk9Imh0dHBzOi8vZ2l0aHViLmNvbS9QTE9TL3Bsb3MtdGhlc2F1cnVzIj5NYWdub25zPC9zdWJqZWN0PgogIDwvc3ViamVjdHM+CiAgPGZ1bmRpbmdSZWZlcmVuY2VzPgogICAgPGZ1bmRpbmdSZWZlcmVuY2U+CiAgICAgIDxmdW5kZXJOYW1lPkRldXRzY2hlIEZvcnNjaHVuZ3NnZW1laW5zY2hhZnQ8L2Z1bmRlck5hbWU+CiAgICAgIDxmdW5kZXJJZGVudGlmaWVyIGZ1bmRlcklkZW50aWZpZXJUeXBlPSJST1IiPmh0dHBzOi8vcm9yLm9yZy8wMThtZWp3NjQ8L2Z1bmRlcklkZW50aWZpZXI+CiAgICAgIDxhd2FyZE51bWJlcj5aQX45MDIvOC0xPC9hd2FyZE51bWJlcj4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5EZXV0c2NoZSBGb3JzY2h1bmdzZ2VtZWluc2NoYWZ0PC9mdW5kZXJOYW1lPgogICAgICA8ZnVuZGVySWRlbnRpZmllciBmdW5kZXJJZGVudGlmaWVyVHlwZT0iUk9SIj5odHRwczovL3Jvci5vcmcvMDE4bWVqdzY0PC9mdW5kZXJJZGVudGlmaWVyPgogICAgICA8YXdhcmROdW1iZXI+WkF+OTAyLzktMTwvYXdhcmROdW1iZXI+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+RGV1dHNjaGUgRm9yc2NodW5nc2dlbWVpbnNjaGFmdDwvZnVuZGVyTmFtZT4KICAgICAgPGZ1bmRlcklkZW50aWZpZXIgZnVuZGVySWRlbnRpZmllclR5cGU9IlJPUiI+aHR0cHM6Ly9yb3Iub3JnLzAxOG1lanc2NDwvZnVuZGVySWRlbnRpZmllcj4KICAgICAgPGF3YXJkTnVtYmVyPjUwNDI2MTA2MDwvYXdhcmROdW1iZXI+CiAgICA8L2Z1bmRpbmdSZWZlcmVuY2U+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+RldGIEF1c3RyaWFuIFNjaWVuY2UgRnVuZDwvZnVuZGVyTmFtZT4KICAgICAgPGZ1bmRlcklkZW50aWZpZXIgZnVuZGVySWRlbnRpZmllclR5cGU9IlJPUiI+aHR0cHM6Ly9yb3Iub3JnLzAxM3RmM2M1ODwvZnVuZGVySWRlbnRpZmllcj4KICAgICAgPGF3YXJkTnVtYmVyPkkgNTM4NDwvYXdhcmROdW1iZXI+CiAgICAgIDxhd2FyZFRpdGxlLz4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICA8L2Z1bmRpbmdSZWZlcmVuY2VzPgogIDxkYXRlcz4KICAgIDxkYXRlIGRhdGVUeXBlPSJDcmVhdGVkIj4yMDI1LTExLTE3VDExOjA5OjMwWjwvZGF0ZT4KICAgIDxkYXRlIGRhdGVUeXBlPSJTdWJtaXR0ZWQiPjIwMjYtMDYtMDJUMTI6MTc6MTdaPC9kYXRlPgogICAgPGRhdGUgZGF0ZVR5cGU9Iklzc3VlZCI+MjAyNi0wNi0xNVQwMDowMDowMFo8L2RhdGU+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iQXZhaWxhYmxlIj4yMDI2LTA2LTE1VDAwOjAwOjAwWjwvZGF0ZT4KICA8L2RhdGVzPgogIDxsYW5ndWFnZT5lbjwvbGFuZ3VhZ2U+CiAgPHJlbGF0ZWRJZGVudGlmaWVycz4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGlvblR5cGU9IklzRGVyaXZlZEZyb20iIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIj5odHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMTcxOTM1Mzg8L3JlbGF0ZWRJZGVudGlmaWVyPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0aW9uVHlwZT0iSXNDaXRlZEJ5IiByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSI+aHR0cHM6Ly9kb2kub3JnLzEwLjExMjYvc2NpYWR2LmFlZDk4MzU8L3JlbGF0ZWRJZGVudGlmaWVyPgogIDwvcmVsYXRlZElkZW50aWZpZXJzPgogIDxzaXplcz4KICAgIDxzaXplPjI5OTM0OTgyMSBieXRlczwvc2l6ZT4KICA8L3NpemVzPgogIDx2ZXJzaW9uPjY8L3ZlcnNpb24+CiAgPHJpZ2h0c0xpc3Q+CiAgICA8cmlnaHRzIHJpZ2h0c1VSST0iaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9DQzAtMS4wLmh0bWwiPkNyZWF0aXZlIENvbW1vbnMgWmVybyB2MS4wIFVuaXZlcnNhbDwvcmlnaHRzPgogIDwvcmlnaHRzTGlzdD4KICA8ZGVzY3JpcHRpb25zPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iQWJzdHJhY3QiPgogICAgICBBIGRpc3RpbmN0IGRpZmZlcmVuY2UgYmV0d2VlbiBncmFwaGVuZS0tLWFuIGF0b21pYyBsYXllciBvZiBjYXJib24tLS1hbmQKICAgICAgY29udmVudGlvbmFsIHNlbWljb25kdWN0b3JzIGlzIHRoYXQgaXRzIGVsZWN0cm9ucyBiZWhhdmUgYXMgbWFzc2xlc3MgRGlyYWMKICAgICAgZmVybWlvbnMsIGdpdmluZyByaXNlIHRvIHVucHJlY2VkZW50ZWQgcGh5c2ljYWwgcHJvcGVydGllcy4gTWFnbmV0aWNhbGx5CiAgICAgIG9yZGVyZWQgc29saWRzIGhvc3QgbWFnbm9ucywgcXVhc2lwYXJ0aWNsZXMgYXNzb2NpYXRlZCB3aXRoIG1hZ25ldGljCiAgICAgIGRlZ3JlZXMgb2YgZnJlZWRvbS4gV2hpbGUgRGlyYWMgbWFnbm9ucyBoYXZlIHJlY2VudGx5IGJlZW4gcHJlZGljdGVkIGluCiAgICAgIHNwZWNpZmljIGluc3VsYXRpbmcgb3IgcmFyZS1lYXJ0aCBtYWduZXRzLCB0aGVpciBleGlzdGVuY2UgaW4gdGhpbiAzZAogICAgICBtYWduZXRzIHJlbWFpbnMgZWx1c2l2ZSBkdWUgdG8gdGhlIGNvbXBsZXggbmF0dXJlIG9mIGl0aW5lcmFudCBtYWduZXRpc20KICAgICAgYW5kIGRpbWVuc2lvbmFsaXR5IGVmZmVjdHMuIEhlcmUsIHdlIGRlbW9uc3RyYXRlIHRoZSBwcmVzZW5jZSBvZiBEaXJhYwogICAgICBtYWdub25zIGluIGEgdGhpbiBpdGluZXJhbnQgZWxlbWVudGFsIGZlcnJvbWFnbmV0LiBCeSBpbnZlc3RpZ2F0aW5nCiAgICAgIGF0b21pY2FsbHkgZGVzaWduZWQgaGV4YWdvbmFsIGNsb3NlLXBhY2tlZCBjb2JhbHQgZmlsbXMsIHdlIGVzdGFibGlzaCB0aGF0CiAgICAgIG1hZ25vbnMgaW4gc3VjaCBzdHJ1Y3R1cmVzIHJlc2VtYmxlIHRoZSBEaXJhYyBlbGVjdHJvbnMgaW4gZ3JhcGhlbmUuIFdlCiAgICAgIGV4cGxhaW4gdGhlIHBoeXNpY2FsIG5hdHVyZSBvZiB0aGVzZSBEaXJhYyBtYWdub25zIGFuZCBkaXNjdXNzIHRoZQogICAgICBjb25zZXF1ZW5jZXMgb2Ygc3ltbWV0cnksIGRpbWVuc2lvbmFsaXR5LCBtYWduZXRpYyBpbnRlcmFjdGlvbnMsIHRoZQogICAgICBudW1iZXIgb2YgYXRvbWljIGxheWVycywgYW5kIGNvYmFsdCdzIGl0aW5lcmFudCBtYWduZXRpc20gb24gdGhlCiAgICAgIHByb3BlcnRpZXMgb2YgdGhlIERpcmFjIHBvaW50cy4gT3VyIHJlc3VsdHMgcGF2ZSB0aGUgd2F5IGZvciBkaXNjb3ZlcmluZwogICAgICBhbmQgZW5naW5lZXJpbmcgRGlyYWMgbWFnbm9ucyBpbiBhIHZhcmlldHkgb2YgbG93LWRpbWVuc2lvbmFsIGxheWVyZWQgM2QKICAgICAgZmVycm9tYWduZXRzIGFuZCBtZXRhbWF0ZXJpYWxzLgogICAgPC9kZXNjcmlwdGlvbj4KICAgIDxkZXNjcmlwdGlvbiBkZXNjcmlwdGlvblR5cGU9IlRlY2huaWNhbEluZm8iPgogICAgICAjIERhdGEgZnJvbTogRGlyYWMgbWFnbm9ucyBpbiBhIHRoaW4gZWxlbWVudGFsIGl0aW5lcmFudCBmZXJyb21hZ25ldAogICAgICBEYXRhc2V0IERPSToKICAgICAgWzEwLjUwNjEvZHJ5YWQuN3NxdjlzNTZiXShodHRwczovL2RvaS5vcmcvMTAuNTA2MS9kcnlhZC43c3F2OXM1NmIpICMjCiAgICAgIERlc2NyaXB0aW9uIG9mIHRoZSBkYXRhIGFuZCBmaWxlIHN0cnVjdHVyZSBUaGUgZGF0YSBhcmUgb3JnYW5pemVkIGluIHRoZQogICAgICBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbWFudXNjcmlwdCAiRGlyYWMgbWFnbm9ucyBpbiBhIHRoaW4KICAgICAgZWxlbWVudGFsIGl0aW5lcmFudCBmZXJyb21hZ25ldCIgKFNjaWVuY2UgQWR2YW5jZXMsIDIwMjYpLCBET0k6CiAgICAgIDEwLjExMjYvc2NpYWR2LmFlZDk4MzUuIFRoZSBkYXRhc2V0cyBhcmUgc3VwcGxpZWQgaW4gLmRhdCwgLmNzdiwgYW5kIC54bHN4CiAgICAgIGZvcm1hdHMuIFRvIG1heGltaXplIGFjY2Vzc2liaWxpdHksIGluIG1vc3QgY2FzZXMsIHRoZSBzYW1lIGRhdGEgaXMKICAgICAgYXZhaWxhYmxlIGluIG11bHRpcGxlIGZvcm1hdHMgZm9yIHVzZXIgY29udmVuaWVuY2UuIFRoZSBwbGFpbi10ZXh0IGZpbGVzCiAgICAgICguZGF0IGFuZCAuY3N2KSBjYW4gYmUgYWNjZXNzZWQgdmlhIHN0YW5kYXJkIHRleHQgZWRpdG9ycywgd2hpbGUgdGhlIC54bHN4CiAgICAgIGZpbGVzIGFyZSBjb21wYXRpYmxlIHdpdGggTWljcm9zb2Z0IEV4Y2VsLiBBbGwgZGF0YSBjYW4gYmUgdmlzdWFsaXplZAogICAgICB1c2luZyBzdGFuZGFyZCBncmFwaGluZyBzb2Z0d2FyZSwgaW5jbHVkaW5nIG9wZW4tc291cmNlIG9wdGlvbnMgbGlrZQogICAgICBHbnVwbG90LiBDb21wcmVoZW5zaXZlIGRldGFpbHMgb2YgdGhlIGV4cGVyaW1lbnRhbCBhbmQgdGhlb3JldGljYWwKICAgICAgbWV0aG9kb2xvZ2llcyBjYW4gYmUgZm91bmQgaW4gdGhlIE1hdGVyaWFscyBhbmQgTWV0aG9kcyBzZWN0aW9uIG9mIHRoZQogICAgICBtYW51c2NyaXB0ICJEaXJhYyBtYWdub25zIGluIGEgdGhpbiBlbGVtZW50YWwgaXRpbmVyYW50CiAgICAgIGZlcnJvbWFnbmV0IiAoU2NpZW5jZSBBZHZhbmNlcywgMjAyNiksIERPSTogMTAuMTEyNi9zY2lhZHYuYWVkOTgzNS4KICAgICAgIyMjIEZpbGVzIGFuZCB2YXJpYWJsZXMgIyMjIyBGaWxlOiBGaWd1cmUxLnppcCAqKkRlc2NyaXB0aW9uOioqIFRoZSB6aXAKICAgICAgZmlsZSBpbmNsdWRlcyBhbGwgdGhlIGRhdGEgZm9yIEZpZy4gMSwgd2hlcmUgdGhlIHJlc3VsdHMgb2YgY2FsY3VsYXRpb25zCiAgICAgIGZvciBidWxrIGhjcCBDbyBhcmUgcHJlc2VudGVkIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlCiAgICAgIGZvbGxvd2luZyBmaWxlczogKiAqKk1hZ25vbl9CYW5kc19CdWxrX0NvLnhsc3gqKiBROiBNYWdub24gd2F2ZXZlY3RvciwKICAgICAgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBUaGUgcGF0aCB0aHJvdWdoIHRoZSBCcmlsbG91aW4gem9uZQogICAgICBmb2xsb3dzIHRoZSBoaWdoLXN5bW1ldHJ5IHBvaW50czogzpPigJNN4oCTS+KAk86T4oCTQeKAk0zigJNI4oCTQeKAk0jigJNL4oCTSOKAk0wuIEVuZXJneTogTWFnbm9uCiAgICAgIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAqICoqTWFnbm9uX0JhbmRzX0J1bGtfQ28uY3N2KiogSWRlbnRpY2FsIHRvIHRoZSBkYXRhCiAgICAgIGluICJNYWdub25fQmFuZHNfQnVsa19Dby54bHN4Ii4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluCiAgICAgIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gVGhlIHBhdGggdGhyb3VnaCB0aGUgQnJpbGxvdWluIHpvbmUgZm9sbG93cwogICAgICB0aGUgaGlnaC1zeW1tZXRyeSBwb2ludHM6IM6T4oCTTeKAk0vigJPOk+KAk0HigJNM4oCTSOKAk0HigJNI4oCTS+KAk0jigJNMLiBFbmVyZ3k6IE1hZ25vbiBlbmVyZ3ksCiAgICAgIGdpdmVuIGluIG1lVi4gKiAqKlNwZWN0cmFsX0Z1bmN0aW9uX0J1bGtfQ28uZGF0KiogUTogTWFnbm9uIHdhdmV2ZWN0b3IsCiAgICAgIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gVGhlIHBhdGggdGhyb3VnaCB0aGUgQnJpbGxvdWluIHpvbmUKICAgICAgZm9sbG93cyB0aGUgaGlnaC1zeW1tZXRyeSBwb2ludHM6IM6T4oCTTeKAk0vigJPOk+KAk0HigJNM4oCTSOKAk0HigJNI4oCTS+KAk0jigJNMLiBFbmVyZ3k6IE1hZ25vbgogICAgICBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gTUJTRjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24uIFRvdGFsTUJTRjoKICAgICAgVGhlIHRvdGFsIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIChhcmJpdHJhcnkgdW5pdHMpLgogICAgICBNQlNGU3VibGF0dGljZTE6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIHByb2plY3RlZCBvbnRvIHRoZQogICAgICBzdWJsYXR0aWNlIDEgKGFyYml0cmFyeSB1bml0cykuIE1CU0ZTdWJsYXR0aWNlMjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gcHJvamVjdGVkIG9udG8gdGhlIHN1YmxhdHRpY2UgMiAoYXJiaXRyYXJ5IHVuaXRzKS4gKgogICAgICAqKkVuZXJneV9DdXRfNTIwbWVWX0J1bGtfQ28uZGF0KiogUXg6IHggY29tcG9uZW50IG9mIHRoZSBtYWdub24KICAgICAgd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBReTogeSBjb21wb25lbnQgb2YgdGhlCiAgICAgIG1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIEVuZXJneTogTWFnbm9uCiAgICAgIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiBNQlNGOiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5CiAgICAgIHVuaXRzKS4gKiAqKkVuZXJneV9DdXRfNTUwbWVWX0J1bGtfQ28uZGF0KiogUXg6IHggY29tcG9uZW50IG9mIHRoZSBtYWdub24KICAgICAgd2F2ZXZlY3RvciBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIFF5OiB5IGNvbXBvbmVudCBvZiB0aGUKICAgICAgbWFnbm9uIHdhdmV2ZWN0b3IgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBFbmVyZ3k6IE1hZ25vbgogICAgICBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gTUJTRjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gKGFyYml0cmFyeQogICAgICB1bml0cykuICogKipFbmVyZ3lfQ3V0XzU4MG1lVl9CdWxrX0NvKiogUXg6IHggY29tcG9uZW50IG9mIHRoZSBtYWdub24KICAgICAgd2F2ZXZlY3RvciBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIFF5OiB5IGNvbXBvbmVudCBvZiB0aGUKICAgICAgbWFnbm9uIHdhdmV2ZWN0b3IgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBFbmVyZ3k6IE1hZ25vbgogICAgICBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gTUJTRjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gKGFyYml0cmFyeQogICAgICB1bml0cykuICMjIyMgRmlsZTogRmlndXJlMi56aXAgKipEZXNjcmlwdGlvbjoqKsKgwqBUaGUgemlwIGZpbGUgaW5jbHVkZXMgYWxsCiAgICAgIHRoZSBkYXRhIGZvciBGaWcuIDIsIHdoZXJlIHR5cGljYWwgc3BlY3RyYSByZWNvcmRlZCBhdCBzcGVjaWZpYwogICAgICB3YXZldmVjdG9ycyBhcmUgcHJvdmlkZWQuIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlCiAgICAgIGZvbGxvd2luZyBmaWxlczogKiAqKlNQSFJFRUxTX1NwZWN0cmFfMjBNTC54bHN4KiogU2hlZXQgMTogU1BIUkVFTFMKICAgICAgc3BlY3RyYSByZWNvcmRlZCBhdCBhIHdhdmV2ZWN0b3Igb2YgMC41IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTSyBkaXJlY3Rpb24uIFNoZWV0CiAgICAgIDI6IFNQSFJFRUxTIHNwZWN0cmEgcmVjb3JkZWQgYXQgYSB3YXZldmVjdG9yIG9mIDAuNiDDheKBu8K5IGFsb25nIHRoZSDOk+KAk0sKICAgICAgZGlyZWN0aW9uLiBUb3RhbDogVGhlIHN1bSBvZiBzcGluLXVwIGFuZCBzcGluLWRvd24gaW50ZW5zaXRpZXMsIGdpdmVuIGluCiAgICAgIGNvdW50cyBwZXIgc2Vjb25kLiBEaWZmZXJlbmNlOiBTcGluLWRvd24gaW50ZW5zaXR5IG1pbnVzIHNwaW4tdXAKICAgICAgaW50ZW5zaXR5LCBnaXZlbiBpbiBjb3VudHMgcGVyIHNlY29uZC4gQXN5bW1ldHJ5OiBEaWZmZXJlbmNlIGRpdmlkZWQgYnkKICAgICAgdG90YWwgKGRpbWVuc2lvbmxlc3MgcXVhbnRpdHkpLiBFcnJvcmJhciA6IEVycm9yIGJhcnMuICoKICAgICAgKipTUEhSRUVMU19TcGVjdHJhXzIwTUxfMS5jc3YqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gc2hlZXQgMSBvZgogICAgICAiU1BIUkVFTFNfU3BlY3RyYV8yME1MLnhsc3giLiBTUEhSRUVMUyBzcGVjdHJhIHJlY29yZGVkIGF0IGEKICAgICAgd2F2ZXZlY3RvciBvZiAwLjUgw4XigbvCuSBhbG9uZyB0aGUgzpPigJNLIGRpcmVjdGlvbi4gVG90YWw6IFRoZSBzdW0gb2Ygc3Bpbi11cAogICAgICBhbmQgc3Bpbi1kb3duIGludGVuc2l0aWVzLCBnaXZlbiBpbiBjb3VudHMgcGVyIHNlY29uZC4gRGlmZmVyZW5jZToKICAgICAgU3Bpbi1kb3duIGludGVuc2l0eSBtaW51cyBzcGluLXVwIGludGVuc2l0eSwgZ2l2ZW4gaW4gY291bnRzIHBlciBzZWNvbmQuCiAgICAgIEFzeW1tZXRyeTogRGlmZmVyZW5jZSBkaXZpZGVkIGJ5IHRvdGFsIChkaW1lbnNpb25sZXNzIHF1YW50aXR5KS4gRXJyb3JiYXIKICAgICAgOiBFcnJvciBiYXJzLiAqICoqU1BIUkVFTFNfU3BlY3RyYV8yME1MXzIuY3N2KiogSWRlbnRpY2FsIHRvIHRoZSBkYXRhIGluCiAgICAgIHNoZWV0IDIgb2YgIlNQSFJFRUxTX1NwZWN0cmFfMjBNTC54bHN4Ii4gU1BIUkVFTFMgc3BlY3RyYQogICAgICByZWNvcmRlZCBhdCBhIHdhdmV2ZWN0b3Igb2YgMC42IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTSyBkaXJlY3Rpb24uIFRvdGFsOiBUaGUKICAgICAgc3VtIG9mIHNwaW4tdXAgYW5kIHNwaW4tZG93biBpbnRlbnNpdGllcywgZ2l2ZW4gaW4gY291bnRzIHBlciBzZWNvbmQuCiAgICAgIERpZmZlcmVuY2U6IFNwaW4tZG93biBpbnRlbnNpdHkgbWludXMgc3Bpbi11cCBpbnRlbnNpdHksIGdpdmVuIGluIGNvdW50cwogICAgICBwZXIgc2Vjb25kLiBBc3ltbWV0cnk6IERpZmZlcmVuY2UgZGl2aWRlZCBieSB0b3RhbCAoZGltZW5zaW9ubGVzcwogICAgICBxdWFudGl0eSkuIEVycm9yYmFyIDogRXJyb3IgYmFycy4gKiAqKlNwZWN0cmFsX0Z1bmN0aW9uXzIwTUwgQ28ueGxzeCoqCiAgICAgIFNoZWV0IDE6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIGNhbGN1bGF0ZWQgZm9yIFE9MC41IMOF4oG7wrkgYWxvbmcKICAgICAgdGhlIM6T4oCTSyBkaXJlY3Rpb24uIFNoZWV0IDI6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIGNhbGN1bGF0ZWQKICAgICAgZm9yIFE9MC42IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTSyBkaXJlY3Rpb24uIEVuZXJneTogRW5lcmd5LCBnaXZlbiBpbiBtZVYuCiAgICAgIFNwZWN0cmFsIGZ1bmN0aW9uOiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gKgogICAgICAqKlNwZWN0cmFsX0Z1bmN0aW9uXzIwTUwgQ29fMS5jc3YqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gc2hlZXQgMSBvZgogICAgICAiU3BlY3RyYWxfRnVuY3Rpb25fMjBNTCBDby54bHN4Ii4gTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlZCBmb3IgUT0wLjUgw4XigbvCuSBhbG9uZyB0aGUgzpPigJNLIGRpcmVjdGlvbi4gRW5lcmd5OiBFbmVyZ3ksCiAgICAgIGdpdmVuIGluIG1lVi4gU3BlY3RyYWwgZnVuY3Rpb246IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uCiAgICAgIChhcmJpdHJhcnkgdW5pdHMpLiAqICoqU3BlY3RyYWxfRnVuY3Rpb25fMjBNTCBDb18yLmNzdioqIElkZW50aWNhbCB0byB0aGUKICAgICAgZGF0YSBpbiBzaGVldCAyIG9mICJTcGVjdHJhbF9GdW5jdGlvbl8yME1MIENvLnhsc3giLiBNYWdub25pYwogICAgICBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBjYWxjdWxhdGVkIGZvciBRPTAuNiDDheKBu8K5IGFsb25nIHRoZSDOk+KAk0sgZGlyZWN0aW9uLgogICAgICBFbmVyZ3k6IEVuZXJneSwgZ2l2ZW4gaW4gbWVWLiBTcGVjdHJhbCBmdW5jdGlvbjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gKGFyYml0cmFyeSB1bml0cykuICogKipEaWZmZXJlbmNlU3BlY3RyYS5kYXQqKiBUaGUgRGlmZmVyZW5jZQogICAgICBzcGVjdHJhIGZvciB2YXJpb3VzIHdhdmV2ZWN0b3JzLiBFbmVyZ3kgbG9zczogRW5lcmd5LUxvc3MsIGdpdmVuIGluIG1lVi4KICAgICAgSW50ZW5zaXR5OiBEaWZmZXJlbmNlIGludGVuY2l0eSwgZ2l2ZW4gaW4gY291bnRzIHBlciBzZWNvbmQuIFE6IE1hZ25vbgogICAgICB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuICMjIyMgRmlsZTogRmlndXJlMy56aXAKICAgICAgKipEZXNjcmlwdGlvbjoqKsKgwqBUaGUgemlwIGZpbGUgaW5jbHVkZXMgYWxsIHRoZSBkYXRhIGZvciBGaWcuIDMsIHdoZXJlIHRoZQogICAgICBpbnRlbnNpdHkgbWFwcyBhbmQgdGhlIGRpc3BlcnNpb24gcmVsYXRpb24gYXJlIHByb3ZpZGVkLiBUaGlzCiAgICAgICIuemlwIiBmaWxlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmlsZXM6ICoKICAgICAgKipDYWxjdWxhdGVkX0JhbmRzLmRhdCoqIFRoZSBjYWxjdWxhdGVkIG1hZ25vbmljIGJhbmQgc3RydWN0dXJlIG9mIGEgMjAgTUwKICAgICAgZmlsbS4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4KICAgICAgQmFuZDFfRW5lcmd5OiBFbmVyZ3kgZGlzcGVyc2lvbiBvZiB0aGUgZmlyc3QgYmFuZCwgZ2l2ZW4gaW4gbWVWLgogICAgICBCYW5kMl9FbmVyZ3k6IEVuZXJneSBkaXNwZXJzaW9uIG9mIHRoZSBmaXJzdCBiYW5kLCBnaXZlbiBpbiBtZVYgLiAuIC4gLgogICAgICBCYW5kMjBfRW5lcmd5OiBFbmVyZ3kgZGlzcGVyc2lvbiBvZiB0aGUgMjB0aCBiYW5kLCBnaXZlbiBpbiBtZVYuICoKICAgICAgKipFeHBlcmltZW50YWxfRGF0YXBvaW50cy5kYXQqKiBUaGUgZXhwZXJpbWVudGFsIG1hZ25vbmljIGJhbmQgc3RydWN0dXJlCiAgICAgIG9mIGEgMjAgTUwgZmlsbSwgcHJvdmlkZWQgYXMgZGlzY3JldGUgZGF0YSBwb2ludHMuIFE6IE1hZ25vbiB3YXZldmVjdG9yLAogICAgICBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLgogICAgICBFcnJvcjogRXJyb3IgYmFycyBvZiB0aGUgbWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAqCiAgICAgICoqRXhwZXJpbWVudGFsX0ludGVuc2l0eV9tYXBfR2FtbWEtSy1NXzIwTUwuZGF0KiogVGhlIGV4cGVyaW1lbnRhbAogICAgICBpbnRlbnNpdHkgbWFwIG9mIGEgMjAgTUwgZmlsbSBhbG9uZyB0aGUgzpPigJNL4oCTTSBkaXJlY3Rpb24uIFE6IE1hZ25vbgogICAgICB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneS1Mb3NzOiBFeHBlcmltZW50YWwKICAgICAgZW5lcmd5IGxvc3MsIGdpdmVuIGluIG1lVi4gSW50ZW5zaXR5OiBUaGUgbm9ybWFsaXplZCBpbnRlbnNpdHkgb2YgdGhlCiAgICAgIGRpZmZlcmVuY2Ugc3BlY3RyYS4gKiAqKkV4cGVyaW1lbnRhbF9JbnRlbnNpdHlfbWFwX0dhbWEtTV8yME1MLmRhdCoqIFRoZQogICAgICBleHBlcmltZW50YWwgaW50ZW5zaXR5IG1hcCBvZiBhIDIwIE1MIGZpbG0gYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24uIFE6CiAgICAgIE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneS1Mb3NzOgogICAgICBFeHBlcmltZW50YWwgZW5lcmd5IGxvc3MsIGdpdmVuIGluIG1lVi4gSW50ZW5zaXR5OiBUaGUgbm9ybWFsaXplZAogICAgICBpbnRlbnNpdHkgb2YgdGhlIGRpZmZlcmVuY2Ugc3BlY3RyYS4gKgogICAgICAqKkV4cGVyaW1lbnRhbF9JbnRlbnNpdHlfbWFwX0dhbWEtTV8xNU1MLmRhdCoqIFRoZSBleHBlcmltZW50YWwgaW50ZW5zaXR5CiAgICAgIG1hcCBvZiBhIDE1IE1MIGZpbG0gYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24uIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbgogICAgICBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneS1Mb3NzOiBFeHBlcmltZW50YWwgZW5lcmd5IGxvc3MsIGdpdmVuCiAgICAgIGluIG1lVi4gSW50ZW5zaXR5OiBUaGUgbm9ybWFsaXplZCBpbnRlbnNpdHkgb2YgdGhlIGRpZmZlcmVuY2Ugc3BlY3RyYS4KICAgICAgIyMjIyBGaWxlOiBGaWd1cmU0LnppcCAqKkRlc2NyaXB0aW9uOioqIFRoZSB6aXAgZmlsZSBpbmNsdWRlcyBhbGwgdGhlIGRhdGEKICAgICAgZm9yIEZpZy4gNC4gQm90aCB0aGUgZXhwZXJpbWVudGFsIGFuZCBjYWxjdWxhdGVkIGNvbnN0YW50LWVuZXJneSBtYXBzIGFyZQogICAgICBwcm92aWRlZC4gVGhpcyAiLnppcCIgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOiAqCiAgICAgICoqRXhwLUVuZXJneUN1dF8yMDBtZVZfMjBNTF9Dby5kYXQqKiBUaGUgZXhwZXJpbWVudGFsIGludGVuc2l0eSBtYXAgYXQgYQogICAgICBtYWdub24gZW5lcmd5IG9mIDIwMCBtZVYgZm9yIGEgMjAgTUwgZmlsbS4gUXg6IFRoZSB4LWNvbXBvbmVudCBvZiB0aGUKICAgICAgbWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gUXk6IFRoZSB5LWNvbXBvbmVudAogICAgICBvZiB0aGUgbWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gSW50ZW5zaXR5OiBUaGUKICAgICAgbm9ybWFsaXplZCBkaWZmZXJlbmNlIGludGVuc2l0eS4gKiAqKkV4cC1FbmVyZ3lDdXRfMzgwbWVWXzIwTUxfQ28uZGF0KioKICAgICAgVGhlIGV4cGVyaW1lbnRhbCBpbnRlbnNpdHkgbWFwIGF0IGEgbWFnbm9uIGVuZXJneSBvZiAzODAgbWVWIGZvciBhIDIwIE1MCiAgICAgIGZpbG0uIFF4OiBUaGUgeC1jb21wb25lbnQgb2YgdGhlIG1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlCiAgICAgIGFuZ3N0cm9tcyAow4XigbvCuSkuIFF5OiBUaGUgeS1jb21wb25lbnQgb2YgdGhlIG1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbgogICAgICBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEludGVuc2l0eTogVGhlIG5vcm1hbGl6ZWQgZGlmZmVyZW5jZSBpbnRlbnNpdHkuICoKICAgICAgKipUaGVvLUVuZXJneUN1dF8yMDBtZVZfTm9kYW1waW5nXzIwTUxfQ28uZGF0KiogVGhlIGNhbGN1bGF0ZWQgc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gbWFwIGF0IGEgbWFnbm9uIGVuZXJneSBvZiAyMDAgbWVWIGZvciBhIDIwIE1MIGZpbG0sIHdpdGhvdXQKICAgICAgY29uc2lkZXJpbmcgZGFtcGluZy4gUXg6IFRoZSB4LWNvbXBvbmVudCBvZiB0aGUgbWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuCiAgICAgIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gUXk6IFRoZSB5LWNvbXBvbmVudCBvZiB0aGUgbWFnbm9uCiAgICAgIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gVG90YWw6IFRoZSB0b3RhbAogICAgICBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gTGF5ZXIxOiBUaGUgbWFnbm9uaWMKICAgICAgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gcHJvamVjdGVkIG9udG8gdGhlIHRvcG1vc3QgbGF5ZXIoYXJiaXRyYXJ5IHVuaXRzKS4KICAgICAgTGF5ZXIyOiBUaGUgbWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gcHJvamVjdGVkIG9udG8gdGhlIHNlY29uZAogICAgICB0b3Btb3N0IGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiAqCiAgICAgICoqVGhlby1FbmVyZ3lDdXRfMzgwbWVWX05vZGFtcGluZ18yME1MX0NvLmRhdCoqIFRoZSBjYWxjdWxhdGVkIHNwZWN0cmFsCiAgICAgIGZ1bmN0aW9uIG1hcCBhdCBhIG1hZ25vbiBlbmVyZ3kgb2YgMzgwIG1lViBmb3IgYSAyMCBNTCBmaWxtLCB3aXRob3V0CiAgICAgIGNvbnNpZGVyaW5nIGRhbXBpbmcuIFF4OiBUaGUgeC1jb21wb25lbnQgb2YgdGhlIG1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbgogICAgICBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIFF5OiBUaGUgeS1jb21wb25lbnQgb2YgdGhlIG1hZ25vbgogICAgICB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIFRvdGFsOiBUaGUgdG90YWwKICAgICAgbWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gKGFyYml0cmFyeSB1bml0cykuIExheWVyMTogVGhlIG1hZ25vbmljCiAgICAgIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIHByb2plY3RlZCBvbnRvIHRoZSB0b3Btb3N0IGxheWVyIChhcmJpdHJhcnkKICAgICAgdW5pdHMpLiBMYXllcjI6IFRoZSBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUKICAgICAgc2Vjb25kIHRvcG1vc3QgbGF5ZXIgKGFyYml0cmFyeSB1bml0cykuICoKICAgICAgKipUaGVvLUVuZXJneUN1dF8yMDBtZVZfRGVsdGFFPTQybWVWXzIwTUxfQ28uZGF0KiogVGhlIGNhbGN1bGF0ZWQgc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gbWFwIGF0IGEgbWFnbm9uIGVuZXJneSBvZiAyMDAgbWVWIGZvciBhIDIwIE1MIGZpbG0sIGNvbnNpZGVyaW5nCiAgICAgIGFuIGVuZXJneSBicm9hZGVuaW5nIG9mIDQyIG1lVi4gUXg6IFRoZSB4LWNvbXBvbmVudCBvZiB0aGUgbWFnbm9uCiAgICAgIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gUXk6IFRoZSB5LWNvbXBvbmVudCBvZgogICAgICB0aGUgbWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gVG90YWw6IFRoZQogICAgICB0b3RhbCBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gTGF5ZXIxOiBUaGUKICAgICAgbWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gcHJvamVjdGVkIG9udG8gdGhlIHRvcG1vc3QgbGF5ZXIKICAgICAgKGFyYml0cmFyeSB1bml0cykuIExheWVyMjogVGhlIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIHByb2plY3RlZAogICAgICBvbnRvIHRoZSBzZWNvbmQgdG9wbW9zdCBsYXllciAoYXJiaXRyYXJ5IHVuaXRzKS4gKgogICAgICAqKlRoZW8tRW5lcmd5Q3V0XzM4MG1lVl9EZWx0YUU9ODBtZVZfMjBNTF9Dby5kYXQqKiBUaGUgY2FsY3VsYXRlZCBzcGVjdHJhbAogICAgICBmdW5jdGlvbiBtYXAgYXQgYSBtYWdub24gZW5lcmd5IG9mIDM4MCBtZVYgZm9yIGEgMjAgTUwgZmlsbSwgY29uc2lkZXJpbmcKICAgICAgYW4gZW5lcmd5IGJyb2FkZW5pbmcgb2YgODAgbWVWLiBReDogVGhlIHgtY29tcG9uZW50IG9mIHRoZSBtYWdub24KICAgICAgd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBReTogVGhlIHktY29tcG9uZW50IG9mCiAgICAgIHRoZSBtYWdub24gd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBUb3RhbDogVGhlCiAgICAgIHRvdGFsIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIChhcmJpdHJhcnkgdW5pdHMpLiBMYXllcjE6IFRoZQogICAgICBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUgdG9wbW9zdCBsYXllcgogICAgICAoYXJiaXRyYXJ5IHVuaXRzKS4gTGF5ZXIyOiBUaGUgbWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gcHJvamVjdGVkCiAgICAgIG9udG8gdGhlIHNlY29uZCB0b3Btb3N0IGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiAjIyMjIEZpbGU6IEZpZ3VyZTUuemlwCiAgICAgICoqRGVzY3JpcHRpb246KiogVGhlIHppcCBmaWxlIGluY2x1ZGVzIGFsbCB0aGUgZGF0YSBmb3IgRmlnLiA1LCB3aGljaAogICAgICBwcmVzZW50cyB0aGUgY2FsY3VsYXRlZCBtYWdub25pYyBiYW5kIHN0cnVjdHVyZSBvZiBhIDIwIE1MIGZpbG0uIFRoZSBkYXRhCiAgICAgIGFyZSBpZGVudGljYWwgdG8gdGhvc2UgdXNlZCBpbiBGaWd1cmUgMy4gVGhpcyAiLnppcCIgZmlsZQogICAgICBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOiAqICoqTWFnbm9uX0JhbmRzXzIwTUxfQ28ueGxzeCoqIFRoZQogICAgICBjYWxjdWxhdGVkIG1hZ25vbmljIGJhbmQgc3RydWN0dXJlIG9mIGEgMjAgTUwgZmlsbS4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsCiAgICAgIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gRW5lcmd5OiBNYWdub24gZW5lcmd5LCBnaXZlbiBpbiBtZVYuICoKICAgICAgKipNYWdub25fQmFuZHNfMjBNTF9Dby5kYXQqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4KICAgICAgIk1hZ25vbl9CYW5kc18yME1MX0NvLnhsc3giLiBUaGUgY2FsY3VsYXRlZCBtYWdub25pYyBiYW5kCiAgICAgIHN0cnVjdHVyZSBvZiBhIDIwIE1MIGZpbG0uIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlCiAgICAgIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAjIyMjIEZpbGU6CiAgICAgIEZpZ3VyZVMwMS56aXAgKipEZXNjcmlwdGlvbjoqKiBUaGUgemlwIGZpbGUgaW5jbHVkZXMgYWxsIHRoZSBkYXRhIGZvciBGaWcuCiAgICAgIFMxLiBUaGUgZXhwZXJpbWVudGFsIGRpZmZlcmVuY2Ugc3BlY3RyYSBhcmUgcHJvdmlkZWQgZm9yIENvIGZpbG1zIG9mCiAgICAgIHZhcmlvdXMgdGhpY2tuZXNzZXMuIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZwogICAgICBmaWxlczogKiAqKkV4cGVyaW1lbnRhbF9TcGVjdHJhX0RpZmZlcmVudF9UaGlja25lc3Nlcy54bHN4KiogRW5lcmd5OgogICAgICBFeHBlcmltZW50YWwgZW5lcmd5IGxvc3MsIGdpdmVuIGluIG1lVi4gRGlmZmVyZW5jZSAoTm9ybWFsaXplZCkgbiBNTDogVGhlCiAgICAgIG5vcm1hbGl6ZWQgZGlmZmVyZW5jZSBpbnRlbnNpdHkgZm9yIGEgZmlsbSB3aXRoIGEgdGhpY2tuZXNzIG9mIG4gTUwuCiAgICAgIFJlc3VsdHMgYXJlIHByb3ZpZGVkIGZvciBuID0gMiwgMywgMTUsIGFuZCAyMCBNTC4gKgogICAgICAqKkV4cGVyaW1lbnRhbF9TcGVjdHJhX0RpZmZlcmVudF9UaGlja25lc3Nlcy5kYXQqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEKICAgICAgaW4gIkV4cGVyaW1lbnRhbF9TcGVjdHJhX0RpZmZlcmVudF9UaGlja25lc3Nlcy54bHN4Ii4gRW5lcmd5OgogICAgICBFeHBlcmltZW50YWwgZW5lcmd5IGxvc3MsIGdpdmVuIGluIG1lVi4gRGlmZmVyZW5jZSAoTm9ybWFsaXplZCkgbiBNTDogVGhlCiAgICAgIG5vcm1hbGl6ZWQgZGlmZmVyZW5jZSBpbnRlbnNpdHkgZm9yIGEgZmlsbSB3aXRoIGEgdGhpY2tuZXNzIG9mIG4gTUwuCiAgICAgIFJlc3VsdHMgYXJlIHByb3ZpZGVkIGZvciBuID0gMiwgMywgMTUsIGFuZCAyMCBNTC4gIyMjIyBGaWxlOiBGaWd1cmVTMDIuemlwCiAgICAgICoqRGVzY3JpcHRpb246KiogVGhlIHppcCBmaWxlIGluY2x1ZGVzIGFsbCB0aGUgZGF0YSBmb3IgRmlnLiBTMi4gVGhlCiAgICAgIGV4cGVyaW1lbnRhbCBhbmQgc2ltdWxhdGVkIHNwZWN0cmEgaW4gdGhlIHZpY2luaXR5IG9mIHRoZSBLLXBvaW50IGFyZQogICAgICBwcm92aWRlZC4gVGhpcyAiLnppcCIgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOiAqCiAgICAgICoqRXhwZXJpbWVudGFsX0RpZmZlcmVuY2Utc3BlY3RyYS1uZWFyLUstcG9pbnQuZGF0KiogSW4gdGhpcyBmaWxlIHRoZQogICAgICBleHBlcmltZW50YWwgc3BlY3RyYSBhcmUgcHJvdmlkZWQuIEVuZXJneSBsb3NzOiBFbmVyZ3kgbG9zcywgZ2l2ZW4gaW4gbWVWLgogICAgICBJbnRlbnNpdHkoUSA9IC4uLik6IFRoZSBub3JtYWxpemVkIGRpZmZlcmVuY2UgaW50ZW5zaXR5IGZvciBkaWZmZXJlbnQgUQogICAgICB2YWx1ZXMsIHdoZXJlIFEgaXMgZ2l2ZW4gaW4gaW52ZXJzZSBhbmdzdHJvbXMgKMOF4oG7wrkpLiAqCiAgICAgICoqU2ltdWxhdGVkLXNwZWN0cmEtbmVhci1LLXBvaW50LmRhdCoqIEluIHRoaXMgZmlsZSB0aGUgc2ltdWxhdGVkIHNwZWN0cmEKICAgICAgYXJlIHByb3ZpZGVkLiBFbmVyZ3k6IE1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gQ29sdW1ucyByZXByZXNlbnRlZCBieQogICAgICBRX24ubm46IFRoZSBzaW11bGF0ZWQgbm9ybWFsaXplZCBpbnRlbnNpdHkgZm9yIGRpZmZlcmVudCBRIHZhbHVlcywgd2hlcmUKICAgICAgbi5ubiByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZiBRIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gIyMjIyBGaWxlOgogICAgICBGaWd1cmVTMDMuemlwICoqRGVzY3JpcHRpb246KiogVGhlIHppcCBmaWxlIGluY2x1ZGVzIGFsbCB0aGUgZGF0YSBmb3IgRmlnLgogICAgICBTMy4gVGhlIGludGVuc2l0eSBtYXBzIGFuZCB0aGUgZGlzcGVyc2lvbiByZWxhdGlvbiBhcmUgcHJvdmlkZWQuIFRoZSBkYXRhCiAgICAgIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBGaWd1cmUgMy4gVGhpcyAiLnppcCIgZmlsZSBjb250YWlucyB0aGUKICAgICAgZm9sbG93aW5nIGZpbGVzOiAqICoqQ2FsY3VsYXRlZF9CYW5kcy5kYXQqKiBUaGUgY2FsY3VsYXRlZCBtYWdub25pYyBiYW5kCiAgICAgIHN0cnVjdHVyZSBvZiBhIDIwIE1MIGZpbG0uIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlCiAgICAgIGFuZ3N0cm9tcyAow4XigbvCuSkuIEJhbmQxX0VuZXJneTogRW5lcmd5IGRpc3BlcnNpb24gb2YgdGhlIDFzdCBiYW5kLCBnaXZlbiBpbgogICAgICBtZVYuIEJhbmQyX0VuZXJneTogRW5lcmd5IGRpc3BlcnNpb24gb2YgdGhlIDJuZCBiYW5kLCBnaXZlbiBpbiBtZVYgLiAuIC4gLgogICAgICBCYW5kMjBfRW5lcmd5OiBFbmVyZ3kgZGlzcGVyc2lvbiBvZiB0aGUgMjB0aCBiYW5kLCBnaXZlbiBpbiBtZVYuICoKICAgICAgKipFeHBlcmltZW50YWxfRGF0YXBvaW50cy5kYXQqKiBUaGUgZXhwZXJpbWVudGFsIG1hZ25vbmljIGJhbmQgc3RydWN0dXJlCiAgICAgIG9mIGEgMjAgTUwgZmlsbSwgcHJvdmlkZWQgYXMgZGlzY3JldGUgZGF0YSBwb2ludHMuIFE6IE1hZ25vbiB3YXZldmVjdG9yLAogICAgICBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLgogICAgICBFcnJvcjogRXJyb3IgYmFycyBmb3IgdGhlIG1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gKgogICAgICAqKkV4cGVyaW1lbnRhbF9JbnRlbnNpdHlfbWFwX0dhbW1hLUstTV8yME1MLmRhdCoqIFRoZSBleHBlcmltZW50YWwKICAgICAgaW50ZW5zaXR5IG1hcCBvZiBhIDIwIE1MIGZpbG0gYWxvbmcgdGhlIM6T4oCTS+KAk00gZGlyZWN0aW9uLiBROiBNYWdub24KICAgICAgd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBhbmdzdHJvbXMgKMOF4oG7wrkpLiBFbmVyZ3ktTG9zczogRXhwZXJpbWVudGFsCiAgICAgIGVuZXJneSBsb3NzLCBnaXZlbiBpbiBtZVYuIEludGVuc2l0eTogVGhlIG5vcm1hbGl6ZWQgZGlmZmVyZW5jZSBpbnRlbnNpdHkuCiAgICAgICogKipFeHBlcmltZW50YWxfSW50ZW5zaXR5X21hcF9HYW1tYS1NXzIwTUwuZGF0KiogVGhlIGV4cGVyaW1lbnRhbAogICAgICBpbnRlbnNpdHkgbWFwIG9mIGEgMjAgTUwgZmlsbSBhbG9uZyB0aGUgzpPigJNNIGRpcmVjdGlvbi4gUTogTWFnbm9uCiAgICAgIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gRW5lcmd5LUxvc3M6IEV4cGVyaW1lbnRhbAogICAgICBlbmVyZ3kgbG9zcywgZ2l2ZW4gaW4gbWVWLiBJbnRlbnNpdHk6IFRoZSBub3JtYWxpemVkIGRpZmZlcmVuY2UgaW50ZW5zaXR5LgogICAgICAjIyMjIEZpbGU6IEZpZ3VyZVMwNC56aXAgKipEZXNjcmlwdGlvbjoqKsKgVGhlIHppcCBmaWxlIGluY2x1ZGVzIGFsbCB0aGUKICAgICAgZGF0YSBmb3IgRmlnLiBTNC4gVHlwaWNhbCBzcGVjdHJhIHJlY29yZGVkIG9uIGEgMTUgTUwgZmlsbSBhcmUgcHJvdmlkZWQuCiAgICAgIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWxlczogKgogICAgICAqKlNQSFJFRUxTX1NwZWN0cmFfMTVNTF9Dby54bHN4KiogU2hlZXQgMTogU1BIUkVFTFMgc3BlY3RyYSByZWNvcmRlZCBhdCBhCiAgICAgIHdhdmV2ZWN0b3Igb2YgMC41IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24uIFNoZWV0IDI6IFNQSFJFRUxTIHNwZWN0cmEKICAgICAgcmVjb3JkZWQgYXQgYSB3YXZldmVjdG9yIG9mIDAuNiDDheKBu8K5IGFsb25nIHRoZSDOk+KAk00gZGlyZWN0aW9uLiBTaGVldCAzOgogICAgICBTUEhSRUVMUyBzcGVjdHJhIHJlY29yZGVkIGF0IGEgd2F2ZXZlY3RvciBvZiAwLjcgw4XigbvCuSBhbG9uZyB0aGUgzpPigJNNCiAgICAgIGRpcmVjdGlvbi4gVG90YWw6IFRoZSBzdW0gb2Ygc3Bpbi11cCBhbmQgc3Bpbi1kb3duIGludGVuc2l0aWVzLCBnaXZlbiBpbgogICAgICBjb3VudHMgcGVyIHNlY29uZC4gRGlmZmVyZW5jZTogU3Bpbi1kb3duIGludGVuc2l0eSBtaW51cyBzcGluLXVwCiAgICAgIGludGVuc2l0eSwgZ2l2ZW4gaW4gY291bnRzIHBlciBzZWNvbmQuIEFzeW1tZXRyeTogRGlmZmVyZW5jZSBkaXZpZGVkIGJ5CiAgICAgIHRvdGFsIChkaW1lbnNpb25sZXNzIHF1YW50aXR5KS4gKiAqKkRpZmZlcmVuY2VfU3BlY3RyYV8xNU1MX0NvLnhsc3gqKgogICAgICBEaWZmZXJlbmNlIHNwZWN0cmEgcmVjb3JkZWQgb24gYSAxNSBNTCBDbyBmaWxtLiBUaGUgZGF0YSBmb3IgUSAmbHQ7IDEuMwogICAgICDDheKBu8K5IHdlcmUgcmVjb3JkZWQgYXQgYW4gaW5jaWRlbnQgZW5lcmd5IG9mIEVfaSA9IDQgZVYsIHdoaWxlIHRoZSBkYXRhIGZvcgogICAgICBRIOKJpSAxLjMgw4XigbvCuSB3ZXJlIHJlY29yZGVkIGF0IEVfaSA9IDcgZVYuIEVuZXJneS1Mb3NzOiBFbmVyZ3kgbG9zcywgZ2l2ZW4KICAgICAgaW4gbWVWLiBROiBNYWdub24gd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBhbmdzdHJvbXMgKMOF4oG7wrkpLiBEaWZmLjoKICAgICAgRGlmZmVyZW5jZSBpbnRlbnNpdHksIGdpdmVuIGluIGNvdW50cyBwZXIgc2Vjb25kLiAqCiAgICAgICoqRGlmZmVyZW5jZV9TcGVjdHJhXzE1TUxfQ28uY3N2KiogSWRlbnRpY2FsIHRvIHRoZSBkYXRhIGluIFNoZWV0IDEgb2YKICAgICAgIkRpZmZlcmVuY2VfU3BlY3RyYV8xNU1MX0NvLnhsc3giLiBEaWZmZXJlbmNlIHNwZWN0cmEgcmVjb3JkZWQKICAgICAgb24gYSAxNSBNTCBDbyBmaWxtOyBkYXRhIGZvciBRICZsdDsgMS4zIMOF4oG7wrkgd2VyZSByZWNvcmRlZCBhdCBhbiBpbmNpZGVudAogICAgICBlbmVyZ3kgb2YgRV9pID0gNCBlViwgd2hpbGUgZGF0YSBmb3IgUSDiiaUgMS4zIMOF4oG7wrkgd2VyZSByZWNvcmRlZCBhdCBFX2kgPSA3CiAgICAgIGVWLiBFbmVyZ3ktTG9zczogRW5lcmd5IGxvc3MsIGdpdmVuIGluIG1lVi4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluCiAgICAgIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gRGlmZi46IERpZmZlcmVuY2UgaW50ZW5zaXR5LCBnaXZlbiBpbiBjb3VudHMgcGVyCiAgICAgIHNlY29uZC4gKiAqKlNwZWN0cmFsX0Z1bmN0aW9uXzE1TUxfQ28ueGxzeCoqIENhbGN1bGF0ZWQgbWFnbm9uaWMgQmxvY2gKICAgICAgc3BlY3RyYWwgZnVuY3Rpb24gYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24gZm9yIGEgMTUgTUwgQ28gZmlsbS4gU2hlZXQgMToKICAgICAgTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24gY2FsY3VsYXRlZCBmb3IgUSA9IDAuNSDDheKBu8K5IGFsb25nIHRoZSDOk+KAk00KICAgICAgZGlyZWN0aW9uLiBTaGVldCAyOiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBjYWxjdWxhdGVkIGZvciBRID0KICAgICAgMC42IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24uIFNoZWV0IDM6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uCiAgICAgIGNhbGN1bGF0ZWQgZm9yIFEgPSAwLjcgw4XigbvCuSBhbG9uZyB0aGUgzpPigJNNIGRpcmVjdGlvbi4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsCiAgICAgIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gRW5lcmd5OiBFbmVyZ3ksIGdpdmVuIGluIG1lVi4gU3BlY3RyYWwKICAgICAgZnVuY3Rpb246IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIChhcmJpdHJhcnkgdW5pdHMpLiAqCiAgICAgICoqU3BlY3RyYWxfRnVuY3Rpb25fMTVNTF9Db18xLmNzdioqIElkZW50aWNhbCB0byB0aGUgZGF0YSBpbiBzaGVldCAxIG9mCiAgICAgICJTcGVjdHJhbF9GdW5jdGlvbl8xNU1MX0NvLnhsc3giLiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbAogICAgICBmdW5jdGlvbiBjYWxjdWxhdGVkIGZvciBRPTAuNSDDheKBu8K5IGFsb25nIHRoZSDOk+KAk00gZGlyZWN0aW9uLiBFbmVyZ3k6IEVuZXJneSwKICAgICAgZ2l2ZW4gaW4gbWVWLiBTcGVjdHJhbCBmdW5jdGlvbjogTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwgZnVuY3Rpb24KICAgICAgKGFyYml0cmFyeSB1bml0cykuICogKipTcGVjdHJhbF9GdW5jdGlvbl8xNU1MX0NvXzIuY3N2KiogSWRlbnRpY2FsIHRvIHRoZQogICAgICBkYXRhIGluIHNoZWV0IDIgb2YgIlNwZWN0cmFsX0Z1bmN0aW9uXzE1TUxfQ28ueGxzeCIuIE1hZ25vbmljCiAgICAgIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIGNhbGN1bGF0ZWQgZm9yIFE9MC42IMOF4oG7wrkgYWxvbmcgdGhlIM6T4oCTTSBkaXJlY3Rpb24uCiAgICAgIEVuZXJneTogRW5lcmd5LCBnaXZlbiBpbiBtZVYuIFNwZWN0cmFsIGZ1bmN0aW9uOiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbAogICAgICBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gKiAqKlNwZWN0cmFsX0Z1bmN0aW9uXzE1TUxfQ29fMy5jc3YqKgogICAgICBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gc2hlZXQgMyBvZgogICAgICAiU3BlY3RyYWxfRnVuY3Rpb25fMTVNTF9Dby54bHN4Ii4gTWFnbm9uaWMgQmxvY2ggc3BlY3RyYWwKICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlZCBmb3IgUT0wLjcgw4XigbvCuSBhbG9uZyB0aGUgzpPigJNNIGRpcmVjdGlvbi4gRW5lcmd5OiBFbmVyZ3ksCiAgICAgIGdpdmVuIGluIG1lVi4gU3BlY3RyYWwgZnVuY3Rpb246IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uCiAgICAgIChhcmJpdHJhcnkgdW5pdHMpLiAjIyMjIEZpbGU6IEZpZ3VyZVMwNS56aXAgKipEZXNjcmlwdGlvbjoqKiBUaGUgemlwIGZpbGUKICAgICAgaW5jbHVkZXMgYWxsIHRoZSBkYXRhIGZvciBGaWcuIFM1LiBUaGUgY2FsY3VsYXRlZCBsYXllci1yZXNvbHZlZCBCbG9jaAogICAgICBzcGVjdHJhbCBmdW5jdGlvbiBhbmQgbGF5ZXItcmVzb2x2ZWQgbWFnbm9uaWMgZGVuc2l0eSBvZiBzdGF0ZXMgb2YgYSAyMCBNTAogICAgICBmaWxtIGFyZSBwcm92aWRlZC4gVGhpcyAiLnppcCIgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nCiAgICAgIGZpbGVzOiAqICoqTGF5ZXJfcmVzb2x2ZWRfU3BlY3RyYWxfZnVuY3Rpb25fMjBNTF9Dby5kYXQqKiBFbmVyZ3k6IE1hZ25vbgogICAgICBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaQogICAgICAoQm9ocuKBu8K5KS4gVG90YWw6IFRoZSB0b3RhbCBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbi4gTGF5ZXIgMTogVGhlCiAgICAgIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIHByb2plY3RlZCBvbnRvIHRoZSAxc3QgbGF5ZXIgKGFyYml0cmFyeQogICAgICB1bml0cykuIExheWVyIDI6IFRoZSBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUKICAgICAgMm5kIGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiAuIC4gLiBMYXllciAyMDogVGhlIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsCiAgICAgIGZ1bmN0aW9uIHByb2plY3RlZCBvbnRvIHRoZSAyMHRoIGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiAqCiAgICAgICoqTWFnbm9uX0RPU18yME1MX0NvLnhsc3gqKiBDYWxjdWxhdGVkIGxheWVyLXJlc29sdmVkIG1hZ25vbmljIGRlbnNpdHkgb2YKICAgICAgc3RhdGVzIGZvciBhIDIwIE1MIENvIGZpbG0uIFNoZWV0IDE6IFRvdGFsIG1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzLAogICAgICBhbG9uZ3NpZGUgdGhlIG1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzIG9mIG9kZC1udW1iZXJlZCBhbmQgZXZlbi1udW1iZXJlZAogICAgICBsYXllcnMuIFRvdGFsIE1ET1M6IFRvdGFsIG1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzIChhcmJpdHJhcnkgdW5pdHMpLgogICAgICBNRE9TIE9kZCBMYXllcnM6IE1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzIHByb2plY3RlZCBvbnRvIG9kZC1udW1iZXJlZAogICAgICBsYXllcnMgKDEsIDMsIDUsIC4uLiwgMTkpLiBNRE9TIEV2ZW4gTGF5ZXJzOiBNYWdub25pYyBkZW5zaXR5IG9mIHN0YXRlcwogICAgICBwcm9qZWN0ZWQgb250byBldmVuLW51bWJlcmVkIGxheWVycyAoMiwgNCwgNiwgLi4uLCAyMCkuIFNoZWV0IDI6IE1hZ25vbmljCiAgICAgIGRlbnNpdHkgb2Ygc3RhdGVzIG9mIGxheWVycyAxIGFuZCAyLiBNRE9TIExheWVyMStMYXllcjI6IE1hZ25vbmljIGRlbnNpdHkKICAgICAgb2Ygc3RhdGVzIHByb2plY3RlZCBvbnRvIGxheWVycyAxIGFuZCAyLiBNRE9TIExheWVyMTogTWFnbm9uaWMgZGVuc2l0eSBvZgogICAgICBzdGF0ZXMgcHJvamVjdGVkIG9udG8gbGF5ZXIgMS4gTURPUyBMYXllcjI6IE1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzCiAgICAgIHByb2plY3RlZCBvbnRvIGxheWVyIDIuICogKipNYWdub25fRE9TXzIwTUxfQ29fMS5jc3YqKiBJZGVudGljYWwgdG8gdGhlCiAgICAgIGRhdGEgaW4gc2hlZXQgMSBvZiAiTWFnbm9uX0RPU18yME1MX0NvLnhsc3giLiBUb3RhbCBNRE9TOiBUb3RhbAogICAgICBtYWdub25pYyBkZW5zaXR5IG9mIHN0YXRlcyAoYXJiaXRyYXJ5IHVuaXRzKS4gTURPUyBPZGQgTGF5ZXJzOiBNYWdub25pYwogICAgICBkZW5zaXR5IG9mIHN0YXRlcyBwcm9qZWN0ZWQgb250byBvZGQtbnVtYmVyZWQgbGF5ZXJzICgxLCAzLCA1LCAuLi4sIDE5KS4KICAgICAgTURPUyBFdmVuIExheWVyczogTWFnbm9uaWMgZGVuc2l0eSBvZiBzdGF0ZXMgcHJvamVjdGVkIG9udG8gZXZlbi1udW1iZXJlZAogICAgICBsYXllcnMgKDIsIDQsIDYsIC4uLiwgMjApLiAqICoqTWFnbm9uX0RPU18yME1MX0NvXzIuY3N2KiogSWRlbnRpY2FsIHRvIHRoZQogICAgICBkYXRhIGluIHNoZWV0IDIgb2YgIk1hZ25vbl9ET1NfMjBNTF9Dby54bHN4Ii4gTURPUwogICAgICBMYXllcjErTGF5ZXIyOiBNYWdub25pYyBkZW5zaXR5IG9mIHN0YXRlcyBwcm9qZWN0ZWQgb250byBsYXllcnMgMSBhbmQgMi4KICAgICAgTURPUyBMYXllcjE6IE1hZ25vbmljIGRlbnNpdHkgb2Ygc3RhdGVzIHByb2plY3RlZCBvbnRvIGxheWVyIDEuIE1ET1MKICAgICAgTGF5ZXIyOiBNYWdub25pYyBkZW5zaXR5IG9mIHN0YXRlcyBwcm9qZWN0ZWQgb250byBsYXllciAyLiAjIyMjIEZpbGU6CiAgICAgIEZpZ3VyZVMwNi56aXAgKipEZXNjcmlwdGlvbjoqKiBUaGUgemlwIGZpbGUgaW5jbHVkZXMgYWxsIHRoZSBkYXRhIGZvciBGaWcuCiAgICAgIFM2LCB3aGljaCBwcmVzZW50cyB0aGUgZXhwZXJpbWVudGFsIG1hZ25vbiBkaXNwZXJzaW9uIHJlbGF0aW9uIGZvciBmaWxtcwogICAgICBvZiBkaWZmZXJlbnQgdGhpY2tuZXNzZXMuIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlCiAgICAgIGZvbGxvd2luZyBmaWxlczogKgogICAgICAqKkV4cGVyaW1lbnRhbF9NYWdub25fRGlzcGVyc2lvbl9SZWxhdGlvbl9EaWZmZXJlbnRfVGhpY2tuZXNzZXMueGxzeCoqIFE6CiAgICAgIE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIGFuZ3N0cm9tcyAow4XigbvCuSkuIEVuZXJneTogTWFnbm9uCiAgICAgIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiBFcnJvcmJhcjogRXJyb3IgYmFycyBmb3IgdGhlIG1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluCiAgICAgIG1lVi4gKgogICAgICAqKkV4cGVyaW1lbnRhbF9NYWdub25fRGlzcGVyc2lvbl9SZWxhdGlvbl9EaWZmZXJlbnRfVGhpY2tuZXNzZXMuY3N2KioKICAgICAgSWRlbnRpY2FsIHRvIHRoZSBkYXRhIGluCiAgICAgICJFeHBlcmltZW50YWxfTWFnbm9uX0Rpc3BlcnNpb25fUmVsYXRpb25fRGlmZmVyZW50X1RoaWNrbmVzc2VzLnhsc3giLiBROiBNYWdub24gd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBhbmdzdHJvbXMgKMOF4oG7wrkpLiBFbmVyZ3k6IE1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gRXJyb3JiYXI6IEVycm9yIGJhcnMgZm9yIHRoZSBtYWdub24gZW5lcmd5LCBnaXZlbiBpbiBtZVYuICMjIyMgRmlsZTogRmlndXJlUzA3LnppcCAqKkRlc2NyaXB0aW9uOioqIFRoZSB6aXAgZmlsZSBpbmNsdWRlcyBhbGwgdGhlIGRhdGEgZm9yIEZpZy4gUzcsIHdoaWNoIHByZXNlbnRzIHRoZSBjYWxjdWxhdGVkIG1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIGZvciBhIDE1IE1MIGZpbG0uIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWxlczogKiAqKk1hZ25vbmljU3BlY3RyYWxGdW5jdGlvbl8xNU1MX0NvLmRhdCoqIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiBROiBNYWdub24gd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBMYXllcjE6IFRoZSBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUgMXN0IGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiBMYXllcjI6IFRoZSBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUgMm5kIGxheWVyIChhcmJpdHJhcnkgdW5pdHMpLiAjIyMjIEZpbGU6IEZpZ3VyZVMwOC56aXAgKipEZXNjcmlwdGlvbjoqKiBUaGUgemlwIGZpbGUgaW5jbHVkZXMgYWxsIHRoZSBkYXRhIGZvciBGaWcuIFM4LCB3aGljaCBwcmVzZW50cyB0aGUgY2FsY3VsYXRlZCBtYWdub25pYyBiYW5kIHN0cnVjdHVyZSBmb3IgZmlsbXMgb2YgMTUgYW5kIDIwIE1MIHRoaWNrbmVzc2VzLiBJbiB0aGUgY2FsY3VsYXRpb25zIG9ubHkgdGhlIG5lYXJlc3QgbmVpZ2hib3JzIHVwIHRvIHRoZSA0dGggc2hlbGwgd2VyZSBjb25zaWRlcmVkLiBUaGlzICIuemlwIiBmaWxlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmlsZXM6ICogKipNYWdub25fQmFuZHNfMjBNTF9Db19Pbmx5XzRTaGVsbHMueGxzeCoqIFRoZSByZXN1bHRzIGZvciBhIDIwIE1MIGZpbG0uIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAqICoqTWFnbm9uX0JhbmRzXzIwTUxfQ29fT25seV80U2hlbGxzLmNzdioqIElkZW50aWNhbCB0byB0aGUgZGF0YSBpbiAiTWFnbm9uX0JhbmRzXzIwTUxfQ29fT25seV80U2hlbGxzLnhsc3giLiBROiBNYWdub24gd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBCb2hyIHJhZGlpIChCb2hy4oG7wrkpLiBFbmVyZ3k6IE1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gKiAqKk1hZ25vbl9CYW5kc18xNU1MX0NvX09ubHlfNFNoZWxscy54bHN4KiogVGhlIHJlc3VsdHMgZm9yIGEgMTUgTUwgZmlsbS4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gRW5lcmd5OiBNYWdub24gZW5lcmd5LCBnaXZlbiBpbiBtZVYuICogKipNYWdub25fQmFuZHNfMTVNTF9Db19Pbmx5XzRTaGVsbHMuY3N2KiogSWRlbnRpY2FsIHRvIHRoZSBkYXRhIGluICJNYWdub25fQmFuZHNfMTVNTF9Db19Pbmx5XzRTaGVsbHMueGxzeCIuIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAqICoqU3BlY3RyYWxGdW5jdGlvbi1CdWxrX0NvX09ubHlfNFNoZWxscyoqIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIFRoZSBwYXRoIHRocm91Z2ggdGhlIEJyaWxsb3VpbiB6b25lIGZvbGxvd3MgdGhlIGhpZ2gtc3ltbWV0cnkgcG9pbnRzOiDOk+KAk03igJNL4oCTzpPigJNB4oCTTOKAk0jigJNB4oCTSOKAk0vigJNI4oCTTC4gRW5lcmd5OiBNYWdub24gZW5lcmd5LCBnaXZlbiBpbiBtZVYuIE1CU0Y6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uLiBUb3RhbE1CU0Y6IFRoZSB0b3RhbCBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gTUJTRlN1YmxhdHRpY2UxOiBNYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiBwcm9qZWN0ZWQgb250byB0aGUgc3VibGF0dGljZSAxIChhcmJpdHJhcnkgdW5pdHMpLiBNQlNGU3VibGF0dGljZTI6IE1hZ25vbmljIEJsb2NoIHNwZWN0cmFsIGZ1bmN0aW9uIHByb2plY3RlZCBvbnRvIHRoZSBzdWJsYXR0aWNlIDIgKGFyYml0cmFyeSB1bml0cykuICMjIyMgRmlsZTogRmlndXJlUzA5LnppcCAqKkRlc2NyaXB0aW9uOioqIFRoZSB6aXAgZmlsZSBpbmNsdWRlcyBhbGwgdGhlIGRhdGEgZm9yIEZpZy4gUzksIHdoaWNoIHByZXNlbnRzIHRoZSBpbnRlbnNpdHkgd2luZGluZyBhcm91bmQgdGhlIEstcG9pbnQuIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWxlczogKiAqKkRpZmZlcmVuY2VTcGVjdHJhX0twbTAuMzUuZGF0KiogRW5lcmd5IExvc3M6IEVuZXJneSBsb3NzLCBnaXZlbiBpbiBtZVYuIEludGVuc2l0eV8oSy0wLjM1KTogRGlmZmVyZW5jZSBpbnRlbnNpdHksIGdpdmVuIGluIGNvdW50cyBwZXIgc2Vjb25kIGZvciB0aGUgd2F2ZXZlY3RvciAwLjM1IMOF4oG7wrkgYmVmb3JlIHRoZSBLLXBvaW50IChzbWFsbCBxID0gLTAuMzUgw4XigbvCuSkuIEludGVuc2l0eV8oSyswLjM1KTogRGlmZmVyZW5jZSBpbnRlbnNpdHksIGdpdmVuIGluIGNvdW50cyBwZXIgc2Vjb25kIGZvciB0aGUgd2F2ZXZlY3RvciAwLjM1IMOF4oG7wrkgYWZ0ZXIgdGhlIEstcG9pbnQgKHNtYWxsIHEgPSArMC4zNSDDheKBu8K5KS4gKiAqKkludGVuc2l0eU1hcC1hYm91dC1LLXBvaW50LmRhdCoqIFF4OiBUaGUgeC1jb21wb25lbnQgb2YgdGhlIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgYW5nc3Ryb21zICjDheKBu8K5KS4gUXk6IFRoZSB5LWNvbXBvbmVudCBvZiB0aGUgd2F2ZXZlY3RvciwgZ2l2ZW4gaW4gaW52ZXJzZSBhbmdzdHJvbXMgKMOF4oG7wrkpLiBSOiBUaGUgcmF0aW8gb2YgdGhlIGRpZmZlcmVuY2UgaW50ZW5zaXR5IG9mIHRoZSB0d28gbW9kZXMgKGRpbWVuc2lvbmxlc3MgcXVhbnRpdHkpLiAqICoqSW50ZW5zaXR5LXNpZGVzX29mX0stcG9pbnQuZGF0KiogXHBoaTogQXppbXV0aGFsIGFuZ2xlIG9mIHNtYWxsIHEuIFRoZSBzbWFsbCBxIHJlcHJlc2VudHMgdGhlIHdhdmV2ZWN0b3IgbWVhc3VyZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBLLXBvaW50LiBSOiBJbnRlbnNpdHkgcmF0aW8gb2YgdGhlIGRpZmZlcmVuY2UgaW50ZW5zaXR5IG9mIHRoZSB0d28gbW9kZXMgZm9yIGRpZmZlcmVudCB2YWx1ZXMgb2Ygc21hbGwgcSAoZGltZW5zaW9ubGVzcyBxdWFudGl0eSkuIEVycm9yOiBFcnJvciBiYXJzIG9mIFIuICMjIyMgRmlsZTogRmlndXJlUzEwLnppcCAqKkRlc2NyaXB0aW9uOioqIFRoZSB6aXAgZmlsZSBpbmNsdWRlcyBhbGwgdGhlIGRhdGEgZm9yIEZpZy4gUzEwLCB3aGljaCBwcmVzZW50cyB0aGUgc2FtcGxlIGNoYXJhY3Rlcml6YXRpb24gZGF0YS4gVGhpcyAiLnppcCIgZmlsZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOiAqICoqTEVFRF9QYXR0ZXJuXzIwTUxfQ28ucG5nKiogVGhlIGxvdy1lbmVyZ3kgZWxlY3Ryb24gZGlmZnJhY3Rpb24gKExFRUQpIHBhdHRlcm4gdGFrZW4gYXQgYW4gaW5jaWRlbnQgZWxlY3Ryb24gZW5lcmd5IG9mIDgwLjIgZVYgZm9yIGEgMjAgTUwgdGhpY2sgQ28gZmlsbS4gKiAqKk1PS0VfSHlzdGVyZXNpc19Mb29wc18yMF9hbmRfMTVfTUxfQ28ueGxzeCoqIFRoZSBNT0tFIHJlc3VsdHMgZm9yIDIwIE1MIGFuZCAxNSBNTCBDbyBmaWxtcy4gU2hlZXQgMTogUmVzdWx0cyBmb3IgYSAyMCBNTCBDbyBmaWxtIHdpdGggdGhlIG1hZ25ldGljIGZpZWxkIGFwcGxpZWQgYWxvbmcgdGhlIENvWzHigJMxMDBdIGRpcmVjdGlvbi4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gU2hlZXQgMjogUmVzdWx0cyBmb3IgYSAyMCBNTCBDbyBmaWxtIHdpdGggdGhlIG1hZ25ldGljIGZpZWxkIGFwcGxpZWQgYWxvbmcgdGhlIENvWzEx4oCTMjBdIGRpcmVjdGlvbi4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gU2hlZXQgMzogUmVzdWx0cyBmb3IgYSAxNSBNTCBDbyBmaWxtIHdpdGggdGhlIG1hZ25ldGljIGZpZWxkIGFwcGxpZWQgYWxvbmcgdGhlIENvWzEx4oCTMjBdIGRpcmVjdGlvbi4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gKiAqKk1PS0VfSHlzdGVyZXNpc19Mb29wc18yMF9hbmRfMTVfTUxfQ29fMS5jc3YqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gU2hlZXQgMSBvZiAiTU9LRV9IeXN0ZXJlc2lzX0xvb3BzXzIwX2FuZF8xNV9NTF9Dby54bHN4Ii4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gKiAqKk1PS0VfSHlzdGVyZXNpc19Mb29wc18yMF9hbmRfMTVfTUxfQ29fMi5jc3YqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gU2hlZXQgMiBvZiAiTU9LRV9IeXN0ZXJlc2lzX0xvb3BzXzIwX2FuZF8xNV9NTF9Dby54bHN4Ii4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gKiAqKk1PS0VfSHlzdGVyZXNpc19Mb29wc18yMF9hbmRfMTVfTUxfQ29fMy5jc3YqKiBJZGVudGljYWwgdG8gdGhlIGRhdGEgaW4gU2hlZXQgMyBvZiAiTU9LRV9IeXN0ZXJlc2lzX0xvb3BzXzIwX2FuZF8xNV9NTF9Dby54bHN4Ii4gTWFnbmV0aWMgZmllbGQ6IEFwcGxpZWQgbWFnbmV0aWMgZmllbGQsIGdpdmVuIGluIE9lLiBLZXJyIHJvdGF0aW9uOiBLZXJyIHJvdGF0aW9uLCBnaXZlbiBpbiBtcmFkLCBmb3IgdGhlIHVwd2FyZCBhbmQgZG93bndhcmQgZmllbGQgc3dlZXBzIChwcm92aWRlZCBpbiBzZXBhcmF0ZSBjb2x1bW5zKS4gIyMjIyBGaWxlOiBGaWd1cmVTMTEuemlwICoqRGVzY3JpcHRpb246KiogVGhlIHppcCBmaWxlIGluY2x1ZGVzIGFsbCB0aGUgZGF0YSBmb3IgRmlnLiBTMTEsIHdoaWNoIHByb3ZpZGVzIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxjdWxhdGlvbnMgd2hlbiBzcGluLWRlcGVuZGVudCBjb3JyZWxhdGlvbiBlZmZlY3RzIGFyZSBuZWdsZWN0ZWQuIFRoaXMgIi56aXAiIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWxlczogKiAqKk1hZ25vbl9CYW5kc18yME1MX0NvX1dpdGhvdXRfQ29ycmVsYXRpb25zLnhsc3gqKiBUaGUgbWFnbm9uaWMgYmFuZCBzdHJ1Y3R1cmUgb2YgYSAyMCBNTCBmaWxtLCBuZWdsZWN0aW5nIGNvcnJlbGF0aW9uIGVmZmVjdHMuIFE6IE1hZ25vbiB3YXZldmVjdG9yLCBnaXZlbiBpbiBpbnZlcnNlIEJvaHIgcmFkaWkgKEJvaHLigbvCuSkuIEVuZXJneTogTWFnbm9uIGVuZXJneSwgZ2l2ZW4gaW4gbWVWLiAqICoqTWFnbm9uX0JhbmRzXzIwTUxfQ29fV2l0aG91dF9Db3JyZWxhdGlvbnMuY3N2KiogSWRlbnRpY2FsIHRvIHRoZSBkYXRhIGluICJNYWdub25fQmFuZHNfMjBNTF9Db19XaXRob3V0X0NvcnJlbGF0aW9ucy54bHN4Ii4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gRW5lcmd5OiBNYWdub24gZW5lcmd5LCBnaXZlbiBpbiBtZVYuICogKipDYWxjdWxhdGVkX01CU0ZfMjBNTF9Db19XaXRob3V0X0NvcnJlbGF0aW9ucy5kYXQqKiBFbmVyZ3k6IE1hZ25vbiBlbmVyZ3ksIGdpdmVuIGluIG1lVi4gUTogTWFnbm9uIHdhdmV2ZWN0b3IsIGdpdmVuIGluIGludmVyc2UgQm9ociByYWRpaSAoQm9ocuKBu8K5KS4gVG90YWxNQlNGOiBUb3RhbCBtYWdub25pYyBCbG9jaCBzcGVjdHJhbCBmdW5jdGlvbiAoYXJiaXRyYXJ5IHVuaXRzKS4gIyMgQ29kZS9Tb2Z0d2FyZSBUaGUgZGF0YXNldHMgYXJlIHByb3ZpZGVkIGluIC5kYXQsIC5jc3YsIGFuZCAueGxzeCBmb3JtYXRzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggYSB3aWRlIHJhbmdlIG9mIGFuYWx5dGljYWwgc29mdHdhcmUuIEluIG1vc3QgY2FzZXMsIHRoZSBzYW1lIGRhdGEgaXMgYXZhaWxhYmxlIGluIG11bHRpcGxlIGZvcm1hdHMgZm9yIHVzZXIgY29udmVuaWVuY2U6IFBsYWluLVRleHQgRmlsZXMgKC5kYXQgYW5kIC5jc3YpOiBUaGVzZSBhcmUgbGlnaHR3ZWlnaHQgYW5kIGNhbiBiZSBvcGVuZWQgdXNpbmcgYW55IHN0YW5kYXJkIHRleHQgZWRpdG9yIG9yIGRhdGEgYW5hbHlzaXMgZW52aXJvbm1lbnQgKGUuZy4sIFB5dGhvbiwgTUFUTEFCLCBvciBHbnVwbG90KS4gRXhjZWwgRmlsZXMgKC54bHN4KTogVGhlc2UgYXJlIGZvcm1hdHRlZCBmb3IgZGlyZWN0IGNvbXBhdGliaWxpdHkgd2l0aCBNaWNyb3NvZnQgRXhjZWwsIG1ha2luZyB0aGVtIGlkZWFsIGZvciBxdWljayB2aWV3aW5nIGFuZCBtYW51YWwgZGF0YSBtYW5pcHVsYXRpb24uIEFsbCBkYXRhc2V0cyBjYW4gYmUgdmlzdWFsaXplZCB1c2luZyBzdGFuZGFyZCBncmFwaGluZyBhbmQgcGxvdHRpbmcgc29mdHdhcmUuIEZvciB0aG9zZSBwcmVmZXJyaW5nIG9wZW4tc291cmNlIHRvb2xzLCB0aGVzZSBmaWxlcyBhcmUgZnVsbHkgY29tcGF0aWJsZSB3aXRoIGVudmlyb25tZW50cyBzdWNoIGFzIEdudXBsb3Qgb3IgUHl0aG9uIChNYXRwbG90bGliL1BhbmRhcykuCiAgICA8L2Rlc2NyaXB0aW9uPgogIDwvZGVzY3JpcHRpb25zPgo8L3Jlc291cmNlPg==","url":"https://datadryad.org/dataset/doi:10.5061/dryad.7sqv9s56b","contentUrl":null,"metadataVersion":0,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"mds","isActive":true,"state":"findable","reason":null,"viewCount":20,"viewsOverTime":[{"yearMonth":"2026-07","total":6},{"yearMonth":"2026-08","total":5},{"yearMonth":"2026-09","total":9}],"downloadCount":1,"downloadsOverTime":[{"yearMonth":"2026-07","total":0},{"yearMonth":"2026-08","total":0},{"yearMonth":"2026-09","total":1}],"referenceCount":0,"citationCount":1,"citationsOverTime":[{"year":"2026","total":1}],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2026-06-15T14:06:21.000Z","registered":"2026-06-15T14:06:22.000Z","published":"2026","updated":"2026-06-15T14:06:22.000Z"},"relationships":{"client":{"data":{"id":"dryad.dryad","type":"clients"}},"provider":{"data":{"id":"dryad","type":"providers"}},"media":{"data":{"id":"10.5061/dryad.7sqv9s56b","type":"media"}},"references":{"data":[]},"citations":{"data":[{"id":"10.1126/sciadv.aed9835","type":"dois"}]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}}}