1789595936
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A4f58a6eecfa9eb14b914a78cb9bc52d1-c064dabb1bddb54a8c14bfc73e3c8495
s:17244:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjEyOiJwYXJ0aWRhcy5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiYzA2NGRhYmIxYmRkYjU0YThjMTRiZmM3M2UzYzg0OTUiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czozNzoiYmFja2VuZC9hcGkvdjJwZ2dwL3J1dGFzL3BhcnRpZGFzLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MTA1OTg6Ijw/cGhwDQpkZWNsYXJlKHN0cmljdF90eXBlcz0xKTsNCg0KLyoqDQogKiBSdXRhcyBkZSBQQVJUSURBUyDigJQgbGlzdGFkbywgY2FtaW5vcywgcGVzYWRhcyBhc29jaWFkYXMgeSBvcGVyYWNpb25lcw0KICogZGUgbWFudGVuaW1pZW50bywgbcOhcyBsb3MgY2F0w6Fsb2dvcyBkZSBzdWJ0aXBvcyBwcmltYXJpb3MgcXVlIGFsaW1lbnRhbg0KICogc3VzIGNvbWJvcy4NCiAqDQogKiBUb2RhcyBzZSBjb25zdW1lbiBkZXNkZSBsYSBtaXNtYSBww6FnaW5hLCBwb3IgbG8gcXVlIGNvbXBhcnRlbiBsYQ0KICogZGVjbGFyYWNpw7NuICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJy4NCiAqDQogKiBAcGFja2FnZSB0cmFja2luZ1xiYWNrZW5kXGFwaVx2MlxydXRhcw0KICovDQoNCnJldHVybiBbDQoNCiAgICAvLyDilIDilIAgRklMVFJPUyBZIExJU1RBRE9TIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgJ2dldF9yYW5nb19mZWNoYXNfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmdldFJhbmdvRmVjaGFzUGFydGlkYSgkY3R4LT5jb25leGlvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2dldF9maWx0cm9zX3BhcnRpZGEnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpnZXRGaWx0cm9zKCRjdHgtPmNvbmV4aW9uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnbG9hZF9wYXJ0aWRhcycgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmdldFBhcnRpZGFzKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdsb2FkX3BhcnRpZGFfYnlJZCcgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmdldFBhcnRpZGFCeUlkKA0KICAgICAgICAgICAgICAgICRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdsb2FkX3BhcnRpZGFzX2Rlc2hhYmlsaXRhZGFzJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6Z2V0UGFydGlkYXNEZXNoYWJpbGl0YWRhcygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnbG9hZF9mZF9wYXJ0aWRhUHJvY19jYW1pbm9zJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6Z2V0RmVjaGFEZWZhdWx0Q2FtaW5vcygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAvLyDilIDilIAgREVUQUxMRSBERSBVTkEgUEFSVElEQSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICAgICd2ZXJfY2FtaW5vc19wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6b2J0ZW5lckRldGFsbGVDYW1pbm9zKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdvYnRlbmVyX2RldGFsbGVzX3Blc2FkYVBhcnRpZGEnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpvYnRlbmVyRGV0YWxsZVBlc2FkYXMoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ29idGVuZXJfc2VjdW5kYXJpb3NfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6Om9idGVuZXJEZXRhbGxlU2VjdW5kYXJpbygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAvLyBEaWFnbsOzc3RpY286IHBlc2FkYXMgYXNpZ25hZGFzIGEgbcOhcyBkZSB1bmEgcGFydGlkYSBkZWwgbGlzdGFkby4NCiAgICAncGVzYWRhc19hY29wbGFkYXMnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpwZXNhZGFzQWNvcGxhZGFzKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgIC8vIOKUgOKUgCBFRElDScOTTiBERSBMQSBQQVJUSURBIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgJ2FqdXN0ZV9raWxvc19wYXJ0aWRhcycgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmFjdHVhbGl6YXJLaWxvc0FqdXN0ZSgkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnY2FtYmlvX2ZlY2hhX3BhcnRpZGEnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjphY3R1YWxpemFyRmVjaGFJbmlGaW4oJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2NhbWJpb19ub21icmVfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmFjdHVhbGl6YXJOb21icmVQYXJ0aWRhKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdkZXNoYWJpbGl0YXJfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmRlc2hhYmlsaXRhclBhcnRpZGEoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2hhYmlsaXRhcl9wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6aGFiaWxpdGFyUGFydGlkYSgkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAvLyDilIDilIAgVFJBTU9TIERFIExBIFJVVEEgKGNhbWlub2htaSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnYW5hZGlyX2NhbWlub2htaScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6Omluc2VydGFyQ2FtaW5vaG1pKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdtb2RpZmljYXJfY2FtaW5vaG1pJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6YWN0dWFsaXphcmNhbWlubygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnZWxpbWluYXJfY2FtaW5vaG1pJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6ZGVsZXRlQ2FtaW5vaG1pKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgIC8vIOKUgOKUgCBSRUFKVVNURSBERSBQRVNBREFTIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgLy8gT3BlcmFjacOzbiBtYXNpdmEgZSBpcnJldmVyc2libGU6IGVuIG1vZG8gY2FtcGHDsWEgYWZlY3RhIGEgdG9kYXMgbGFzDQogICAgLy8gcGFydGlkYXMgZGVsIMOhbWJpdG8uIFZlciBub3RhIHNvYnJlIGVsIG5pdmVsIGRlIGFjY2VzbyBlbiBsYSBlbnRyZWdhLg0KICAgICdyZWFqdXN0YXJfcGVzYWRhcycgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OnJlYWp1c3RhclBlc2FkYXMoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgLy8g4pSA4pSAIFNVQlRJUE9TIFBSSU1BUklPUyAoY29tYm9zIGRlIGxhIHDDoWdpbmEpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgJ2dldF9zdWJ0aXBvcHJpbWFyaW9zX2NvbWInID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yU3VidGlwb1ByaW1hcmlvOjpvYnRlbmVyRmlsdHJvc0NvbWJvYm94KCRjdHgtPmNvbmV4aW9uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnZ2V0X3N1YnRpcG9wcmltYXJpb3NfY29tYl9maW5hbCcgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JTdWJ0aXBvUHJpbWFyaW86Om9idGVuZXJGaWx0cm9zQ29tYm9ib3hGaW5hbCgkY3R4LT5jb25leGlvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2dldF9zdWJ0aXBvcHJpbWFyaW9zX2NvbWJfbm9UJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclN1YnRpcG9QcmltYXJpbzo6b2J0ZW5lckZpbHRyb3NDb21ib2JveE5vVG9sdmEoJGN0eC0+Y29uZXhpb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdnZXRfc3VidGlwb3ByaW1hcmlvc19maWx0ZXJlZCcgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JTdWJ0aXBvUHJpbWFyaW86Om9idGVuZXJGaWx0cm9zRmlsdGVyZWQoJGN0eC0+Y29uZXhpb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCl07IjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoxNTc6IlJ1dGFzIGRlIFBBUlRJREFTIOKAlCBsaXN0YWRvLCBjYW1pbm9zLCBwZXNhZGFzIGFzb2NpYWRhcyB5IG9wZXJhY2lvbmVzCmRlIG1hbnRlbmltaWVudG8sIG3DoXMgbG9zIGNhdMOhbG9nb3MgZGUgc3VidGlwb3MgcHJpbWFyaW9zIHF1ZSBhbGltZW50YW4Kc3VzIGNvbWJvcy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MTA0OiJUb2RhcyBzZSBjb25zdW1lbiBkZXNkZSBsYSBtaXNtYSBww6FnaW5hLCBwb3IgbG8gcXVlIGNvbXBhcnRlbiBsYQpkZWNsYXJhY2nDs24gJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoicGFja2FnZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mjk6InRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";