eval %q{IyAgICAgICAgTmFtZSA6IHRyYW5zZm9ybWVyCiMgRGVzY3JpcHRpb24gOiBB c3NpZ24gc3RhcnQgcG9zaXRpb25zLCBlbmQgcG9zaXRpb25zIHRvIGNvbXBv bmVudHMvZ3JvdXBzLCBjcmVhdGUgYW5pbWF0aW9ucwojICAgICAgQXV0aG9y IDogRGlkaWVyIEJ1cgojICAgICAgIFVzYWdlIDogc2VsZi1leHBsYW5hdG9y eQojICAgICAgICBEYXRlIDogQXByaWwuMm9vNQojICAgICAgICBUeXBlIDog dG9vbAoKcmVxdWlyZSAnc2tldGNodXAucmInCgpjbGFzcyBFeHBsb2Rlcl9B bmltCgpkZWYgaW5pdGlhbGl6ZQogIG1vZGVsID0gU2tldGNodXAuYWN0aXZl X21vZGVsCiAgZW50cyA9IG1vZGVsLmVudGl0aWVzCiAgJGNvbXBzID0gKGV4 cGxvZGVyX3NlYXJjaF9jb21wb25lbnRzKQogIHZpZXcgPSBtb2RlbC5hY3Rp dmVfdmlldwogIEBhID0gbmlsCiAgJGFuaW1fc3RlcHMgPSAiMTAiIGlmIG5v dCAkYW5pbV9zdGVwcwogICRhbmltX2R1cmF0aW9uID0gIjUiIGlmIG5vdCAk YW5pbV9kdXJhdGlvbgogICRmcmFtZXJhdGUgPSAyNQogICRjdXJyZW50X3N0 ZXAgPSAwLjAKICAkZnJhbWVzID0gJGFuaW1fZHVyYXRpb24udG9fZiAqICRm cmFtZXJhdGUKICAkdW5pdF9zdGVwID0gMS4wIC8gJGZyYW1lcwogICRzVGlt ZSA9IDEuMC8kZnJhbWVzCiAgJHN0YXJ0VGltZSA9IFRpbWUubm93CmVuZAoK ZGVmIG5leHRGcmFtZSh2aWV3KQp2aWV3LmludmFsaWRhdGUKaWYgKEBhID09 IG5pbCkKICBAYSA9IDEKICBlbHNlCiAgQGEgPSBAYSArIDEKZW5kCiRldCA9 IFRpbWUubm93IC0gJHN0YXJ0VGltZQppZiAoJGV0ID49ICgkc1RpbWUgKiBA YSkpCiAgJGNvbXBzLmVhY2ggZG8gfGF8CiAgICBjYXNlICRhbmltX3R5cGUK ICAgICAgd2hlbiAiZm9yd2FyZCIKICAgICAgdDEgPSAoZXhwbG9kZXJfZ2V0 X2F0dHJpYnV0ZSBhLCAiaW5pdF9wb3MiKQogICAgICB0MiA9IChleHBsb2Rl cl9nZXRfYXR0cmlidXRlIGEsICJmaW5hbF9wb3MiKQogICAgICB3aGVuICJi YWNrd2FyZCIKICAgICAgdDIgPSAoZXhwbG9kZXJfZ2V0X2F0dHJpYnV0ZSBh LCAiaW5pdF9wb3MiKQogICAgICB0MSA9IChleHBsb2Rlcl9nZXRfYXR0cmli dXRlIGEsICJmaW5hbF9wb3MiKQogICAgZW5kCiAgICB0MyA9IEdlb206OlRy YW5zZm9ybWF0aW9uLmludGVycG9sYXRlKHQxLCB0MiwgJHVuaXRfc3RlcCpA YSkKICAgIGEubW92ZSEodDMpCiAgICB2aWV3LnNob3dfZnJhbWUKICBlbmQK ICAkY3VycmVudF9zdGVwID0gJGN1cnJlbnRfc3RlcCArICR1bml0X3N0ZXAK ICBAYSArPSAxCmVuZAoKQGEgPCAkZnJhbWVzCmVuZAplbmQgIyBlbmQgY2xh c3MKCmRlZiBleHBsb2Rlcl9zZWFyY2hfY29tcG9uZW50cwptb2RlbD1Ta2V0 Y2h1cC5hY3RpdmVfbW9kZWwKZW50aXRpZXMgPSBtb2RlbC5lbnRpdGllcwpy ZXQgPSBbXQplbnRpdGllcy5lYWNoIGRvIHxlbGVtZW50fAogIGlmKCBlbGVt ZW50LnR5cGVuYW1lID09ICJDb21wb25lbnRJbnN0YW5jZSIgKSBvciAoIGVs ZW1lbnQudHlwZW5hbWUgPT0gIkdyb3VwIiApCiAgICAjIEdldCBpbml0X3Bv cyBhbmQgZmluYWxfcG9zIGF0dHJpYnV0ZXMKICAgIGkgPSAoZXhwbG9kZXJf Z2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAiaW5pdF9wb3MiICkKICAgIGYgPSAo ZXhwbG9kZXJfZ2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAiZmluYWxfcG9zIiAp CiAgZW5kCiAgaWYoIGkgIT0gbmlsICkgYW5kIChmICE9IG5pbCkKICAgIHJl dC5wdXNoKGVsZW1lbnQpCiAgZW5kCmVuZApyZXR1cm4gcmV0CmVuZAojLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IFNldCBhbiBhdHRyaWJ1dGUgdG8gYW4gZWxlbWVudApkZWYgZXhwbG9kZXJf c2V0X2F0dHJpYnV0ZSggZSwgayAsIHYgKQpkaWN0ID0gZS5hdHRyaWJ1dGVf ZGljdGlvbmFyeSgiZXhwbG9kZXIiLCB0cnVlKQppZiggZS5nZXRfYXR0cmli dXRlKCJleHBsb2RlciIsIGspICE9IG5pbCApCiAgZS5zZXRfYXR0cmlidXRl KCJleHBsb2RlciIsIGssIHYpCiAgcmV0dXJuIGZhbHNlCiAgZWxzZQogIGUu c2V0X2F0dHJpYnV0ZSgiZXhwbG9kZXIiLCBrLCB2KQogIHJldHVybiB0cnVl CmVuZAplbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBHZXQgYXR0cmlidXRlIG9mIGVsZW1lbnQKZGVmIGV4 cGxvZGVyX2dldF9hdHRyaWJ1dGUoIGUsIGsgKQpkaWN0ID0gZS5hdHRyaWJ1 dGVfZGljdGlvbmFyeSgiZXhwbG9kZXIiLCB0cnVlKQppZiggZS5nZXRfYXR0 cmlidXRlKCJleHBsb2RlciIsIGspICE9IG5pbCApCiAgcmV0dXJuIGUuZ2V0 X2F0dHJpYnV0ZSgiZXhwbG9kZXIiLCBrKQogIGVsc2UKICByZXR1cm4gbmls CmVuZAplbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBTZXQgYXR0cmlidXRlIGluaXRfcG9zIHRvIGEgY29t cG9uZW50CmRlZiBleHBsb2Rlcl9zZXRfY29tcF9pbml0X3Bvcwptb2RlbD1T a2V0Y2h1cC5hY3RpdmVfbW9kZWwKcyA9IG1vZGVsLnNlbGVjdGlvbgojIENo ZWNrIHNlbGVjdGlvbiBpZiBpdCBpcyBhIHZhbGlkIGVsZW1lbnQKaWYgcy5l bXB0eT8KICBVSS5tZXNzYWdlYm94KCJQbGVhc2Ugc2VsZWN0IGEgY29tcG9u ZW50LiIpCiAgcmV0dXJuIG5pbAplbmQKaWYoIHMubGVuZ3RoID4gMSApCiAg VUkubWVzc2FnZWJveCgiUGxlYXNlIHNlbGVjdCBvbmx5IG9uZSBjb21wb25l bnQuIikKICByZXR1cm4gbmlsCmVuZAplbGVtZW50ID0gc1swXQppZiggZWxl bWVudC50eXBlbmFtZSAhPSAiQ29tcG9uZW50SW5zdGFuY2UiICkgYW5kICgg ZWxlbWVudC50eXBlbmFtZSAhPSAiR3JvdXAiICkKICBVSS5tZXNzYWdlYm94 KCJXcm9uZyBvYmplY3QgdHlwZS4gUGxlYXNlIHNlbGVjdCBhIGNvbXBvbmVu dC4iKQogIHJldHVybiBuaWwKZW5kCiMgR2V0IHRoZSBpbnN0YW5jZSB0cmFu c2Zvcm0gbWF0cml4CmluaXRfcG9zID0gZWxlbWVudC50cmFuc2Zvcm1hdGlv bi50b19hCiMgU2V0IGV4cGxvZGVyX2luaXRfcG9zIGF0dHJpYnV0ZQooZXhw bG9kZXJfc2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAiaW5pdF9wb3MiICwgaW5p dF9wb3MgKQplbmQgIyBvZiBkZWYKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgYXR0cmlidXRlcyBpbml0 X3BvcyB0byBhbGwgY29tcG9uZW50cyBhbmQgZ3JvdXBzCmRlZiBleHBsb2Rl cl9zZXRfYWxsX2NvbXBfaW5pdF9wb3MKbW9kZWw9U2tldGNodXAuYWN0aXZl X21vZGVsCmVudGl0aWVzID0gbW9kZWwuZW50aXRpZXMKZW50aXRpZXMuZWFj aCBkbyB8ZWxlbWVudHwKICBpZiggZWxlbWVudC50eXBlbmFtZSA9PSAiQ29t cG9uZW50SW5zdGFuY2UiICkgb3IgKCBlbGVtZW50LnR5cGVuYW1lID09ICJH cm91cCIgKQogICAgIyBHZXQgdGhlIGVsZW1lbnQgdHJhbnNmb3JtIG1hdHJp eAogICAgaW5pdF9wb3MgPSBlbGVtZW50LnRyYW5zZm9ybWF0aW9uLnRvX2EK ICAgICMgU2V0IGV4cGxvZGVyX2luaXRfcG9zIGF0dHJpYnV0ZQogICAgKGV4 cGxvZGVyX3NldF9hdHRyaWJ1dGUgZWxlbWVudCwgImluaXRfcG9zIiAsIGlu aXRfcG9zICkKICBlbmQKZW5kCmVuZCAjIG9mIGRlZgojLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNldCBhdHRy aWJ1dGVzIGZpbmFsX3BvcyB0byBhbGwgY29tcG9uZW50cyBhbmQgZ3JvdXBz CmRlZiBleHBsb2Rlcl9zZXRfYWxsX2NvbXBfZmluYWxfcG9zCm1vZGVsPVNr ZXRjaHVwLmFjdGl2ZV9tb2RlbAplbnRpdGllcyA9IG1vZGVsLmVudGl0aWVz CmVudGl0aWVzLmVhY2ggZG8gfGVsZW1lbnR8CiAgaWYoIGVsZW1lbnQudHlw ZW5hbWUgPT0gIkNvbXBvbmVudEluc3RhbmNlIiApIG9yICggZWxlbWVudC50 eXBlbmFtZSA9PSAiR3JvdXAiICkKICAgICMgR2V0IHRoZSBlbGVtZW50IHRy YW5zZm9ybSBtYXRyaXgKICAgIGZpbmFsX3BvcyA9IGVsZW1lbnQudHJhbnNm b3JtYXRpb24udG9fYQogICAgIyBTZXQgZXhwbG9kZXJfaW5pdF9wb3MgYXR0 cmlidXRlCiAgICAoZXhwbG9kZXJfc2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAi ZmluYWxfcG9zIiAsIGZpbmFsX3BvcyApCiAgZW5kCmVuZAplbmQgIyBvZiBk ZWYKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gU2V0IGF0dHJpYnV0ZSBmaW5hbF9wb3MgdG8gYSBjb21wb25l bnQKZGVmIGV4cGxvZGVyX3NldF9jb21wX2ZpbmFsX3Bvcwptb2RlbD1Ta2V0 Y2h1cC5hY3RpdmVfbW9kZWwKcyA9IG1vZGVsLnNlbGVjdGlvbgojIENoZWNr IHNlbGVjdGlvbiBpZiBpdCBpcyBhIHZhbGlkIGVsZW1lbnQKaWYgcy5lbXB0 eT8KICBVSS5tZXNzYWdlYm94KCJQbGVhc2Ugc2VsZWN0IGEgY29tcG9uZW50 IG9yIGEgZ3JvdXAuIikKICByZXR1cm4gbmlsCmVuZAppZiggcy5sZW5ndGgg PiAxICkKICBVSS5tZXNzYWdlYm94KCJQbGVhc2Ugc2VsZWN0IG9ubHkgb25l IGNvbXBvbmVudCBvciBvbmUgZ3JvdXAuIikKICByZXR1cm4gbmlsCmVuZApl bGVtZW50ID0gc1swXQppZiggZWxlbWVudC50eXBlbmFtZSAhPSAiQ29tcG9u ZW50SW5zdGFuY2UiICkgYW5kICggZWxlbWVudC50eXBlbmFtZSAhPSAiR3Jv dXAiICkKICBVSS5tZXNzYWdlYm94KCJXcm9uZyBvYmplY3QgdHlwZS4gUGxl YXNlIHNlbGVjdCBhIGNvbXBvbmVudCBvciBhIGdyb3VwLiIpCiAgcmV0dXJu IG5pbAplbmQKIyBHZXQgdGhlIGluc3RhbmNlIHRyYW5zZm9ybSBtYXRyaXgK ZmluYWxfcG9zID0gZWxlbWVudC50cmFuc2Zvcm1hdGlvbi50b19hCiMgU2V0 IGV4cGxvZGVyX2luaXRfcG9zIGF0dHJpYnV0ZQooZXhwbG9kZXJfc2V0X2F0 dHJpYnV0ZSBlbGVtZW50LCAiZmluYWxfcG9zIiAsIGZpbmFsX3BvcyApCmVu ZCAjIG9mIGRlZgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBNb3ZlIGNvbXBvbmVudCB0byBpdHMgaW5pdGlh bCBwb3NpdGlvbgpkZWYgZXhwbG9kZXJfbW92ZV9jb21wX2luaXRfcG9zCm1v ZGVsPVNrZXRjaHVwLmFjdGl2ZV9tb2RlbApzID0gbW9kZWwuc2VsZWN0aW9u CiMgQ2hlY2sgc2VsZWN0aW9uIGlmIGl0IGlzIGEgdmFsaWQgZWxlbWVudApp ZiBzLmVtcHR5PwogIFVJLm1lc3NhZ2Vib3goIlBsZWFzZSBzZWxlY3QgYSBj b21wb25lbnQgb3IgYSBncm91cC4iKQogIHJldHVybiBuaWwKZW5kCmlmKCBz Lmxlbmd0aCA+IDEgKQogIFVJLm1lc3NhZ2Vib3goIlBsZWFzZSBzZWxlY3Qg b25seSBvbmUgY29tcG9uZW50IG9yIG9uZSBncm91cC4iKQogIHJldHVybiBu aWwKZW5kCmVsZW1lbnQgPSBzWzBdCmlmKCBlbGVtZW50LnR5cGVuYW1lICE9 ICJDb21wb25lbnRJbnN0YW5jZSIgKSBhbmQgKCBlbGVtZW50LnR5cGVuYW1l ICE9ICJHcm91cCIgKQogIFVJLm1lc3NhZ2Vib3goIldyb25nIG9iamVjdCB0 eXBlLiBQbGVhc2Ugc2VsZWN0IGEgY29tcG9uZW50IG9yIGEgZ3JvdXAuIikK ICByZXR1cm4gbmlsCmVuZAojIEdldCBleHBsb2Rlcl9pbml0X3BvcyBhdHRy aWJ1dGUKZWxlbWVudC50cmFuc2Zvcm1hdGlvbiA9IChleHBsb2Rlcl9nZXRf YXR0cmlidXRlIGVsZW1lbnQsICJpbml0X3BvcyIpCmVuZCAjIG9mIGRlZgoK Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBNb3ZlIGNvbXBvbmVudCB0byBpdHMgZmluYWwgcG9zaXRpb24KZGVm IGV4cGxvZGVyX21vdmVfY29tcF9maW5hbF9wb3MKbW9kZWw9U2tldGNodXAu YWN0aXZlX21vZGVsCnMgPSBtb2RlbC5zZWxlY3Rpb24KIyBDaGVjayBzZWxl Y3Rpb24gaWYgaXQgaXMgYSB2YWxpZCBlbGVtZW50CmlmIHMuZW1wdHk/CiAg VUkubWVzc2FnZWJveCgiUGxlYXNlIHNlbGVjdCBhIGNvbXBvbmVudCBvciBh IGdyb3VwLiIpCiAgcmV0dXJuIG5pbAplbmQKaWYoIHMubGVuZ3RoID4gMSAp CiAgVUkubWVzc2FnZWJveCgiUGxlYXNlIHNlbGVjdCBvbmx5IG9uZSBjb21w b25lbnQgb3Igb25lIGdyb3VwLiIpCiAgcmV0dXJuIG5pbAplbmQKZWxlbWVu dCA9IHNbMF0KaWYoIGVsZW1lbnQudHlwZW5hbWUgIT0gIkNvbXBvbmVudElu c3RhbmNlIiApIGFuZCAoIGVsZW1lbnQudHlwZW5hbWUgIT0gIkdyb3VwIiAp CiAgVUkubWVzc2FnZWJveCgiV3Jvbmcgb2JqZWN0IHR5cGUuIFBsZWFzZSBz ZWxlY3QgYSBjb21wb25lbnQgb3IgYSBncm91cC4iKQogIHJldHVybiBuaWwK ZW5kCiMgR2V0IGV4cGxvZGVyX2luaXRfcG9zIGF0dHJpYnV0ZQplbGVtZW50 LnRyYW5zZm9ybWF0aW9uID0gKGV4cGxvZGVyX2dldF9hdHRyaWJ1dGUgZWxl bWVudCwgImZpbmFsX3BvcyIpCmVuZCAjIG9mIGRlZgoKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNb3ZlIGFs bCBjb21wb25lbnRzIHRvIHRoZWlyIGluaXRpYWwgcG9zaXRpb25zCmRlZiBl eHBsb2Rlcl9tb3ZlX2FsbF9jb21wX2luaXRfcG9zCm1vZGVsPVNrZXRjaHVw LmFjdGl2ZV9tb2RlbApjb21wc19hcnJheSA9IFtdCiMgU2VhcmNoIGFsbCBj b21wb25lbnRzIHdpdGggaW5pdGlhbCBhbmQgZmluYWwgcG9zaXRpb25zIGF0 dHJpYnV0ZXMKY29tcHNfYXJyYXkgPSAoZXhwbG9kZXJfc2VhcmNoX2NvbXBv bmVudHMpCmNvbXBzX2FycmF5LmVhY2ggZG8gfGVsZW1lbnR8CiAgIyBHZXQg ZXhwbG9kZXJfaW5pdF9wb3MgYXR0cmlidXRlCiAgZWxlbWVudC50cmFuc2Zv cm1hdGlvbiA9IEdlb206OlRyYW5zZm9ybWF0aW9uLm5ldygoZXhwbG9kZXJf Z2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAiaW5pdF9wb3MiKSkKZW5kCmVuZCAj IG9mIGRlZgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIE1vdmUgYWxsIGNvbXBvbmVudHMgdG8gdGhlaXIgZmlu YWwgcG9zaXRpb25zCmRlZiBleHBsb2Rlcl9tb3ZlX2FsbF9jb21wX2ZpbmFs X3Bvcwptb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwKY29tcHNfYXJyYXkg PSBbXQojIFNlYXJjaCBhbGwgY29tcG9uZW50cyB3aXRoIGluaXRpYWwgYW5k IGZpbmFsIHBvc2l0aW9ucyBhdHRyaWJ1dGVzCmNvbXBzX2FycmF5ID0gKGV4 cGxvZGVyX3NlYXJjaF9jb21wb25lbnRzKQpjb21wc19hcnJheS5lYWNoIGRv IHxlbGVtZW50fAogICMgR2V0IGZpbmFsX3BvcyBhdHRyaWJ1dGUKICBlbGVt ZW50LnRyYW5zZm9ybWF0aW9uID0gR2VvbTo6VHJhbnNmb3JtYXRpb24ubmV3 KChleHBsb2Rlcl9nZXRfYXR0cmlidXRlIGVsZW1lbnQsICJmaW5hbF9wb3Mi KSkgCmVuZAplbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBNb3ZlIGNvbXBvbmVudCB0byBzdGVwCmRlZiBl eHBsb2Rlcl9tb3ZlX2NvbXBfdG9fc3RlcAptb2RlbD1Ta2V0Y2h1cC5hY3Rp dmVfbW9kZWwKcyA9IG1vZGVsLnNlbGVjdGlvbgojIENoZWNrIHNlbGVjdGlv biBpZiBpdCBpcyBhIHZhbGlkIGVsZW1lbnQKaWYgcy5lbXB0eT8KICBVSS5t ZXNzYWdlYm94KCJQbGVhc2Ugc2VsZWN0IGEgY29tcG9uZW50IG9yIGEgZ3Jv dXAuIikKICByZXR1cm4gbmlsCmVuZAppZiggcy5sZW5ndGggPiAxICkKICBV SS5tZXNzYWdlYm94KCJQbGVhc2Ugc2VsZWN0IG9ubHkgb25lIGNvbXBvbmVu dCBvciBvbmUgZ3JvdXAuIikKICByZXR1cm4gbmlsCmVuZAplbGVtZW50ID0g c1swXQppZiggZWxlbWVudC50eXBlbmFtZSAhPSAiQ29tcG9uZW50SW5zdGFu Y2UiICkgYW5kICggZWxlbWVudC50eXBlbmFtZSAhPSAiR3JvdXAiICkKICBV SS5tZXNzYWdlYm94KCJXcm9uZyBvYmplY3QgdHlwZS4gUGxlYXNlIHNlbGVj dCBhIGNvbXBvbmVudCBvciBhIGdyb3VwLiIpCiAgcmV0dXJuIG5pbAplbmQK I2RlZmF1bHQgdmFsdWVzCiRhbmltX3N0ZXBzID0gIjEwIiBpZiBub3QgJGFu aW1fc3RlcHMKI0RpYWxvZyBib3g6CnByb21wdHM9WyJTdGVwIChtYXg6ICIg KyAkYW5pbV9zdGVwcyArICIpICAiXQp2YWx1ZXM9W10KcmVzdWx0cyA9IGlu cHV0Ym94IHByb21wdHMsIHZhbHVlcywgIkdvIHRvIHN0ZXAiCnJldHVybiBu aWwgaWYgbm90IHJlc3VsdHMKc3RlcCA9IHJlc3VsdHNbMF0KdW5pdF9zdGVw ID0gMS4wIC8gJGFuaW1fc3RlcHMudG9fZgp0MSA9IChleHBsb2Rlcl9nZXRf YXR0cmlidXRlIGVsZW1lbnQsICJpbml0X3BvcyIpCnQyID0gKGV4cGxvZGVy X2dldF9hdHRyaWJ1dGUgZWxlbWVudCwgImZpbmFsX3BvcyIpCnQzID0gR2Vv bTo6VHJhbnNmb3JtYXRpb24uaW50ZXJwb2xhdGUodDEsIHQyLCB1bml0X3N0 ZXAqc3RlcC50b19mKQplbGVtZW50LnRyYW5zZm9ybWF0aW9uID0gdDMKZW5k CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gTW92ZSBhbGwgY29tcG9uZW50cy9ncm91cHMgdG8gc3RlcApkZWYg ZXhwbG9kZXJfbW92ZV9hbGxfY29tcF90b19zdGVwCm1vZGVsPVNrZXRjaHVw LmFjdGl2ZV9tb2RlbApjb21wc19hcnJheSA9IFtdCiNkZWZhdWx0IHZhbHVl cwokYW5pbV9zdGVwcyA9ICIxMCIgaWYgbm90ICRhbmltX3N0ZXBzCiNEaWFs b2cgYm94Ogpwcm9tcHRzPVsiU3RlcCAobWF4OiAiICsgJGFuaW1fc3RlcHMg KyAiKSAgIl0KdmFsdWVzPVtdCnJlc3VsdHMgPSBpbnB1dGJveCBwcm9tcHRz LCB2YWx1ZXMsICJHbyB0byBzdGVwIgpyZXR1cm4gbmlsIGlmIG5vdCByZXN1 bHRzCnN0ZXAgPSByZXN1bHRzWzBdCnVuaXRfc3RlcCA9IDEuMCAvICRhbmlt X3N0ZXBzLnRvX2YKIyBTZWFyY2ggYWxsIGNvbXBvbmVudHMgd2l0aCBpbml0 aWFsIGFuZCBmaW5hbCBwb3NpdGlvbnMgYXR0cmlidXRlcwpjb21wc19hcnJh eSA9IChleHBsb2Rlcl9zZWFyY2hfY29tcG9uZW50cykKIyBGb3IgYWxsIHRo ZXNlIGNvbXBvbmVudHMsIGludGVycG9sYXRlIHRyYW5zZm9ybWF0aW9ucywg c3RlcCBieSBzdGVwCmNvbXBzX2FycmF5LmVhY2ggZG8gfGVsZW1lbnR8CiAg dDEgPSAoZXhwbG9kZXJfZ2V0X2F0dHJpYnV0ZSBlbGVtZW50LCAiaW5pdF9w b3MiKQogIHQyID0gKGV4cGxvZGVyX2dldF9hdHRyaWJ1dGUgZWxlbWVudCwg ImZpbmFsX3BvcyIpCiAgdDMgPSBHZW9tOjpUcmFuc2Zvcm1hdGlvbi5pbnRl cnBvbGF0ZSh0MSwgdDIsIHVuaXRfc3RlcCpzdGVwLnRvX2YpCiAgZWxlbWVu dC50cmFuc2Zvcm1hdGlvbiA9IHQzCmVuZAplbmQKIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgYW5pbWF0 aW9uIHNldHRpbmdzCmRlZiBleHBsb2Rlcl9hbmltX3NldHRpbmdzCiNkZWZh dWx0IHZhbHVlcwokYW5pbV9zdGVwcyA9ICIxMCIgaWYgbm90ICRhbmltX3N0 ZXBzCiRhbmltX2R1cmF0aW9uID0gIjUiIGlmIG5vdCAkYW5pbV9kdXJhdGlv bgojRGlhbG9nIGJveDoKcHJvbXB0cz1bIlN0ZXBzICAiLCAiRHVyYXRpb24g ICJdCnZhbHVlcz1bJGFuaW1fc3RlcHMsICRhbmltX2R1cmF0aW9uXQpyZXN1 bHRzID0gaW5wdXRib3ggcHJvbXB0cywgdmFsdWVzLCAiQW5pbWF0aW9uIHBh cmFtZXRlcnMiCnJldHVybiBuaWwgaWYgbm90IHJlc3VsdHMKJGFuaW1fc3Rl cHMgPSByZXN1bHRzWzBdCiRhbmltX2R1cmF0aW9uID0gcmVzdWx0c1sxXQpl bmQKCmRlZiBleHBsb2Rlcl9hbmltX2luaXRpYWwyZmluYWwKJGFuaW1fdHlw ZSA9ICJmb3J3YXJkIgooZXhwbG9kZXJfbW92ZV9hbGxfY29tcF9pbml0X3Bv cykKU2tldGNodXAuYWN0aXZlX21vZGVsLmFjdGl2ZV92aWV3LmFuaW1hdGlv biA9IEV4cGxvZGVyX0FuaW0ubmV3CihleHBsb2Rlcl9tb3ZlX2FsbF9jb21w X2ZpbmFsX3BvcykKZW5kCgpkZWYgZXhwbG9kZXJfYW5pbV9maW5hbDJpbml0 aWFsCiRhbmltX3R5cGUgPSAiYmFja3dhcmQiCihleHBsb2Rlcl9tb3ZlX2Fs bF9jb21wX2ZpbmFsX3BvcykKU2tldGNodXAuYWN0aXZlX21vZGVsLmFjdGl2 ZV92aWV3LmFuaW1hdGlvbiA9IEV4cGxvZGVyX0FuaW0ubmV3CihleHBsb2Rl cl9tb3ZlX2FsbF9jb21wX2luaXRfcG9zKQplbmQKCiMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNZW51IGl0 ZW1zCmlmKCBub3QgJHRyYW5zZm9ybWVyX21lbnVfbG9hZGVkICkKICAgIGFk ZF9zZXBhcmF0b3JfdG9fbWVudSgiUGx1Z2lucyIpCiAgICBtYWluX21lbnUg PSBVSS5tZW51KCJQbHVnaW5zIikuYWRkX3N1Ym1lbnUoIlRyYW5zZm9ybWVy IikKICAgIHBvc2l0aW9uc19tZW51ID0gbWFpbl9tZW51LmFkZF9zdWJtZW51 KCJQb3NpdGlvbnMgIikgeyBVSS5tZXNzYWdlYm94KCJObyBjb21tYW5kIGhl cmUgISIpIH0KICAgIHBvc2l0aW9uc19tZW51LmFkZF9pdGVtKCJTZXQgY29t cG9uZW50L2dyb3VwIGluaXRpYWwgcG9zaXRpb24iKSB7IChleHBsb2Rlcl9z ZXRfY29tcF9pbml0X3BvcykgfQogICAgcG9zaXRpb25zX21lbnUuYWRkX2l0 ZW0oIlNldCBjb21wb25lbnQvZ3JvdXBzIGZpbmFsIHBvc2l0aW9uIikgeyAo ZXhwbG9kZXJfc2V0X2NvbXBfZmluYWxfcG9zKSB9CiAgICBwb3NpdGlvbnNf bWVudS5hZGRfaXRlbSgiIikgeyBVSS5tZXNzYWdlYm94KCJObyBjb21tYW5k IGhlcmUgISIpIH0KICAgIHBvc2l0aW9uc19tZW51LmFkZF9pdGVtKCJTZXQg YWxsIGNvbXBvbmVudHMvZ3JvdXBzIGluaXRpYWwgcG9zaXRpb25zIikgeyAo ZXhwbG9kZXJfc2V0X2FsbF9jb21wX2luaXRfcG9zKSB9CiAgICBwb3NpdGlv bnNfbWVudS5hZGRfaXRlbSgiU2V0IGFsbCBjb21wb25lbnRzL2dyb3VwcyBm aW5hbCBwb3NpdGlvbnMiKSB7IChleHBsb2Rlcl9zZXRfYWxsX2NvbXBfZmlu YWxfcG9zKSB9CiAgICAKICAgIG1vdmVzX21lbnUgPSBtYWluX21lbnUuYWRk X3N1Ym1lbnUoIk1vdmVtZW50cyAiKSB7IFVJLm1lc3NhZ2Vib3goIk5vIGNv bW1hbmQgaGVyZSAhIikgfQogICAgbW92ZXNfbWVudS5hZGRfaXRlbSgiTW92 ZSBjb21wb25lbnQgdG8gaXRzIGluaXRpYWwgcG9zaXRpb24iKSB7IChleHBs b2Rlcl9tb3ZlX2NvbXBfaW5pdF9wb3MpIH0KICAgIG1vdmVzX21lbnUuYWRk X2l0ZW0oIk1vdmUgY29tcG9uZW50IHRvIGl0cyBmaW5hbCBwb3NpdGlvbiIp IHsgKGV4cGxvZGVyX21vdmVfY29tcF9maW5hbF9wb3MpIH0KICAgIG1vdmVz X21lbnUuYWRkX2l0ZW0oIiIpIHsgVUkubWVzc2FnZWJveCgiTm8gY29tbWFu ZCBoZXJlICEiKSB9CiAgICBtb3Zlc19tZW51LmFkZF9pdGVtKCJNb3ZlIGNv bXBvbmVudCB0byBzdGVwLi4uIikgeyAoZXhwbG9kZXJfbW92ZV9jb21wX3Rv X3N0ZXApIH0KICAgIG1vdmVzX21lbnUuYWRkX2l0ZW0oIk1vdmUgYWxsIGNv bXBvbmVudC9ncm91cHMgdG8gc3RlcC4uLiIpIHsgKGV4cGxvZGVyX21vdmVf YWxsX2NvbXBfdG9fc3RlcCkgfQogICAgbW92ZXNfbWVudS5hZGRfaXRlbSgi IikgeyBVSS5tZXNzYWdlYm94KCJObyBjb21tYW5kIGhlcmUgISIpIH0KICAg IG1vdmVzX21lbnUuYWRkX2l0ZW0oIk1vdmUgYWxsIGNvbXBvbmVudHMvZ3Jv dXBzIHRvIHRoZWlyIGluaXRpYWwgcG9zaXRpb25zIikgeyAoZXhwbG9kZXJf bW92ZV9hbGxfY29tcF9pbml0X3BvcykgfQogICAgbW92ZXNfbWVudS5hZGRf aXRlbSgiTW92ZSBhbGwgY29tcG9uZW50cy9ncm91cHMgdG8gdGhlaXIgZmlu YWwgcG9zaXRpb25zIikgeyAoZXhwbG9kZXJfbW92ZV9hbGxfY29tcF9maW5h bF9wb3MpIH0KICAgIAogICAgYW5pbXNfbWVudSA9IG1haW5fbWVudS5hZGRf c3VibWVudSgiQW5pbWF0aW9uICIpIHsgVUkubWVzc2FnZWJveCgiTm8gY29t bWFuZCBoZXJlICEiKSB9CiAgICBhbmltc19tZW51LmFkZF9pdGVtKCJBbmlt YXRpb24gc2V0dGluZ3MiKSB7IChleHBsb2Rlcl9hbmltX3NldHRpbmdzKSB9 CiAgICAKICAgIAogICAgYW5pbXNfbWVudS5hZGRfaXRlbSgiQW5pbWF0aW9u IGluaXRpYWwgLT4gZmluYWwiKSB7IChleHBsb2Rlcl9hbmltX2luaXRpYWwy ZmluYWwpIH0KICAgICNhbmltc19tZW51LmFkZF9pdGVtKCJBbmltYXRpb24g aW5pdGlhbCAtPiBmaW5hbCIpIHsgZXhwbG9kZXJfYW5pbWF0ZSB9CiAgICBh bmltc19tZW51LmFkZF9pdGVtKCJBbmltYXRpb24gZmluYWwgLT4gaW5pdGlh bCIpIHsgKGV4cGxvZGVyX2FuaW1fZmluYWwyaW5pdGlhbCkgfQogICAgJHRy YW5zZm9ybWVyX21lbnVfbG9hZGVkID0gdHJ1ZQplbmQKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZpbGVfbG9hZGVkKCJ0cmFuc2Zvcm1l ci5yYiIp}.unpack("m").to_s