Click Here to Return to Previous Page
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
Violin plot of normalized expression for Neurog1 and Neurod1, split
by cell type
Feature plots of normalized gene expression for early differentially
expressed genes between V1R, V2R, and OSN lineages
Feature plots of normalized expression for Notch1 and Dll4
LS0tCnRpdGxlOiAiVk5PIEF0bGFzIEZpZ3VyZSBTNyIKYXV0aG9yOiAiTWF4IEhpbGxzIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBzdHlsZS5jc3MKLS0tCgpgYGB7ciwgcmVzdWx0cz0nYXNpcyd9CgpjYXQoIjxidXR0b24gb25jbGljaz0naGlzdG9yeS5iYWNrKCknIHN0eWxlPSdmb250LXNpemU6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDEwcHggMjBweDsgYm9yZGVyOiAzcHggc29saWQgeWVsbG93OyBib3JkZXItcmFkaXVzOiA1cHg7Jz5DbGljayBIZXJlIHRvIFJldHVybiB0byBQcmV2aW91cyBQYWdlPC9idXR0b24+IikKCmBgYAoKKioqICAKCmBgYHtyLCBlbmdpbmU9J2NzcycsIGVjaG8gPSBGQUxTRX0KCmJvZHkgewogIGZvbnQtc2l6ZTogMThweDsKfQoubmF2LXBpbGxzID4gbGkgPiBhIHsKICBjb2xvcjogYmxhY2s7IC8qIFNldCBpbmFjdGl2ZSB0YWIgdGV4dCBjb2xvciB0byBibGFjayAqLwogIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOyAvKiBBZGQgYmxhY2sgYm9yZGVyIHRvIGluYWN0aXZlIHRhYnMgKi8KICBib3JkZXItcmFkaXVzOiA0cHg7IC8qIE9wdGlvbmFsOiBTbGlnaHRseSByb3VuZCB0aGUgY29ybmVycyAqLwp9CgoubmF2LXBpbGxzID4gbGkgPiBhOmhvdmVyLCAubmF2LXBpbGxzID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZ3JheTsgLyogU2V0IGhvdmVyIGJhY2tncm91bmQgY29sb3IgdG8gYSBkYXJrZXIgZ3JheSAqLwogIGNvbG9yOiB3aGl0ZTsgLyogU2V0IGhvdmVyIHRleHQgY29sb3IgdG8gd2hpdGUgZm9yIGJldHRlciBjb250cmFzdCAqLwp9CgoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYSB7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IC8qIFNldCBhY3RpdmUgdGFiIGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2sgKi8KICBjb2xvcjogd2hpdGU7IC8qIFNldCBhY3RpdmUgdGFiIHRleHQgY29sb3IgdG8gd2hpdGUgKi8KICBib3JkZXI6IDNweCBzb2xpZCB5ZWxsb3cKfQoKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OyAvKiBTZXQgYWN0aXZlIHRhYiBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJsYWNrICovCiAgY29sb3I6IHdoaXRlOyAvKiBTZXQgYWN0aXZlIHRhYiB0ZXh0IGNvbG9yIHRvIHdoaXRlICovCiAgYm9yZGVyOiAzcHggc29saWQgYmxhY2sKfQoKYGBgIAogIAogIAo+VGhpcyBmaWxlIGNvbnRhaW5zIHN0YXRpc3RpY3MgYW5kIGZpZ3VyZXMgZnJvbSB0aGUgcGFwZXIsICJNb2xlY3VsYXIsIENlbGx1bGFyLCBhbmQgRGV2ZWxvcG1lbnRhbCBPcmdhbml6YXRpb24gb2YgdGhlIE1vdXNlIFZvbWVyb25hc2FsIG9yZ2FuIGF0IFNpbmdsZSBDZWxsIFJlc29sdXRpb24iIGJ5IE1heCBIaWxscyBKci4sIExpbWVpIE1hLCBBaSBGYW5nLCBUaGVsbWEgQ2hpcmVtYmEsIFNldGggTWFsbG95LCBBbGxpc29uIFNjb3R0LCBBbm9qYSBQZXJlcmEsIGFuZCBDLiBSb24gWXUuICAgIAoKVGhlIHBhcGVyIGNhbiBiZSBmb3VuZCBoZXJlOiAgCgpbTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uXShodHRwczovL2VsaWZlc2NpZW5jZXMub3JnL3Jldmlld2VkLXByZXByaW50cy85NzM1NiN0YWItY29udGVudCkKCioqKiAgCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCiMgUi1NYXJrZG93biBHbG9iYWwgU2V0dGluZ3MgIAoKIyBTZXQtdXAgYSBkZWZhdWx0IGltYWdlIHNpemUgb2YgMTAgWCAxMCBpbmNoZXMuIFN1cHByZXNzIHdhcm5pbmcKIyBhbmQgZXJyb3IgbWVzc2FnZXMuIEhpZGUgY29kZS4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGNvbW1lbnQ9IiIsCiAgICAgICAgICAgICAgICAgICAgICBlcnJvcj1GQUxTRSwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTEyLCBjYWNoZT1GQUxTRSkKCmBgYAoKYGBge3IgbGlicmFyaWVzLCBpbmNsdWRlPUZBTFNFfQoKIyBMaWJyYXJ5IExvYWRpbmcgIAoKc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KGtpdCk7IGxpYnJhcnkodGlkeXZlcnNlKTsgbGlicmFyeShzdHJpbmdyKTsgbGlicmFyeShwbG90M0QpIAogIGxpYnJhcnkoZ2dwbG90Mik7IGxpYnJhcnkoZGF0YS50YWJsZSk7IGxpYnJhcnkob3JnLk1tLmVnLmRiKQogIGxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KFNldXJhdCk7IGxpYnJhcnkoREJJKTsgbGlicmFyeShjb3dwbG90KQogIGxpYnJhcnkoTWF0cml4KTsgbGlicmFyeShnbG1HYW1Qb2kpOyBsaWJyYXJ5KGNpcmNsaXplKQogIGxpYnJhcnkodGliYmxlKTsgbGlicmFyeShnZ3B1YnIpOyBsaWJyYXJ5KHN2Z2xpdGUpOyBsaWJyYXJ5KGdnc2lnbmlmKQogIGxpYnJhcnkoc3RhdHMpOyBsaWJyYXJ5KHZlZ2FuKTsgbGlicmFyeShzY2FsZXMpOyBsaWJyYXJ5KGNhcmV0KQogIGxpYnJhcnkocGF0Y2h3b3JrKTsgbGlicmFyeShwbG90bHkpOyBsaWJyYXJ5KGdlb210ZXh0cGF0aCkKICBsaWJyYXJ5KG9wZW54bHN4KTsgbGlicmFyeShncmlkRXh0cmEpOyBsaWJyYXJ5KGdncmVwZWwpCiAgbGlicmFyeShHZW5lT3ZlcmxhcCk7IGxpYnJhcnkoYmlvbWFSdCk7IGxpYnJhcnkoZ2dwb2ludGRlbnNpdHkpCiAgbGlicmFyeShzbGluZ3Nob3QpOyBsaWJyYXJ5KHRyYWRlU2VxKTsgbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKICBsaWJyYXJ5KHZpcmlkaXMpOyBsaWJyYXJ5KFVwU2V0Uik7IGxpYnJhcnkocGhlYXRtYXApOyBsaWJyYXJ5KG1zaWdkYnIpCiAgbGlicmFyeShmZ3NlYSk7IGxpYnJhcnkoZ3JpZCk7IGxpYnJhcnkoSURQbWlzYyk7IGxpYnJhcnkoTUFTUykKICBsaWJyYXJ5KFJtaXNjKTsgbGlicmFyeShnZ3Bsb3RpZnkpOyBsaWJyYXJ5KGdncG1pc2MpOyBsaWJyYXJ5KHNjYWxlcykKICBsaWJyYXJ5KGhlYXRtYXBseSk7IGxpYnJhcnkoZGVuZGV4dGVuZCkKfSkKCmBgYAoKYGBge3J9CgojIEdsb2JhbCBWYXJpYWJsZXMKCiMgVGhlIGhvbWUgZGlyZWN0b3J5CmhvbWVfZGlyIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvc2NfVk5PLyIKIyBEaXJlY3RvcnkgZm9yIHN0b3JpbmcgZGF0YSBvYmplY3RzIGF0IGNydWNpYWwgc3RhZ2VzCm9iamVjdF9kaXIgPC0gcGFzdGUwKGhvbWVfZGlyLCJmaW5hbC5zZXUub2Jqcy8iKQojIERpcmVjdG9yeSBmb3IgaW1hZ2VzIGZyb20gdGhlIGZpbmFsIGFuYWx5c2lzCmltYWdlX2RpciA8LSBwYXN0ZTAoaG9tZV9kaXIsImZpbmFsX2ltYWdlcy8iKQphZG9iZV9pbWFnZXMgPC0gcGFzdGUwKGltYWdlX2RpciwgImFkb2JlX2lsbHVzdHJhdG9yX3N2Z19maWxlcy8iKQojIERpcmVjdG9yeSBmb3IgaW1hZ2VzIGZvciB0aGUgZmluYWwgcGFwZXIKY2x1c3RyZWVfZGlyIDwtIHBhc3RlMChpbWFnZV9kaXIsImNsdXN0cmVlLyIpCiMgQSBkaXJlY3RvcnkgZm9yIFRyYWRlU2VxIGZpdEdBTSBvdXRwdXQKZml0R0FNX2RpciA8LSBwYXN0ZTAob2JqZWN0X2RpciwgImZpdEdBTS8iKQptb2VfZGlyIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvbW9sbmdfMjQwN18yNDUzL1Jfb2JqLyIKCiMgT1BFTiBgYGB2bm8uc2V1LmludGVncmF0ZWRgYGAKbG9hZChmaWxlID0gcGFzdGUwKG9iamVjdF9kaXIsInZuby5pbnRlZ3JhdGVkLnBvc3RDZWxsSUQiKSkKI0xvYWQgTmV1cm9uYWwgTGluZWFnZSBTZXVyYXQgT2JqZWN0ICAKbG9hZChmaWxlID0gcGFzdGUwKG9iamVjdF9kaXIsIm5ldXJvbi5pbnRlZ3JhdGVkLnBvc3RDZWxsSUQiKSkKCiMgUmVuYW1lIHVua25vd25fbVZTTiB0byBzVlNOCmxldmVscyh2bm8uc2V1LmludGVncmF0ZWRAYWN0aXZlLmlkZW50KVtsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudClbbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZCRjZWxsX3R5cGUpW2xldmVscyh2bm8uc2V1LmludGVncmF0ZWQkY2VsbF90eXBlKT09InVua25vd25fbVZTTiJdIDwtICJzVlNOIgpsZXZlbHMobmV1cm9uLmludGVncmF0ZWQkY2VsbF90eXBlKVtsZXZlbHMobmV1cm9uLmludGVncmF0ZWQkY2VsbF90eXBlKT09InVua25vd25fbVZTTiJdIDwtICJzVlNOIgoKIyBHZXQgY29sb3Igc2NoZW1lIGZvciB0aGUgd2hvbGUgdm5vIGRhdGFzZXQKdm5vLmNlbGxfdHlwZS5jb2xvcnMgPC0gaHVlX3BhbCgpKGxlbmd0aChsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCkpKQpuYW1lcyh2bm8uY2VsbF90eXBlLmNvbG9ycykgPC0gbGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpCgojIEtlZXAgbmV1cm9uIGRhdGFzZXQgY29sb3Igc2NoZW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgd2hvbGUgdm5vIGNvbG9yIHNjaGVtZSwgd2hlcmUgcG9zc2libGUgIApuZXVyb24uY2VsbF90eXBlLmNvbG9ycyA8LSB2bm8uY2VsbF90eXBlLmNvbG9yc1tjKCJWMVJfbVZTTiIsIlYyUl9tVlNOIiwibU9TTiIsInNWU04iLCJWMVJfaVZTTiIsIlYyUl9pVlNOIiwiR0JDIildCm5ldXJvbi5jZWxsX3R5cGUuY29sb3JzIDwtIHNldE5hbWVzKGMobmV1cm9uLmNlbGxfdHlwZS5jb2xvcnMsIiMwMEIwRjYiLCIjOTU5MEZGIiwiI0U3NkJGMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKG5hbWVzKG5ldXJvbi5jZWxsX3R5cGUuY29sb3JzKSwiaU9TTiIsImxhdGVfSU5QIiwiZWFybHlfSU5QIikpCgptYXR1cmUubmV1cm9ucyA8LSBzdWJzZXQobmV1cm9uLmludGVncmF0ZWQsaWRlbnRzPWMoIlYxUl9tVlNOIiwiVjJSX21WU04iLCJtT1NOIiwic1ZTTiIpKQptYXR1cmUuY2VsbF90eXBlLmNvbG9ycyA8LSBuZXVyb24uY2VsbF90eXBlLmNvbG9yc1tjKCJWMVJfbVZTTiIsIlYyUl9tVlNOIiwibU9TTiIsInNWU04iKV0KCmdsb2JhbC52YXJzIDwtIGMobHMoKSwiZ2xvYmFsLnZhcnMiKQoKYGBgCgoqKiogIAoKYGBge3J9Cgpsb2FkKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInYxci52LnYyci5zZXUiKSkgICAgICAgICAgICAgICAgICAgICAgICMgU2V1cmF0IE9iamVjdApsb2FkKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsImlucC5pbnRlZ3JhdGVkLnByZUNlbGxJRCIpKSAgICAgICAgICAgICMgSU5QIFNldXJhdCBPYmplY3QKbG9hZChmaWxlPXBhc3RlMChvYmplY3RfZGlyLCJ2MXIudi52MnIuc2RzIikpICAgICAgICAgICAgICAgICAgICAgICAjIFNsaW5nc2hvdCBPYmplY3QKbG9hZChmaWxlPXBhc3RlMChmaXRHQU1fZGlyLCJ2MXIudi52MnIuc2NlIikpICAgICAgICAgICAgICAgICAgICAgICAjIExvYWQgdGhlIHRyYWRlU2VxIG9iamVjdApsb2FkKGZpbGU9cGFzdGUwKG9iamVjdF9kaXIsInYxci52LnYyci5wYXR0ZXJuREVyZXMiKSkgICAgICAgICAgICAgICMgcGF0dGVybkRFIHRlc3QgcmVzdWx0cyBvYmplY3QKCmBgYAoKIyMgVmlvbGluIHBsb3Qgb2Ygbm9ybWFsaXplZCBleHByZXNzaW9uIGZvciBOZXVyb2cxIGFuZCBOZXVyb2QxLCBzcGxpdCBieSBjZWxsIHR5cGUgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9OH0KCiMgT3JkZXIgdGhlIGNlbGwtdHlwZXMgCiMgT3JkZXIgdGhlIGdlbmUgZmFjdG9yIGxldmVscwpuZXVyb24uaW50ZWdyYXRlZCRjZWxsX3R5cGUgPC0KICBmYWN0b3IobmV1cm9uLmludGVncmF0ZWQkY2VsbF90eXBlLCBsZXZlbHM9YygiR0JDIiwiZWFybHlfSU5QIiwibGF0ZV9JTlAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWMVJfaVZTTiIsIlYyUl9pVlNOIiwiaU9TTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlYxUl9tVlNOIiwiVjJSX21WU04iLCJtT1NOIiwic1ZTTiIpKQpuZXVyb24uY2VsbF90eXBlLmNvbG9ycyA8LSAKICBuZXVyb24uY2VsbF90eXBlLmNvbG9yc1tjKCJHQkMiLCJlYXJseV9JTlAiLCJsYXRlX0lOUCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVjFSX2lWU04iLCJWMlJfaVZTTiIsImlPU04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlYxUl9tVlNOIiwiVjJSX21WU04iLCJtT1NOIiwic1ZTTiIpXQoKZmlnU180QSA8LSBWbG5QbG90KG5ldXJvbi5pbnRlZ3JhdGVkLCBmZWF0dXJlcz1jKCJOZXVyb2cxIiksIHNwbGl0LmJ5PSJjZWxsX3R5cGUiLCAKICAgICAgICAgICAgICAgICAgY29scyA9IG5ldXJvbi5jZWxsX3R5cGUuY29sb3JzKSAmIHhsYWIoIkNlbGwgVHlwZSIpICYKICB0aGVtZShhc3BlY3QucmF0aW89MSxheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLGF4aXMudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSxsZWdlbmQudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLHBsb3QudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MzIpKQoKZmlnU180QiA8LSBWbG5QbG90KG5ldXJvbi5pbnRlZ3JhdGVkLCBmZWF0dXJlcz1jKCJOZXVyb2QxIiksIHNwbGl0LmJ5PSJjZWxsX3R5cGUiLCAKICAgICAgICAgICAgICAgICAgY29scyA9IG5ldXJvbi5jZWxsX3R5cGUuY29sb3JzKSAmIHhsYWIoIkNlbGwgVHlwZSIpICYKICB0aGVtZShhc3BlY3QucmF0aW89MSxheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLGF4aXMudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSxsZWdlbmQudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLHBsb3QudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MzIpKQoKZmlnU180QUIgPC0gZ2dhcnJhbmdlKGZpZ1NfNEEsZmlnU180Qixjb21tb24ubGVnZW5kPVRSVUUsbGVnZW5kPSJyaWdodCIsYWxpZ249J2h2JyxuY29sPTIsbnJvdz0xKQoKZmlnU180QUIKCmBgYAoKIyMgRmVhdHVyZSBwbG90cyBvZiBub3JtYWxpemVkIGdlbmUgZXhwcmVzc2lvbiBmb3IgZWFybHkgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGJldHdlZW4gVjFSLCBWMlIsIGFuZCBPU04gbGluZWFnZXMgIAoKYGBge3J9Cgpjb3JuZXJfdGhlbWUgPC0gdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiwgY29sb3VyID0gTkEpLAogICAgICAgICAgICAgICAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBjb2xvdXIgPSBOQSksCiAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgcGxvdC5tYXJnaW4gPSB1bml0KGMoLTEsIC0xLCAwLCAtMSksICJudWxsIiksCiAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5tYXJnaW4gPSB1bml0KGMoLTEsIC0xLCAwLCAtMSksICJudWxsIiksCiAgICAgICAgICAgICAgICAgICAgICBheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLAogICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZT1lbGVtZW50X3RleHQoc2l6ZT0yNCksCiAgICAgICAgICAgICAgICAgICAgICBwbG90LnRpdGxlPWVsZW1lbnRfdGV4dChzaXplPTMyKSwKICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdC5yYXRpbz0xKQoKeV90aGVtZSA8LSB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBjb2xvdXIgPSBOQSksCiAgICAgICAgICAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBjb2xvdXIgPSBOQSksCiAgICAgICAgICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgcGxvdC5tYXJnaW4gPSB1bml0KGMoLTEsIC0xLCAwLCAtMSksICJudWxsIiksCiAgICAgICAgICAgICAgICAgcGFuZWwubWFyZ2luID0gdW5pdChjKC0xLCAtMSwgMCwgLTEpLCAibnVsbCIpLAogICAgICAgICAgICAgICAgIGF4aXMudGl0bGUueD1lbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICBheGlzLnRpdGxlPWVsZW1lbnRfdGV4dChzaXplPTI0KSwKICAgICAgICAgICAgICAgICBwbG90LnRpdGxlPWVsZW1lbnRfdGV4dChzaXplPTMyKSwKICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0yMCksCiAgICAgICAgICAgICAgICAgYXNwZWN0LnJhdGlvPTEpCgp4X3RoZW1lIDwtIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgIHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICBwbG90Lm1hcmdpbiA9IHVuaXQoYygtMSwgLTEsIDAsIC0xKSwgIm51bGwiKSwKICAgICAgICAgICAgICAgICBwYW5lbC5tYXJnaW4gPSB1bml0KGMoLTEsIC0xLCAwLCAtMSksICJudWxsIiksCiAgICAgICAgICAgICAgICAgYXhpcy50aXRsZS55PWVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICBheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLAogICAgICAgICAgICAgICAgIGF4aXMudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgICAgICAgICAgIHBsb3QudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MzIpLAogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICBhc3BlY3QucmF0aW89MSkKICAKYmxhbmtfdGhlbWUgPC0gdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiwgY29sb3VyID0gTkEpLAogICAgICAgICAgICAgICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ0cmFuc3BhcmVudCIsIGNvbG91ciA9IE5BKSwKICAgICAgICAgICAgICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICBwbG90Lm1hcmdpbiA9IHVuaXQoYygtMSwgLTEsIDAsIC0xKSwgIm51bGwiKSwKICAgICAgICAgICAgICAgICAgICAgcGFuZWwubWFyZ2luID0gdW5pdChjKC0xLCAtMSwgMCwgLTEpLCAibnVsbCIpLAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlPWVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgICAgcGxvdC50aXRsZT1lbGVtZW50X3RleHQoc2l6ZT0zMiksCiAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgICAgYXNwZWN0LnJhdGlvPTEpCgpgYGAKCmBgYHtyLGZpZy53aWR0aD0xNixmaWcuaGVpZ2h0PTE2fQoKZmlnU180QyA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJLcnQ3Iiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgeV90aGVtZQoKZmlnU180RCA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJLcnQ4Iiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgYmxhbmtfdGhlbWUKCmZpZ1NfNEUgPC0gRmVhdHVyZVBsb3QoaW5wLmludGVncmF0ZWQsZmVhdHVyZXM9YygiRW14MiIpLG9yZGVyPVRSVUUscHQuc2l6ZT0xLGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSkgKwogIGJsYW5rX3RoZW1lCgpmaWdTXzRGIDwtIEZlYXR1cmVQbG90KGlucC5pbnRlZ3JhdGVkLGZlYXR1cmVzPWMoIkdtbmMiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICBibGFua190aGVtZQoKZmlnU180RyA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJDZGtuMWEiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICB5X3RoZW1lCgpmaWdTXzRIIDwtIEZlYXR1cmVQbG90KGlucC5pbnRlZ3JhdGVkLGZlYXR1cmVzPWMoIk1jaWRhcyIpLG9yZGVyPVRSVUUscHQuc2l6ZT0xLGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSkgKwogIGJsYW5rX3RoZW1lCgpmaWdTXzRJIDwtIEZlYXR1cmVQbG90KGlucC5pbnRlZ3JhdGVkLGZlYXR1cmVzPWMoIkNkazEiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICBibGFua190aGVtZQoKZmlnU180SiA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJQaGxkYTEiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICBibGFua190aGVtZQoKZmlnU180SyA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJNaXNwIiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgeV90aGVtZQoKZmlnU180TCA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJDbG1wIiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgYmxhbmtfdGhlbWUKCmZpZ1NfNE0gPC0gRmVhdHVyZVBsb3QoaW5wLmludGVncmF0ZWQsZmVhdHVyZXM9YygiVHBwcDMiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICBibGFua190aGVtZQoKZmlnU180TiA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJJbmEiKSxvcmRlcj1UUlVFLHB0LnNpemU9MSxjb2xzPWMoImN5YW4iLCJtYWdlbnRhIikpICsKICBibGFua190aGVtZQoKZmlnU180TyA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJNc3M1MSIpLG9yZGVyPVRSVUUscHQuc2l6ZT0xLGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSkgKwogIGNvcm5lcl90aGVtZQoKZmlnU180UCA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJEbmFzZTJhIiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgeF90aGVtZQoKZmlnU180USA8LSBGZWF0dXJlUGxvdChpbnAuaW50ZWdyYXRlZCxmZWF0dXJlcz1jKCJUZXgxNSIpLG9yZGVyPVRSVUUscHQuc2l6ZT0xLGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSkgKwogIHhfdGhlbWUKCmZpZ1NfNFIgPC0gRmVhdHVyZVBsb3QoaW5wLmludGVncmF0ZWQsZmVhdHVyZXM9YygiQ3JhYnAxIiksb3JkZXI9VFJVRSxwdC5zaXplPTEsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgeF90aGVtZQoKZ2dhcnJhbmdlKGZpZ1NfNEMsZmlnU180RCxmaWdTXzRFLGZpZ1NfNEYsZmlnU180RyxmaWdTXzRILGZpZ1NfNEksZmlnU180SixmaWdTXzRLLGZpZ1NfNEwsZmlnU180TSxmaWdTXzROLAogICAgICAgICAgZmlnU180TyxmaWdTXzRQLGZpZ1NfNFEsZmlnU180Uixucm93PTQsbmNvbD00LGFsaWduPSdodicpCgpgYGAKCiMjIEZlYXR1cmUgcGxvdHMgb2Ygbm9ybWFsaXplZCBleHByZXNzaW9uIGZvciBOb3RjaDEgYW5kIERsbDQgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9OH0KCmZpZ1NfM1MgPC0gRmVhdHVyZVBsb3QoaW5wLmludGVncmF0ZWQsZmVhdHVyZXM9YygiTm90Y2gxIiksb3JkZXI9VFJVRSxwdC5zaXplPTIsY29scz1jKCJjeWFuIiwibWFnZW50YSIpKSArCiAgdGhlbWUoYXNwZWN0LnJhdGlvPTEpCmZpZ1NfM1QgPC0gRmVhdHVyZVBsb3QoaW5wLmludGVncmF0ZWQsZmVhdHVyZXM9YygiRGxsNCIpLG9yZGVyPVRSVUUscHQuc2l6ZT0yLGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSkgKwogIHRoZW1lKGFzcGVjdC5yYXRpbz0xKQoKZ2dhcnJhbmdlKGZpZ1NfM1MsZmlnU18zVCxuY29sPTIsYWxpZ249J2h2JykKCmBgYAoK