IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IG9mIGdldHRleHQgZmFjaWxpdGllcyBpbiB0aGUgUGVybCBsYW5ndWFnZSwKIyB1c2luZyBicmFjZSBmb3JtYXQgc3RyaW5ncy4KIyBBc3N1bWVzIGFuIGZyX0ZSIGxvY2FsZSBpcyBpbnN0YWxsZWQuCiMgQXNzdW1lcyB0aGUgZm9sbG93aW5nIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQ6IHBlcmwsIGxpYmludGwtcGVybC4KCmNhdCA8PFxFT0YgPiBwcm9ncmFtMi5wbAp1c2UgTG9jYWxlOjpUZXh0RG9tYWluIChwcm9nID0+ICcuLycpOwpteSAkbiA9IDI7CnByaW50IF9fIidZb3VyIGNvbW1hbmQsIHBsZWFzZT8nLCBhc2tlZCB0aGUgd2FpdGVyLiI7CnByaW50ICJcbiI7CnByaW50ZiBfX24gKCJhIHBpZWNlIG9mIGNha2UiLCAiJWQgcGllY2VzIG9mIGNha2UiLCAkbiksICRuOwpwcmludCAiXG4iOwpwcmludGYgX194ICgie29sZH0gaXMgcmVwbGFjZWQgYnkge25ld30uIiwgb2xkID0+ICJGRiIsIG5ldyA9PiAiRVVSIik7CnByaW50ICJcbiI7CkVPRgoKOiAke1hHRVRURVhUPXhnZXR0ZXh0fQoke1hHRVRURVhUfSBcCiAgLWtfXyAtLWZsYWc9X186MTpwYXNzLXBlcmwtZm9ybWF0IC0tZmxhZz1fXzoxOnBhc3MtcGVybC1icmFjZS1mb3JtYXQgXAogIC1rX19uOjEsMiAtLWZsYWc9X19uOjE6cGFzcy1wZXJsLWZvcm1hdCAtLWZsYWc9X19uOjE6cGFzcy1wZXJsLWJyYWNlLWZvcm1hdCBcCiAgICAgICAgICAgIC0tZmxhZz1fX246MjpwYXNzLXBlcmwtZm9ybWF0IC0tZmxhZz1fX246MjpwYXNzLXBlcmwtYnJhY2UtZm9ybWF0IFwKICAta19feCAtLWZsYWc9X194OjE6cGVybC1icmFjZS1mb3JtYXQgXAogIC1vIHByb2cudG1wIC0tb21pdC1oZWFkZXIgLS1uby1sb2NhdGlvbiBwcm9ncmFtMi5wbCB8fCBFeGl0IDEKTENfQUxMPUMgdHIgLWQgJ1xyJyA8IHByb2cudG1wID4gcHJvZy5wb3QgfHwgRXhpdCAxCgpjYXQgPDxFT0YgPiBwcm9nLm9rCm1zZ2lkICInWW91ciBjb21tYW5kLCBwbGVhc2U/JywgYXNrZWQgdGhlIHdhaXRlci4iCm1zZ3N0ciAiIgoKIywgcGVybC1mb3JtYXQKbXNnaWQgImEgcGllY2Ugb2YgY2FrZSIKbXNnaWRfcGx1cmFsICIlZCBwaWVjZXMgb2YgY2FrZSIKbXNnc3RyWzBdICIiCm1zZ3N0clsxXSAiIgoKIywgcGVybC1icmFjZS1mb3JtYXQKbXNnaWQgIntvbGR9IGlzIHJlcGxhY2VkIGJ5IHtuZXd9LiIKbXNnc3RyICIiCkVPRgoKOiAke0RJRkY9ZGlmZn0KJHtESUZGfSBwcm9nLm9rIHByb2cucG90IHx8IEV4aXQgMQoKY2F0IDw8XEVPRiA+IGZyLnBvCm1zZ2lkICIiCm1zZ3N0ciAiIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuID4gMSk7XG4iCgptc2dpZCAiJ1lvdXIgY29tbWFuZCwgcGxlYXNlPycsIGFza2VkIHRoZSB3YWl0ZXIuIgptc2dzdHIgIqtWb3RyZSBjb21tYW5kZSwgcydpbCB2b3VzIHBsYWl0uywgZGl0IGxlIGdhcudvbi4iCgojIExlcyBnYXRlYXV4IGFsbGVtYW5kcyBzb250IGxlcyBtZWlsbGV1cnMgZHUgbW9uZGUuCiMsIHBlcmwtZm9ybWF0Cm1zZ2lkICJhIHBpZWNlIG9mIGNha2UiCm1zZ2lkX3BsdXJhbCAiJWQgcGllY2VzIG9mIGNha2UiCm1zZ3N0clswXSAidW4gbW9yY2VhdSBkZSBnYXRlYXUiCm1zZ3N0clsxXSAiJWQgbW9yY2VhdXggZGUgZ2F0ZWF1IgoKIyBSZXZlcnNlIHRoZSBhcmd1bWVudHMuCiMsIHBlcmwtYnJhY2UtZm9ybWF0Cm1zZ2lkICJ7b2xkfSBpcyByZXBsYWNlZCBieSB7bmV3fS4iCm1zZ3N0ciAie25ld30gcmVtcGxhY2Uge29sZH0uIgpFT0YKCjogJHtNU0dNRVJHRT1tc2dtZXJnZX0KJHtNU0dNRVJHRX0gLXEgLW8gZnIucG8udG1wIGZyLnBvIHByb2cucG90IHx8IEV4aXQgMQpMQ19BTEw9QyB0ciAtZCAnXHInIDwgZnIucG8udG1wID4gZnIucG8ubmV3IHx8IEV4aXQgMQoKOiAke0RJRkY9ZGlmZn0KJHtESUZGfSBmci5wbyBmci5wby5uZXcgfHwgRXhpdCAxCgp0ZXN0IC1kIGwtcGVybC0yIHx8IG1rZGlyIGwtcGVybC0yCnRlc3QgLWQgZnIgfHwgbWtkaXIgZnIKdGVzdCAtZCBmci9MQ19NRVNTQUdFUyB8fCBta2RpciBmci9MQ19NRVNTQUdFUwoKOiAke01TR0ZNVD1tc2dmbXR9CiR7TVNHRk1UfSAtbyBmci9MQ19NRVNTQUdFUy9wcm9nLm1vIGZyLnBvCgo6ICR7RElGRj1kaWZmfQpjYXQgPDxcRU9GID4gcHJvZy5vawqrVm90cmUgY29tbWFuZGUsIHMnaWwgdm91cyBwbGFpdLssIGRpdCBsZSBnYXLnb24uCjIgbW9yY2VhdXggZGUgZ2F0ZWF1CkVVUiByZW1wbGFjZSBGRi4KRU9GCmNhdCA8PFxFT0YgPiBwcm9nLm9rdQrCq1ZvdHJlIGNvbW1hbmRlLCBzJ2lsIHZvdXMgcGxhaXTCuywgZGl0IGxlIGdhcsOnb24uCjIgbW9yY2VhdXggZGUgZ2F0ZWF1CkVVUiByZW1wbGFjZSBGRi4KRU9GCgojIFRlc3QgZm9yIHBlcmwgd2l0aCBsaWJpbnRsLXBlcmwgcGFja2FnZS4KcGVybCAtTSdMb2NhbGU6OlRleHREb21haW4nIC1lICcnIDI+L2Rldi9udWxsIFwKICB8fCB7IGVjaG8gIlNraXBwaW5nIHRlc3Q6IHBlcmwgcGFja2FnZSBsaWJpbnRsLXBlcmwgaXMgbm90IGluc3RhbGxlZCIKICAgICAgIEV4aXQgNzcKICAgICB9Cgo6ICR7TE9DQUxFX0ZSPWZyX0ZSfQo6ICR7TE9DQUxFX0ZSX1VURjg9ZnJfRlIuVVRGLTh9CmlmIHRlc3QgJExPQ0FMRV9GUiAhPSBub25lOyB0aGVuCiAgcHJlcGFyZV9sb2NhbGVfIGZyICRMT0NBTEVfRlIKICBMQU5HVUFHRT0gTEFORz0kTE9DQUxFX0ZSIExDX01FU1NBR0VTPSBMQ19DVFlQRT0gTENfQUxMPSBwZXJsIHByb2dyYW0yLnBsID4gcHJvZy5vdXQgfHwgRXhpdCAxCiAgJHtESUZGfSBwcm9nLm9rIHByb2cub3V0IHx8IEV4aXQgMQpmaQppZiB0ZXN0ICRMT0NBTEVfRlJfVVRGOCAhPSBub25lOyB0aGVuCiAgcHJlcGFyZV9sb2NhbGVfIGZyICRMT0NBTEVfRlJfVVRGOAogIExBTkdVQUdFPSBMQU5HPSRMT0NBTEVfRlJfVVRGOCBMQ19NRVNTQUdFUz0gTENfQ1RZUEU9IExDX0FMTD0gcGVybCBwcm9ncmFtMi5wbCA+IHByb2cub3V0IHx8IEV4aXQgMQogICR7RElGRn0gcHJvZy5va3UgcHJvZy5vdXQgfHwgRXhpdCAxCmZpCmlmIHRlc3QgJExPQ0FMRV9GUiA9IG5vbmUgJiYgdGVzdCAkTE9DQUxFX0ZSX1VURjggPSBub25lOyB0aGVuCiAgaWYgdGVzdCAtZiAvdXNyL2Jpbi9sb2NhbGVkZWY7IHRoZW4KICAgIGVjaG8gIlNraXBwaW5nIHRlc3Q6IG5vIGZyZW5jaCBsb2NhbGUgaXMgaW5zdGFsbGVkIgogIGVsc2UKICAgIGVjaG8gIlNraXBwaW5nIHRlc3Q6IG5vIGZyZW5jaCBsb2NhbGUgaXMgc3VwcG9ydGVkIgogIGZpCiAgRXhpdCA3NwpmaQoKRXhpdCAwCg==