IiBWSU0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJbnJvZmYvZ3JvZmYKIiBNYWludGFpbmVyOglQZWRybyBBbGVqYW5kcm8gTPNwZXotVmFsZW5jaWEgPHBhbG9wZXp2QGdtYWlsLmNvbT4KIiBVUkw6CQlodHRwOi8vdm9yYm90ZS53b3JkcHJlc3MuY29tLwoiIExhc3QgQ2hhbmdlOgkyMDEyIEZlYiAyCiIKIiB7e3sxIEFja25vd2xlZGdlbWVudHMKIgoiIEFDS05PV0xFREdFTUVOVFM6CiIKIiBNeSB0aGFua3MgdG8gSuly9G1lIFBs+3QgPEplcm9tZS5QbHV0QGVucy5mcj4sIHdobyB3YXMgdGhlCiIgY3JlYXRvciBhbmQgbWFpbnRhaW5lciBvZiB0aGlzIHN5bnRheCBmaWxlIGZvciBzZXZlcmFsIHllYXJzLgoiIE1heSBJIGJlIGFzIGdvb2QgYXQgaXQgYXMgaGUgaGFzIGJlZW4uCiIKIiB7e3sxIFRvZG8KIgoiIFRPRE86CiIKIiAqIFdyaXRlIHN5bnRheCBoaWdobGlnaHRpbmcgZmlsZXMgZm9yIHRoZSBwcmVwcm9jZXNzb3JzLAoiCWFuZCBpbnRlZ3JhdGUgd2l0aCBucm9mZi52aW0uCiIKIgoiIHt7ezEgU3RhcnQgc3ludGF4IGhpZ2hsaWdodGluZy4KIgoiIHF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZAoiCmlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCglmaW5pc2gKZW5kaWYKCmxldCBzOmNwb19zYXZlID0gJmNwbwpzZXQgY3BvJnZpbQoKIgoiIHt7ezEgcGx1Z2luIHNldHRpbmdzLi4uCiIKIiB7e3syIGVuYWJsZSBzcGFjaW5nIGVycm9yIGhpZ2hsaWdodGluZwoiCmlmIGV4aXN0cygibnJvZmZfc3BhY2VfZXJyb3JzIikKCXN5biBtYXRjaCBucm9mZkVycm9yIC9cc1wrJC8KCXN5biBtYXRjaCBucm9mZlNwYWNlRXJyb3IgL1suLDo7IT9dXHNcezIsfS8KZW5kaWYKIgoiCiIge3t7MSBTcGVjaWFsIGZpbGUgc2V0dGluZ3MKIgoiIHt7ezIgIG1zIGV4ZGVudGVkIHBhcmFncmFwaHMgYXJlIG5vdCBpbiB0aGUgZGVmYXVsdCBwYXJhZ3JhcGhzIGxpc3QuCiIKc2V0bG9jYWwgcGFyYWdyYXBocys9WFAKIgoiIHt7ezIgQWN0aXZhdGUgbmF2aWdhdGlvbiB0byBwcmVwb3JjZXNzb3Igc2VjdGlvbnMuCiIKaWYgZXhpc3RzKCJiOnByZXByb2NzX2FzX3NlY3Rpb25zIikKCXNldGxvY2FsIHNlY3Rpb25zPUVRVFNQU1tcIEcxR1MKZW5kaWYKCiIge3t7MSBFc2NhcGUgc2VxdWVuY2VzCiIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzeW4gbWF0Y2ggbnJvZmZFc2NDaGFyIC9cXFtDTl0vIG5leHRncm91cD1ucm9mZkVzY0NoYXJBcmcKc3luIG1hdGNoIG5yb2ZmRXNjYXBlIC9cXFsqZmdtbllWXS8gbmV4dGdyb3VwPW5yb2ZmRXNjUmVnUGFyLG5yb2ZmRXNjUmVnQXJnCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxzWystXVw9LyBuZXh0Z3JvdXA9bnJvZmZTaXplCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxbJEFiRGhsTFJ2eFhaXS8gbmV4dGdyb3VwPW5yb2ZmRXNjUGFyLG5yb2ZmRXNjQXJnCgpzeW4gbWF0Y2ggbnJvZmZFc2NSZWdBcmcgLy4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZFc2NSZWdBcmcyIC8uLi8gY29udGFpbmVkCnN5biBtYXRjaCBucm9mZkVzY1JlZ1BhciAvKC8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZkVzY1JlZ0FyZzIKc3luIG1hdGNoIG5yb2ZmRXNjQXJnIC8uLyBjb250YWluZWQKc3luIG1hdGNoIG5yb2ZmRXNjQXJnMiAvLi4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZFc2NQYXIgLygvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZFc2NBcmcyCnN5biBtYXRjaCBucm9mZlNpemUgL1woKFxkXClcPVxkLyBjb250YWluZWQKCnN5biByZWdpb24gbnJvZmZFc2NDaGFyQXJnIHN0YXJ0PS8nLyBlbmQ9LycvIGNvbnRhaW5lZApzeW4gcmVnaW9uIG5yb2ZmRXNjQXJnIHN0YXJ0PS8nLyBlbmQ9LycvIGNvbnRhaW5lZCBjb250YWlucz1ucm9mZkVzY2FwZSxAbnJvZmZTcGVjaWFsCgppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoJc3luIHJlZ2lvbiBucm9mZkVzY1JlZ0FyZyBtYXRjaGdyb3VwPW5yb2ZmRXNjYXBlIHN0YXJ0PS9cWy8gZW5kPS9cXS8gY29udGFpbmVkIG9uZWxpbmUKCXN5biByZWdpb24gbnJvZmZTaXplIG1hdGNoZ3JvdXA9bnJvZmZFc2NhcGUgc3RhcnQ9L1xbLyBlbmQ9L1xdLyBjb250YWluZWQKZW5kaWYKCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxbYWRwcnR1e31dLwpzeW4gbWF0Y2ggbnJvZmZFc2NhcGUgL1xcJC8Kc3luIG1hdGNoIG5yb2ZmRXNjYXBlIC9cXFwkW0AqXS8KCiIge3t7MSBTdHJpbmdzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN5biBtYXRjaCBucm9mZlNwZWNpYWxDaGFyIC9cXFtcXGVFPyEtXS8Kc3luIG1hdGNoIG5yb2ZmU3BhY2UgIlxcWyYlfnxeMCkvLF0iCnN5biBtYXRjaCBucm9mZlNwZWNpYWxDaGFyIC9cXCguLi8KCmlmIGV4aXN0cygiYjpucm9mZl9pc19ncm9mZiIpCglzeW4gbWF0Y2ggbnJvZmZTcGVjaWFsQ2hhciAvXFxcW1teXV0qXS8KCXN5biByZWdpb24gbnJvZmZQcmVzZXJ2ZSAgbWF0Y2hncm91cD1ucm9mZlNwZWNpYWxDaGFyIHN0YXJ0PS9cXD8vIGVuZD0vXFw/LyBvbmVsaW5lCmVuZGlmCgpzeW4gcmVnaW9uIG5yb2ZmUHJlc2VydmUgbWF0Y2hncm91cD1ucm9mZlNwZWNpYWxDaGFyIHN0YXJ0PS9cXCEvIGVuZD0vJC8gb25lbGluZQoKc3luIGNsdXN0ZXIgbnJvZmZTcGVjaWFsIGNvbnRhaW5zPW5yb2ZmU3BlY2lhbENoYXIsbnJvZmZTcGFjZQoKCnN5biByZWdpb24gbnJvZmZTdHJpbmcgc3RhcnQ9LyIvIGVuZD0vIi8gc2tpcD0vXFwkLyBjb250YWlucz1ucm9mZkVzY2FwZSxAbnJvZmZTcGVjaWFsIGNvbnRhaW5lZApzeW4gcmVnaW9uIG5yb2ZmU3RyaW5nIHN0YXJ0PS8nLyBlbmQ9LycvIHNraXA9L1xcJC8gY29udGFpbnM9bnJvZmZFc2NhcGUsQG5yb2ZmU3BlY2lhbCBjb250YWluZWQKCgoiIHt7ezEgTnVtYmVycyBhbmQgdW5pdHMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3luIG1hdGNoIG5yb2ZmTnVtQmxvY2sgL1swLTkuXVxhXD0vIGNvbnRhaW5lZCBjb250YWlucz1ucm9mZk51bWJlcgpzeW4gbWF0Y2ggbnJvZmZOdW1iZXIgL1xkXCtcKFwuXGQqXClcPS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlVuaXQsbnJvZmZCYWRDaGFyCnN5biBtYXRjaCBucm9mZk51bWJlciAvXC5cZFwrKS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlVuaXQsbnJvZmZCYWRDaGFyCnN5biBtYXRjaCBucm9mZkJhZENoYXIgLy4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZVbml0IC9baWNwUHN6bW52TXVdLyBjb250YWluZWQKCgoiIHt7ezEgUmVxdWVzdHMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiIgUmVxdWVzdHMgYmVnaW4gd2l0aCAuIG9yICcgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsIG9yCiIgYWZ0ZXIgLmlmIG9yIC5pZS4KCnN5biBtYXRjaCBucm9mZlJlcUxlYWRlciAvXlsuJ10vCW5leHRncm91cD1ucm9mZlJlcU5hbWUgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZlJlcUxlYWRlciAvWy4nXS8JY29udGFpbmVkIG5leHRncm91cD1ucm9mZlJlcU5hbWUgc2tpcHdoaXRlCgppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoiCiIgR05VIHRyb2ZmIGFsbG93cyBsb25nIHJlcXVlc3QgbmFtZXMKIgoJc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvW15cdCBcXFxbP11cKy8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlJlcUFyZwplbHNlCglzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9bXlx0IFxcXFs/XVx7MSwyfS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlJlcUFyZwplbmRpZgoKc3luIHJlZ2lvbiBucm9mZlJlcUFyZyBzdGFydD0vXFMvIHNraXA9L1xcJC8gZW5kPS8kLyBjb250YWluZWQgY29udGFpbnM9bnJvZmZFc2NhcGUsQG5yb2ZmU3BlY2lhbCxucm9mZlN0cmluZyxucm9mZkVycm9yLG5yb2ZmU3BhY2VFcnJvcixucm9mZk51bUJsb2NrLG5yb2ZmQ29tbWVudAoKIiB7e3syIENvbmRpdGlvbmFsOiAuaWYgLmllIC5lbApzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9cKGlmXHxpZVwpLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmQ29uZCBza2lwd2hpdGUKc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvZWwvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZSZXFMZWFkZXIgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZkNvbmQgL1xTXCsvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZSZXFMZWFkZXIgc2tpcHdoaXRlCgoiIHt7ezIgU3RyaW5nIGRlZmluaXRpb246IC5kcyAuYXMKc3luIG1hdGNoIG5yb2ZmUmVxbmFtZSAvW2RhXXMvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZEZWZJZGVudCBza2lwd2hpdGUKc3luIG1hdGNoIG5yb2ZmRGVmSWRlbnQgL1xTXCsvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZEZWZpbml0aW9uIHNraXB3aGl0ZQpzeW4gcmVnaW9uIG5yb2ZmRGVmaW5pdGlvbiBtYXRjaGdyb3VwPW5yb2ZmU3BlY2lhbENoYXIgc3RhcnQ9LyIvIG1hdGNoZ3JvdXA9Tk9ORSBlbmQ9L1xcIi9tZT1lLTIgc2tpcD0vXFwkLyBzdGFydD0vXFMvIGVuZD0vJC8gY29udGFpbmVkIGNvbnRhaW5zPW5yb2ZmRGVmU3BlY2lhbApzeW4gbWF0Y2ggbnJvZmZEZWZTcGVjaWFsIC9cXCQvIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZEZWZTcGVjaWFsIC9cXFwoKC5cKVw9Li8gY29udGFpbmVkCgppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoJc3luIG1hdGNoIG5yb2ZmRGVmU3BlY2lhbCAvXFxcW1teXV0qXS8gY29udGFpbmVkCmVuZGlmCgoiIHt7ezIgTWFjcm8gZGVmaW5pdGlvbjogLmRlIC5hbSwgYWxzbyBkaXZlcnNpb246IC5kaQpzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9cKGRbZWldXHxhbVwpLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmSWRlbnQgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZklkZW50IC9bXls/KCBcdF1cKy8gY29udGFpbmVkCmlmIGV4aXN0cygiYjpucm9mZl9pc19ncm9mZiIpCglzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9hbHMvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZJZGVudCBza2lwd2hpdGUKZW5kaWYKCiIge3t7MiBSZWdpc3RlciBkZWZpbml0aW9uOiAucm4gLnJyCnN5biBtYXRjaCBucm9mZlJlcU5hbWUgL1tybl1yLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmSWRlbnQgc2tpcHdoaXRlCmlmIGV4aXN0cygiYjpucm9mZl9pc19ncm9mZiIpCglzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9cKHJublx8YWxuXCkvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZJZGVudCBza2lwd2hpdGUKZW5kaWYKCgoiIHt7ezEgZXFuL3RibC9waWMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIiA8anA+CiIgWFhYOiB3cml0ZSBwcm9wZXIgc3ludGF4IGhpZ2hsaWdodCBmb3IgZXFuIC8gdGJsIC8gcGljID8KIiA8anAgLz4KCnN5biByZWdpb24gbnJvZmZFcXVhdGlvbiBzdGFydD0vXlwuXHMqRVFcPi8gZW5kPS9eXC5ccypFTlw+LwpzeW4gcmVnaW9uIG5yb2ZmVGFibGUgc3RhcnQ9L15cLlxzKlRTXD4vIGVuZD0vXlwuXHMqVEVcPi8Kc3luIHJlZ2lvbiBucm9mZlBpY3R1cmUgc3RhcnQ9L15cLlxzKlBTXD4vIGVuZD0vXlwuXHMqUEVcPi8Kc3luIHJlZ2lvbiBucm9mZlJlZmVyIHN0YXJ0PS9eXC5ccypcW1w+LyBlbmQ9L15cLlxzKlxdXD4vCnN5biByZWdpb24gbnJvZmZHcmFwIHN0YXJ0PS9eXC5ccypHMVw+LyBlbmQ9L15cLlxzKkcyXD4vCnN5biByZWdpb24gbnJvZmZHcmVtbGluIHN0YXJ0PS9eXC5ccypHU1w+LyBlbmQ9L15cLlxzKkdFfEdGXD4vCgoiIHt7ezEgQ29tbWVudHMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN5biByZWdpb24gbnJvZmZJZ25vcmUgc3RhcnQ9L15bLiddXHMqaWcvIGVuZD0vXlsnLl1ccypcLi8Kc3luIG1hdGNoIG5yb2ZmQ29tbWVudCAvXCheWy4nXVxzKlwpXD1cXCIuKi8gY29udGFpbnM9bnJvZmZUb2RvCnN5biBtYXRjaCBucm9mZkNvbW1lbnQgL14nJycuKi8gIGNvbnRhaW5zPW5yb2ZmVG9kbwoKaWYgZXhpc3RzKCJiOm5yb2ZmX2lzX2dyb2ZmIikKCXN5biBtYXRjaCBucm9mZkNvbW1lbnQgIlxcIy4qJCIgY29udGFpbnM9bnJvZmZUb2RvCmVuZGlmCgpzeW4ga2V5d29yZCBucm9mZlRvZG8gVE9ETyBYWFggRklYTUUgY29udGFpbmVkCgoiIHt7ezEgSGlsaWdodGluZwoiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoiCgoiCiIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4KIiBPbmx5IHdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgaGlnaGxpZ2h0aW5nIHlldAoiCgpoaSBkZWYgbGluayBucm9mZkVzY0NoYXIgbnJvZmZTcGVjaWFsQ2hhcgpoaSBkZWYgbGluayBucm9mZkVzY0NoYXJBciBucm9mZlNwZWNpYWxDaGFyCmhpIGRlZiBsaW5rIG5yb2ZmU3BlY2lhbENoYXIgU3BlY2lhbENoYXIKaGkgZGVmIGxpbmsgbnJvZmZTcGFjZSBEZWxpbWl0ZXIKCmhpIGRlZiBsaW5rIG5yb2ZmRXNjUmVnQXJnMiBucm9mZkVzY1JlZ0FyZwpoaSBkZWYgbGluayBucm9mZkVzY1JlZ0FyZyBucm9mZklkZW50CgpoaSBkZWYgbGluayBucm9mZkVzY0FyZzIgbnJvZmZFc2NBcmcKaGkgZGVmIGxpbmsgbnJvZmZFc2NQYXIgbnJvZmZFc2NhcGUKCmhpIGRlZiBsaW5rIG5yb2ZmRXNjUmVnUGFyIG5yb2ZmRXNjYXBlCmhpIGRlZiBsaW5rIG5yb2ZmRXNjQXJnIG5yb2ZmRXNjYXBlCmhpIGRlZiBsaW5rIG5yb2ZmU2l6ZSBucm9mZkVzY2FwZQpoaSBkZWYgbGluayBucm9mZkVzY2FwZSBQcmVwcm9jCgpoaSBkZWYgbGluayBucm9mZklnbm9yZSBDb21tZW50CmhpIGRlZiBsaW5rIG5yb2ZmQ29tbWVudCBDb21tZW50CmhpIGRlZiBsaW5rIG5yb2ZmVG9kbyBUb2RvCgpoaSBkZWYgbGluayBucm9mZlJlcUxlYWRlciBucm9mZlJlcXVlc3QKaGkgZGVmIGxpbmsgbnJvZmZSZXFOYW1lIG5yb2ZmUmVxdWVzdApoaSBkZWYgbGluayBucm9mZlJlcXVlc3QgU3RhdGVtZW50CmhpIGRlZiBsaW5rIG5yb2ZmQ29uZCBQcmVDb25kaXQKaGkgZGVmIGxpbmsgbnJvZmZEZWZJZGVudCBucm9mZklkZW50CmhpIGRlZiBsaW5rIG5yb2ZmSWRlbnQgSWRlbnRpZmllcgoKaGkgZGVmIGxpbmsgbnJvZmZFcXVhdGlvbiBQcmVQcm9jCmhpIGRlZiBsaW5rIG5yb2ZmVGFibGUgUHJlUHJvYwpoaSBkZWYgbGluayBucm9mZlBpY3R1cmUgUHJlUHJvYwpoaSBkZWYgbGluayBucm9mZlJlZmVyIFByZVByb2MKaGkgZGVmIGxpbmsgbnJvZmZHcmFwIFByZVByb2MKaGkgZGVmIGxpbmsgbnJvZmZHcmVtbGluIFByZVByb2MKCmhpIGRlZiBsaW5rIG5yb2ZmTnVtYmVyIE51bWJlcgpoaSBkZWYgbGluayBucm9mZkJhZENoYXIgbnJvZmZFcnJvcgpoaSBkZWYgbGluayBucm9mZlNwYWNlRXJyb3IgbnJvZmZFcnJvcgpoaSBkZWYgbGluayBucm9mZkVycm9yIEVycm9yCgpoaSBkZWYgbGluayBucm9mZlByZXNlcnZlIFN0cmluZwpoaSBkZWYgbGluayBucm9mZlN0cmluZyBTdHJpbmcKaGkgZGVmIGxpbmsgbnJvZmZEZWZpbml0aW9uIFN0cmluZwpoaSBkZWYgbGluayBucm9mZkRlZlNwZWNpYWwgU3BlY2lhbAoKCmxldCBiOmN1cnJlbnRfc3ludGF4ID0gIm5yb2ZmIgoKbGV0ICZjcG8gPSBzOmNwb19zYXZlCnVubGV0IHM6Y3BvX3NhdmUKIiB2aW02MDA6IHNldCBmZG09bWFya2VyIGZkbD0yOgo=