Mw0NCn2EhGMCGQAA4wAAAAAAAAAAAAAAAAMAAABAAAAAc1wAAABkAFoAZAFkAmwBbQJaAgEAZANkBIQAWgNkFGQGZAeEAVoEZAhkCYQAWgVkCmQLhABaBmQVZAxkDYQBWgdkFmQOZA+EAVoIZBdkEGQRhAFaCWQSZBOEAFoKZAVTACkYep4KcmVxdWVzdHMuYXBpCn5+fn5+fn5+fn5+fgoKVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgUmVxdWVzdHMgQVBJLgoKOmNvcHlyaWdodDogKGMpIDIwMTIgYnkgS2VubmV0aCBSZWl0ei4KOmxpY2Vuc2U6IEFwYWNoZTIsIHNlZSBMSUNFTlNFIGZvciBtb3JlIGRldGFpbHMuCukBAAAAKQHaCHNlc3Npb25zYwIAAAAAAAAABAAAAAwAAABLAAAAcyoAAAB0AGoBgwCPGH0DfANqAmYAfAB8AWQBnAJ8ApcCjgFTAFEAUgBYAGQCUwApA2H4CQAAQ29uc3RydWN0cyBhbmQgc2VuZHMgYSA6Y2xhc3M6YFJlcXVlc3QgPFJlcXVlc3Q+YC4KCiAgICA6cGFyYW0gbWV0aG9kOiBtZXRob2QgZm9yIHRoZSBuZXcgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3Q6IGBgR0VUYGAsIGBgT1BUSU9OU2BgLCBgYEhFQURgYCwgYGBQT1NUYGAsIGBgUFVUYGAsIGBgUEFUQ0hgYCwgb3IgYGBERUxFVEVgYC4KICAgIDpwYXJhbSB1cmw6IFVSTCBmb3IgdGhlIG5ldyA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KICAgIDpwYXJhbSBwYXJhbXM6IChvcHRpb25hbCkgRGljdGlvbmFyeSwgbGlzdCBvZiB0dXBsZXMgb3IgYnl0ZXMgdG8gc2VuZAogICAgICAgIGluIHRoZSBxdWVyeSBzdHJpbmcgZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgLgogICAgOnBhcmFtIGRhdGE6IChvcHRpb25hbCkgRGljdGlvbmFyeSwgbGlzdCBvZiB0dXBsZXMsIGJ5dGVzLCBvciBmaWxlLWxpa2UKICAgICAgICBvYmplY3QgdG8gc2VuZCBpbiB0aGUgYm9keSBvZiB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBqc29uOiAob3B0aW9uYWwpIEEgSlNPTiBzZXJpYWxpemFibGUgUHl0aG9uIG9iamVjdCB0byBzZW5kIGluIHRoZSBib2R5IG9mIHRoZSA6Y2xhc3M6YFJlcXVlc3RgLgogICAgOnBhcmFtIGhlYWRlcnM6IChvcHRpb25hbCkgRGljdGlvbmFyeSBvZiBIVFRQIEhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSA6Y2xhc3M6YFJlcXVlc3RgLgogICAgOnBhcmFtIGNvb2tpZXM6IChvcHRpb25hbCkgRGljdCBvciBDb29raWVKYXIgb2JqZWN0IHRvIHNlbmQgd2l0aCB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBmaWxlczogKG9wdGlvbmFsKSBEaWN0aW9uYXJ5IG9mIGBgJ25hbWUnOiBmaWxlLWxpa2Utb2JqZWN0c2BgIChvciBgYHsnbmFtZSc6IGZpbGUtdHVwbGV9YGApIGZvciBtdWx0aXBhcnQgZW5jb2RpbmcgdXBsb2FkLgogICAgICAgIGBgZmlsZS10dXBsZWBgIGNhbiBiZSBhIDItdHVwbGUgYGAoJ2ZpbGVuYW1lJywgZmlsZW9iailgYCwgMy10dXBsZSBgYCgnZmlsZW5hbWUnLCBmaWxlb2JqLCAnY29udGVudF90eXBlJylgYAogICAgICAgIG9yIGEgNC10dXBsZSBgYCgnZmlsZW5hbWUnLCBmaWxlb2JqLCAnY29udGVudF90eXBlJywgY3VzdG9tX2hlYWRlcnMpYGAsIHdoZXJlIGBgJ2NvbnRlbnQtdHlwZSdgYCBpcyBhIHN0cmluZwogICAgICAgIGRlZmluaW5nIHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGdpdmVuIGZpbGUgYW5kIGBgY3VzdG9tX2hlYWRlcnNgYCBhIGRpY3QtbGlrZSBvYmplY3QgY29udGFpbmluZyBhZGRpdGlvbmFsIGhlYWRlcnMKICAgICAgICB0byBhZGQgZm9yIHRoZSBmaWxlLgogICAgOnBhcmFtIGF1dGg6IChvcHRpb25hbCkgQXV0aCB0dXBsZSB0byBlbmFibGUgQmFzaWMvRGlnZXN0L0N1c3RvbSBIVFRQIEF1dGguCiAgICA6cGFyYW0gdGltZW91dDogKG9wdGlvbmFsKSBIb3cgbWFueSBzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdG8gc2VuZCBkYXRhCiAgICAgICAgYmVmb3JlIGdpdmluZyB1cCwgYXMgYSBmbG9hdCwgb3IgYSA6cmVmOmAoY29ubmVjdCB0aW1lb3V0LCByZWFkCiAgICAgICAgdGltZW91dCkgPHRpbWVvdXRzPmAgdHVwbGUuCiAgICA6dHlwZSB0aW1lb3V0OiBmbG9hdCBvciB0dXBsZQogICAgOnBhcmFtIGFsbG93X3JlZGlyZWN0czogKG9wdGlvbmFsKSBCb29sZWFuLiBFbmFibGUvZGlzYWJsZSBHRVQvT1BUSU9OUy9QT1NUL1BVVC9QQVRDSC9ERUxFVEUvSEVBRCByZWRpcmVjdGlvbi4gRGVmYXVsdHMgdG8gYGBUcnVlYGAuCiAgICA6dHlwZSBhbGxvd19yZWRpcmVjdHM6IGJvb2wKICAgIDpwYXJhbSBwcm94aWVzOiAob3B0aW9uYWwpIERpY3Rpb25hcnkgbWFwcGluZyBwcm90b2NvbCB0byB0aGUgVVJMIG9mIHRoZSBwcm94eS4KICAgIDpwYXJhbSB2ZXJpZnk6IChvcHRpb25hbCkgRWl0aGVyIGEgYm9vbGVhbiwgaW4gd2hpY2ggY2FzZSBpdCBjb250cm9scyB3aGV0aGVyIHdlIHZlcmlmeQogICAgICAgICAgICB0aGUgc2VydmVyJ3MgVExTIGNlcnRpZmljYXRlLCBvciBhIHN0cmluZywgaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGJlIGEgcGF0aAogICAgICAgICAgICB0byBhIENBIGJ1bmRsZSB0byB1c2UuIERlZmF1bHRzIHRvIGBgVHJ1ZWBgLgogICAgOnBhcmFtIHN0cmVhbTogKG9wdGlvbmFsKSBpZiBgYEZhbHNlYGAsIHRoZSByZXNwb25zZSBjb250ZW50IHdpbGwgYmUgaW1tZWRpYXRlbHkgZG93bmxvYWRlZC4KICAgIDpwYXJhbSBjZXJ0OiAob3B0aW9uYWwpIGlmIFN0cmluZywgcGF0aCB0byBzc2wgY2xpZW50IGNlcnQgZmlsZSAoLnBlbSkuIElmIFR1cGxlLCAoJ2NlcnQnLCAna2V5JykgcGFpci4KICAgIDpyZXR1cm46IDpjbGFzczpgUmVzcG9uc2UgPFJlc3BvbnNlPmAgb2JqZWN0CiAgICA6cnR5cGU6IHJlcXVlc3RzLlJlc3BvbnNlCgogICAgVXNhZ2U6OgoKICAgICAgPj4+IGltcG9ydCByZXF1ZXN0cwogICAgICA+Pj4gcmVxID0gcmVxdWVzdHMucmVxdWVzdCgnR0VUJywgJ2h0dHBzOi8vaHR0cGJpbi5vcmcvZ2V0JykKICAgICAgPj4+IHJlcQogICAgICA8UmVzcG9uc2UgWzIwMF0+CiAgICApAtoGbWV0aG9k2gN1cmxOKQNyAgAAANoHU2Vzc2lvbtoHcmVxdWVzdCkEcgMAAAByBAAAANoGa3dhcmdz2gdzZXNzaW9uqQByCQAAAPqJL2hvbWUvdWV0bGhyL0RvY3VtZW50cy9TZXJtb1Bsb3RfYmFja2VuZC9kcmFmdF9TUkFNX2JsYWNrYm94L1VFVFJWX0VTb0NfdjIvdmVudi9saWI2NC9weXRob24zLjYvc2l0ZS1wYWNrYWdlcy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9hcGkucHlyBgAAABAAAABzBAAAAAAsCgFyBgAAAE5jAgAAAAAAAAADAAAABAAAAEsAAABzFgAAAHQAZAF8AGYCZAJ8AWkBfAKXAo4BUwApA2FkAQAAU2VuZHMgYSBHRVQgcmVxdWVzdC4KCiAgICA6cGFyYW0gdXJsOiBVUkwgZm9yIHRoZSBuZXcgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3QuCiAgICA6cGFyYW0gcGFyYW1zOiAob3B0aW9uYWwpIERpY3Rpb25hcnksIGxpc3Qgb2YgdHVwbGVzIG9yIGJ5dGVzIHRvIHNlbmQKICAgICAgICBpbiB0aGUgcXVlcnkgc3RyaW5nIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBcKlwqa3dhcmdzOiBPcHRpb25hbCBhcmd1bWVudHMgdGhhdCBgYHJlcXVlc3RgYCB0YWtlcy4KICAgIDpyZXR1cm46IDpjbGFzczpgUmVzcG9uc2UgPFJlc3BvbnNlPmAgb2JqZWN0CiAgICA6cnR5cGU6IHJlcXVlc3RzLlJlc3BvbnNlCiAgICDaA2dldNoGcGFyYW1zKQFyBgAAACkDcgQAAAByDAAAAHIHAAAAcgkAAAByCQAAAHIKAAAAcgsAAABAAAAAcwIAAAAAC3ILAAAAYwEAAAAAAAAAAgAAAAMAAABLAAAAcw4AAAB0AGQBfABmAnwBjgFTACkCeulTZW5kcyBhbiBPUFRJT05TIHJlcXVlc3QuCgogICAgOnBhcmFtIHVybDogVVJMIGZvciB0aGUgbmV3IDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogICAgOnBhcmFtIFwqXCprd2FyZ3M6IE9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGBgcmVxdWVzdGBgIHRha2VzLgogICAgOnJldHVybjogOmNsYXNzOmBSZXNwb25zZSA8UmVzcG9uc2U+YCBvYmplY3QKICAgIDpydHlwZTogcmVxdWVzdHMuUmVzcG9uc2UKICAgINoHb3B0aW9ucykBcgYAAAApAnIEAAAAcgcAAAByCQAAAHIJAAAAcgoAAAByDQAAAE4AAABzAgAAAAAJcg0AAABjAQAAAAAAAAACAAAAAwAAAEsAAABzGgAAAHwBagBkAWQCgwIBAHQBZAN8AGYCfAGOAVMAKQRhawEAAFNlbmRzIGEgSEVBRCByZXF1ZXN0LgoKICAgIDpwYXJhbSB1cmw6IFVSTCBmb3IgdGhlIG5ldyA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KICAgIDpwYXJhbSBcKlwqa3dhcmdzOiBPcHRpb25hbCBhcmd1bWVudHMgdGhhdCBgYHJlcXVlc3RgYCB0YWtlcy4gSWYKICAgICAgICBgYWxsb3dfcmVkaXJlY3RzYCBpcyBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgc2V0IHRvIGBGYWxzZWAgKGFzCiAgICAgICAgb3Bwb3NlZCB0byB0aGUgZGVmYXVsdCA6bWV0aDpgcmVxdWVzdGAgYmVoYXZpb3IpLgogICAgOnJldHVybjogOmNsYXNzOmBSZXNwb25zZSA8UmVzcG9uc2U+YCBvYmplY3QKICAgIDpydHlwZTogcmVxdWVzdHMuUmVzcG9uc2UKICAgIFoPYWxsb3dfcmVkaXJlY3RzRtoEaGVhZCkC2gpzZXRkZWZhdWx0cgYAAAApAnIEAAAAcgcAAAByCQAAAHIJAAAAcgoAAAByDgAAAFoAAABzBAAAAAALDAFyDgAAAGMDAAAAAAAAAAQAAAAFAAAASwAAAHMYAAAAdABkAXwAZgJ8AXwCZAKcAnwDlwKOAVMAKQNhwAEAAFNlbmRzIGEgUE9TVCByZXF1ZXN0LgoKICAgIDpwYXJhbSB1cmw6IFVSTCBmb3IgdGhlIG5ldyA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KICAgIDpwYXJhbSBkYXRhOiAob3B0aW9uYWwpIERpY3Rpb25hcnksIGxpc3Qgb2YgdHVwbGVzLCBieXRlcywgb3IgZmlsZS1saWtlCiAgICAgICAgb2JqZWN0IHRvIHNlbmQgaW4gdGhlIGJvZHkgb2YgdGhlIDpjbGFzczpgUmVxdWVzdGAuCiAgICA6cGFyYW0ganNvbjogKG9wdGlvbmFsKSBqc29uIGRhdGEgdG8gc2VuZCBpbiB0aGUgYm9keSBvZiB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBcKlwqa3dhcmdzOiBPcHRpb25hbCBhcmd1bWVudHMgdGhhdCBgYHJlcXVlc3RgYCB0YWtlcy4KICAgIDpyZXR1cm46IDpjbGFzczpgUmVzcG9uc2UgPFJlc3BvbnNlPmAgb2JqZWN0CiAgICA6cnR5cGU6IHJlcXVlc3RzLlJlc3BvbnNlCiAgICDaBHBvc3QpAtoEZGF0YdoEanNvbikBcgYAAAApBHIEAAAAchEAAAByEgAAAHIHAAAAcgkAAAByCQAAAHIKAAAAchAAAABpAAAAcwIAAAAADHIQAAAAYwIAAAAAAAAAAwAAAAQAAABLAAAAcxYAAAB0AGQBfABmAmQCfAFpAXwClwKOAVMAKQNhvwEAAFNlbmRzIGEgUFVUIHJlcXVlc3QuCgogICAgOnBhcmFtIHVybDogVVJMIGZvciB0aGUgbmV3IDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogICAgOnBhcmFtIGRhdGE6IChvcHRpb25hbCkgRGljdGlvbmFyeSwgbGlzdCBvZiB0dXBsZXMsIGJ5dGVzLCBvciBmaWxlLWxpa2UKICAgICAgICBvYmplY3QgdG8gc2VuZCBpbiB0aGUgYm9keSBvZiB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBqc29uOiAob3B0aW9uYWwpIGpzb24gZGF0YSB0byBzZW5kIGluIHRoZSBib2R5IG9mIHRoZSA6Y2xhc3M6YFJlcXVlc3RgLgogICAgOnBhcmFtIFwqXCprd2FyZ3M6IE9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGBgcmVxdWVzdGBgIHRha2VzLgogICAgOnJldHVybjogOmNsYXNzOmBSZXNwb25zZSA8UmVzcG9uc2U+YCBvYmplY3QKICAgIDpydHlwZTogcmVxdWVzdHMuUmVzcG9uc2UKICAgINoDcHV0chEAAAApAXIGAAAAKQNyBAAAAHIRAAAAcgcAAAByCQAAAHIJAAAAcgoAAAByEwAAAHgAAABzAgAAAAAMchMAAABjAgAAAAAAAAADAAAABAAAAEsAAABzFgAAAHQAZAF8AGYCZAJ8AWkBfAKXAo4BUwApA2HBAQAAU2VuZHMgYSBQQVRDSCByZXF1ZXN0LgoKICAgIDpwYXJhbSB1cmw6IFVSTCBmb3IgdGhlIG5ldyA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KICAgIDpwYXJhbSBkYXRhOiAob3B0aW9uYWwpIERpY3Rpb25hcnksIGxpc3Qgb2YgdHVwbGVzLCBieXRlcywgb3IgZmlsZS1saWtlCiAgICAgICAgb2JqZWN0IHRvIHNlbmQgaW4gdGhlIGJvZHkgb2YgdGhlIDpjbGFzczpgUmVxdWVzdGAuCiAgICA6cGFyYW0ganNvbjogKG9wdGlvbmFsKSBqc29uIGRhdGEgdG8gc2VuZCBpbiB0aGUgYm9keSBvZiB0aGUgOmNsYXNzOmBSZXF1ZXN0YC4KICAgIDpwYXJhbSBcKlwqa3dhcmdzOiBPcHRpb25hbCBhcmd1bWVudHMgdGhhdCBgYHJlcXVlc3RgYCB0YWtlcy4KICAgIDpyZXR1cm46IDpjbGFzczpgUmVzcG9uc2UgPFJlc3BvbnNlPmAgb2JqZWN0CiAgICA6cnR5cGU6IHJlcXVlc3RzLlJlc3BvbnNlCiAgICDaBXBhdGNochEAAAApAXIGAAAAKQNyBAAAAHIRAAAAcgcAAAByCQAAAHIJAAAAcgoAAAByFAAAAIcAAABzAgAAAAAMchQAAABjAQAAAAAAAAACAAAAAwAAAEsAAABzDgAAAHQAZAF8AGYCfAGOAVMAKQJ651NlbmRzIGEgREVMRVRFIHJlcXVlc3QuCgogICAgOnBhcmFtIHVybDogVVJMIGZvciB0aGUgbmV3IDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogICAgOnBhcmFtIFwqXCprd2FyZ3M6IE9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGBgcmVxdWVzdGBgIHRha2VzLgogICAgOnJldHVybjogOmNsYXNzOmBSZXNwb25zZSA8UmVzcG9uc2U+YCBvYmplY3QKICAgIDpydHlwZTogcmVxdWVzdHMuUmVzcG9uc2UKICAgINoGZGVsZXRlKQFyBgAAACkCcgQAAAByBwAAAHIJAAAAcgkAAAByCgAAAHIVAAAAlgAAAHMCAAAAAAlyFQAAACkBTikCTk4pAU4pAU4pC9oHX19kb2NfX9oAcgIAAAByBgAAAHILAAAAcg0AAAByDgAAAHIQAAAAchMAAAByFAAAAHIVAAAAcgkAAAByCQAAAHIJAAAAcgoAAADaCDxtb2R1bGU+CwAAAHMSAAAABAIMAwgwCg4IDAgPCg8KDwoP