This file contains statistics and figures from the paper, “Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution” by Max Hills Jr., Limei Ma, Ai Fang, Thelma Chiremba, Seth Malloy, Allison Scott, Anoja Perera, and C. Ron Yu.

The paper can be found here:

Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution


Spatial Analysis of Cell-Types with Molecular Cartography

VNO Zone Cell-Type Count Schematic

Percent Cell-Type by VNO Zone

GBC, INP, iVSN Cell Counts by VNO Region

LS0tCnRpdGxlOiAiVk5PIEF0bGFzIEZpZ3VyZSBTMyIKYXV0aG9yOiAiTWF4IEhpbGxzIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBzdHlsZS5jc3MKLS0tCgpgYGB7ciwgcmVzdWx0cz0nYXNpcyd9CgpjYXQoIjxidXR0b24gb25jbGljaz0naGlzdG9yeS5iYWNrKCknIHN0eWxlPSdmb250LXNpemU6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDEwcHggMjBweDsgYm9yZGVyOiAzcHggc29saWQgeWVsbG93OyBib3JkZXItcmFkaXVzOiA1cHg7Jz5DbGljayBIZXJlIHRvIFJldHVybiB0byBQcmV2aW91cyBQYWdlPC9idXR0b24+IikKCmBgYAoKKioqICAKCmBgYHtyLCBlbmdpbmU9J2NzcycsIGVjaG8gPSBGQUxTRX0KCmJvZHkgewogIGZvbnQtc2l6ZTogMThweDsKfQoubmF2LXBpbGxzID4gbGkgPiBhIHsKICBjb2xvcjogYmxhY2s7IC8qIFNldCBpbmFjdGl2ZSB0YWIgdGV4dCBjb2xvciB0byBibGFjayAqLwogIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOyAvKiBBZGQgYmxhY2sgYm9yZGVyIHRvIGluYWN0aXZlIHRhYnMgKi8KICBib3JkZXItcmFkaXVzOiA0cHg7IC8qIE9wdGlvbmFsOiBTbGlnaHRseSByb3VuZCB0aGUgY29ybmVycyAqLwp9CgoubmF2LXBpbGxzID4gbGkgPiBhOmhvdmVyLCAubmF2LXBpbGxzID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZ3JheTsgLyogU2V0IGhvdmVyIGJhY2tncm91bmQgY29sb3IgdG8gYSBkYXJrZXIgZ3JheSAqLwogIGNvbG9yOiB3aGl0ZTsgLyogU2V0IGhvdmVyIHRleHQgY29sb3IgdG8gd2hpdGUgZm9yIGJldHRlciBjb250cmFzdCAqLwp9CgoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYSB7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IC8qIFNldCBhY3RpdmUgdGFiIGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2sgKi8KICBjb2xvcjogd2hpdGU7IC8qIFNldCBhY3RpdmUgdGFiIHRleHQgY29sb3IgdG8gd2hpdGUgKi8KICBib3JkZXI6IDNweCBzb2xpZCB5ZWxsb3cKfQoKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OyAvKiBTZXQgYWN0aXZlIHRhYiBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJsYWNrICovCiAgY29sb3I6IHdoaXRlOyAvKiBTZXQgYWN0aXZlIHRhYiB0ZXh0IGNvbG9yIHRvIHdoaXRlICovCiAgYm9yZGVyOiAzcHggc29saWQgYmxhY2sKfQoKYGBgIAoKPlRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFuZCBmaWd1cmVzIGZyb20gdGhlIHBhcGVyLCAiTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uIiBieSBNYXggSGlsbHMgSnIuLCBMaW1laSBNYSwgQWkgRmFuZywgVGhlbG1hIENoaXJlbWJhLCBTZXRoIE1hbGxveSwgQWxsaXNvbiBTY290dCwgQW5vamEgUGVyZXJhLCBhbmQgQy4gUm9uIFl1LiAgICAKClRoZSBwYXBlciBjYW4gYmUgZm91bmQgaGVyZTogIAoKW01vbGVjdWxhciwgQ2VsbHVsYXIsIGFuZCBEZXZlbG9wbWVudGFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgTW91c2UgVm9tZXJvbmFzYWwgb3JnYW4gYXQgU2luZ2xlIENlbGwgUmVzb2x1dGlvbl0oaHR0cHM6Ly9lbGlmZXNjaWVuY2VzLm9yZy9yZXZpZXdlZC1wcmVwcmludHMvOTczNTYjdGFiLWNvbnRlbnQpCgoqKiogIAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CgojIFItTWFya2Rvd24gR2xvYmFsIFNldHRpbmdzICAKCiMgU2V0LXVwIGEgZGVmYXVsdCBpbWFnZSBzaXplIG9mIDEwIFggMTAgaW5jaGVzLiBTdXBwcmVzcyB3YXJuaW5nCiMgYW5kIGVycm9yIG1lc3NhZ2VzLiBIaWRlIGNvZGUuCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBjb21tZW50PSIiLAogICAgICAgICAgICAgICAgICAgICAgZXJyb3I9RkFMU0UsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD0xMiwgY2FjaGU9RkFMU0UpCgpgYGAKCmBgYHtyIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0KCiMgTGlicmFyeSBMb2FkaW5nICAKCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyh7CiAgbGlicmFyeShraXQpOyBsaWJyYXJ5KHRpZHl2ZXJzZSk7IGxpYnJhcnkoc3RyaW5ncik7IGxpYnJhcnkocGxvdDNEKSAKICBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KGRhdGEudGFibGUpOyBsaWJyYXJ5KG9yZy5NbS5lZy5kYikKICBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShTZXVyYXQpOyBsaWJyYXJ5KERCSSk7IGxpYnJhcnkoY293cGxvdCkKICBsaWJyYXJ5KE1hdHJpeCk7IGxpYnJhcnkoZ2xtR2FtUG9pKTsgbGlicmFyeShjaXJjbGl6ZSkKICBsaWJyYXJ5KHRpYmJsZSk7IGxpYnJhcnkoZ2dwdWJyKTsgbGlicmFyeShzdmdsaXRlKTsgbGlicmFyeShnZ3NpZ25pZikKICBsaWJyYXJ5KHN0YXRzKTsgbGlicmFyeSh2ZWdhbik7IGxpYnJhcnkoc2NhbGVzKTsgbGlicmFyeShjYXJldCkKICBsaWJyYXJ5KHBhdGNod29yayk7IGxpYnJhcnkocGxvdGx5KTsgCiAgbGlicmFyeShvcGVueGxzeCk7IGxpYnJhcnkoZ3JpZEV4dHJhKTsgbGlicmFyeShnZ3JlcGVsKQogIGxpYnJhcnkoR2VuZU92ZXJsYXApOyBsaWJyYXJ5KGJpb21hUnQpOyBsaWJyYXJ5KGdncG9pbnRkZW5zaXR5KQogIGxpYnJhcnkoc2xpbmdzaG90KTsgbGlicmFyeSh0cmFkZVNlcSk7IGxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCiAgbGlicmFyeSh2aXJpZGlzKTsgbGlicmFyeShVcFNldFIpOyBsaWJyYXJ5KHBoZWF0bWFwKTsgbGlicmFyeShtc2lnZGJyKQogIGxpYnJhcnkoZmdzZWEpOyBsaWJyYXJ5KGdyaWQpOyBsaWJyYXJ5KElEUG1pc2MpOyBsaWJyYXJ5KE1BU1MpCiAgbGlicmFyeShSbWlzYyk7IGxpYnJhcnkoZ2dwbG90aWZ5KTsgbGlicmFyeShnZ3BtaXNjKTsgbGlicmFyeShzY2FsZXMpCiAgbGlicmFyeShoZWF0bWFwbHkpOyBsaWJyYXJ5KGRlbmRleHRlbmQpCn0pCgpgYGAKCmBgYHtyfQoKIyBHbG9iYWwgVmFyaWFibGVzCm9sZF9vYmplY3RzIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvc2NfVk5PL2ZpbmFsLnNldS5vYmpzLyIKIyBUaGUgaG9tZSBkaXJlY3RvcnkKaG9tZV9kaXIgPC0gIi9sL1l1L1l1TGFiL0Jpb2luZm9ybWF0aWNzL3Byb2plY3RzL21oaC9zY19WTk8vcmV2aXNpb24vIgojIERpcmVjdG9yeSBmb3Igc3RvcmluZyBkYXRhIG9iamVjdHMgYXQgY3J1Y2lhbCBzdGFnZXMKb2JqZWN0X2RpciA8LSBwYXN0ZTAoaG9tZV9kaXIsIm9iamVjdHMvIikKIyBEaXJlY3RvcnkgZm9yIGltYWdlcyBmcm9tIHRoZSBmaW5hbCBhbmFseXNpcwppbWFnZV9kaXIgPC0gcGFzdGUwKGhvbWVfZGlyLCJpbWFnZXMvIikKCnpvbmUuc3RhdHMgPC0gcmVhZFJEUyhmaWxlPXBhc3RlMChvYmplY3RfZGlyLCAidm5vLnpvbmUuc3RhdGlzdGljcy5yZHMiKSkKCmdsb2JhbC52YXJzIDwtIGMobHMoKSwiZ2xvYmFsLnZhcnMiKQoKYGBgCgoKIyBTcGF0aWFsIEFuYWx5c2lzIG9mIENlbGwtVHlwZXMgd2l0aCBNb2xlY3VsYXIgQ2FydG9ncmFwaHkgey50YWJzZXQgLnRhYnNldC1waWxsc30gIAoKIyMgVk5PIFpvbmUgQ2VsbC1UeXBlIENvdW50IFNjaGVtYXRpYyAgCgohW10oL2wvWXUvWXVMYWIvTGFiIFBhcGVyL0luUHJlcC9WTk9fYXRsYXMvRmluYWwgVmVyc2lvbnMvZmlndXJlX3BhbmVscy9WTk9fU2NoZW1hdGljLnBuZykKCiMjIFBlcmNlbnQgQ2VsbC1UeXBlIGJ5IFZOTyBab25lICAgCgpgYGB7ciwgZmlnLndpZHRoPTEzLCBmaWcuaGVpZ2h0PTEzfQoKIyBDb252ZXJ0IHpvbmUuc3RhdHMgZnJvbSB3aWRlIHRvIGxvbmcgZm9ybWF0CmRmX2xvbmcgPC0gem9uZS5zdGF0cyAlPiUKICBwaXZvdF9sb25nZXIoCiAgICBjb2xzID0gMzoxMywKICAgIG5hbWVzX3RvID0gImNlbGxfdHlwZSIsCiAgICB2YWx1ZXNfdG8gPSAibkNlbGxzIgogICkKCiMgTGV0J3Mgb3JkZXIgdGhlIGNlbGwtdHlwZSBmYWN0b3IKZGZfbG9uZyRjZWxsX3R5cGUgPC0gZmFjdG9yKGRmX2xvbmckY2VsbF90eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkhCQyIsIkdCQyIsIklOUCIsIlYxUl9pVlNOIiwiVjJSX2lWU04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVjFSX21WU04iLCJWMlJfbVZTTiIsInNWU04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1VTIiwiT0VDIiwiTFAiKSkKCiMgTGV0J3MgZ2V0IHNvbWUgZ29vZCBjb2xvcnMKIyBTZWxlY3QgYSBwYWxldHRlIApwYWwgPC0gYygiI0ZGMDAwMCIsICIjMDBGRjAwIiwgIiMwMDAwRkYiLAogICAgICAgICAiI0ZGRkYwMCIsICIjRkZBNTAwIiwgIiM4MDAwODAiLAogICAgICAgICAiIzAwODAwMCIsICIjMDBGRkZGIiwgIiNGRkMwQ0IiLAogICAgICAgICAiI0E1MkEyQSIsICIjMDAwMDAwIikKbmFtZXMocGFsKSA8LSBjKCJIQkMiLCJHQkMiLCJJTlAiLCJWMVJfaVZTTiIsIlYyUl9pVlNOIiwiVjFSX21WU04iLAogICAgICAgICAgICAgICAgIlYyUl9tVlNOIiwic1ZTTiIsIlNVUyIsIk9FQyIsIkxQIikKCiMgRnVuY3Rpb24gdG8gY2FsY3VsYXRlIGx1bWluYW5jZSBhbmQgZGV0ZXJtaW5lIHRleHQgY29sb3IKZ2V0X3RleHRfY29sb3IgPC0gZnVuY3Rpb24oaGV4X2NvbG9yKSB7CiAgcmdiIDwtIGNvbDJyZ2IoaGV4X2NvbG9yKSAvIDI1NQogIGx1bWluYW5jZSA8LSAwLjI5OSAqIHJnYlsxLF0gKyAwLjU4NyAqIHJnYlsyLF0gKyAwLjExNCAqIHJnYlszLF0KICBpZmVsc2UobHVtaW5hbmNlID4gMC41LCAiYmxhY2siLCAid2hpdGUiKQp9CgojIENyZWF0ZSBhIG5hbWVkIHZlY3RvciBmb3IgbGFiZWwgY29sb3JzIGJhc2VkIG9uIGJhY2tncm91bmQgbHVtaW5hbmNlCmxhYmVsX2NvbG9ycyA8LSBzYXBwbHkocGFsLCBnZXRfdGV4dF9jb2xvcikKbmFtZXMobGFiZWxfY29sb3JzKSA8LSBnc3ViKCIucmVkIiwgIiIsIG5hbWVzKGxhYmVsX2NvbG9ycykpCgojIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBvZiBlYWNoIGNlbGwgdHlwZSB3aXRoaW4gZWFjaCB6b25lCmRmX2xvbmcgPC0gZGZfbG9uZyAlPiUKICBncm91cF9ieSh6b25lKSAlPiUKICBkcGx5cjo6bXV0YXRlKHpvbmVfbkNlbGxzID0gc3VtKG5DZWxscykpICU+JQogIGdyb3VwX2J5KHpvbmUsIGNlbGxfdHlwZSkgJT4lCiAgZHBseXI6Om11dGF0ZSh0eXBlX25DZWxscyA9IHN1bShuQ2VsbHMpKSAlPiUKICBkcGx5cjo6bXV0YXRlKHBlcmNlbnQ9cm91bmQoKHR5cGVfbkNlbGxzL3pvbmVfbkNlbGxzKjEwMCksMikpICU+JQogIHVuZ3JvdXAoKQoKIyBDYWxjdWxhdGUgbWVhbiBwZXJjZW50YWdlIGFjcm9zcyBzbGlkZXMgZm9yIGVhY2ggY2VsbCB0eXBlIGluIGVhY2ggem9uZQpkZl9zdW1tYXJ5IDwtIGRmX2xvbmcgJT4lCiAgZ3JvdXBfYnkoem9uZSwgY2VsbF90eXBlKSAlPiUKICBkcGx5cjo6c3VtbWFyaXNlKG1lYW5fcGVyY2VudGFnZSA9IG1lYW4ocGVyY2VudCkpCgojIEZpbHRlciBmb3IgbGFiZWxzIHdpdGggcGVyY2VudGFnZXMgZ3JlYXRlciB0aGFuIDIlCmRmX3N1bW1hcnkgPC0gZGZfc3VtbWFyeSAlPiUKICBtdXRhdGUobGFiZWwgPSBpZmVsc2UobWVhbl9wZXJjZW50YWdlID49IDEuNSwgcGFzdGUwKHJvdW5kKG1lYW5fcGVyY2VudGFnZSwgMiksICIlIiksICIiKSwKICAgICAgICAgdGV4dF9jb2xvciA9IGxhYmVsX2NvbG9yc1tjZWxsX3R5cGVdKQoKIyBDcmVhdGUgdGhlIHN0YWNrZWQgYmFycGxvdCB3aXRoIGxhYmVscwpwIDwtIGdncGxvdChkZl9sb25nLCBhZXMoeCA9IHpvbmUsIHkgPSBwZXJjZW50LCBmaWxsID0gY2VsbF90eXBlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gZGZfc3VtbWFyeSwgYWVzKHggPSB6b25lLCB5ID0gbWVhbl9wZXJjZW50YWdlLCBsYWJlbCA9IGxhYmVsLCBjb2xvciA9IGNlbGxfdHlwZSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCBzaXplID0gNSwgc2hvdy5sZWdlbmQgPSBGQUxTRSwgZm9udGZhY2UgPSAiYm9sZCIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdCgpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGxhYmVsX2NvbG9ycykgKwogIGxhYnModGl0bGUgPSAiUGVyY2VudCBDZWxsLVR5cGUgYnkgWm9uZSIsCiAgICAgICB4ID0gIlpvbmUiLAogICAgICAgeSA9ICJQZXJjZW50YWdlIiwKICAgICAgIGZpbGwgPSAiQ2VsbCBUeXBlIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXNwZWN0LnJhdGlvID0gMSwKICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA0MCwgaGp1c3QgPSAwLjYpLCAKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAzMiksCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDMyKSwKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpCiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gcGFsKQoKc3ZnbGl0ZShmaWxlbmFtZSA9IHBhc3RlMChpbWFnZV9kaXIsInNwYXRpYWwuY2VsbF90eXBlLnN0YWNrZWRfYmFyLnN2ZyIpLCB3aWR0aD0xMywgaGVpZ2h0PTEzKQpwIAppbnZpc2libGUoZGV2Lm9mZigpKQpwCgpgYGAKCiMjIEdCQywgSU5QLCBpVlNOIENlbGwgQ291bnRzIGJ5IFZOTyBSZWdpb24gIAoKYGBge3IsIGZpZy53aWR0aD0xMywgZmlnLmhlaWdodD0xM30KCm5ld19wYWwgPC0gYygiIzY3Q0JERSIsIiMxQkFDNEEiLCIjQzM0RDlDIikKbmFtZXMobmV3X3BhbCkgPC0gYygibWFyZ2luYWxfem9uZSIsICJpbnRlcm1lZGlhdGVfem9uZSIsICJtYWluX3pvbmUiKQoKbXlfY29tcGFyaXNvbnMgPSBsaXN0KGMoIm1hcmdpbmFsX3pvbmUiLCJpbnRlcm1lZGlhdGVfem9uZSIpLAogICAgICAgICAgICAgICAgICAgICAgYygibWFyZ2luYWxfem9uZSIsIm1haW5fem9uZSIpLAogICAgICAgICAgICAgICAgICAgICAgYygiaW50ZXJtZWRpYXRlX3pvbmUiLCJtYWluX3pvbmUiKSkKCiMgRnVuY3Rpb24gdG8gY3JlYXRlIGJveHBsb3QgZm9yIGVhY2ggY2VsbCB0eXBlCmNyZWF0ZV9ib3hwbG90IDwtIGZ1bmN0aW9uKGRhdGEsIGNlbGxfdHlwZSwgY29tcGFyaXNvbnMsIGZpbGxfY29sb3JzLCBzaG93X3kgPSBUUlVFLCBzaG93X3ggPSBUUlVFKSB7CiAgcCA8LSBnZ3Bsb3QoZGF0YSwgYWVzKHggPSB6b25lLCB5ID0gLmRhdGFbW2NlbGxfdHlwZV1dLCBmaWxsID0gem9uZSkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIHN0YXRfc3VtbWFyeShmdW4gPSBtZWFuLCBnZW9tID0gJ3BvaW50Jywgc2l6ZSA9IDEwLCBjb2xvciA9ICJibGFjayIsIHNoYXBlID0gOTUsIHNob3cubGVnZW5kID0gRkFMU0UpICsKICAgIHN0YXRfY29tcGFyZV9tZWFucyhjb21wYXJpc29ucyA9IGNvbXBhcmlzb25zLCB0aXAubGVuZ3RoID0gMC4wMSwKICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAid2lsY294LnRlc3QiLCBsYWJlbCA9ICJwLnNpZ25pZiIsIHZqdXN0ID0gMC4zKSArCiAgICBnZ3RpdGxlKGdzdWIoIl8iLCAiICIsIGNlbGxfdHlwZSkpICsKICAgIHlsYWIoIm5DZWxscyAobG9nIHNjYWxlKSIpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGZpbGxfY29sb3JzLCBkcm9wID0gRkFMU0UpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygibWFyZ2luYWwiLCAiaW50ZXJtZWRpYXRlIiwgIm1haW4iKSkgKwogICAgc2NhbGVfeV9sb2cxMCgpICsKICAgIHRoZW1lX2NsYXNzaWMoKSArCiAgICB0aGVtZShhc3BlY3QucmF0aW8gPSAxLAogICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgc2l6ZSA9IDI4LCBmYWNlID0gImJvbGQiKSwKICAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCBjb2xvciA9ICJibGFjayIpCiAgICAgICAgICApCiAgCiAgaWYgKCFzaG93X3kpIHsKICAgIHAgPC0gcCArIHRoZW1lKGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSkKICB9CgogIGlmICghc2hvd194KSB7CiAgICBwIDwtIHAgKyB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgIGF4aXMudGlja3MueCA9IGVsZW1lbnRfYmxhbmsoKSkKICB9IAogIHJldHVybihwKQp9CgojIFBsb3R0aW5nIHRoZSBjZWxsIHR5cGVzCmdiY19jZWxscyA8LSBjcmVhdGVfYm94cGxvdCh6b25lLnN0YXRzLCAiR0JDIiwgbXlfY29tcGFyaXNvbnMsIG5ld19wYWwsIHNob3dfeSA9IFRSVUUsIHNob3dfeCA9IEZBTFNFKQppbnBfY2VsbHMgPC0gY3JlYXRlX2JveHBsb3Qoem9uZS5zdGF0cywgIklOUCIsIG15X2NvbXBhcmlzb25zLCBuZXdfcGFsLCBzaG93X3kgPSBGQUxTRSwgc2hvd194ID0gRkFMU0UpCnYxcl9pdnNuX2NlbGxzIDwtIGNyZWF0ZV9ib3hwbG90KHpvbmUuc3RhdHMsICJWMVJfaVZTTiIsIG15X2NvbXBhcmlzb25zLCBuZXdfcGFsLCBzaG93X3kgPSBUUlVFLCBzaG93X3ggPSBUUlVFKQp2MnJfaXZzbl9jZWxscyA8LSBjcmVhdGVfYm94cGxvdCh6b25lLnN0YXRzLCAiVjJSX2lWU04iLCBteV9jb21wYXJpc29ucywgbmV3X3BhbCwgc2hvd195ID0gRkFMU0UsIHNob3dfeCA9IFRSVUUpCgojIEFycmFuZ2UgcGxvdHMKcCA8LSBnZ2FycmFuZ2UoZ2JjX2NlbGxzLCBpbnBfY2VsbHMsIHYxcl9pdnNuX2NlbGxzLCB2MnJfaXZzbl9jZWxscywgYWxpZ24gPSAnaHYnLCAKICAgICAgICAgICAgICAgbmNvbCA9IDIsIG5yb3cgPSAyLCBsZWdlbmQgPSAibm9uZSIpCgpzdmdsaXRlKGZpbGVuYW1lID0gcGFzdGUwKGltYWdlX2RpciwiZ2JjLmlucC5pdnNuLnpvbmUuYmFyLnN2ZyIpLCB3aWR0aD0xMywgaGVpZ2h0PTEzKQpwIAppbnZpc2libGUoZGV2Lm9mZigpKQpwCgpgYGAKCgpgYGB7cn0KCnJtKGxpc3Q9bHMoKSkKaW52aXNpYmxlKGdjKCkpCgpgYGAKCgoKCg==