1789595936
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A1818aa5f32be4c4d20ab1cc8392dd3ef-ec01db0b3dabe18ccd3f3f1ca32dbfa0
s:8740:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjExOiJib2RlZ2FzLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJlYzAxZGIwYjNkYWJlMThjY2QzZjNmMWNhMzJkYmZhMCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjM2OiJiYWNrZW5kL2FwaS92MnBnZ3AvcnV0YXMvYm9kZWdhcy5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjQzNTc6Ijw/cGhwDQpkZWNsYXJlKHN0cmljdF90eXBlcz0xKTsNCg0KLyoqDQogKiBSdXRhcyBkZSBCT0RFR0FTIOKAlCBhZ3J1cGFjacOzbiBkZSBkZXDDs3NpdG9zLg0KICoNCiAqIFRvZGFzIG9wZXJhbiBzb2JyZSBiYXNlcyBkZSBleHBsb3RhY2nDs24geSBzZSB2YWxpZGFuIGNvbnRyYSBsYSBww6FnaW5hDQogKiBkZSBib2RlZ2FzLg0KICoNCiAqIEBwYWNrYWdlIHRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzDQogKi8NCg0KcmV0dXJuIFsNCg0KICAgIC8vIOKUgOKUgCBMRUNUVVJBIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgJ2dldF9saXN0YWRvX2JvZGVnYXMnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yQm9kZWdhOjpnZXRMaXN0YWRvKCRjdHgtPmNvbmV4aW9uSWRzKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL2JvZGVnYScNCiAgICApLA0KDQogICAgJ2dldF9kZXBvc2l0b3NfYm9kZWdhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvckJvZGVnYTo6Z2V0RGVwb3NpdG9zQnlCb2RlZ2EoDQogICAgICAgICAgICAgICAgJGN0eC0+cG9zdEludCgnaWRCb2RlZ2EnKSwNCiAgICAgICAgICAgICAgICAkY3R4LT5jb25leGlvbklkcw0KICAgICAgICAgICAgKSk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9ib2RlZ2EnDQogICAgKSwNCg0KICAgIC8vIG1vZG86IDAgPSB0b2RvcyB8IDEgPSBzb2xvIGxvcyBubyBhc2lnbmFkb3MgKHBvciBkZWZlY3RvKQ0KICAgICdnZXRfZGVwb3NpdG9zX3BhcmFfYXNpZ25hcicgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoQ29udHJvbGFkb3JCb2RlZ2E6OmdldERlcG9zaXRvc1BhcmFBc2lnbmFyKA0KICAgICAgICAgICAgICAgICRjdHgtPnBvc3RJbnQoJ21vZG8nLCAxKSwNCiAgICAgICAgICAgICAgICAkY3R4LT5jb25leGlvbklkcw0KICAgICAgICAgICAgKSk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9ib2RlZ2EnDQogICAgKSwNCg0KICAgIC8vIOKUgOKUgCBFU0NSSVRVUkEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnaW5zZXJ0X2JvZGVnYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgICRub21icmUgPSB0cmltKCRjdHgtPnBvc3QoJ25vbWJyZScpKTsNCiAgICAgICAgICAgIGlmICgkbm9tYnJlID09PSAnJykgew0KICAgICAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZXJyb3IoJ0VsIG5vbWJyZSBlcyBvYmxpZ2F0b3Jpby4nLCA0MDApOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yQm9kZWdhOjppbnNlcnRCb2RlZ2EoJG5vbWJyZSwgJGN0eC0+Y29uZXhpb25JZHMpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvYm9kZWdhJw0KICAgICksDQoNCiAgICAndXBkYXRlX25vbWJyZV9ib2RlZ2EnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICAkaWQgICAgID0gJGN0eC0+cG9zdEludCgnaWQnKTsNCiAgICAgICAgICAgICRub21icmUgPSB0cmltKCRjdHgtPnBvc3QoJ25vbWJyZScpKTsNCg0KICAgICAgICAgICAgaWYgKCRpZCA8PSAwKSAgICAgIFJlc3B1ZXN0YTo6ZXJyb3IoJ0ZhbHRhIGVsIGlkIGRlIGxhIGJvZGVnYS4nLCA0MDApOw0KICAgICAgICAgICAgaWYgKCRub21icmUgPT09ICcnKSBSZXNwdWVzdGE6OmVycm9yKCdFbCBub21icmUgZXMgb2JsaWdhdG9yaW8uJywgNDAwKTsNCg0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvckJvZGVnYTo6dXBkYXRlTm9tYnJlQm9kZWdhKCRpZCwgJG5vbWJyZSwgJGN0eC0+Y29uZXhpb25JZHMpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvYm9kZWdhJw0KICAgICksDQoNCiAgICAnaW5zZXJ0X2RlcG9zaXRvJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgJG5vbWJyZSA9IHRyaW0oJGN0eC0+cG9zdCgnbm9tYnJlJykpOw0KICAgICAgICAgICAgaWYgKCRub21icmUgPT09ICcnKSB7DQogICAgICAgICAgICAgICAgUmVzcHVlc3RhOjplcnJvcignRWwgbm9tYnJlIGVzIG9ibGlnYXRvcmlvLicsIDQwMCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoQ29udHJvbGFkb3JCb2RlZ2E6Omluc2VydERlcG9zaXRvKA0KICAgICAgICAgICAgICAgICRub21icmUsDQogICAgICAgICAgICAgICAgJGN0eC0+cG9zdEludCgnaWRCb2RlZ2EnKSwNCiAgICAgICAgICAgICAgICAkY3R4LT5jb25leGlvbklkcw0KICAgICAgICAgICAgKSk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9ib2RlZ2EnDQogICAgKSwNCg0KICAgICdhc2lnbmFyX2RlcG9zaXRvc19ib2RlZ2EnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICAkaWRCb2RlZ2EgPSAkY3R4LT5wb3N0SW50KCdpZEJvZGVnYScpOw0KICAgICAgICAgICAgaWYgKCRpZEJvZGVnYSA8PSAwKSB7DQogICAgICAgICAgICAgICAgUmVzcHVlc3RhOjplcnJvcignRmFsdGEgZWwgaWQgZGUgbGEgYm9kZWdhLicsIDQwMCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIExpc3RhIHZhY8OtYSBlcyB2w6FsaWRhOiBzaWduaWZpY2EgZGVzYXNpZ25hciB0b2RvcyBsb3MgZGVww7NzaXRvcy4NCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoQ29udHJvbGFkb3JCb2RlZ2E6OmFzaWduYXJEZXBvc2l0b3MoDQogICAgICAgICAgICAgICAgJGlkQm9kZWdhLA0KICAgICAgICAgICAgICAgICRjdHgtPmpzb24oJ2RlcG9zaXRvcycpLA0KICAgICAgICAgICAgICAgICRjdHgtPmNvbmV4aW9uSWRzDQogICAgICAgICAgICApKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL2JvZGVnYScNCiAgICApLA0KXTsiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQ3OiJSdXRhcyBkZSBCT0RFR0FTIOKAlCBhZ3J1cGFjacOzbiBkZSBkZXDDs3NpdG9zLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo4MzoiVG9kYXMgb3BlcmFuIHNvYnJlIGJhc2VzIGRlIGV4cGxvdGFjacOzbiB5IHNlIHZhbGlkYW4gY29udHJhIGxhIHDDoWdpbmEKZGUgYm9kZWdhcy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjc6InBhY2thZ2UiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjI5OiJ0cmFja2luZ1xiYWNrZW5kXGFwaVx2MlxydXRhcyI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjA6IiI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6MDp7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";