1789595935
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A6787ad787a8c2e30fab54a6b2767fee1-ec01db0b3dabe18ccd3f3f1ca32dbfa0
s:8736:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjExOiJib2RlZ2FzLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJlYzAxZGIwYjNkYWJlMThjY2QzZjNmMWNhMzJkYmZhMCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjMyOiJiYWNrZW5kL2FwaS92Mi9ydXRhcy9ib2RlZ2FzLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NDM1NzoiPD9waHANCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOw0KDQovKioNCiAqIFJ1dGFzIGRlIEJPREVHQVMg4oCUIGFncnVwYWNpw7NuIGRlIGRlcMOzc2l0b3MuDQogKg0KICogVG9kYXMgb3BlcmFuIHNvYnJlIGJhc2VzIGRlIGV4cGxvdGFjacOzbiB5IHNlIHZhbGlkYW4gY29udHJhIGxhIHDDoWdpbmENCiAqIGRlIGJvZGVnYXMuDQogKg0KICogQHBhY2thZ2UgdHJhY2tpbmdcYmFja2VuZFxhcGlcdjJccnV0YXMNCiAqLw0KDQpyZXR1cm4gWw0KDQogICAgLy8g4pSA4pSAIExFQ1RVUkEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnZ2V0X2xpc3RhZG9fYm9kZWdhcycgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JCb2RlZ2E6OmdldExpc3RhZG8oJGN0eC0+Y29uZXhpb25JZHMpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvYm9kZWdhJw0KICAgICksDQoNCiAgICAnZ2V0X2RlcG9zaXRvc19ib2RlZ2EnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKENvbnRyb2xhZG9yQm9kZWdhOjpnZXREZXBvc2l0b3NCeUJvZGVnYSgNCiAgICAgICAgICAgICAgICAkY3R4LT5wb3N0SW50KCdpZEJvZGVnYScpLA0KICAgICAgICAgICAgICAgICRjdHgtPmNvbmV4aW9uSWRzDQogICAgICAgICAgICApKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL2JvZGVnYScNCiAgICApLA0KDQogICAgLy8gbW9kbzogMCA9IHRvZG9zIHwgMSA9IHNvbG8gbG9zIG5vIGFzaWduYWRvcyAocG9yIGRlZmVjdG8pDQogICAgJ2dldF9kZXBvc2l0b3NfcGFyYV9hc2lnbmFyJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvckJvZGVnYTo6Z2V0RGVwb3NpdG9zUGFyYUFzaWduYXIoDQogICAgICAgICAgICAgICAgJGN0eC0+cG9zdEludCgnbW9kbycsIDEpLA0KICAgICAgICAgICAgICAgICRjdHgtPmNvbmV4aW9uSWRzDQogICAgICAgICAgICApKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL2JvZGVnYScNCiAgICApLA0KDQogICAgLy8g4pSA4pSAIEVTQ1JJVFVSQSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICAgICdpbnNlcnRfYm9kZWdhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgJG5vbWJyZSA9IHRyaW0oJGN0eC0+cG9zdCgnbm9tYnJlJykpOw0KICAgICAgICAgICAgaWYgKCRub21icmUgPT09ICcnKSB7DQogICAgICAgICAgICAgICAgUmVzcHVlc3RhOjplcnJvcignRWwgbm9tYnJlIGVzIG9ibGlnYXRvcmlvLicsIDQwMCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JCb2RlZ2E6Omluc2VydEJvZGVnYSgkbm9tYnJlLCAkY3R4LT5jb25leGlvbklkcykNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9ib2RlZ2EnDQogICAgKSwNCg0KICAgICd1cGRhdGVfbm9tYnJlX2JvZGVnYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgICRpZCAgICAgPSAkY3R4LT5wb3N0SW50KCdpZCcpOw0KICAgICAgICAgICAgJG5vbWJyZSA9IHRyaW0oJGN0eC0+cG9zdCgnbm9tYnJlJykpOw0KDQogICAgICAgICAgICBpZiAoJGlkIDw9IDApICAgICAgUmVzcHVlc3RhOjplcnJvcignRmFsdGEgZWwgaWQgZGUgbGEgYm9kZWdhLicsIDQwMCk7DQogICAgICAgICAgICBpZiAoJG5vbWJyZSA9PT0gJycpIFJlc3B1ZXN0YTo6ZXJyb3IoJ0VsIG5vbWJyZSBlcyBvYmxpZ2F0b3Jpby4nLCA0MDApOw0KDQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yQm9kZWdhOjp1cGRhdGVOb21icmVCb2RlZ2EoJGlkLCAkbm9tYnJlLCAkY3R4LT5jb25leGlvbklkcykNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9ib2RlZ2EnDQogICAgKSwNCg0KICAgICdpbnNlcnRfZGVwb3NpdG8nID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICAkbm9tYnJlID0gdHJpbSgkY3R4LT5wb3N0KCdub21icmUnKSk7DQogICAgICAgICAgICBpZiAoJG5vbWJyZSA9PT0gJycpIHsNCiAgICAgICAgICAgICAgICBSZXNwdWVzdGE6OmVycm9yKCdFbCBub21icmUgZXMgb2JsaWdhdG9yaW8uJywgNDAwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvckJvZGVnYTo6aW5zZXJ0RGVwb3NpdG8oDQogICAgICAgICAgICAgICAgJG5vbWJyZSwNCiAgICAgICAgICAgICAgICAkY3R4LT5wb3N0SW50KCdpZEJvZGVnYScpLA0KICAgICAgICAgICAgICAgICRjdHgtPmNvbmV4aW9uSWRzDQogICAgICAgICAgICApKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL2JvZGVnYScNCiAgICApLA0KDQogICAgJ2FzaWduYXJfZGVwb3NpdG9zX2JvZGVnYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgICRpZEJvZGVnYSA9ICRjdHgtPnBvc3RJbnQoJ2lkQm9kZWdhJyk7DQogICAgICAgICAgICBpZiAoJGlkQm9kZWdhIDw9IDApIHsNCiAgICAgICAgICAgICAgICBSZXNwdWVzdGE6OmVycm9yKCdGYWx0YSBlbCBpZCBkZSBsYSBib2RlZ2EuJywgNDAwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gTGlzdGEgdmFjw61hIGVzIHbDoWxpZGE6IHNpZ25pZmljYSBkZXNhc2lnbmFyIHRvZG9zIGxvcyBkZXDDs3NpdG9zLg0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvckJvZGVnYTo6YXNpZ25hckRlcG9zaXRvcygNCiAgICAgICAgICAgICAgICAkaWRCb2RlZ2EsDQogICAgICAgICAgICAgICAgJGN0eC0+anNvbignZGVwb3NpdG9zJyksDQogICAgICAgICAgICAgICAgJGN0eC0+Y29uZXhpb25JZHMNCiAgICAgICAgICAgICkpOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvYm9kZWdhJw0KICAgICksDQpdOyI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDc6IlJ1dGFzIGRlIEJPREVHQVMg4oCUIGFncnVwYWNpw7NuIGRlIGRlcMOzc2l0b3MuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjgzOiJUb2RhcyBvcGVyYW4gc29icmUgYmFzZXMgZGUgZXhwbG90YWNpw7NuIHkgc2UgdmFsaWRhbiBjb250cmEgbGEgcMOhZ2luYQpkZSBib2RlZ2FzLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoicGFja2FnZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mjk6InRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";