1789595935
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A7fa4759466cb0d90858de333b25b106c-3fee53a527cd403f0a65607a6e4eed11
s:9516:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE0OiJwYW5lbEFkbWluLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiIzZmVlNTNhNTI3Y2Q0MDNmMGE2NTYwN2E2ZTRlZWQxMSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjM1OiJiYWNrZW5kL2FwaS92Mi9ydXRhcy9wYW5lbEFkbWluLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NDc3MToiPD9waHAKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CgovKioKICogUnV0YXMgZGVsIFBBTkVMIEFETUlOIOKAlCBnZXN0acOzbiBkZSB1c3VhcmlvcyB5IGRlIHN1cyBwZXJtaXNvcy4KICoKICogVG9kYXMgZXhpZ2VuIEFETUlOLiBFbiBsYSB2MSBuaW5ndW5hIGNvbXByb2JhYmEgZWwgcm9sIGVuIGFwaS5waHAgeQogKiB2YXJpYXMgdGFtcG9jbyBlbiBlbCBjb250cm9sYWRvciAobG9hZF91c2VycywgZ2V0X3VzZXJfbW9kYWxfZGF0YSwKICogbGlzdF9hZG1pbl9jZW50cm9zLCBsaXN0X2NhdGFsb2dvX3BhZ2luYXMpLCBxdWVkYW5kbyBhY2Nlc2libGVzIGEKICogY3VhbHF1aWVyIHVzdWFyaW8gYXV0ZW50aWNhZG8uCiAqCiAqIEBwYWNrYWdlIHRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzCiAqLwoKcmV0dXJuIFsKCiAgICAvLyDilIDilIAgTEVDVFVSQSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKCiAgICAnbG9hZF91c2VycycgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgLy8kdXN1YXJpb3MgPSBvbnRyb2xhZG9yUGVybWlzb3M6OmdldFVzdWFyaW9zRW5BbWJpdG8oJGN0eC0+dXNlcklkLCAkY3R4LT5yb2wpQzsKICAgICAgICAgICAgLy9SZXNwdWVzdGE6Ompzb24oWydvaycgPT4gdHJ1ZSwgJ3N0YXR1cycgPT4gMjAwLCAnZGF0YScgPT4gJHVzdWFyaW9zXSk7CiAgICAgICAgICAgIFJlc3B1ZXN0YTo6b2soQ29udHJvbGFkb3JQZXJtaXNvczo6Z2V0VXN1YXJpb3NFbkFtYml0bygkY3R4LT51c2VySWQsICRjdHgtPnJvbCkpOwogICAgICAgIH0KICAgICksCgogICAgJ2dldF91c2VyX21vZGFsX2RhdGEnID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgICR0YXJnZXRJZCA9IChpbnQpKCRfUE9TVFsnaWQnXSA/PyAwKTsKICAgICAgICAgICAgaWYgKCR0YXJnZXRJZCA8PSAwKSB7CiAgICAgICAgICAgICAgICBSZXNwdWVzdGE6OmVycm9yKCdGYWx0YSBpZC4nLCA0MDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYXRvcyA9IENvbnRyb2xhZG9yUGVybWlzb3M6OmdldERhdG9zTW9kYWxVc3VhcmlvKCRjdHgtPnVzZXJJZCwgJGN0eC0+cm9sLCAkdGFyZ2V0SWQpOwogICAgICAgICAgICBSZXNwdWVzdGE6Ompzb24oWydvaycgPT4gdHJ1ZSwgJ2RhdGEnID0+ICRkYXRvc10pOwogICAgICAgIH0KICAgICksCgogICAgJ2xpc3RfYWRtaW5fY2VudHJvcycgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgJGNlbnRyb3MgPSBDb250cm9sYWRvclBlcm1pc29zOjpnZXRDZW50cm9zRWRpdGFibGVzRGVsQWRtaW4oJGN0eC0+dXNlcklkLCAkY3R4LT5yb2wpOwogICAgICAgICAgICBSZXNwdWVzdGE6Ompzb24oWydvaycgPT4gdHJ1ZSwgJ2RhdGEnID0+ICRjZW50cm9zXSk7CiAgICAgICAgfQogICAgKSwKCiAgICAnbGlzdF9jYXRhbG9nb19wYWdpbmFzJyA9PiBuZXcgUnV0YSgKICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFETUlOLAogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkdXRUIsCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgewogICAgICAgICAgICBSZXNwdWVzdGE6Ompzb24oWydvaycgPT4gdHJ1ZSwgJ2RhdGEnID0+IFBlcm1pc29zRGFvOjpnZXRDYXRhbG9nb1BhZ2luYXMoKV0pOwogICAgICAgIH0KICAgICksCgogICAgLy8g4pSA4pSAIEVTQ1JJVFVSQSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKCiAgICAnY3JlYXRlX3VzZXInID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgIC8vIENvbiBwZXJtaXNvcyDihpIgY3JlYXRlVXN1YXJpb0NvblBlcm1pc29zLCBxdWUgYXBsaWNhIGxhcyByZWdsYXMKICAgICAgICAgICAgLy8gZGUgcm9sIChubyBjcmVhciBwb3IgZW5jaW1hIGRlIHVubyBtaXNtbywgQWRtaW5DcmVhQWRtaW4pLgogICAgICAgICAgICAvLyBTaW4gcGVybWlzb3Mg4oaSIGNyZWF0ZVVzdWFyaW9XZWIsIHF1ZSBOTyBsYXMgYXBsaWNhOiB2ZXIgbm90YQogICAgICAgICAgICAvLyBlbiBsYSByZXNwdWVzdGEgZGUgZW50cmVnYS4KICAgICAgICAgICAgJHJlc3VsdGFkbyA9IGlzc2V0KCRfUE9TVFsncGVybWlzb3MnXSkKICAgICAgICAgICAgICAgID8gQ29udHJvbGFkb3JVc2Vyczo6Y3JlYXRlVXN1YXJpb0NvblBlcm1pc29zKCRfUE9TVFsnZGF0YSddLCAkX1BPU1RbJ3Blcm1pc29zJ10pCiAgICAgICAgICAgICAgICA6IENvbnRyb2xhZG9yVXNlcnM6OmNyZWF0ZVVzdWFyaW9XZWIoJF9QT1NUWydkYXRhJ10pOwoKICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigkcmVzdWx0YWRvKTsKICAgICAgICB9CiAgICApLAoKICAgICd1cGRhdGVfdXNlcicgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvclVzZXJzOjp1cGRhdGVVc2VyKCRfUE9TVFsnZGF0YSddID8/ICd7fScpKTsKICAgICAgICB9CiAgICApLAoKICAgICd1cGRhdGVfdXNlcl9wYXNzd29yZCcgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigKICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yVXNlcnM6OnVwZGF0ZVVzZXJQYXNzd29yZCgkX1BPU1RbJ2RhdGEnXSA/PyAne30nKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICksCgogICAgJ3VwZGF0ZV91c2VyX3Blcm1pc29zJyA9PiBuZXcgUnV0YSgKICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFETUlOLAogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkdXRUIsCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgewogICAgICAgICAgICAkdGFyZ2V0SWQgPSAoaW50KSgkX1BPU1RbJ2lkJ10gPz8gMCk7CiAgICAgICAgICAgIGlmICgkdGFyZ2V0SWQgPD0gMCkgewogICAgICAgICAgICAgICAgUmVzcHVlc3RhOjplcnJvcignRmFsdGEgaWQuJywgNDAwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG51ZXZvcyA9IGpzb25fZGVjb2RlKChzdHJpbmcpKCRfUE9TVFsncGVybWlzb3MnXSA/PyAne30nKSwgdHJ1ZSk7CgogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKENvbnRyb2xhZG9yUGVybWlzb3M6Omd1YXJkYXJQZXJtaXNvc1VzdWFyaW8oCiAgICAgICAgICAgICAgICAkY3R4LT51c2VySWQsICRjdHgtPnJvbCwgJHRhcmdldElkLCBpc19hcnJheSgkbnVldm9zKSA/ICRudWV2b3MgOiBbXQogICAgICAgICAgICApKTsKICAgICAgICB9CiAgICApLAoKICAgICdkZWxldGVfdXNlcicgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgJGhhcmQgPSAoJF9QT1NUWydoYXJkJ10gPz8gJycpID09PSAnaGFyZCc7CgogICAgICAgICAgICAkcmVzdWx0YWRvID0gJGhhcmQKICAgICAgICAgICAgICAgID8gQ29udHJvbGFkb3JVc2Vyczo6ZGVsZXRlVXNlcigkX1BPU1RbJ2RhdGEnXSA/PyAne30nKQogICAgICAgICAgICAgICAgOiBDb250cm9sYWRvclVzZXJzOjpkZWxldGVMb2dpY1VzdWFyaW8oJF9QT1NUWydkYXRhJ10gPz8gJ3t9Jyk7CgogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKCRyZXN1bHRhZG8pOwogICAgICAgIH0KICAgICksCl07CiI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NjU6IlJ1dGFzIGRlbCBQQU5FTCBBRE1JTiDigJQgZ2VzdGnDs24gZGUgdXN1YXJpb3MgeSBkZSBzdXMgcGVybWlzb3MuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzMToiVG9kYXMgZXhpZ2VuIEFETUlOLiBFbiBsYSB2MSBuaW5ndW5hIGNvbXByb2JhYmEgZWwgcm9sIGVuIGFwaS5waHAgeQp2YXJpYXMgdGFtcG9jbyBlbiBlbCBjb250cm9sYWRvciAobG9hZF91c2VycywgZ2V0X3VzZXJfbW9kYWxfZGF0YSwKbGlzdF9hZG1pbl9jZW50cm9zLCBsaXN0X2NhdGFsb2dvX3BhZ2luYXMpLCBxdWVkYW5kbyBhY2Nlc2libGVzIGEKY3VhbHF1aWVyIHVzdWFyaW8gYXV0ZW50aWNhZG8uIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo3OiJwYWNrYWdlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyOToidHJhY2tpbmdcYmFja2VuZFxhcGlcdjJccnV0YXMiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";