# plugin : rdt_dynamenus # version : 0.9 # author : Richard Tietjen # uri : http://publishingpipelines.com/ # description : Dynamic Section and Article menus YTo4OntzOjQ6Im5hbWUiO3M6MTM6InJkdF9keW5hbWVudXMiO3M6NzoidmVyc2lvbiI7czozOiIwLjkiO3M6NjoiYXV0aG9yIjtzOjE1OiJSaWNoYXJkIFRpZXRqZW4iO3M6MTA6ImF1dGhvcl91cmkiO3M6MzE6Imh0dHA6Ly9wdWJsaXNoaW5ncGlwZWxpbmVzLmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjMzOiJEeW5hbWljIFNlY3Rpb24gYW5kIEFydGljbGUgbWVudXMiO3M6NDoiaGVscCI7czo2NjA4OiIKCTxoMT5EeW5hbWljIFNlY3Rpb24gYW5kIEFydGljbGUgbWVudSB0YWdzPC9oMT4KCgk8cD5UaGUgPHN0cm9uZz5yZHRfZHluYW1lbnVzPC9zdHJvbmc+IHBsdWdpbiBhdXRvbWFnaWNhbGx5IGdlbmVyYXRlcyBzZWN0aW9uLWF3YXJlIG1lbnVzIG9mIHNlY3Rpb25zIGFuZCBhcnRpY2xlcyBhbmQgdGh1cyBlbnN1cmVzIHRoYXQgdGhvc2UgbWVudXMgYXJlIHVwZGF0ZWQgd2hlbnZlciBuZXcgc2VjdGlvbnMgb3IgYXJ0aWNsZXMgYXJlIGFkZGVkIHRvIHRoZSB3ZWJzaXRlLjwvcD4KCgk8cD5Ud28gdGFncywgPHN0cm9uZz5yZHRfYXJ0aWNsZV9tZW51PC9zdHJvbmc+IGFuZCA8c3Ryb25nPnJkdF9zZWN0aW9uX21lbnU8L3N0cm9uZz4sIHRvZ2V0aGVyIGVuYWJsZSBlYXN5IG1haW50ZW5hbmNlIG9mIDIgZGltZW5zaW9uYWwgd2Vic2l0ZXMgd2hlcmUgPGVtPnNlY3Rpb248L2VtPiBhbmQgPGVtPmFydGljbGU8L2VtPiBhcmUgdGhlIHR3byBheGVzLiAgVGhleSBlbGltaW5hdGUgdGhlIG5lZWQgZWl0aGVyIHRvIGhhbmRjb2RlIGxpbmtzIGFuZCBjYXRlZ29yaWVzLCBhcyBpcyBuZWVkZWQgZm9yIG1lbnVzIGdlbmVyYXRlZCBieSA8c3Ryb25nPnR4cDpsaW5rbGlzdDwvc3Ryb25nPiwgb3IgdG8gaGFyZHdpcmUgbXVsdGlwbGUgc2VjdGlvbnMgaW50byBkaWZmZXJlbnQgaW52b2NhdGlvbnMgb2YgdGhlIDxzdHJvbmc+dHhwOmFydGljbGVfY3VzdG9tPC9zdHJvbmc+IHRhZy4gIFRoZSA8c3Ryb25nPnJkdF9zZWN0aW9uX21lbnU8L3N0cm9uZz4gaXMgYXdhcmUgb2YgdGhlIGN1cnJlbnQgc2VjdGlvbiBhbmQgbWFya3MgaXQgd2l0aCBhIENTUyBjbGFzcyBuYW1lZCAmIzgyMTY7YWN0aXZlJiM4MjE3OyBieSBkZWZhdWx0LiAgVGhlIDxzdHJvbmc+cmR0X2FydGljbGVfbWVudTwvc3Ryb25nPiBzaG93cyBvbmx5IGFydGljbGVzIGFzc2lnbmVkIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24gYW5kIG1hcmtzIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIGFydGljbGUgd2l0aCB0aGUgQ1NTICYjODIxNjthY3RpdmUmIzgyMTc7IGNsYXNzLjwvcD4KCgk8aDE+VGFnOiByZHRfYXJ0aWNsZV9tZW51PC9oMT4KCgk8cD5UaGUgcmR0X2FydGljbGVfbWVudSB0YWcgcmV0cmlldmVzIGEgbGlzdCBvZiBhcnRpY2xlIHBlcm1saW5rcyBhc3NpZ25lZCB0byB0aGUgY3VycmVudCBzZWN0aW9uLiAgSXQgZ2VuZXJhdGVzIGFuIEhUTUwgbGlzdCBhbmQgbWFya3MgdGhlIGN1cnJlbnQgYXJ0aWNsZSB3aXRoIGNsYXNzPSYjODIxNzthY3RpdmUmIzgyMTc7LjwvcD4KCgk8cD5JdCYjODIxNztzIGxlc3MgZmxleGlibGUgdGhhbiB0aGUgYnVpbHQtaW4gYXJ0aWNsZV9jdXN0b20gdGFnIGJ1dCBtdWNoIHNpbXBsZXIuPC9wPgoKCTxoMz5Vc2FnZTwvaDM+Cgo8Y29kZT48cHJlPgogICZsdDt0eHA6cmR0X2FydGljbGVfbWVudQogICB3cmFwdGFnPSJ1bCIKICAgYnJlYWs9ImxpIgogICBjbGFzcz0ibWVudSIKICAgYWN0aXZlPSJhY3RpdmUiCiAgIGlkPSJhcnRpY2xlcyIKICAgbGltaXQ9IjEwMCIKICAgc29ydGJ5PSJQb3N0ZWQiCiAgIHNvcnRkaXI9ImRlc2MiCiAgIGRhdGVwb3N0ZWQ9InRvX2RhdGUiCiAgIHNlY3Rpb249IiIKICAgc3RhdHVzPSJsaXZlIgogIC8mZ3Q7CjwvcHJlPjwvY29kZT4KCgk8aDM+VGFnIGF0dHJpYnV0ZXM8L2gzPgoKCTxwPjxzdHJvbmc+d3JhcHRhZzwvc3Ryb25nPiAgQW4gSFRNTCBsaXN0IGVudmlyb25tZW50LCBkZWZhdWx0OiBVTDwvcD4KCgk8cD48c3Ryb25nPmJyZWFrPC9zdHJvbmc+IEkgc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgY2hhbmdpbmcgZnJvbSBMSSwgdGhlIGRlZmF1bHQ8L3A+CgoJPHA+PHN0cm9uZz5jbGFzczwvc3Ryb25nPiBDU1MgY2xhc3MgZm9yIHRoZSBsaXN0IGVudmlyb25tZW50LCBkZWZhdWx0OiBtZW51PC9wPgoKCTxwPjxzdHJvbmc+YWN0aXZlPC9zdHJvbmc+IENvbnRyb2xzIHRoZSBDU1MgY2xhc3MgZm9yIGFjdGl2ZSBtZW51IGl0ZW07IGRlZmF1bHQgaXMgJiM4MjE2O2FjdGl2ZSYjODIxNzs7IGFjdGl2ZSBwYXJhbWV0ZXIgY2FuIHNwZWNpZnkgJiM4MjE2O2N1cnJlbnQmIzgyMTc7IG9yIHdoYXRldmVyLjwvcD4KCgk8cD48c3Ryb25nPmlkPC9zdHJvbmc+IENTUyBJRCBmb3IgdGhlIGxpc3QgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IGFydGljbGVzPC9wPgoKCTxwPjxzdHJvbmc+bGltaXQ8L3N0cm9uZz4gbnVtYmVyIG9mIGFydGljbGVzIHRvIHNob3csIGRlZmF1bHQ6IDEwMDwvcD4KCgk8cD48c3Ryb25nPnNvcnRieTwvc3Ryb25nPiBhbGwgdGhlIGZpZWxkcyBhY2NlcHRlZCBieSBhcnRpY2xlX2N1c3RvbSwgZGVmYXVsdDogUG9zdGVkPC9wPgoKCTxwPjxzdHJvbmc+c29ydGRpcjwvc3Ryb25nPiBBU0Mgb3IgREVTQywgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcuICBEZWZhdWx0OiBkZXNjLiAgTWFrZSBzdXJlIHRvIGtlZXAgdGhlIDIgc29ydCBhdHRyaWJ1dGVzIHN5bmNocm9uaXplZCB3aXRoIGFueSBjb3JyZXNwb25kaW5nIDx0eHA6YXJ0aWNsZSAgbGltaXQ9IjEiIHNvcnRieT0iUG9zdGVkIiAgICBzb3J0ZGlyPSJkZXNjIi8+IC48L3A+CgoJPHA+PHN0cm9uZz5kYXRlcG9zdGVkPC9zdHJvbmc+IGZ1dHVyZSwgdG9fZGF0ZSwgb3IgYWxsLiAgZGVmYXVsdDogYWxsPC9wPgoKCTxwPjxzdHJvbmc+c2VjdGlvbjwvc3Ryb25nPiBzZWN0aW9ucyB0byBzZWxlY3QgZnJvbTsgbm9ybWFsbHkgbGVhdmUgdGhpcyBlbXB0eTwvcD4KCgk8cD48c3Ryb25nPnN0YXR1czwvc3Ryb25nPiBkcmFmdCwgaGlkZGVuLCBwZW5kaW5nLCBvZiBsaXZlLiBEZWZhdWx0OmxpdmU8L3A+CgoJPGgzPlNhbXBsZSBDU1MgaW1wbGVtZW50YXRpb248L2gzPgoKPHByZT48Y29kZT4KICAmbHQ7dHhwOnJkdF9hcnRpY2xlX21lbnUgd3JhcHRhZz0idWwiIGlkPSJhcnRpY2xlcyIgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBmb2xsb3dpbmcgQ1NTIGZvcm1hdHMgdGhlIGFydGljbGUgdGl0bGVzIGludG8gYSB2ZXJ0aWNhbCBsaXN0PGJyIC8+CndpdGhvdXQgYnVsbGV0cyBidXQgYW4gb3V0ZGVudGVkIGZpcnN0IGxpbmUgaW5zdGVhZC48L3A+Cgo8cHJlPjxjb2RlPgogICNhcnRpY2xlcyB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luOiAwZW07CiAgICBwYWRkaW5nOiAwOwogICAgbGluZS1oZWlnaHQ6MTIwJTsKICB9CiAgI2FydGljbGVzIGxpIHsKICAgIHRleHQtaW5kZW50OiAtMS4yNWVtOwogICAgcGFkZGluZy1sZWZ0OiAxLjI1ZW07CiAgfQogICNhcnRpY2xlcyBsaS5hY3RpdmUgewogICAgYm9yZGVyOiAxcHggc29saWQ7CiAgfQo8L2NvZGU+PC9wcmU+CgoJPGgxPlRhZzogcmR0X3NlY3Rpb25fbWVudTwvaDE+CgoJPHA+VGhlIHJkdF9zZWN0aW9uX21lbnUgdGFnIGZvcm1hdHMgdGhlIHNpdGUmIzgyMTc7cyBzZWN0aW9uIG5hbWVzIGluc2lkZSBhbiBIVE1MIGxpc3QgYW5kIG1hcmtzIHRoZSBjdXJyZW50IHNlY3Rpb24gd2l0aCBjbGFzcz0mIzgyMTc7YWN0aXZlJiM4MjE3Oy4gIEluIHRoZSBsYXRlc3QgMS4wcmMzIHJlbGVhc2UgY2FuZGlkYXRlcywgc2VjdGlvbiB0aXRsZSBmaWVsZHMgbGV0IHlvdSBzcGVjaWZ5IG11bHRpLXdvcmQgZGlzcGxheSB0ZXh0LiAgSW4gb2xkZXIgVFhQIHZlcnNpb25zLCB5b3UgY2FuIGNyZWF0ZSBtdWx0aS13b3JkIHNlY3Rpb24gdGl0bGVzIGJ5IHNlcGFyYXRpbmcgdGhlIHdvcmRzIHdpdGggYSBoeXBoZW4uICByZHRfc2VjdGlvbl9tZW51IHdpbGwgc2hvdyB0aGUgICYjODIxNzstJiM4MjE3OyBhcyBhIHNwYWNlLjwvcD4KCgk8aDM+VXNhZ2U8L2gzPgoKPHByZT48Y29kZT4KICAmbHQ7dHhwOnJkdF9zZWN0aW9uX21lbnUKICAgICAgd3JhcHRhZz0idWwiCiAgICAgIGJyZWFrPSJsaSIKICAgICAgY2xhc3M9Im1lbnUiCiAgICAgIGFjdGl2ZT0iYWN0aXZlIgogICAgICBpZD0ic2VjdGlvbnMiCiAgICAgIGRlZmF1bHQ9IiIKICAgICAgbm9zaG93PSIiCiAgICAgIGhvbWU9IiIKICAgICAgb3JkZXI9IiIKICAgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMz5UYWcgYXR0cmlidXRlczwvaDM+CgoJPHA+PHN0cm9uZz53cmFwdGFnPC9zdHJvbmc+ICBBbiBIVE1MIGxpc3QgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IFVMPC9wPgoKCTxwPjxzdHJvbmc+YnJlYWs8L3N0cm9uZz4gSSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCBjaGFuZ2luZyBmcm9tIExJLCB0aGUgZGVmYXVsdDwvcD4KCgk8cD48c3Ryb25nPmNsYXNzPC9zdHJvbmc+IENTUyBjbGFzcyBmb3IgdGhlIGxpc3QgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IG1lbnU8L3A+CgoJPHA+PHN0cm9uZz5hY3RpdmU8L3N0cm9uZz4gQ29udHJvbHMgdGhlIENTUyBjbGFzcyBuYW1lIGZvciBhY3RpdmUgbWVudSBpdGVtOyBkZWZhdWx0IGlzICYjODIxNjthY3RpdmUmIzgyMTc7OyBhY3RpdmUgcGFyYW1ldGVyIGNhbiBzcGVjaWZ5ICYjODIxNjtjdXJyZW50JiM4MjE3OyBvciB3aGF0ZXZlci48L3A+CgoJPHA+PHN0cm9uZz5pZDwvc3Ryb25nPiBDU1MgSUQgZm9yIHRoZSBsaXN0IGVudmlyb25tZW50LCBkZWZhdWx0OiBzZWN0aW9uczwvcD4KCgk8cD48c3Ryb25nPm5vc2hvdzwvc3Ryb25nPiBvcHRpb25hbC4gIHNwZWNpZnkgbGlzdCBvZiBzZWN0aW9ucyB0byBleGNsdWRlICYjODIyMDtzZWN0MSxzZWN0MiYjODIyMTs8L3A+CgoJPHA+PHN0cm9uZz5kZWZhdWx0PC9zdHJvbmc+IGRvZXMgMiB0aGluZ3M6IGluc2VydHMgYSBsaW5rIHRvIFRleHRwYXR0ZXJuJiM4MjE3O3MgZGVmYXVsdCBzZWN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gbWVudSBhbmQgZGVmaW5lcyBhIHNlY3Rpb24gdGl0bGUgdG8gZGlzcGxheSBmb3IgdGhlIGRlZmF1bHQgc2VjdGlvbi4gIDxzdHJvbmc+ZGVmYXVsdDwvc3Ryb25nPiBvdmVycmlkZXMgPHN0cm9uZz5ob21lPC9zdHJvbmc+IGF0dHJpYnV0ZS48L3A+CgoJPHA+PHN0cm9uZz5ob21lPC9zdHJvbmc+IG9wdGlvbmFsIGFuZCBkZXByZWNhdGVkLiA8c3Ryb25nPmhvbWU8L3N0cm9uZz4gaW5kaWNhdGVzIHRoZSBuYW1lIG9mIHlvdXIgZnJvbnQgcGFnZSBzZWN0aW9uIGFuZCBzb3J0cyBpdHMgbGluayB0byB0aGUgdG9wIG9mIHRoZSBtZW51IGxpc3QuICBUaGUgZGVmYXVsdCB2YWx1ZSwgPGNvZGU+aG9tZT0nJzwvY29kZT4sIHByZXZlbnRzIHNvcnRpbmcgYSBwYXJ0aWN1bGFyIHNlY3Rpb24gdG8gdGhlIHRvcCBvZiB0aGUgc2VjdGlvbiBsaXN0LjwvcD4KCgk8cD48c3Ryb25nPm9yZGVyPC9zdHJvbmc+IG9wdGlvbmFsLiBzcGVjaWZ5IHNlY3Rpb24gc2VxdWVuY2UgdG8gb3ZlcnJpZGUgYWxwaGFiZXRpY2FsIG9yZGVyOiAmIzgyMjA7c2VjdDIsc2VjdDEmIzgyMjE7LiAgVGhlIHRyYWRlb2ZmIGlzOiB5b3UgbG9zZSBhdXRvbWF0aWMgY29vcmRpbmF0aW9uIHdpdGggcHJlc2VudGF0aW9uLT5zZWN0aW9ucy4gIElmIHlvdXIgdmVyc2lvbiBvZiBUZXh0cGF0dGVybiBzdXBwb3J0cyB0aGUgc2VjdGlvbiB0aXRsZXMsIGl0IHNlZW1zIGJldHRlciB0byBjb250cm9sIHRoZSBzb3J0IG9yZGVyIGJ5IHR3ZWFraW5nIHRoZSBzZWN0aW9uIG5hbWVzLiAgWW91IGNhbiB1c2UgdGhlICYjODIxNjtkZWZhdWx0JiM4MjE3OyBzZWN0aW9uIG5hbWUgdG8gaW5jbHVkZSB0aGUgZGVmYXVsdCBzZWN0aW9uLjwvcD4KCgk8aDM+U2FtcGxlIENTUyBpbXBsZW1lbnRhdGlvbjwvaDM+Cgo8cHJlPjxjb2RlPgogJmx0O3R4cDpyZHRfc2VjdGlvbl9tZW51ICBob21lPSJob21lIiBjbGFzcz0ibWVudSIgaWQ9InNlY3Rpb25zIiB3cmFwdGFnPSJ1bCIvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZvbGxvd2luZyBDU1MgY29kZSBkZWZpbmVzIGEgaG9yaXpvbnRhbCBzZWN0aW9uIG1lbnUgd2hlcmUgdGhlIGFjdGl2ZSBzZWN0aW9uIGlzIGhpZ2hsaWdodGVkIHdpdGggYSBza3libHVlIGJveC48L3A+Cgo8cHJlPjxjb2RlPgoKICAjc2VjdGlvbnMgewogICBjbGVhcjpib3RoOwogICAgbWFyZ2luOiAwOyAgcGFkZGluZzogMDsKICAgIGhlaWdodDogMmVtOwogICAgbGluZS1oZWlnaHQ6IDJlbTsKICAgIG1hcmdpbjogMDsgIHBhZGRpbmc6IDA7CiAgICBsaXN0LXN0eWxlOiBub25lOwogIH0KCiAgI3NlY3Rpb25zIGxpIHsKICAgIGZsb2F0OmxlZnQ7CiAgICBwYWRkaW5nOjA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7CiAgfQoKICAjc2VjdGlvbnMgYSB7CiAgICBjb2xvcjogIzU3NDsKICAgIGZvbnQtc2l6ZTogMS4yZW07CiAgICBmb250LXdlaWdodDpib2xkOwogICAgd2lkdGg6IDllbTsKICAgIGRpc3BsYXk6YmxvY2s7CiAgfQogICNzZWN0aW9ucyBhOmhvdmVyIHsKICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CiAgIG1hcmdpbjotMXB4OwogICBiYWNrZ3JvdW5kOiBza3libHVlOwogIH0KCiAgI3NlY3Rpb25zIC5hY3RpdmUgYSwgI3NlY3Rpb25zIC5hY3RpdmUgYTpob3ZlciAgewogICAgY3Vyc29yOiBkZWZhdWx0OwogICBjb2xvcjogIzU3NDsKICAgYm9yZGVyOiAwcHg7ICAvKiB0dXJuIG9mZiBib3JkZXIgKi8KICAgbWFyZ2luOiAwcHg7CiAgIGJhY2tncm91bmQ6ICNmZWI7CiAgfQoKPC9jb2RlPjwvcHJlPgoKCTxwPiYjODIyMDtodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8xLjAmIzgyMjE7IDwvcD4KCgoKICI7czo0OiJjb2RlIjtzOjcxMTA6IgovKgogIExpY2Vuc2VkIHVuZGVyIHRoZSBHUEwKCiovCgovKiBubyBsQXR0cyBiZWZvcmUgcmMyICovCmlmICghZnVuY3Rpb25fZXhpc3RzKCdsQXR0cycpKSB7CiAgZnVuY3Rpb24gbEF0dHMoJHBhaXJzLCAkYXR0cykgeyAvLyB0cnlpbmcgdGhpcyBvdXQgYXMgd2VsbAogICAgZm9yZWFjaCgkcGFpcnMgYXMgJG5hbWUgPT4gJGRlZmF1bHQpIHsKICAgICAgJG91dFskbmFtZV0gPSBpc3NldCgkYXR0c1skbmFtZV0pID8gJGF0dHNbJG5hbWVdIDogJGRlZmF1bHQ7CiAgICB9CiAgICByZXR1cm4gKCRvdXQpID8gJG91dCA6IGZhbHNlOwogIH0KfQoKZnVuY3Rpb24gcmR0X2FydGljbGVfbWVudSAoJGF0dHMpIHsKLyoKICBCYXNlZCBvbiBDb2tlIEhhcnJpbmd0b24ncyBjaGhfYXJ0aWNsZV9jdXN0b20gcGx1Z2luCgoqLwoKICAgIGdsb2JhbCAkcHJldGV4dCwgJHByZWZzOwoKICAgIGV4dHJhY3QoJHByZWZzKTsKICAgIGV4dHJhY3QoJHByZXRleHQpOwoKICAgIGV4dHJhY3QobEF0dHMoCiAgICAgICBhcnJheSgKCSAnd3JhcHRhZycgPT4gJ3VsJywKCSAnYnJlYWsnID0+ICdsaScsICAvLyBCUiBjYW4ndCBjYXJyeSAuYWN0aXZlIHN0YXRlCgkgJ2NsYXNzJyA9PiAnbWVudScsICAvLyB1bCBjbGFzcz0nbWVudScKCSAnYWN0aXZlJyA9PiAnYWN0aXZlJywKCSAnaWQnID0+ICdhcnRpY2xlcycsIC8vIHVsIGlkPSdhcnRpY2xlcycKCgkgJ2xpbWl0JyA9PiAnMTAwJywKCSAnc29ydGJ5JyA9PiAnUG9zdGVkJywKCSAnc29ydGRpcicgPT4gJ2Rlc2MnLAoJICdkYXRlcG9zdGVkJyA9PiAndG9fZGF0ZScsCgkgJ3NlY3Rpb24nID0+ICcnLCAJCS8vIGdvb2QgZm9yIHRlc3RpbmcKCSAnc3RhdHVzJyA9PiAnbGl2ZScsCgkgKSwkYXR0cykpOwoKICAgICRzdGF0dXMgICAgICA9IHN0cnRvbG93ZXIoJHN0YXR1cyk7CiAgICAkc2VjdGlvbiAgID0gZW1wdHkoJHNlY3Rpb24pICAgPyAnJyA6IGRvU2xhc2goJHNlY3Rpb24pOwoKICAgIC8vIFNlY3Rpb25zCiAgICAkc2VjdGlvbnMgPSAnJzsKICAgIGlmIChlbXB0eSgkc2VjdGlvbikgYW5kICFlbXB0eSgkcykgYW5kICRzID09ICdkZWZhdWx0JykgewogICAgICAgICRzZWN0aW9ucyA9ICcgJyAuIGZpbHRlckZyb250UGFnZSgpIC4gJyAnOwogICAgfQkvLyB0aGlzIG9uZToKICAgIGVsc2VpZiAoZW1wdHkoJHNlY3Rpb24pIGFuZCAhZW1wdHkoJHMpKSB7CiAgICAgICAgJHNlY3Rpb25zID0gIiBBTkQgU2VjdGlvbiA9ICciIC4gZG9TbGFzaCgkcykgLiAiJyAiOwogICAgfQogICAgZWxzZWlmICghZW1wdHkoJHNlY3Rpb24pKSB7CiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRzZWN0aW9uKSBhcyAkc2VjdGlvbikgewogICAgICAgICAgICAkc2VjdHBhcnRzW10gPSAiIChzZWN0aW9uID0gJyIgLiBkb1NsYXNoKCRzZWN0aW9uKSAuICInKSAiOwogICAgICAgIH0KICAgICAgICAkc2VjdGlvbnMgPSAnIEFORCAoJyAuIGpvaW4oJyBPUiAnLCAkc2VjdHBhcnRzKSAuICcpICc7CiAgICB9CgogICAgLy8gU3RhdHVzCiAgICAkc3RhdG1hcCA9IGFycmF5KCdkcmFmdCcgPT4gMSwgJ2hpZGRlbicgPT4gMiwgJ3BlbmRpbmcnID0+IDMsCgkJCQkJCQkJCQkgJ2xpdmUnID0+IDQsICdzdGlja3knID0+IDUpOwogICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRzdGF0dXMpIGFzICRzdGF0KSB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHN0YXQsICRzdGF0bWFwKSkgewogICAgICAgICAgICAkc3RhdHBhcnRzW10gPSAnIFN0YXR1cyA9ICcgLiAkc3RhdG1hcFtzdHJ0b2xvd2VyKCRzdGF0KV07CiAgICAgICAgfQogICAgfQogICAgJHN0YXR1cyA9IGlzc2V0KCRzdGF0cGFydHMpCgkJID8gJygnIC4gam9pbignIE9SICcsICRzdGF0cGFydHMpIC4gJyknCgkJIDogJyBzdGF0dXMgPSA0ICc7CgoKICAgIC8vIFVwY29taW5nIGFydGljbGVzLgogICAgc3dpdGNoICgkZGF0ZXBvc3RlZCkgewogICAgICAgIGNhc2UgJ2Z1dHVyZSc6CiAgICAgICAgICAgICRwb3N0ZWQgPSAnQU5EIFBvc3RlZCA+IG5vdygpJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndG9fZGF0ZSc6CiAgICAgICAgICAgICRwb3N0ZWQgPSAnQU5EIFBvc3RlZCA8IG5vdygpJzsKICAgICAgICBjYXNlICdhbGwnOgogICAgICAgICAgICAkcG9zdGVkID0gJyc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICRwb3N0ZWQgPSAnQU5EIFBvc3RlZCA8IG5vdygpJzsKICAgIH0KCiAgICAkcXVlcnkgPSAiIEZST00gIiAuIFBGWCAuICJ0ZXh0cGF0dGVybiBXSEVSRSAkc3RhdHVzICRwb3N0ZWQgJHNlY3Rpb25zIiA7CgovLyBwcmludCAnU0VMRUNUICosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3RlZCcuICAiJHF1ZXJ5IE9SREVSIEJZICRzb3J0YnkgJHNvcnRkaXIgTElNSVQgJGxpbWl0XG4iOwoKICAgICRycyA9IGdldFJvd3MoJ1NFTEVDVCAqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQnLgogICAgICAgICAgICAgICAgICAiJHF1ZXJ5IE9SREVSIEJZICRzb3J0YnkgJHNvcnRkaXIgTElNSVQgJGxpbWl0Iik7CgogICAgaWYgKCRycykgewogICAgICAkY291bnQgPSAwOwogICAgICAgIGZvcmVhY2goJHJzIGFzICRhKSB7CiAgICAgICAgICAgIGV4dHJhY3QoJGEpOwoKICAgICAgICAgICAgLyogaWYgbm8gSUQgd2UncmUgaW4gbGlzdCBtb2RlLCBhdCBhIHNlY3Rpb24sIHNvIHRhZyBmaXJzdAogICAgICAgICBhcnRpY2xlIHdpdGggY2xhc3M9YWN0aXZlCiAgICAgICAgICAgICovCiAgICAgICAgICAgICRjb3VudCA9ICRjb3VudCsxOwoJICAgIGlmICgkcHJldGV4dFsnaWQnXSA9PSAkSUQpIHsKCSAgICAkdGFnYXR0c1tdID0gIiBjbGFzcz0nJGFjdGl2ZSciOwoJICAgIH0gIGVsc2VpZiAoZW1wdHkoJHByZXRleHRbJ2lkJ10pIGFuZCAgJGNvdW50ID09IDEpIHsKCSAgICAgICR0YWdhdHRzW10gPSAiIGNsYXNzPSckYWN0aXZlJyI7CgkgICAgfSBlbHNlIHsKCSAgICAkdGFnYXR0c1tdID0gIiI7CgkgICAgfQoKCSAgICBpZiAoIGZ1bmN0aW9uX2V4aXN0cygncGVybWxpbmt1cmwnKSApIHsKCSAgICAgLy8gcmMzIG9ubHk6CgkgICAgICAkbGlua3JlZiA9ICBwZXJtbGlua3VybCgkYSk7CgkgICAgfSBlbHNlIHsKCSAgICAgICRsaW5rcmVmID0gZm9ybWF0UGVybUxpbmsoJElELCAkU2VjdGlvbikKCSAgICAgIC4gc3RyaXBTcGFjZSgkVGl0bGUpOwoJICAgIH0KCgkgICAgJGxpbmsgPSB0YWcoJFRpdGxlLCdhJywgIiBocmVmPSckbGlua3JlZiciKTsKCSAgICAkb3V0W10gPSAoJGJyZWFrICE9ICdicicpCgkgICAgICA/IHRhZygkbGluaywgJGJyZWFrLCBpbXBsb2RlKCcnLCR0YWdhdHRzKSkKCSAgICAgIDogIiRsaW5rPGJyIC8+IjsKCSAgICB1bnNldCgkdGFnYXR0cyk7CiAgICAgICAgfSAvLyBlbmQgcmVjb3JkIHNldAoKCS8vIHJldHVybiBVTCBsaXN0OgoJJGlkID0gKCFlbXB0eSgkaWQpKSA/ICcgaWQ9IicuJGlkLiciJyA6ICcnOwoJJGNsYXNzID0gKCFlbXB0eSgkY2xhc3MpKSA/ICIgY2xhc3M9JyRjbGFzcyciIDogJyc7CglyZXR1cm4gdGFnKGltcGxvZGUoIlxuIiwgJG91dCksJHdyYXB0YWcsJGlkLiRjbGFzcyk7CiAgICB9CiAgICByZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIHJkdF9zZWN0aW9uX21lbnUoJGF0dHMpIHsKLyoKICBiYXNlZCBvbgogIE1hcnNoYWxsIFBvdHRlcidzIG1kcF9zZWN0aW9ubWVudSBhbmQgbWRwX2xpYi5waHAgY29kZQogIHNlZSBodHRwOi8vZ3JlZW5yaWZ0LnRleHRkcml2ZS5jb20vcHJvamVjdHMvIGZvciB1cGRhdGVzCiovCiAgZ2xvYmFsICRzLCAkcGZyOwogICRvdXQgPSBhcnJheSgpOwoKICAvLyBuZWVkZWQgZm9yIHBvc3QgUkMzPywgcmh1IG9yIGh1CiMgbnV0cywgdXNlIGh1LiAgICRwZnIgPSAkcGZyID8gJHBmciA6IHJodTsKCiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAgJ3dyYXB0YWcnICAgPT4gJ3VsJywKICAgICAgJ2JyZWFrJyAgPT4gJ2xpJywKICAgICAgJ2NsYXNzJyAgPT4gJ21lbnUnLAogICAgICAnYWN0aXZlJyA9PiAnYWN0aXZlJywKICAgICAgJ2lkJyAgICAgPT4gJ3NlY3Rpb25zJywKICAgICAgJ25vc2hvdycgPT4gJycsCiAgICAgICdkZWZhdWx0Jz0+ICcnLCAvLyBtYWtlIGRlZmF1bHQgc2VjdGlvbiBob21lLCBhdCB0b3Agb2YgbGlzdAogICAgICAnaG9tZScgICA9PiAnJywgLy8gcHV0IGhvbWUgc2VjdGlvbiBhdCB0b3Agb2YgbWVudSwgaXQgYmV0dGVyIGV4aXN0CiAgICAgICdvcmRlcicgID0+ICcnLAogICAgICAndGVzdHNlY3Rpb24nID0+ICcnLAkvLyB0ZXN0aW5nCiAgICksJGF0dHMpKTsKCi8vIHBhc3MgaW4gZmFrZSBjdXJyZW50IHNlY3Rpb24KICAkcyA9ICR0ZXN0c2VjdGlvbiA/ICAkdGVzdHNlY3Rpb24gIDogJHM7CgogICRub3Nob3cgPSBleHBsb2RlKCcsJywkbm9zaG93KTsKCiAgJHJzID0gc2FmZV9yb3dzKCcqJywndHhwX3NlY3Rpb24nLCduYW1lIT0iZGVmYXVsdCInKTsKLy8gICRycyA9IHNhZmVfcm93cygnbmFtZSwgdGl0bGUnLCd0eHBfc2VjdGlvbicsJ25hbWUhPSJkZWZhdWx0IicpOwogICRoYXZlX3NlY3Rpb25fdGl0bGVzID0gZmFsc2U7CS8vIGRvZXMgdGhpcyB0eHAgc3VwcG9ydCBzZWN0aW9uIHRpdGxlcz8KCiAgaWYoJHJzKSB7CiAgICBmb3JlYWNoKCRycyBhcyAkYSkgewogICAgICAkc2VjdGlvbnNbJGFbJ25hbWUnXV0gPSAkYVsndGl0bGUnXSA/ICRhWyd0aXRsZSddIDogJGFbJ25hbWUnXTsKICAgICAgaWYgKCAkYVsndGl0bGUnXSApIHskaGF2ZV9zZWN0aW9uX3RpdGxlcyA9IHRydWUgOyB9CiAgICB9CiAgfSBlbHNlIHsKICAgICRzZWN0aW9ucz1mYWxzZTsKICAgIHJldHVybiBmYWxzZSA7CiAgfQogLy8gIGlmKCEkc2VjdGlvbnMpIHtyZXR1cm4gZmFsc2UgOyB9CgogIGtzb3J0KCRzZWN0aW9ucyk7CgogIGlmICgkZGVmYXVsdCkgeyAgICAvLyBjb250YWlucyB0aXRsZSBsYWJlbC4gIHVzZSAnZGVmYXVsdCcgbm90ICcuJyBrZXk/CiAgICAkc2VjdGlvbnMgPSBhcnJheV9tZXJnZSggYXJyYXkoJ2RlZmF1bHQnID0+ICRkZWZhdWx0KSAsICRzZWN0aW9ucyApOwogIH0KICBlbHNlaWYoJGhvbWUpIHsJCQkvLyBkZXByZWNhdGUKICAgICR0bXBob21lID0gJHNlY3Rpb25zWyRob21lXTsKICAgIHVuc2V0KCAkc2VjdGlvbnNbJGhvbWVdKTsKICAgICRzZWN0aW9ucyA9IGFycmF5X21lcmdlKCBhcnJheSgkaG9tZSA9PiAkdG1waG9tZSkgLCAkc2VjdGlvbnMgKTsKICB9CgoKICBpZigkb3JkZXIpIHsJCS8vIGRlcHJlY2F0ZSBjdXogeW91IGNhbiBjb250cm9sIG9yZGVyIGJ5IHNlY3Rpb24gbmFtZXMKICAgICRuZXdfcyA9IGFycmF5KCk7CiAgICAkbmV3X29yZGVyPWV4cGxvZGUoJywnLCRvcmRlcik7CiAgICBmb3JlYWNoKCRuZXdfb3JkZXIgYXMgJG4gPT4gJG52YWwpIHsKICAgICAgaWYoIGFycmF5X2tleV9leGlzdHMoc3RydG9sb3dlcigkbnZhbCksICRzZWN0aW9ucykgKSB7CgkkbmV3X3NbJG52YWxdID0gJHNlY3Rpb25zWyRudmFsXTsKICAgICAgfQogICAgfQogICAgJHNlY3Rpb25zID0gJG5ld19zOwogIH0KCiAgaWYoJG9yZGVyKSB7CQkvLyBkZXByZWNhdGUgY3V6IHlvdSBjYW4gY29udHJvbCBvcmRlciBieSBzZWN0aW9uIG5hbWVzCiAgICAkbmV3X3MgPSBhcnJheSgpOwogICAgJG5ld19vcmRlcj1leHBsb2RlKCcsJywkb3JkZXIpOwogICAgZm9yZWFjaCgkbmV3X29yZGVyIGFzICRuID0+ICRudmFsKSB7IC8vICRuPSAwLDEsMgogICAgICAkbmV3X3NbJG52YWxdID0gJHNlY3Rpb25zWyRudmFsXTsKICAgIH0KICAgICRzZWN0aW9ucyA9ICRuZXdfczsKICB9CgogIGZvcmVhY2goJHNlY3Rpb25zIGFzICRzZWN0ID0+ICRzdGl0bGUpIHsKCiAgICAvLyAhISAkcyBpcyBjdXJyZW50IGFydGljbGVzJ3Mgc2VjdGlvbgogICAgLy8gaGlnaGxpdGUgYWN0aXZlIHNlY3Rpb24gbGluawogICAgJHRhZ2F0dHNbXSA9ICgkcyA9PSBzdHJ0b2xvd2VyKCRzZWN0KSkgPyAiIGNsYXNzPSckYWN0aXZlJyIgOiAiIjsKCiAgICBpZiAoJGhvbWUgKSB7CQkvLyBiYWNrIGNvbXBhdCA/ICBhbmQgISAkZGVmYXVsdAogICAgICAkdGFnYXR0c1tdID0gKCRzID09ICdkZWZhdWx0JyBhbmQgJHNlY3QgPT0gJGhvbWUpID8gIiBjbGFzcz0nJGFjdGl2ZSciIDogJyc7CiAgICB9CgogICAgJHRhZ2F0dHNbXSA9ICcgaWQ9Im1lbnVfJy5zdHJ0b2xvd2VyKCRzZWN0KS4nIic7CgogICAgaWYoISBpbl9hcnJheSgkc2VjdCwkbm9zaG93KSkgewogICAgICAvL211bHRpLXdvcmQgc2VjdGlvbiB0aXRsZXMgc2hvdWxkIHVzZSB3aGl0ZXNwYWNlOm5vd3JhcAogICAgICAkY29udGVudCA9ICRzdGl0bGUgOyAvLyBjb250YWlucyByMzUwKyB0aXRsZSBub3cKICAgICAgaWYgKCEgJGhhdmVfc2VjdGlvbl90aXRsZXMpIHsgLy8gb2xkZXIgUkMKCSRjb250ZW50ID0gcHJlZ19yZXBsYWNlKCIvW18tXS8iLCIgIiwkc2VjdCk7CgkkY29udGVudCA9IHVjd29yZHMoJGNvbnRlbnQpOwogICAgICB9CgogICAgICAvLyBpbmdyaWQncyBmaXg6CiAgICAgIGlmKCRHTE9CQUxTWydwZXJtbGlua19tb2RlJ10gPT0gJ21lc3N5JykgewoJJGxpbmtyZWYgPSAgJyBocmVmPSInLmh1Lic/cz0nLiRzZWN0LiciJzsKICAgICAgfSBlbHNlIHsKCSRsaW5rcmVmID0gICcgaHJlZj0iJy5odS4kc2VjdC4nIic7CiAgICAgIH0KCiAgICAgIC8vIGZvciBvcmRlcj0iZGVmYXVsdCx4eHgseXkiOiByZW1vdmUgL2RlZmF1bHQKICAgICAgJGxpbmtyZWYgPSBwcmVnX3JlcGxhY2UoIi9cL2RlZmF1bHQvIiwiLyIsJGxpbmtyZWYpOwoKICAgICAgJGxpbmsgPSB0YWcoJGNvbnRlbnQsJ2EnLCAkbGlua3JlZik7CiAgICAgICRvdXRbXSA9ICgkYnJlYWsgIT0gJ2JyJykKCT8gICAiXG4iLnRhZygkbGluaywgJGJyZWFrLCBpbXBsb2RlKCcnLCR0YWdhdHRzKSkKICAgICAgICA6ICJcbiIuJGxpbmsuJzxiciAvPic7CiAgICB9CgogICAgdW5zZXQoJHRhZ2F0dHMpOwogIH0KCiAgJGlkID0gKCFlbXB0eSgkaWQpKSA/ICcgaWQ9IicuJGlkLiciJyA6ICcnOwogICRjbGFzcyA9ICghZW1wdHkoJGNsYXNzKSkgPyAiIGNsYXNzPSckY2xhc3MgJHMnIiA6ICIgY2xhc3M9JyRzJyI7CiAgcmV0dXJuIHRhZyhpbXBsb2RlKCcnLCAkb3V0KSwkd3JhcHRhZywkaWQuJGNsYXNzKTsKCn0KCiI7czozOiJtZDUiO3M6MzI6IjJlYWEzYmJiYjA3NTNkYTBjNWY0MzFhNGZkZDVkM2IwIjt9